Abarbeitung der Set Befehle in eine einzige Sub untergebracht, Fehlerstatus und Fehlermedungen verbessert, Set Alarmtimer eingebaut

This commit is contained in:
Marko Oldenburg 2015-08-10 15:44:45 +02:00
parent 15ee90e0dc
commit b765bd9540

View File

@ -22,7 +22,7 @@
#
################################################################
###### Version 0.2.1 ############
###### Version 0.3.0 ############
@ -159,46 +159,31 @@ sub AMAD_Set($$@)
. " MediaPlayer:play,stop,next,back"
. " Brightness:slider,0,1,255"
. " Screen:on,off"
. " openURL";
. " openURL"
. " Alarmtime:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45";
if (lc $cmd eq 'screenmsg') {
if (lc $cmd eq 'screenmsg'
|| lc $cmd eq 'ttsmsg'
|| lc $cmd eq 'volume'
|| lc $cmd eq 'mediaplayer'
|| lc $cmd eq 'devicestate'
|| lc $cmd eq 'brightness'
|| lc $cmd eq 'screen'
|| lc $cmd eq 'openurl'
|| lc $cmd eq 'alarmtime') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val);
return AMAD_SetScreenMsg ($hash, @val) if (defined(@val));
}
elsif (lc $cmd eq 'ttsmsg') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
return AMAD_SetTtsMsg ($hash, @val);
}
elsif (lc $cmd eq 'volume') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
return AMAD_SetVolume ($hash, @val);
}
elsif (lc $cmd eq 'mediaplayer') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
return AMAD_SetMediaplayer ($hash, @val);
}
elsif (lc $cmd eq 'devicestate') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
my $v = join(" ", @val);
readingsSingleUpdate ($hash,$cmd,$v,1);
return undef;
}
elsif (lc $cmd eq 'brightness') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
return AMAD_SetBrightness ($hash, @val);
}
elsif (lc $cmd eq 'screen') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
return AMAD_SetScreen ($hash, @val);
}
elsif (lc $cmd eq 'openurl') {
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
return AMAD_SetOpenURL ($hash, @val);
return AMAD_SelectSetCmd ($hash, $cmd, @val);
}
# elsif (lc $cmd eq 'devicestate') {
# Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
# my $v = join(" ", @val);
#
# readingsSingleUpdate ($hash,$cmd,$v,1);
#
# return undef;
return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list";
}
@ -284,12 +269,12 @@ sub AMAD_HTTP_POST($$)
if ($hash->{STATE} eq "initialized")
{
Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait next interval run";
return;
return "set command only works if STATE active, please wait next interval run";
}
if ($hash->{STATE} eq "error")
{
Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP or PORT";
return;
return "error while send Set command. Please check IP or PORT";
}
$hash->{STATE} = "Send HTTP POST";
@ -310,13 +295,14 @@ sub AMAD_HTTP_POST($$)
return undef;
}
sub AMAD_SetScreenMsg($@)
sub AMAD_SelectSetCmd($$@)
{
my ($hash, @data) = @_;
my ($hash, $cmd, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
if (lc $cmd eq 'screenmsg') {
my $msg = join(" ", @data);
$msg =~ s/\s/%20/g;
@ -326,12 +312,7 @@ sub AMAD_SetScreenMsg($@)
return AMAD_HTTP_POST ($hash,$url);
}
sub AMAD_SetTtsMsg($@) {
my ($hash, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
elsif (lc $cmd eq 'ttsmsg') {
my $msg = join(" ", @data);
$msg =~ s/\s/%20/g;
@ -340,12 +321,7 @@ sub AMAD_SetTtsMsg($@) {
return AMAD_HTTP_POST ($hash,$url);
}
sub AMAD_SetVolume($@) {
my ($hash, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
elsif (lc $cmd eq 'volume') {
my $vol = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol";
@ -355,12 +331,23 @@ sub AMAD_SetVolume($@) {
return AMAD_HTTP_POST ($hash,$url);
}
sub AMAD_SetBrightness($@) {
my ($hash, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
elsif (lc $cmd eq 'mediaplayer') {
my $btn = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/automagic/mediaPlayer?button=$btn";
return AMAD_HTTP_POST ($hash,$url);
}
elsif (lc $cmd eq 'devicestate') {
my $v = join(" ", @data);
readingsSingleUpdate ($hash,$cmd,$v,1);
return undef;
}
elsif (lc $cmd eq 'brightness') {
my $bri = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri";
@ -370,12 +357,7 @@ sub AMAD_SetBrightness($@) {
return AMAD_HTTP_POST ($hash,$url);
}
sub AMAD_SetScreen($@) {
my ($hash, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
elsif (lc $cmd eq 'screen') {
my $mod = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/automagic/setScreenOnOff?screen=$mod";
@ -383,32 +365,28 @@ sub AMAD_SetScreen($@) {
return AMAD_HTTP_POST ($hash,$url);
}
sub AMAD_SetOpenURL($@) {
my ($hash, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
elsif (lc $cmd eq 'openurl') {
my $openurl = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/automagic/openURL?url=$openurl";
return AMAD_HTTP_POST ($hash,$url);
}
elsif (lc $cmd eq 'alarmtime') {
my $alarmTime = join(" ", @data);
my @alarm = split(":", $alarmTime);
sub AMAD_SetMediaplayer($@) {
my ($hash, @data) = @_;
my $name = $hash->{NAME};
my $host = $hash->{HOST};
my $port = $hash->{PORT};
my $btn = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/automagic/mediaPlayer?button=$btn";
my $url = "http://" . $host . ":" . $port . "/automagic/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1];
AMAD_GetUpdateLocal($hash);
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
return AMAD_HTTP_POST ($hash,$url);
}
return undef;
}
1;