diff --git a/74_AMAD.pm b/74_AMAD.pm index e00e00f..9b3244b 100644 --- a/74_AMAD.pm +++ b/74_AMAD.pm @@ -22,7 +22,7 @@ # ################################################################ -###### Version 0.2.1 ############ +###### Version 0.3.6 ############ @@ -154,51 +154,28 @@ sub AMAD_Set($$@) my $list = "screenMsg" . " ttsMsg" - . " Volume:slider,0,1,15" - . " DeviceState:online,offline" - . " MediaPlayer:play,stop,next,back" - . " Brightness:slider,0,1,255" - . " Screen:on,off" - . " openURL"; - - - if (lc $cmd eq 'screenmsg') { - 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); + . " defaultVolume:slider,0,1,15" + . " deviceState:online,offline" + . " mediaPlayer:play,stop,next,back" + . " screenBrightness:slider,0,1,255" + . " screen:on,off" + . " openURL" + . " nextAlarmTime:time"; - readingsSingleUpdate ($hash,$cmd,$v,1); + + if (lc $cmd eq 'screenmsg' + || lc $cmd eq 'ttsmsg' + || lc $cmd eq 'defaultvolume' + || lc $cmd eq 'mediaplayer' + || lc $cmd eq 'devicestate' + || lc $cmd eq 'screenbrightness' + || lc $cmd eq 'screen' + || lc $cmd eq 'openurl' + || lc $cmd eq 'nextalarmtime') { - 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); - } - + Log3 $name, 5, "AMAD ($name) - set $name $cmd ".join(" ", @val); + return AMAD_SelectSetCmd ($hash, $cmd, @val) if (@val); + } return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list"; } @@ -210,7 +187,7 @@ sub AMAD_RetrieveAutomagicInfo($) my $host = $hash->{HOST}; my $port = $hash->{PORT}; - my $url = "http://" . $host . ":" . $port . "/automagic/deviceInfo"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/deviceInfo/"; HttpUtils_NonblockingGet( { @@ -234,13 +211,13 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$) my $name = $hash->{NAME}; my $host = $hash->{HOST}; - Log3 $name, 3, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: calling Host: $host"; + Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: calling Host: $host"; if (defined($err)) { if ($err ne "") { $hash->{STATE} = "error" if ($hash->{STATE} ne "initialized"); - Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: error while requesting AutomagicInfo: $err"; + Log3 $name, 5, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: error while requesting AutomagicInfo: $err"; return; } } @@ -248,16 +225,16 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$) if($data eq "" and exists($param->{code})) { $hash->{STATE} = "error" if ($hash->{STATE} ne "initialized"); - Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: received http code ".$param->{code}." without any data after requesting AMAD AutomagicInfo"; + Log3 $name, 5, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: received http code ".$param->{code}." without any data after requesting AMAD AutomagicInfo"; return; } # $hash->{RETRIEVECACHE} = $data; # zu Testzwecken - my @valuestring = split('@@', $data); + my @valuestring = split('@@@@', $data); my %buffer; foreach (@valuestring) { - my @values = split(' ', $_); + my @values = split('@@', $_); $buffer{$values[0]} = $values[1]; } @@ -283,13 +260,13 @@ 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; + Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait for next interval run"; + return "set command only works if STATE active, please wait for 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; + Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP, PORT or wait for next interval run."; + return "error while send Set command. Please check IP, PORT or wait for next interval run."; } $hash->{STATE} = "Send HTTP POST"; @@ -310,135 +287,257 @@ 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}; - my $msg = join(" ", @data); - $msg =~ s/\s/%20/g; - - my $url = "http://" . $host . ":" . $port . "/automagic/screenMsg?message=$msg"; - Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg"; + if (lc $cmd eq 'screenmsg') { + my $msg = join(" ", @data); + $msg =~ s/\s/%20/g; + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/screenMsg?message=$msg"; + Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg"; - return AMAD_HTTP_POST ($hash,$url); + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'ttsmsg') { + my $msg = join(" ", @data); + $msg =~ s/\s/%20/g; + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/ttsMsg?message=$msg"; + + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'defaultvolume') { + my $vol = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setVolume?volume=$vol"; + + readingsSingleUpdate ($hash,$cmd,$vol,1); + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'mediaplayer') { + my $btn = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/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 'screenbrightness') { + my $bri = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setBrightness?brightness=$bri"; + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'screen') { + my $mod = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setScreenOnOff?screen=$mod"; + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'openurl') { + my $openurl = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/openURL?url=$openurl"; + + return AMAD_HTTP_POST ($hash,$url); + } + elsif (lc $cmd eq 'nextalarmtime') { + my $alarmTime = join(" ", @data); + my @alarm = split(":", $alarmTime); + + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/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; } -sub AMAD_SetTtsMsg($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $msg = join(" ", @data); - $msg =~ s/\s/%20/g; - - my $url = "http://" . $host . ":" . $port . "/automagic/ttsMsg?message=$msg"; - - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetVolume($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $vol = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol"; - - AMAD_GetUpdateLocal($hash); - Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetBrightness($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $bri = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri"; - - AMAD_GetUpdateLocal($hash); - Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetScreen($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $mod = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/setScreenOnOff?screen=$mod"; - - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetOpenURL($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $openurl = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/openURL?url=$openurl"; - - return AMAD_HTTP_POST ($hash,$url); -} - -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"; - - return AMAD_HTTP_POST ($hash,$url); -} 1; =pod +=begin html + +

AMAD - Automagic Android Device

+ +=end html =begin html_DE

AMAD - Automagic Android Device