From 1c41df29db542951d7cf2e711738bc144d370c60 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Fri, 8 Dec 2017 06:53:05 +0100 Subject: [PATCH 01/42] =?UTF-8?q?erste=20Version=20f=C3=BCr=20Taskersuppor?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 73_AMADCommBridge.pm | 4 +- 74_AMADDevice.pm | 111 +++++++++++++++++++++++-------------------- 2 files changed, 61 insertions(+), 54 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index e86a4f2..989feaf 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,8 +74,8 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.0.7"; -my $flowsetversion = "4.0.11"; +my $modulversion = "4.2.0"; +my $flowsetversion = "4.2.0"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index ff2f1bb..3f59814 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,8 +58,8 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.0.12"; -my $flowsetversion = "4.0.11"; +my $modulversion = "4.2.0"; +my $flowsetversion = "4.2.0"; @@ -120,6 +120,7 @@ sub AMADDevice_Initialize($) { "setAPSSID ". "root:0,1 ". "disable:1 ". + "disableSetCmd:0,1 ". $readingFnAttributes; foreach my $d(sort keys %{$modules{AMADDevice}{defptr}}) { @@ -341,6 +342,7 @@ sub AMADDevice_statusRequest($) { my $port = $hash->{PORT}; my $amad_id = $hash->{AMAD_ID}; my $uri; + my $path; my $header = 'Connection: close'; my $method; @@ -351,15 +353,18 @@ sub AMADDevice_statusRequest($) { my $fhemip = ReadingsVal($hash->{IODev}->{NAME}, "fhemServerIP", "none"); my $fhemCtlMode = AttrVal($hash->{IODev}->{NAME},'fhemControlMode','none' ); my $bport = $hash->{IODev}->{PORT}; + my $disableSetCmd = AttrVal( $name, "disableSetCmd", "0" ); - - $uri = $host . ":" . $port . "/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\namadid: $amad_id\r\nfhemctlmode: $fhemCtlMode"; $method = "GET"; - - - IOWrite($hash,$amad_id,$uri,$header,$method); - Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; + $path ="/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen + readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); + + if ($disableSetCmd ne "1"){ + $uri = $host . ":" . $port . $path; + IOWrite($hash,$amad_id,$uri,$header,$method); + Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; + } } sub AMADDevice_WriteReadings($$) { @@ -433,25 +438,26 @@ sub AMADDevice_Set($$@) { my $port = $hash->{PORT}; my $amad_id = $hash->{AMAD_ID}; my $uri; + my $path; my $header = 'Connection: close'; my $method; my $volMax = AttrVal($name,'setVolMax',15); my $notifyVolMax = AttrVal($name,'setNotifyVolMax',7); my $ringSoundVolMax = AttrVal($name,'setRingSoundVolMax',7); - + my $disableSetCmd = AttrVal( $name, "disableSetCmd", "0" ); if( lc $cmd eq 'screenmsg' ) { my $msg = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/screenMsg?message=".urlEncode($msg); + $path = "/fhem-amad/setCommands/screenMsg?message=".urlEncode($msg); $method = "POST"; } elsif( lc $cmd eq 'ttsmsg' ) { my ($msg,$speed,$lang,$ttsmsgvol) = AMADDevice_CreateTtsMsgValue($hash,@args); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/ttsMsg?message=".urlEncode($msg)."&msgspeed=".$speed."&msglang=".$lang."&msgvol=".$ttsmsgvol; + $path = "/fhem-amad/setCommands/ttsMsg?message=".urlEncode($msg)."&msgspeed=".$speed."&msglang=".$lang."&msgvol=".$ttsmsgvol; $method = "POST"; } @@ -459,58 +465,58 @@ sub AMADDevice_Set($$@) { my $datas = join( " ", @args ); my ($flow,$state) = split( ":", $datas); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/flowState?flowstate=".$state."&flowname=".urlEncode($flow); + $path = "/fhem-amad/setCommands/flowState?flowstate=".$state."&flowname=".urlEncode($flow); $method = "POST"; } elsif( lc $cmd eq 'userflowrun' ) { my $flow = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/flowRun?flowname=".urlEncode($flow); + $path = "/fhem-amad/setCommands/flowRun?flowname=".urlEncode($flow); $method = "POST"; } elsif( lc $cmd eq 'volume' or $cmd eq 'mute' or $cmd =~ 'volume[Down|Up]' ) { my $vol = AMADDevice_CreateVolumeValue($hash,$cmd,@args); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setVolume?volume=$vol"; + $path = "/fhem-amad/setCommands/setVolume?volume=$vol"; $method = "POST"; } elsif( lc $cmd eq 'volumenotification' ) { my $vol = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setNotifiVolume?notifivolume=$vol"; + $path = "/fhem-amad/setCommands/setNotifiVolume?notifivolume=$vol"; $method = "POST"; } elsif( lc $cmd eq 'volumeringsound' ) { my $vol = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setRingSoundVolume?ringsoundvolume=$vol"; + $path = "/fhem-amad/setCommands/setRingSoundVolume?ringsoundvolume=$vol"; $method = "POST"; } elsif( lc $cmd =~ /^media/ ) { my $btn = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/multimediaControl?mplayer=".$cmd."&button=".$btn; + $path = "/fhem-amad/setCommands/multimediaControl?mplayer=".$cmd."&button=".$btn; $method = "POST"; } elsif( lc $cmd eq 'screenbrightness' ) { my $bri = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setBrightness?brightness=$bri"; + $path = "/fhem-amad/setCommands/setBrightness?brightness=$bri"; $method = "POST"; } elsif( lc $cmd eq 'screen' ) { my $mod = join( " ", @args ); - $uri = AMADDevice_CreateScreenValue($hash,$mod); + $path = AMADDevice_CreateScreenValue($hash,$mod); return "Please set \"setScreenlockPIN\" Attribut first" - unless($uri ne 'NO PIN'); + unless($path ne 'NO PIN'); $method = "POST"; } @@ -518,19 +524,19 @@ sub AMADDevice_Set($$@) { my $mod = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setScreenOrientation?orientation=$mod"; + $path = "/fhem-amad/setCommands/setScreenOrientation?orientation=$mod"; $method = "POST"; } elsif( lc $cmd eq 'activatevoiceinput' ) { - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setvoicecmd"; + $path = "/fhem-amad/setCommands/setvoicecmd"; $method = "POST"; } elsif( lc $cmd eq 'screenfullscreen' ) { my $mod = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setScreenFullscreen?fullscreen=$mod"; + $path = "/fhem-amad/setCommands/setScreenFullscreen?fullscreen=$mod"; $method = "POST"; readingsSingleUpdate( $hash, $cmd, $mod, 1 ); } @@ -540,7 +546,7 @@ sub AMADDevice_Set($$@) { my $browser = AttrVal( $name, "setOpenUrlBrowser", "com.android.chrome|com.google.android.apps.chrome.Main" ); my @browserapp = split( /\|/, $browser ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/openURL?url=".$openurl."&browserapp=".$browserapp[0]."&browserappclass=".$browserapp[1]; + $path = "/fhem-amad/setCommands/openURL?url=".$openurl."&browserapp=".$browserapp[0]."&browserappclass=".$browserapp[1]; $method = "POST"; } @@ -548,14 +554,14 @@ sub AMADDevice_Set($$@) { my $value = join( " ", @args ); my @alarm = split( ":", $value ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1]; + $path = "/fhem-amad/setCommands/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1]; $method = "POST"; } elsif (lc $cmd eq 'timer') { my $timer = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setTimer?minute=$timer"; + $path = "/fhem-amad/setCommands/setTimer?minute=$timer"; $method = "POST"; } @@ -568,21 +574,21 @@ sub AMADDevice_Set($$@) { elsif( lc $cmd eq 'openapp' ) { my $app = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/openApp?app=".$app; + $path = "/fhem-amad/setCommands/openApp?app=".$app; $method = "POST"; } elsif( lc $cmd eq 'nfc' ) { my $mod = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setnfc?nfc=".$mod; + $path = "/fhem-amad/setCommands/setnfc?nfc=".$mod; $method = "POST"; } elsif( lc $cmd eq 'system' ) { my $systemcmd = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/systemcommand?syscmd=$systemcmd"; + $path = "/fhem-amad/setCommands/systemcommand?syscmd=$systemcmd"; $method = "POST"; readingsSingleUpdate( $hash, "airplanemode", "on", 1 ) if( $systemcmd eq "airplanemodeON" ); readingsSingleUpdate( $hash, "deviceState", "offline", 1 ) if( $systemcmd eq "airplanemodeON" || $systemcmd eq "shutdown" ); @@ -591,14 +597,14 @@ sub AMADDevice_Set($$@) { elsif( lc $cmd eq 'donotdisturb' ) { my $disturbmod = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/donotdisturb?disturbmod=$disturbmod"; + $path = "/fhem-amad/setCommands/donotdisturb?disturbmod=$disturbmod"; $method = "POST"; } elsif( lc $cmd eq 'bluetooth' ) { my $mod = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setbluetooth?bluetooth=$mod"; + $path = "/fhem-amad/setCommands/setbluetooth?bluetooth=$mod"; $method = "POST"; } @@ -606,7 +612,7 @@ sub AMADDevice_Set($$@) { my $notify = join( " ", @args ); my $filepath = AttrVal( $name, "setNotifySndFilePath", "/storage/emulated/0/Notifications/" ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/playnotifysnd?notifyfile=".$notify."¬ifypath=".$filepath; + $path = "/fhem-amad/setCommands/playnotifysnd?notifyfile=".$notify."¬ifypath=".$filepath; $method = "POST"; } @@ -614,26 +620,26 @@ sub AMADDevice_Set($$@) { my $swToBtDevice = join( " ", @args ); my ($swToBtMac,$btDeviceOne,$btDeviceTwo) = AMADDevice_CreateChangeBtDeviceValue($hash,$swToBtDevice); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setbtdevice?swToBtDeviceMac=".$swToBtMac."&btDeviceOne=".$btDeviceOne."&btDeviceTwo=".$btDeviceTwo; + $path = "/fhem-amad/setCommands/setbtdevice?swToBtDeviceMac=".$swToBtMac."&btDeviceOne=".$btDeviceOne."&btDeviceTwo=".$btDeviceTwo; $method = "POST"; } elsif( lc $cmd eq 'clearnotificationbar' ) { my $appname = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/clearnotificationbar?app=$appname"; + $path = "/fhem-amad/setCommands/clearnotificationbar?app=$appname"; $method = "POST"; } elsif( lc $cmd eq 'vibrate' ) { - $uri = $host . ":" . $port . "/fhem-amad/setCommands/setvibrate"; + $path = "/fhem-amad/setCommands/setvibrate"; $method = "POST"; } elsif( lc $cmd eq 'showhomescreen' ) { - $uri = $host . ":" . $port . "/fhem-amad/setCommands/showhomescreen"; + $path = "/fhem-amad/setCommands/showhomescreen"; $method = "POST"; } @@ -645,14 +651,14 @@ sub AMADDevice_Set($$@) { $exkey2 = "" if( !$exkey2 ); $exval2 = "" if( !$exval2 ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/sendIntent?action=".$action."&exkey1=".$exkey1."&exval1=".$exval1."&exkey2=".$exkey2."&exval2=".$exval2; + $path = "/fhem-amad/setCommands/sendIntent?action=".$action."&exkey1=".$exkey1."&exval1=".$exval1."&exkey2=".$exkey2."&exval2=".$exval2; $method = "POST"; } elsif( lc $cmd eq 'installflowsource' ) { my $flowname = join( " ", @args ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/installFlow?flowname=$flowname"; + $path = "/fhem-amad/setCommands/installFlow?flowname=$flowname"; $method = "POST"; } @@ -661,25 +667,25 @@ sub AMADDevice_Set($$@) { my ($callnumber, $time) = split( "[ \t][ \t]*", $string ); $time = "none" if( !$time ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/openCall?callnumber=".$callnumber."&hanguptime=".$time; + $path = "/fhem-amad/setCommands/openCall?callnumber=".$callnumber."&hanguptime=".$time; $method = "POST"; } elsif( lc $cmd eq 'closecall' ) { - $uri = $host . ":" . $port . "/fhem-amad/setCommands/closeCall"; + $path = "/fhem-amad/setCommands/closeCall"; $method = "POST"; } elsif( lc $cmd eq 'startdaydream' ) { - $uri = $host . ":" . $port . "/fhem-amad/setCommands/startDaydream"; + $path = "/fhem-amad/setCommands/startDaydream"; $method = "POST"; } elsif( lc $cmd eq 'currentflowsetupdate' ) { - $uri = $host . ":" . $port . "/fhem-amad/currentFlowsetUpdate"; + $path = "/fhem-amad/currentFlowsetUpdate"; $method = "POST"; } @@ -687,7 +693,7 @@ sub AMADDevice_Set($$@) { my $string = join( " ", @args ); my ($smsmessage, $smsnumber) = split( "\\|", $string ); - $uri = $host . ":" . $port . "/fhem-amad/setCommands/sendSms?smsmessage=".urlEncode($smsmessage)."&smsnumber=".$smsnumber; + $path = "/fhem-amad/setCommands/sendSms?smsmessage=".urlEncode($smsmessage)."&smsnumber=".$smsnumber; $method = "POST"; } else { @@ -712,11 +718,15 @@ sub AMADDevice_Set($$@) { return "Unknown argument $cmd, choose one of $list"; } + + readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); - - IOWrite($hash,$amad_id,$uri,$header,$method); - Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; - + if ($disableSetCmd ne "1"){ + $uri = $host . ":" . $port . $path; + IOWrite($hash,$amad_id,$uri,$header,$method); + Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; + } + return undef; } @@ -883,13 +893,10 @@ sub AMADDevice_CreateScreenValue($$) { my $name = $hash->{NAME}; my $scot = AttrVal( $name, "setScreenOnForTimer", undef ); - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - my $uri; $scot = 60 if( !$scot ); if ($mod eq "on" or $mod eq "off") { - return ($host . ":" . $port . "/fhem-amad/setCommands/setScreenOnOff?screen=".$mod."&screenontime=".$scot); + return ("/fhem-amad/setCommands/setScreenOnOff?screen=".$mod."&screenontime=".$scot); } elsif ($mod eq "lock" or $mod eq "unlock") { @@ -898,7 +905,7 @@ sub AMADDevice_CreateScreenValue($$) { my $PIN = AttrVal( $name, "setScreenlockPIN", undef ); $PIN = AMADDevice_decrypt($PIN); - return ($host . ":" . $port . "/fhem-amad/setCommands/screenlock?lockmod=".$mod."&lockPIN=".$PIN); + return ("/fhem-amad/setCommands/screenlock?lockmod=".$mod."&lockPIN=".$PIN); } } From f8f74eabe107f1b8ceb9ac8e1836f7a1c3b3a05a Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 13 Dec 2017 15:00:20 +0100 Subject: [PATCH 02/42] =?UTF-8?q?erster=20Code=20f=C3=BCr=20Tasker=20Suppo?= =?UTF-8?q?rt=20ohne=20Tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 73_AMADCommBridge.pm | 43 ++++++++++++++++++++++------------- 74_AMADDevice.pm | 53 ++++++++++++++++++++++++-------------------- 2 files changed, 57 insertions(+), 39 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 989feaf..73764b0 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,8 +74,8 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.2.0"; -my $flowsetversion = "4.2.0"; +my $modulversion = "4.1.99.1"; +my $flowsetversion = "4.0.11"; @@ -246,22 +246,35 @@ sub AMADCommBridge_Set($@) { sub AMADCommBridge_Write($@) { - my ($hash,$amad_id,$uri,$header,$method) = @_; + my ($hash,$amad_id,$uri,$path,$header,$method) = @_; my $name = $hash->{NAME}; + my $dhash = $defs{$amad_id}; + my $param; + my $remoteServer = AttrVal($dhash->{NAME},'remoteServer','Automagic'); + + + + + $param = { url => "http://" . $uri . $path, timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => $header, doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Automagic'); + + $param = { url => "http://" . $uri, + data => "{\"message\":\"AMAD=:=$path\", \"sender\":\"AMAD\", \"ttl\":60, \"communication_base_params\":{\"type\":\"Message\", \"fallback\":false, \"via\":\"Wifi\"},\"version\":\"1.62\"}", + timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, + header => "agent: TeleHeater/2.2.3\r\nUser-Agent: TeleHeater/2.2.3\r\nAccept: application/json", + doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling + } if($remoteServer eq 'Autoremote'); + + $param = { url => "http://" . $uri, + data => "device=AMAD&cmd=".urlEncode($path), + timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, + header => "agent: TeleHeater/2.2.3\r\nUser-Agent: TeleHeater/2.2.3\r\nAccept: application/json", + doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling + } if($remoteServer eq 'TNES'); - HttpUtils_NonblockingGet( - { - url => "http://" . $uri, - timeout => 15, - hash => $hash, - amad_id => $amad_id, - method => $method, - header => $header, - doTrigger => 1, - callback => \&AMADCommBridge_ErrorHandling, - } - ); + + + HttpUtils_NonblockingGet($param); Log3 $name, 5, "AMADCommBridge ($name) - Send with URI: $uri, HEADER: $header, METHOD: $method"; } diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 3f59814..ae17dd5 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,8 +58,8 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.2.0"; -my $flowsetversion = "4.2.0"; +my $modulversion = "4.1.99.1"; +my $flowsetversion = "4.0.11"; @@ -120,7 +120,7 @@ sub AMADDevice_Initialize($) { "setAPSSID ". "root:0,1 ". "disable:1 ". - "disableSetCmd:0,1 ". + "remoteServer:Automagic,Autoremote,TNES,other ". $readingFnAttributes; foreach my $d(sort keys %{$modules{AMADDevice}{defptr}}) { @@ -144,24 +144,28 @@ sub AMADDevice_Define($$) { if( $param =~ m/IODev=([^\s]*)/ ) { $iodev = $1; - splice( @a, $i, 3 ); + splice( @a, $i, 4 ); last; } $i++; } - return "too few parameters: define AMADDevice " if( @a != 3 ); + return "too few parameters: define AMADDevice " if( @a != 4 ); return "Cannot define a AMAD device. Perl modul $missingModul is missing." if ( $missingModul ); - my ($name,$host,$amad_id) = @a; + my ($name,$host,$amad_id,$remoteServer) = @a; $hash->{HOST} = $host; $hash->{AMAD_ID} = $amad_id; - $hash->{PORT} = 8090; $hash->{VERSIONMODUL} = $modulversion; $hash->{VERSIONFLOWSET} = $flowsetversion; + + $hash->{PORT} = 8090 if($remoteServer eq 'Automagic'); + $hash->{PORT} = 1817 if($remoteServer eq 'Autoremote'); + $hash->{PORT} = 8765 if($remoteServer eq 'TNES'); + $hash->{helper}{infoErrorCounter} = 0; $hash->{helper}{setCmdErrorCounter} = 0; $hash->{helper}{deviceStateErrorCounter} = 0; @@ -188,14 +192,18 @@ sub AMADDevice_Define($$) { return "AMADDevice device $name on AMADCommBridge $iodev already defined." if( defined($d) && $d->{IODev} == $hash->{IODev} && $d->{NAME} ne $name ); - Log3 $name, 3, "AMADDevice ($name) - defined with AMAD_ID: $amad_id on port $hash->{PORT}"; + - $attr{$name}{room} = "AMAD" if( !defined( $attr{$name}{room} ) ); + CommandAttr(undef,$name . "room AMAD") if(AttrVal($name,'room','none') eq 'none'; + CommandAttr(undef,$name . "remoteServer $remoteServer") if(AttrVal($name,'remoteServer','none') eq 'none'; readingsBeginUpdate($hash); readingsBulkUpdateIfChanged( $hash, "state", "initialized",1); readingsBulkUpdateIfChanged( $hash, "deviceState", "unknown",1); readingsEndUpdate($hash,1); + + + Log3 $name, 3, "AMADDevice ($name) - defined with AMAD_ID: $amad_id on port $hash->{PORT}"; if( $init_done ) { @@ -353,14 +361,14 @@ sub AMADDevice_statusRequest($) { my $fhemip = ReadingsVal($hash->{IODev}->{NAME}, "fhemServerIP", "none"); my $fhemCtlMode = AttrVal($hash->{IODev}->{NAME},'fhemControlMode','none' ); my $bport = $hash->{IODev}->{PORT}; - my $disableSetCmd = AttrVal( $name, "disableSetCmd", "0" ); + my $remoteServer = AttrVal( $name, "remoteServer", "Automagic" ); $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\namadid: $amad_id\r\nfhemctlmode: $fhemCtlMode"; $method = "GET"; $path ="/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); - if ($disableSetCmd ne "1"){ + if ($remoteServer eq "Automagic"){ $uri = $host . ":" . $port . $path; IOWrite($hash,$amad_id,$uri,$header,$method); Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; @@ -434,18 +442,16 @@ sub AMADDevice_Set($$@) { my ($hash, $name, @aa) = @_; my ($cmd, @args) = @aa; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; my $amad_id = $hash->{AMAD_ID}; - my $uri; - my $path; my $header = 'Connection: close'; + my $uri = $hash->{HOST} . ":" . $hash->{PORT}; + my $path; my $method; my $volMax = AttrVal($name,'setVolMax',15); my $notifyVolMax = AttrVal($name,'setNotifyVolMax',7); my $ringSoundVolMax = AttrVal($name,'setRingSoundVolMax',7); - my $disableSetCmd = AttrVal( $name, "disableSetCmd", "0" ); + if( lc $cmd eq 'screenmsg' ) { my $msg = join( " ", @args ); @@ -514,6 +520,7 @@ sub AMADDevice_Set($$@) { elsif( lc $cmd eq 'screen' ) { my $mod = join( " ", @args ); + $path = AMADDevice_CreateScreenValue($hash,$mod); return "Please set \"setScreenlockPIN\" Attribut first" unless($path ne 'NO PIN'); @@ -718,15 +725,13 @@ sub AMADDevice_Set($$@) { return "Unknown argument $cmd, choose one of $list"; } - - readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); - if ($disableSetCmd ne "1"){ - $uri = $host . ":" . $port . $path; - IOWrite($hash,$amad_id,$uri,$header,$method); - Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; - } + readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); + + IOWrite($hash,$amad_id,$uri,$path,$header,$method); + Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; + return undef; } @@ -759,7 +764,7 @@ sub AMADDevice_Parse($$) { } else { - return "UNDEFINED $fhemDevice AMADDevice $decode_json->{firstrun}{'amaddevice_ip'} $decode_json->{amad}{'amad_id'} IODev=$name"; + return "UNDEFINED $fhemDevice AMADDevice $decode_json->{firstrun}{'amaddevice_ip'} $decode_json->{amad}{'amad_id'} $decode_json->{firstrun}{remoteserver} IODev=$name"; } } From 4ce293d0fc0711df4e78bb5ff034686a1b204bcb Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 13 Dec 2017 21:03:23 +0100 Subject: [PATCH 03/42] fix room and remoteServer Attribut --- 73_AMADCommBridge.pm | 4 ++-- 74_AMADDevice.pm | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 73764b0..d775c95 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.1"; +my $modulversion = "4.1.99.3"; my $flowsetversion = "4.0.11"; @@ -153,7 +153,7 @@ sub AMADCommBridge_Define($$) { $hash->{VERSIONFLOWSET} = $flowsetversion; - $attr{$name}{room} = "AMAD" if( !defined( $attr{$name}{room} ) ); + CommandAttr(undef,"$name room AMAD") if(AttrVal($name,'room','none') eq 'none'); Log3 $name, 3, "AMADCommBridge ($name) - defined AMADCommBridge with Socketport $port"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index ae17dd5..fcbf5dd 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.1"; +my $modulversion = "4.1.99.3"; my $flowsetversion = "4.0.11"; @@ -139,19 +139,19 @@ sub AMADDevice_Define($$) { my $iodev; my $i = 0; - - foreach my $param ( @a ) { - if( $param =~ m/IODev=([^\s]*)/ ) { + ######## Kann in kommenden Versionen gelöscht werden ############### + #foreach my $param ( @a ) { + # if( $param =~ m/IODev=([^\s]*)/ ) { - $iodev = $1; - splice( @a, $i, 4 ); - last; - } + # $iodev = $1; + # splice( @a, $i, 3 ); + # last; + # } - $i++; - } + # $i++; + #} - return "too few parameters: define AMADDevice " if( @a != 4 ); + return "too few parameters: define AMADDevice " if( @a != 5 ); return "Cannot define a AMAD device. Perl modul $missingModul is missing." if ( $missingModul ); @@ -194,8 +194,8 @@ sub AMADDevice_Define($$) { - CommandAttr(undef,$name . "room AMAD") if(AttrVal($name,'room','none') eq 'none'; - CommandAttr(undef,$name . "remoteServer $remoteServer") if(AttrVal($name,'remoteServer','none') eq 'none'; + CommandAttr(undef,"$name room AMAD") if(AttrVal($name,'room','none') eq 'none'); + CommandAttr(undef,"$name remoteServer $remoteServer") if(AttrVal($name,'remoteServer','none') eq 'none'); readingsBeginUpdate($hash); readingsBulkUpdateIfChanged( $hash, "state", "initialized",1); From ff9e647dfc4536d9496df0a968eafb0bb4a6ece8 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 13 Dec 2017 21:39:28 +0100 Subject: [PATCH 04/42] fix iodev error on autocreate --- 74_AMADDevice.pm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index fcbf5dd..7d4e971 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -140,18 +140,18 @@ sub AMADDevice_Define($$) { my $i = 0; ######## Kann in kommenden Versionen gelöscht werden ############### - #foreach my $param ( @a ) { - # if( $param =~ m/IODev=([^\s]*)/ ) { + foreach my $param ( @a ) { + if( $param =~ m/IODev=([^\s]*)/ ) { - # $iodev = $1; - # splice( @a, $i, 3 ); - # last; - # } + $iodev = $1; + splice( @a, $i, 4 ); + last; + } - # $i++; - #} + $i++; + } - return "too few parameters: define AMADDevice " if( @a != 5 ); + return "too few parameters: define AMADDevice " if( @a != 4 ); return "Cannot define a AMAD device. Perl modul $missingModul is missing." if ( $missingModul ); From 91c5483513f388737bfbb5fc071ee67816ff1c77 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Fri, 15 Dec 2017 06:32:58 +0100 Subject: [PATCH 05/42] fix bugs and change statusRequest --- 73_AMADCommBridge.pm | 4 ++-- 74_AMADDevice.pm | 19 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index d775c95..921b1b5 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.3"; +my $modulversion = "4.1.99.8"; my $flowsetversion = "4.0.11"; @@ -248,7 +248,7 @@ sub AMADCommBridge_Write($@) { my ($hash,$amad_id,$uri,$path,$header,$method) = @_; my $name = $hash->{NAME}; - my $dhash = $defs{$amad_id}; + my $dhash = $modules{AMADDevice}{defptr}{$amad_id}; my $param; my $remoteServer = AttrVal($dhash->{NAME},'remoteServer','Automagic'); diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 7d4e971..2f3afde 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.3"; +my $modulversion = "4.1.99.8"; my $flowsetversion = "4.0.11"; @@ -349,9 +349,9 @@ sub AMADDevice_statusRequest($) { my $host = $hash->{HOST}; my $port = $hash->{PORT}; my $amad_id = $hash->{AMAD_ID}; - my $uri; - my $path; + my $uri = $hash->{HOST} . ":" . $hash->{PORT}; my $header = 'Connection: close'; + my $path; my $method; @@ -361,18 +361,15 @@ sub AMADDevice_statusRequest($) { my $fhemip = ReadingsVal($hash->{IODev}->{NAME}, "fhemServerIP", "none"); my $fhemCtlMode = AttrVal($hash->{IODev}->{NAME},'fhemControlMode','none' ); my $bport = $hash->{IODev}->{PORT}; - my $remoteServer = AttrVal( $name, "remoteServer", "Automagic" ); $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\namadid: $amad_id\r\nfhemctlmode: $fhemCtlMode"; $method = "GET"; $path ="/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen - readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); - - if ($remoteServer eq "Automagic"){ - $uri = $host . ":" . $port . $path; - IOWrite($hash,$amad_id,$uri,$header,$method); - Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; - } + readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); + + + IOWrite($hash,$amad_id,$uri,$path,$header,$method); + Log3 $name, 5, "AMADDevice ($name) - IOWrite: $uri $method IODevHash=$hash->{IODev}"; } sub AMADDevice_WriteReadings($$) { From 5a69a540598de02ac17a120328025c57ae748939 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Fri, 15 Dec 2017 07:56:52 +0100 Subject: [PATCH 06/42] add slash --- 73_AMADCommBridge.pm | 6 +++--- 74_AMADDevice.pm | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 921b1b5..9566f4d 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.8"; +my $modulversion = "4.1.99.13"; my $flowsetversion = "4.0.11"; @@ -257,14 +257,14 @@ sub AMADCommBridge_Write($@) { $param = { url => "http://" . $uri . $path, timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => $header, doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Automagic'); - $param = { url => "http://" . $uri, + $param = { url => "http://" . $uri . "/", data => "{\"message\":\"AMAD=:=$path\", \"sender\":\"AMAD\", \"ttl\":60, \"communication_base_params\":{\"type\":\"Message\", \"fallback\":false, \"via\":\"Wifi\"},\"version\":\"1.62\"}", timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => "agent: TeleHeater/2.2.3\r\nUser-Agent: TeleHeater/2.2.3\r\nAccept: application/json", doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Autoremote'); - $param = { url => "http://" . $uri, + $param = { url => "http://" . $uri . "/", data => "device=AMAD&cmd=".urlEncode($path), timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => "agent: TeleHeater/2.2.3\r\nUser-Agent: TeleHeater/2.2.3\r\nAccept: application/json", diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 2f3afde..4277b90 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.8"; +my $modulversion = "4.1.99.13"; my $flowsetversion = "4.0.11"; From 7d3873d0b21dc9bfe4f2cab88fe7cf79379158a1 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Fri, 15 Dec 2017 12:10:02 +0100 Subject: [PATCH 07/42] change from GET to POST --- 73_AMADCommBridge.pm | 2 +- 74_AMADDevice.pm | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 9566f4d..8088606 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.13"; +my $modulversion = "4.1.99.15"; my $flowsetversion = "4.0.11"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 4277b90..2b2d261 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.13"; +my $modulversion = "4.1.99.15"; my $flowsetversion = "4.0.11"; @@ -363,7 +363,10 @@ sub AMADDevice_statusRequest($) { my $bport = $hash->{IODev}->{PORT}; $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\namadid: $amad_id\r\nfhemctlmode: $fhemCtlMode"; - $method = "GET"; + + $method = "GET" AttrVal($name,'remoteServer','Automagic') eq 'Automagic'; + $method = "POST" AttrVal($name,'remoteServer','Automagic') ne 'Automagic'; + $path ="/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); From fe96f227d5358d5400c7830a220c10618feff1ff Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Fri, 15 Dec 2017 15:07:36 +0100 Subject: [PATCH 08/42] fix gub --- 74_AMADDevice.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 2b2d261..b1ceccb 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -364,8 +364,8 @@ sub AMADDevice_statusRequest($) { $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\namadid: $amad_id\r\nfhemctlmode: $fhemCtlMode"; - $method = "GET" AttrVal($name,'remoteServer','Automagic') eq 'Automagic'; - $method = "POST" AttrVal($name,'remoteServer','Automagic') ne 'Automagic'; + $method = "GET" if( AttrVal($name,'remoteServer','Automagic') eq 'Automagic' ); + $method = "POST" if (AttrVal($name,'remoteServer','Automagic') ne 'Automagic' ); $path ="/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); From 20722ff19e30a4e7ab0891e19a67241543545289 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sat, 16 Dec 2017 23:08:57 +0100 Subject: [PATCH 09/42] fix other bug --- 73_AMADCommBridge.pm | 17 +++++++++-------- 74_AMADDevice.pm | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 8088606..df4ea8c 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.15"; +my $modulversion = "4.1.99.17"; my $flowsetversion = "4.0.11"; @@ -251,8 +251,12 @@ sub AMADCommBridge_Write($@) { my $dhash = $modules{AMADDevice}{defptr}{$amad_id}; my $param; my $remoteServer = AttrVal($dhash->{NAME},'remoteServer','Automagic'); - - + + + Log3 $name, 4, "AMADCommBridge ($name) - AMADCommBridge_Write Path: $path"; + + return readingsSingleUpdate($dhash,'lastSetCommand',$path,1) + if( $remoteServer eq 'other' ); $param = { url => "http://" . $uri . $path, timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => $header, doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Automagic'); @@ -271,12 +275,9 @@ sub AMADCommBridge_Write($@) { doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'TNES'); + Log3 $name, 5, "AMADCommBridge ($name) - Send with remoteServer: $remoteServer URL: $param->{url}, HEADER: $param->{header}, METHOD: $method, DATA: $param->{data}"; - - - HttpUtils_NonblockingGet($param); - - Log3 $name, 5, "AMADCommBridge ($name) - Send with URI: $uri, HEADER: $header, METHOD: $method"; + HttpUtils_NonblockingGet($param) if( defined($param) ); } sub AMADCommBridge_ErrorHandling($$$) { diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index b1ceccb..8675bbd 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.15"; +my $modulversion = "4.1.99.17"; my $flowsetversion = "4.0.11"; From 9c27a50a00b9397960ffc7d62b3ca6969d406ac6 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sat, 16 Dec 2017 23:29:45 +0100 Subject: [PATCH 10/42] add remoteServer, change flowset version --- 73_AMADCommBridge.pm | 2 +- 74_AMADDevice.pm | 2 +- ...ml => 74_AMADautomagicFlowset_4.1.99.1.xml | 1244 ++++++++--------- 3 files changed, 624 insertions(+), 624 deletions(-) rename 74_AMADautomagicFlowset_4.0.11.xml => 74_AMADautomagicFlowset_4.1.99.1.xml (85%) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index df4ea8c..c39b19a 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -75,7 +75,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.17"; -my $flowsetversion = "4.0.11"; +my $flowsetversion = "4.1.99.1"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 8675bbd..16ff8b7 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -59,7 +59,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.17"; -my $flowsetversion = "4.0.11"; +my $flowsetversion = "4.1.99.1"; diff --git a/74_AMADautomagicFlowset_4.0.11.xml b/74_AMADautomagicFlowset_4.1.99.1.xml similarity index 85% rename from 74_AMADautomagicFlowset_4.0.11.xml rename to 74_AMADautomagicFlowset_4.1.99.1.xml index 2209569..dbf94ca 100644 --- a/74_AMADautomagicFlowset_4.0.11.xml +++ b/74_AMADautomagicFlowset_4.1.99.1.xml @@ -1905,7 +1905,7 @@ androidVersion = "4.0 - 4.0.2 Ice Cream Sandwich" POST GENERAL_TEXT - text/json + application/json {fhemfunc} @@@@readingsNameXYZ@@readingsValueABC upload_field @@ -1929,7 +1929,7 @@ androidVersion = "4.0 - 4.0.2 Ice Cream Sandwich" POST GENERAL_TEXT - text/json + application/json {firstrundata} @@@@readingsNameXYZ@@readingsValueABC upload_field @@ -1953,7 +1953,7 @@ androidVersion = "4.0 - 4.0.2 Ice Cream Sandwich" POST GENERAL_TEXT - text/json + application/json {fhemdata} @@@@readingsNameXYZ@@readingsValueABC upload_field @@ -1977,7 +1977,7 @@ androidVersion = "4.0 - 4.0.2 Ice Cream Sandwich" POST GENERAL_TEXT - text/json + application/json {readingsvalcmd} @@@@readingsNameXYZ@@readingsValueABC upload_field @@ -2001,7 +2001,7 @@ androidVersion = "4.0 - 4.0.2 Ice Cream Sandwich" POST GENERAL_TEXT - text/json + application/json {setcmd} @@@@readingsNameXYZ@@readingsValueABC upload_field @@ -2025,7 +2025,7 @@ androidVersion = "4.0 - 4.0.2 Ice Cream Sandwich" POST GENERAL_TEXT - text/json + application/json {voiceinputdata} @@@@readingsNameXYZ@@readingsValueABC upload_field @@ -3028,7 +3028,7 @@ fhemcmd = "setreading"; false Script: Set FHEMDATA JSON - + false @@ -3731,7 +3731,7 @@ Soll der Assistent gelöscht werden? First Run Assistant - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 false PARALLEL @@ -3805,10 +3805,10 @@ Soll der Assistent gelöscht werden? Expression: sprachassi == "ja" Expression: sprachassi == "nein" Script: if(index == 0) { sprachassi = "ja"; } else if(index == 1) { sprachassi = "nein"; } - Script: global_activetask = "none"; global_apssid = "none"; global_userflowstate = "none"; - Script: global_amadid = getDate(); - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Setze Flow Status: Deaktivieren First Run Assistant + Script: global_activetask = "none"; global_apssid = "none"; global_userflowstate = "none"; + Script: global_amadid = getDate(); + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + Setze Flow Status: Deaktivieren First Run Assistant Meldungsdialog: Wunderbar. Bitte nimm Dir Zeit und lese Dir die Hilfe Dialoge genau durch. Wenn Du Dir unsicher bist, kannst Du die Standardeinstellung, sofern vorhanden, belassen. Lass uns nun mit der Einrichtung beginnen. Flows löschen: First Run Assistant Flows löschen: First Run Assistant @@ -3904,7 +3904,7 @@ Soll der Assistent gelöscht werden? Informations - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 true QUEUE 900 @@ -4041,103 +4041,103 @@ Soll der Assistent gelöscht werden? Script: notification_text = "not supported from your device" Initialisiere Variable Systemeinstellung: screenBrightness Initialisiere Variable Systemeinstellung: volumeNotification - Initialisiere Variable Systemeinstellung: volumeRingSound - Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Get Android Version - WLAN verfügbar: {global_apssid} - Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; - Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardSet} + "\""; fhemcmd = "setreading"; - Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; - Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; - Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; - Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; - Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; - Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; - Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; - Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; - Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; - Expression: Leon == "Gaultier" - Flows löschen: MultimediaControl - Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Benachrichtigung in Statusbar angezeigt: Automagic - Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; - Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flows ausführen: Send Data to AMADCommBridge - Prüfe und setze globale Variable - Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; - Script: connected_devices_names = "none"; connected_devices_addresses = "none" - Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; - Bluetooth Gerät verbunden: Beliebiges Geräte - Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; - Setze Flow Status: Aktivieren SetCommands - Script: setCommandFlow_state = "aktiv" - Script: setCommandFlow_state = "inaktiv" - Flow Aktiv: SetCommands - Expression: trigger == "Periodischer Timer: alle 120s" - Expression: global_userflowstate != "none" - Flow Aktiv: {global_userflowstate} - Script: flowState = "inactive" - Script: flowState = "active" - Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flow Aktiv: Send Data to AMADCommBridge - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Expression: trigger == "Periodischer Timer: alle 120s" - Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; - Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Benachrichtigung in Statusbar angezeigt: Telegram Messenger - Pause: 2s (Gerät wach halten) - Script: airpcount = airpcount + 1 - Expression: airpcount < 11 - Script: notification_text = "not supported from your device" - Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" - Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; - Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; - Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; - Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; - Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" - Expression: package_name == {global_activetask} - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" - Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" - Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } - Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Initialisiere Variable Nächster Alarm: next_alarm - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Script: next_alarmday = "{next_alarm,dateformat,c}" - Host erreichbar: {global_fhemip}:{global_bridgeport} - Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; - Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" - Expression: trigger == "Systemeinstellung verändert: System volume_ring" - Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" - Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Kabelgebundenes Headset verbunden - Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } - Script: headsetValue = 1 - Script: headsetValue = 0 - Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } - - - + Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Get Android Version + WLAN verfügbar: {global_apssid} + Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; + Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardSet} + "\""; fhemcmd = "setreading"; + Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; + Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; + Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; + Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; + Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; + Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; + Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; + Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; + Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; + Expression: Leon == "Gaultier" + Flows löschen: MultimediaControl + Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Automagic + Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; + Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flows ausführen: Send Data to AMADCommBridge + Prüfe und setze globale Variable + Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; + Script: connected_devices_names = "none"; connected_devices_addresses = "none" + Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; + Bluetooth Gerät verbunden: Beliebiges Geräte + Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; + Setze Flow Status: Aktivieren SetCommands + Script: setCommandFlow_state = "aktiv" + Script: setCommandFlow_state = "inaktiv" + Flow Aktiv: SetCommands + Expression: trigger == "Periodischer Timer: alle 120s" + Expression: global_userflowstate != "none" + Flow Aktiv: {global_userflowstate} + Script: flowState = "inactive" + Script: flowState = "active" + Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flow Aktiv: Send Data to AMADCommBridge + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + Expression: trigger == "Periodischer Timer: alle 120s" + Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; + Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Benachrichtigung in Statusbar angezeigt: Telegram Messenger + Pause: 2s (Gerät wach halten) + Script: airpcount = airpcount + 1 + Expression: airpcount < 11 + Script: notification_text = "not supported from your device" + Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" + Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; + Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; + Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; + Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; + Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" + Expression: package_name == {global_activetask} + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" + Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" + Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } + Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Initialisiere Variable Nächster Alarm: next_alarm + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + Script: next_alarmday = "{next_alarm,dateformat,c}" + Host erreichbar: {global_fhemip}:{global_bridgeport} + Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; + Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" + Expression: trigger == "Systemeinstellung verändert: System volume_ring" + Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" + Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Kabelgebundenes Headset verbunden + Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } + Script: headsetValue = 1 + Script: headsetValue = 0 + Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } + Initialisiere Variable Systemeinstellung: volumeRingSound + + + - - - - + + + + @@ -4156,7 +4156,7 @@ Soll der Assistent gelöscht werden? - + @@ -4168,52 +4168,52 @@ Soll der Assistent gelöscht werden? - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - - - - - + + + + + - + - + - + - - + + - - + + - + @@ -4222,161 +4222,161 @@ Soll der Assistent gelöscht werden? - - - - + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NFC Tag Support - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 true PARALLEL @@ -4390,7 +4390,7 @@ Soll der Assistent gelöscht werden? Send Data to AMADCommBridge - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 true PARALLEL 900 @@ -4414,57 +4414,57 @@ Soll der Assistent gelöscht werden? Flow Aktiv: SetCommands Expression: trigger == "WLAN Verbunden: toGo" In Datei Schreiben: Aktiviere Flows in /storage/emulated/0/file.txt (anhängen) - HTTP Request: send READINGS data to AMADCommBridge JSON - HTTP Request: send SET data to AMADCommBridge JSON - HTTP Request: send VOICEINPUTVALUE data to AMADCommBridge - Script: if(togocount > 0) { togocount = togocount + 1; } else { togocount = 0; togocount = togocount + 1; } - Expression: amadcmd == "firstrun" - HTTP Request: send FIRSTRUN data to AMADCommBridge JSON - Expression: fhemcmd == "readingsval" - Script: Set FHEMREADINGSVALCMD JSON - Host erreichbar: {global_fhemip}:{global_bridgeport} - Script: Set FHEMDATA JSON First Run Assistant - Expression: fhemcmd == "fhemfunc" - Script: Set FHEMCALLSUB JSON - HTTP Request: send FHEMFUNC data to AMADCommBridge JSON - Expression: fhemcmd == "setreading" - HTTP Request: send READINGSVAL data to AMADCommBridge JSON + Script: if(togocount > 0) { togocount = togocount + 1; } else { togocount = 0; togocount = togocount + 1; } + Expression: amadcmd == "firstrun" + Expression: fhemcmd == "readingsval" + Script: Set FHEMREADINGSVALCMD JSON + Host erreichbar: {global_fhemip}:{global_bridgeport} + Expression: fhemcmd == "fhemfunc" + Script: Set FHEMCALLSUB JSON + Expression: fhemcmd == "setreading" + HTTP Request: send FHEMFUNC data to AMADCommBridge JSON + HTTP Request: send FIRSTRUN data to AMADCommBridge JSON + HTTP Request: send READINGS data to AMADCommBridge JSON + HTTP Request: send SET data to AMADCommBridge JSON + HTTP Request: send READINGSVAL data to AMADCommBridge JSON + HTTP Request: send VOICEINPUTVALUE data to AMADCommBridge + Script: Set FHEMDATA JSON First Run Assistant Script: Set FHEMDATA JSON - + - - + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + SetCommands - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 true QUEUE 900 @@ -4509,151 +4509,151 @@ Soll der Assistent gelöscht werden? Setze Display Helligkeit: {param_brightness} Expression: setScreenlock" Expression: sendIntent" - Setze Lock PIN/Passwort: PIN/Passwort zurücksetzen - Setze Lock PIN/Passwort: Setze PIN von Variable param_lockpin - Expression: trigger == "Sprachbefehl angefordert" - Expression: setAlarm" - Expression: screenMsg" - Benachrichtigung auf Bildschirm: {param_message} (lange) - Script: udef_trigger = "setLockPin" - Display eingeschaltet - Gerät sperren - Schalte Display ein - Gerät sperren - Expression: setTimer" - Expression: param_option - Pause: {param_hanguptime}s (Gerät wach halten) - Anruf beenden - Broadcast senden: {param_action} - URL in Browser öffnen: {param_url} (mit {param_browserapp}/{param_browserappclass}) - Setze Unterbrechnungen-Modus: Alle / Immer unterbrechen - Setze Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen - Setze Unterbrechnungen-Modus: Keine / Nicht unterbrechen - Setze Unterbrechnungen-Modus: Nur Wecker (Android 6+) - Expression: openURL" - Expression: param_fullscreen == "on" - Expression: do not Disturb" - Expression: param_disturbmod == "always" - Expression: param_disturbmod == "onlyImportant" - Expression: param_disturbmod == "never" - Expression: param_disturbmod == "alarmClockOnly" - Expression: setBluetooth" - Expression: param_screen=="on" - Expression: setScreenOnOff" - Gerät sperren - Expression: param_screen=="off" - Expression: openApp" - App Task läuft: App (neuster) - Expression: setVolume" - App Starten: App - Dateien löschen: /storage/emulated/0/Download/installFlow_{param_flowname} - Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname} - Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname} - Script: notification_text = "Flow install: path for download not exist" - Flows/Widgets importieren: /storage/sdcard0/Download/installFlow_{param_flowname} - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/sdcard0/Download - Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/sdcard0/Download - Flows/Widgets importieren: /storage/emulated/0/Download/installFlow_{param_flowname} - Flows/Widgets importieren: /storage/sdcard0/Download/installFlow_{param_flowname} - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0) - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard) - Expression: installFlow" - Neustart - Expression: Reboot - Expression: System Command" - Expression: Shutdown - Script: airplanemode = "airplanemode@@on"; fhemcmd = "setreading"; - Flows ausführen: Send Data to AMADCommBridge mit warten - Flugmodus ein-/ausschalten: Ein - Herunterfahren - Notification Lautstärke Wiederherstellen - Expression: param_notifyfile == "RedAlert.mp3" - Benachrichtigung aus Statusbar entfernen: Alle - Benachrichtigung aus Statusbar entfernen: Alle (Automagic) - Expression: Automagic - Expression: All - Expression: notifysnd" - NotificationLautstärke auf Level 7 - Notification Lautstärke Speichern - Expression: param_notifyfile == "RedAlert.mp3" - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Expression: Clear Automagic Meldungen" - Expression: setVibrate" - Vibrieren: Pattern 2 (-- --) - Audio Player steuern: Medienknopf Zurück ({pname}/{kname}) - Expression: param_button == "stop" - Expression: param_button == "next" - Expression: param_button == "back" - Schalte Display ein: Hell für {param_screenontime}s - Expression: global_fhemip != null or global_bridgeport != null - Setze Alarm: um {param_hour}:{param_minute} - Audio Player steuern: Medienknopf Weiter ({pname}/{kname}) - Expression: openCall" - Nummer anrufen: {param_callnumber} - Expression: param_flowstate == "active" or param_flowstate == "inactive" - Expression: param_flowstate == "active" - Setze Flow Status: Deaktivieren {param_flowname} - Script: notification_text = "Flow '{param_flowname}' has been set {param_flowstate}" - Expression: multimediaControl" - Starte Daydream - Expression: startDaydream" - Lautstärken setzen param_volume - Expression: setNotifiVolume" - Lautstärken setzen param_notifivolume - Expression: param_button == "play/pause" - Audio Player steuern: Medienknopf Play/Pause (/{kname}) - Sound: {param_notifypath}{param_notifyfile} als Benachrichtigung - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) - Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/emulated/0/Download - Script: flow_informations = "\"flow_informations\":" + " \"" + {informationFlow_state} + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Flows ausführen: Send Data to AMADCommBridge - Flows ausführen: udef_trigger setLockPin - Flow Aktiv: Informations - Script: informationFlow_state = "aktiv" - Script: informationFlow_state = "inaktiv" - Setze Flow Status: Aktivieren Informations - Host erreichbar: {global_fhemip}:{global_bridgeport} - Flow Aktiv: Send Data to AMADCommBridge - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Audio Player steuern: Medienknopf Stopp ({pname}/{kname}) - SMS senden an: an {param_smsnumber} '{param_smsmessage}' (10 in 12h) - Expression: param_lockmod == "lock" - Expression: Airplanemode - Expression: param_nfc == "on" - Expression: param_nfc == "off" - NFC ein-/ausschalten: Aus - Expression: sendSms" - Expression: closeCall" - Expression: nfc" - NFC ein-/ausschalten: Ein - Expression: setRingSoundVolume" - Lautstärken setzen param_ringsoundvolume - Zeige Home Screen - Expression: showhomescreen" - Setze Timer - Expression: ttsMsg" - Expression: ttsMsgLang" - Medianlautstärken Speichern - Lautstärke einstellen: Medien auf Level {param_msgvol} - Script: Zuordnung Mediaplayer - Expression: param_msgvol == "none" - Sprachausgabe: Englisch - Sprachausgabe: Deutsch - Expression: param_msgvol == "none" - Medienlautstärke Wiederherstellen - Expression: flowState" - Setze Flow Status: Aktivieren {param_flowname} - Flows ausführen: VoiceControl - Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*" - Expression: flowRun" - Flows ausführen: {param_flowname} - + Setze Lock PIN/Passwort: Setze PIN von Variable param_lockpin + Expression: trigger == "Sprachbefehl angefordert" + Expression: setAlarm" + Expression: screenMsg" + Benachrichtigung auf Bildschirm: {param_message} (lange) + Script: udef_trigger = "setLockPin" + Display eingeschaltet + Gerät sperren + Schalte Display ein + Gerät sperren + Expression: setTimer" + Expression: param_option + Pause: {param_hanguptime}s (Gerät wach halten) + Anruf beenden + Broadcast senden: {param_action} + URL in Browser öffnen: {param_url} (mit {param_browserapp}/{param_browserappclass}) + Setze Unterbrechnungen-Modus: Alle / Immer unterbrechen + Setze Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen + Setze Unterbrechnungen-Modus: Keine / Nicht unterbrechen + Setze Unterbrechnungen-Modus: Nur Wecker (Android 6+) + Expression: openURL" + Expression: param_fullscreen == "on" + Expression: do not Disturb" + Expression: param_disturbmod == "always" + Expression: param_disturbmod == "onlyImportant" + Expression: param_disturbmod == "never" + Expression: param_disturbmod == "alarmClockOnly" + Expression: setBluetooth" + Expression: param_screen=="on" + Expression: setScreenOnOff" + Gerät sperren + Expression: param_screen=="off" + Expression: openApp" + App Task läuft: App (neuster) + Expression: setVolume" + App Starten: App + Dateien löschen: /storage/emulated/0/Download/installFlow_{param_flowname} + Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname} + Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname} + Script: notification_text = "Flow install: path for download not exist" + Flows/Widgets importieren: /storage/sdcard0/Download/installFlow_{param_flowname} + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/sdcard0/Download + Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/sdcard0/Download + Flows/Widgets importieren: /storage/emulated/0/Download/installFlow_{param_flowname} + Flows/Widgets importieren: /storage/sdcard0/Download/installFlow_{param_flowname} + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0) + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard) + Expression: installFlow" + Neustart + Expression: Reboot + Expression: System Command" + Expression: Shutdown + Script: airplanemode = "airplanemode@@on"; fhemcmd = "setreading"; + Flows ausführen: Send Data to AMADCommBridge mit warten + Flugmodus ein-/ausschalten: Ein + Herunterfahren + Notification Lautstärke Wiederherstellen + Expression: param_notifyfile == "RedAlert.mp3" + Benachrichtigung aus Statusbar entfernen: Alle + Benachrichtigung aus Statusbar entfernen: Alle (Automagic) + Expression: Automagic + Expression: All + Expression: notifysnd" + NotificationLautstärke auf Level 7 + Notification Lautstärke Speichern + Expression: param_notifyfile == "RedAlert.mp3" + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Expression: Clear Automagic Meldungen" + Expression: setVibrate" + Vibrieren: Pattern 2 (-- --) + Audio Player steuern: Medienknopf Zurück ({pname}/{kname}) + Expression: param_button == "stop" + Expression: param_button == "next" + Expression: param_button == "back" + Schalte Display ein: Hell für {param_screenontime}s + Expression: global_fhemip != null or global_bridgeport != null + Setze Alarm: um {param_hour}:{param_minute} + Audio Player steuern: Medienknopf Weiter ({pname}/{kname}) + Expression: openCall" + Nummer anrufen: {param_callnumber} + Expression: param_flowstate == "active" or param_flowstate == "inactive" + Expression: param_flowstate == "active" + Setze Flow Status: Deaktivieren {param_flowname} + Script: notification_text = "Flow '{param_flowname}' has been set {param_flowstate}" + Expression: multimediaControl" + Starte Daydream + Expression: startDaydream" + Lautstärken setzen param_volume + Expression: setNotifiVolume" + Lautstärken setzen param_notifivolume + Expression: param_button == "play/pause" + Audio Player steuern: Medienknopf Play/Pause (/{kname}) + Sound: {param_notifypath}{param_notifyfile} als Benachrichtigung + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) + Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/emulated/0/Download + Script: flow_informations = "\"flow_informations\":" + " \"" + {informationFlow_state} + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Flows ausführen: Send Data to AMADCommBridge + Flows ausführen: udef_trigger setLockPin + Flow Aktiv: Informations + Script: informationFlow_state = "aktiv" + Script: informationFlow_state = "inaktiv" + Setze Flow Status: Aktivieren Informations + Host erreichbar: {global_fhemip}:{global_bridgeport} + Flow Aktiv: Send Data to AMADCommBridge + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + Audio Player steuern: Medienknopf Stopp ({pname}/{kname}) + SMS senden an: an {param_smsnumber} '{param_smsmessage}' (10 in 12h) + Expression: param_lockmod == "lock" + Expression: Airplanemode + Expression: param_nfc == "on" + Expression: param_nfc == "off" + NFC ein-/ausschalten: Aus + Expression: sendSms" + Expression: closeCall" + Expression: nfc" + NFC ein-/ausschalten: Ein + Expression: setRingSoundVolume" + Lautstärken setzen param_ringsoundvolume + Zeige Home Screen + Expression: showhomescreen" + Setze Timer + Expression: ttsMsg" + Expression: ttsMsgLang" + Medianlautstärken Speichern + Lautstärke einstellen: Medien auf Level {param_msgvol} + Script: Zuordnung Mediaplayer + Expression: param_msgvol == "none" + Sprachausgabe: Englisch + Sprachausgabe: Deutsch + Expression: param_msgvol == "none" + Medienlautstärke Wiederherstellen + Expression: flowState" + Setze Flow Status: Aktivieren {param_flowname} + Flows ausführen: VoiceControl + Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*" + Expression: flowRun" + Flows ausführen: {param_flowname} + Setze Lock PIN/Passwort: PIN/Passwort zurücksetzen + - + @@ -4680,175 +4680,175 @@ Soll der Assistent gelöscht werden? - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Update AMAD Flowset - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 true QUEUE @@ -4910,7 +4910,7 @@ Soll der Assistent gelöscht werden? VoiceControl - AMADNG Info/Control Flowset v4.0.11 + AMADNG Info/Control Flowset v4.1.99.1 true QUEUE From d86f51d006d9522697c02163eec18e02fcd0e1bf Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 19 Dec 2017 11:43:04 +0100 Subject: [PATCH 11/42] remove IODev in Define and add IODev Attribut --- 73_AMADCommBridge.pm | 2 +- 74_AMADDevice.pm | 33 ++++++++++++--------------------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index c39b19a..230c3a1 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.17"; +my $modulversion = "4.1.99.22"; my $flowsetversion = "4.1.99.1"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 16ff8b7..372c296 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.17"; +my $modulversion = "4.1.99.22"; my $flowsetversion = "4.1.99.1"; @@ -135,28 +135,16 @@ sub AMADDevice_Define($$) { my ( $hash, $def ) = @_; my @a = split( "[ \t]+", $def ); - splice( @a, 1, 1 ); - my $iodev; - my $i = 0; - - ######## Kann in kommenden Versionen gelöscht werden ############### - foreach my $param ( @a ) { - if( $param =~ m/IODev=([^\s]*)/ ) { - - $iodev = $1; - splice( @a, $i, 4 ); - last; - } - - $i++; - } return "too few parameters: define AMADDevice " if( @a != 4 ); return "Cannot define a AMAD device. Perl modul $missingModul is missing." if ( $missingModul ); - - my ($name,$host,$amad_id,$remoteServer) = @a; + my $name = $a[0] + my $host = $a[2] + my $amad_id = $a[3] + my $remoteServer = $a[4] + $hash->{HOST} = $host; $hash->{AMAD_ID} = $amad_id; $hash->{VERSIONMODUL} = $modulversion; @@ -170,9 +158,12 @@ sub AMADDevice_Define($$) { $hash->{helper}{setCmdErrorCounter} = 0; $hash->{helper}{deviceStateErrorCounter} = 0; + + + CommandAttr(undef,"$name IODev $modules{AMADCommBridge}{defptr}{BRIDGE}->{NAME}") if(AttrVal($name,'IODev','none') eq 'none'); + + my $iodev = AttrVal($name,'IODev','none'); - - AssignIoPort($hash,$iodev) if( !$hash->{IODev} ); if(defined($hash->{IODev}->{NAME})) { @@ -764,7 +755,7 @@ sub AMADDevice_Parse($$) { } else { - return "UNDEFINED $fhemDevice AMADDevice $decode_json->{firstrun}{'amaddevice_ip'} $decode_json->{amad}{'amad_id'} $decode_json->{firstrun}{remoteserver} IODev=$name"; + return "UNDEFINED $fhemDevice AMADDevice $decode_json->{firstrun}{'amaddevice_ip'} $decode_json->{amad}{'amad_id'} $decode_json->{firstrun}{remoteserver}"; } } From 05d7fb0fdb0b45987af73c1cc50859ca20707f1d Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 19 Dec 2017 11:53:10 +0100 Subject: [PATCH 12/42] bugfixes --- 74_AMADDevice.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 372c296..f1f0f4f 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -140,10 +140,10 @@ sub AMADDevice_Define($$) { return "Cannot define a AMAD device. Perl modul $missingModul is missing." if ( $missingModul ); - my $name = $a[0] - my $host = $a[2] - my $amad_id = $a[3] - my $remoteServer = $a[4] + my $name = $a[0]; + my $host = $a[2]; + my $amad_id = $a[3]; + my $remoteServer = $a[4]; $hash->{HOST} = $host; $hash->{AMAD_ID} = $amad_id; From 544a5e247f0afd56ab50b45d485d97432b8614a6 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 19 Dec 2017 20:49:19 +0100 Subject: [PATCH 13/42] bugfix --- 74_AMADDevice.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index f1f0f4f..5c2b201 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -136,7 +136,7 @@ sub AMADDevice_Define($$) { my ( $hash, $def ) = @_; my @a = split( "[ \t]+", $def ); - return "too few parameters: define AMADDevice " if( @a != 4 ); + return "too few parameters: define AMADDevice " if( @a != 5 ); return "Cannot define a AMAD device. Perl modul $missingModul is missing." if ( $missingModul ); From b558a4ced2cf270ae037a6f5984c33e8240c4e42 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 19 Dec 2017 20:55:20 +0100 Subject: [PATCH 14/42] add Attribut IODev --- 74_AMADDevice.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 5c2b201..44cc9a1 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.22"; +my $modulversion = "4.1.99.23"; my $flowsetversion = "4.1.99.1"; @@ -120,6 +120,7 @@ sub AMADDevice_Initialize($) { "setAPSSID ". "root:0,1 ". "disable:1 ". + "IODev ". "remoteServer:Automagic,Autoremote,TNES,other ". $readingFnAttributes; From 0e1b010dd2dd17d2bca6241cf5816b7af52e1198 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 20 Dec 2017 06:14:04 +0100 Subject: [PATCH 15/42] fix typo bug at flowset, chane version number --- 73_AMADCommBridge.pm | 2 +- 74_AMADDevice.pm | 2 +- ...ml => 74_AMADautomagicFlowset_4.1.99.3.xml | 946 +++++++++--------- 3 files changed, 489 insertions(+), 461 deletions(-) rename 74_AMADautomagicFlowset_4.1.99.1.xml => 74_AMADautomagicFlowset_4.1.99.3.xml (88%) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 230c3a1..e91ca15 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -75,7 +75,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.22"; -my $flowsetversion = "4.1.99.1"; +my $flowsetversion = "4.1.99.3"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 44cc9a1..966c258 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -59,7 +59,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.23"; -my $flowsetversion = "4.1.99.1"; +my $flowsetversion = "4.1.99.3"; diff --git a/74_AMADautomagicFlowset_4.1.99.1.xml b/74_AMADautomagicFlowset_4.1.99.3.xml similarity index 88% rename from 74_AMADautomagicFlowset_4.1.99.1.xml rename to 74_AMADautomagicFlowset_4.1.99.3.xml index dbf94ca..6166475 100644 --- a/74_AMADautomagicFlowset_4.1.99.1.xml +++ b/74_AMADautomagicFlowset_4.1.99.3.xml @@ -288,7 +288,7 @@ irname=getString("name") false - Medien Session verändert.2 + Medien Session verändert true com.amazon.mp3,com.audible.application,com.rhapsody.alditalk,com.sec.android.app.music,com.spotify.music,de.maxdome.app.android,com.google.android.videos,com.google.android.music,org.smblott.intentradioio,com.amazon.avod.thirdpartyclient,tunein.player,org.videolan.vlc,com.google.android.youtube,com.google.android.apps.youtube.kids @@ -331,6 +331,15 @@ irname=getString("name") true false + + false + SMS Empfangen: Alle + true + true + + + false + true Sprachbefehl angefordert @@ -1111,6 +1120,11 @@ or trigger == "HTTP Request: /fhem-amad/deviceInfo/" Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + + true + Expression: trigger == "SMS Empfangen: Alle" + trigger == "SMS Empfangen: Alle" + true Expression: trigger == "Sprachbefehl angefordert" @@ -2805,6 +2819,12 @@ nextalarmstate = "snooze" Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; + + + true + Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + @@ -3028,7 +3048,7 @@ fhemcmd = "setreading"; false Script: Set FHEMDATA JSON - + false @@ -3731,7 +3753,7 @@ Soll der Assistent gelöscht werden? First Run Assistant - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 false PARALLEL @@ -3904,17 +3926,189 @@ Soll der Assistent gelöscht werden? Informations - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 true QUEUE 900 - + Script: daydream_state = "on" + Script: daydream_state = "off" + Script: keyguard = "unlocked" + Display Orientierung: Portrait + Script: screen_orientation = "portrait" + Script: screen_orientation = "landscape" + Script: dock_state = "docked" + Script: dock_state = "undocked" + Script: keyguardSet = "0" + Script: screen_orientation_mode = "manual" + Script: scrcount = 0 + Script: keyguard = "locked" + Expression: scrcount < 5 + Script: scrcount = scrcount + 1 + Pause: 2s (Gerät wach halten) + Dock Status: Docked + Display automatisch drehen eingeschaltet + Expression: trigger == "Daydream Status: Gestartet" + Bluetooth eingeschaltet + Keyguard gesperrt + Expression: keyguard == "locked" + Expression: getAndroidSDKVersion() >= "16" + Script: keyguardSet = "not supported from your device" + Display eingeschaltet + Display eingeschaltet + Expression: getAndroidSDKVersion() >= "16" + Unterbrechnungen-Modus: Nur Wecker (Android 6+) + Unterbrechnungen-Modus: Keine / Nicht unterbrechen + Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen + Unterbrechnungen-Modus: Alle / Immer unterbrechen + Script: dndValue = "always" + Script: dndValue = "onlyImportant" + Script: dndValue = "never" + Script: dndValue = "alarmClockOnly" + Script: screen_state = "on" + Script: screen_state = "off" + Script: screen_state = "on {keyguard}" + Script: screen_state = "off {keyguard}" + Script: airplanemode = "off" + Script: bluetooth_state = "on" + Script: androidVersion = "not supported funktion" + App Task läuft: {global_activetask} (neuster) + Script: runTask = "1" + Script: runTask = "0" + Expression: getAndroidSDKVersion() >= "19" + Script: runTask = "not supported android version" + Script: runTask = "null" + Expression: global_activetask != null + Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt" + Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Akku Ladestand: grösser als 0%" + Stromversorgung: Angeschlossen + Script: screen_orientation_mode = "auto" + Script: bluetooth_state = "off" + Keyguard mit Sicherheit + Script: keyguardSet = "1" + Expression: udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle" + Expression: trigger == "Flugmodus: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Systemeinstellung verändert: System screen_brightness" + Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution) + Script: volume = {volumeBT} + Pause: 2s (Gerät wach halten) + Musik Aktiv + Benachrichtigung auf Bildschirm: [AMAD2] Nicht mehr benötigte AMAD Flows wurden entfernt! (lange) + Expression: trigger == "Systemeinstellung verändert: System volume_music_bt_a2dp" or trigger == "Systemeinstellung verändert: System volume_music_speaker" or trigger == "Systemeinstellung verändert: System volume_music_headphone" or trigger == "Systemeinstellung verändert: System volume_music_headset" + Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2 + Script: volume = {volumeSP} + Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2 + Expression: trigger == "Unterbrechnungen-Modus: Alle / Immer unterbrechen" or trigger == "Unterbrechnungen-Modus: Keine / Nicht unterbrechen" or trigger == "Unterbrechnungen-Modus: Nur Wecker (Android 6+)" or trigger == "Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "21" + Script: airpcount = 0 + Host erreichbar: {global_fhemip}:{global_bridgeport} + WLAN Reassoziieren + Expression: global_fhemip != null or global_bridgeport != null + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Script: notification_text = "not supported from your device" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp" + Benachrichtigung in Statusbar angezeigt: WhatsApp + Initialisiere Variable Systemeinstellung: screenBrightness + Initialisiere Variable Systemeinstellung: volumeNotification + Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Get Android Version + WLAN verfügbar: {global_apssid} + Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; + Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardSet} + "\""; fhemcmd = "setreading"; + Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; + Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; + Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; + Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; + Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; + Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; + Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; + Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; + Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; + Expression: Leon == "Gaultier" + Flows löschen: MultimediaControl + Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Automagic + Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; + Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flows ausführen: Send Data to AMADCommBridge + Prüfe und setze globale Variable + Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; + Script: connected_devices_names = "none"; connected_devices_addresses = "none" + Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; + Bluetooth Gerät verbunden: Beliebiges Geräte + Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; + Setze Flow Status: Aktivieren SetCommands + Script: setCommandFlow_state = "aktiv" + Script: setCommandFlow_state = "inaktiv" + Flow Aktiv: SetCommands + Expression: trigger == "Periodischer Timer: alle 120s" + Expression: global_userflowstate != "none" + Flow Aktiv: {global_userflowstate} + Script: flowState = "inactive" + Script: flowState = "active" + Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flow Aktiv: Send Data to AMADCommBridge + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + Expression: trigger == "Periodischer Timer: alle 120s" + Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; + Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Pause: 2s (Gerät wach halten) + Script: airpcount = airpcount + 1 + Expression: airpcount < 11 + Script: notification_text = "not supported from your device" + Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; + Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; + Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; + Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; + Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" + Expression: package_name == {global_activetask} + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" + Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" + Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } + Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Initialisiere Variable Nächster Alarm: next_alarm + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + Script: next_alarmday = "{next_alarm,dateformat,c}" + Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; + Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" + Expression: trigger == "Systemeinstellung verändert: System volume_ring" + Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" + Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Kabelgebundenes Headset verbunden + Script: headsetValue = 1 + Script: headsetValue = 0 + Initialisiere Variable Systemeinstellung: volumeRingSound + Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" + Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } + Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } + Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Telegram Messenger + Script: notification_text = "not supported from your device" + Expression: getAndroidSDKVersion() >= "19" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" + Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE Kabelgebundenes Headset Verbunden Genereller Broadcast: wenn org.smblott.intentradio.STATE Systemeinstellung verändert: System volume_music_headphone - Stromversorgung: Angeschlossen + Medien Session verändert + Kabelgebundenes Headset Getrennt Systemeinstellung verändert: System volume_music_headset + Stromversorgung: Angeschlossen Bluetooth Status: Schaltet ein, Ein Display Status: Aus Display Orientierung: Portrait @@ -3926,457 +4120,291 @@ Soll der Assistent gelöscht werden? Daydream Status: Gestoppt Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic Eingehender Anruf. Status: Klingelt, Nummern: Alle - Systemeinstellung verändert: System screen_brightness - Systemeinstellung verändert: System volume_music_speaker Display Status: Ein - Bluetooth Gerät verbunden: Alle Geräte + Systemeinstellung verändert: System volume_music_speaker + Systemeinstellung verändert: System screen_brightness Daydream Status: Gestartet + Bluetooth Gerät verbunden: Alle Geräte Bluetooth Gerät getrennt: Alle Geräte - Dock Event: Docked Periodischer Timer: alle 120s + Dock Event: Docked Systemeinstellung verändert: System volume_music_bt_a2dp Akku Ladestand: grösser als 0% - Unterbrechnungen-Modus: Alle / Immer unterbrechen App Task Beendet + Unterbrechnungen-Modus: Alle / Immer unterbrechen HTTP Request: /fhem-amad/deviceInfo/ Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT - Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic - Systemeinstellung verändert: System next_alarm - Stromversorgung: Entfernt Benachrichtigung in Statusbar angezeigt: org.telegram.messenger + Stromversorgung: Entfernt + Systemeinstellung verändert: System next_alarm + Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic App Task Gestartet Unterbrechnungen-Modus: Keine / Nicht unterbrechen Dock Event: Undocked Display Orientierung: Landscape - Systemeinstellung verändert: System volume_ring Unterbrechnungen-Modus: Nur Wecker (Android 6+) + Systemeinstellung verändert: System volume_ring Flugmodus: Aus Systemeinstellung verändert: System volume_ring_speaker - Kabelgebundenes Headset Getrennt - Medien Session verändert.2 + SMS Empfangen: Alle - Script: daydream_state = "on" - Script: daydream_state = "off" - Script: keyguard = "unlocked" - Display Orientierung: Portrait - Script: screen_orientation = "portrait" - Script: screen_orientation = "landscape" - Script: dock_state = "docked" - Script: dock_state = "undocked" - Script: keyguardSet = "0" - Script: screen_orientation_mode = "manual" - Script: scrcount = 0 - Script: keyguard = "locked" - Expression: scrcount < 5 - Script: scrcount = scrcount + 1 - Pause: 2s (Gerät wach halten) - Dock Status: Docked - Display automatisch drehen eingeschaltet - Expression: trigger == "Daydream Status: Gestartet" - Bluetooth eingeschaltet - Keyguard gesperrt - Expression: keyguard == "locked" - Expression: getAndroidSDKVersion() >= "16" - Script: keyguardSet = "not supported from your device" - Display eingeschaltet - Display eingeschaltet - Expression: getAndroidSDKVersion() >= "16" - Unterbrechnungen-Modus: Nur Wecker (Android 6+) - Unterbrechnungen-Modus: Keine / Nicht unterbrechen - Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen - Unterbrechnungen-Modus: Alle / Immer unterbrechen - Script: dndValue = "always" - Script: dndValue = "onlyImportant" - Script: dndValue = "never" - Script: dndValue = "alarmClockOnly" - Script: screen_state = "on" - Script: screen_state = "off" - Script: screen_state = "on {keyguard}" - Script: screen_state = "off {keyguard}" - Script: airplanemode = "off" - Script: bluetooth_state = "on" - Script: androidVersion = "not supported funktion" - App Task läuft: {global_activetask} (neuster) - Script: runTask = "1" - Script: runTask = "0" - Expression: getAndroidSDKVersion() >= "19" - Script: runTask = "not supported android version" - Script: runTask = "null" - Expression: global_activetask != null - Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt" - Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Akku Ladestand: grösser als 0%" - Stromversorgung: Angeschlossen - Script: screen_orientation_mode = "auto" - Script: bluetooth_state = "off" - Keyguard mit Sicherheit - Script: keyguardSet = "1" - Expression: udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle" - Expression: trigger == "Flugmodus: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Systemeinstellung verändert: System screen_brightness" - Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution) - Script: volume = {volumeBT} - Pause: 2s (Gerät wach halten) - Musik Aktiv - Benachrichtigung auf Bildschirm: [AMAD2] Nicht mehr benötigte AMAD Flows wurden entfernt! (lange) - Expression: trigger == "Systemeinstellung verändert: System volume_music_bt_a2dp" or trigger == "Systemeinstellung verändert: System volume_music_speaker" or trigger == "Systemeinstellung verändert: System volume_music_headphone" or trigger == "Systemeinstellung verändert: System volume_music_headset" - Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2 - Script: volume = {volumeSP} - Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2 - Expression: trigger == "Unterbrechnungen-Modus: Alle / Immer unterbrechen" or trigger == "Unterbrechnungen-Modus: Keine / Nicht unterbrechen" or trigger == "Unterbrechnungen-Modus: Nur Wecker (Android 6+)" or trigger == "Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "21" - Script: airpcount = 0 - Host erreichbar: {global_fhemip}:{global_bridgeport} - WLAN Reassoziieren - Expression: global_fhemip != null or global_bridgeport != null - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Script: notification_text = "not supported from your device" - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp" - Benachrichtigung in Statusbar angezeigt: WhatsApp - Script: notification_text = "not supported from your device" - Initialisiere Variable Systemeinstellung: screenBrightness - Initialisiere Variable Systemeinstellung: volumeNotification - Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Get Android Version - WLAN verfügbar: {global_apssid} - Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; - Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardSet} + "\""; fhemcmd = "setreading"; - Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; - Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; - Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; - Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; - Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; - Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; - Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; - Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; - Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; - Expression: Leon == "Gaultier" - Flows löschen: MultimediaControl - Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Benachrichtigung in Statusbar angezeigt: Automagic - Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; - Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flows ausführen: Send Data to AMADCommBridge - Prüfe und setze globale Variable - Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; - Script: connected_devices_names = "none"; connected_devices_addresses = "none" - Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; - Bluetooth Gerät verbunden: Beliebiges Geräte - Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; - Setze Flow Status: Aktivieren SetCommands - Script: setCommandFlow_state = "aktiv" - Script: setCommandFlow_state = "inaktiv" - Flow Aktiv: SetCommands - Expression: trigger == "Periodischer Timer: alle 120s" - Expression: global_userflowstate != "none" - Flow Aktiv: {global_userflowstate} - Script: flowState = "inactive" - Script: flowState = "active" - Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flow Aktiv: Send Data to AMADCommBridge - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Expression: trigger == "Periodischer Timer: alle 120s" - Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; - Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Benachrichtigung in Statusbar angezeigt: Telegram Messenger - Pause: 2s (Gerät wach halten) - Script: airpcount = airpcount + 1 - Expression: airpcount < 11 - Script: notification_text = "not supported from your device" - Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" - Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; - Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; - Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; - Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; - Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" - Expression: package_name == {global_activetask} - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" - Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" - Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } - Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Initialisiere Variable Nächster Alarm: next_alarm - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Script: next_alarmday = "{next_alarm,dateformat,c}" - Host erreichbar: {global_fhemip}:{global_bridgeport} - Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; - Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" - Expression: trigger == "Systemeinstellung verändert: System volume_ring" - Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" - Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Kabelgebundenes Headset verbunden - Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } - Script: headsetValue = 1 - Script: headsetValue = 0 - Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } - Initialisiere Variable Systemeinstellung: volumeRingSound - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Host erreichbar: {global_fhemip}:{global_bridgeport} + Expression: trigger == "SMS Empfangen: Alle" + Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NFC Tag Support - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 true PARALLEL @@ -4390,7 +4418,7 @@ Soll der Assistent gelöscht werden? Send Data to AMADCommBridge - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 true PARALLEL 900 @@ -4421,20 +4449,20 @@ Soll der Assistent gelöscht werden? Host erreichbar: {global_fhemip}:{global_bridgeport} Expression: fhemcmd == "fhemfunc" Script: Set FHEMCALLSUB JSON - Expression: fhemcmd == "setreading" - HTTP Request: send FHEMFUNC data to AMADCommBridge JSON - HTTP Request: send FIRSTRUN data to AMADCommBridge JSON - HTTP Request: send READINGS data to AMADCommBridge JSON - HTTP Request: send SET data to AMADCommBridge JSON - HTTP Request: send READINGSVAL data to AMADCommBridge JSON - HTTP Request: send VOICEINPUTVALUE data to AMADCommBridge - Script: Set FHEMDATA JSON First Run Assistant + HTTP Request: send FHEMFUNC data to AMADCommBridge JSON + HTTP Request: send FIRSTRUN data to AMADCommBridge JSON + HTTP Request: send READINGS data to AMADCommBridge JSON + HTTP Request: send SET data to AMADCommBridge JSON + HTTP Request: send READINGSVAL data to AMADCommBridge JSON + HTTP Request: send VOICEINPUTVALUE data to AMADCommBridge + Script: Set FHEMDATA JSON First Run Assistant + Expression: fhemcmd == "setreading" Script: Set FHEMDATA JSON - - + + @@ -4445,10 +4473,10 @@ Soll der Assistent gelöscht werden? - + - - + + @@ -4457,14 +4485,14 @@ Soll der Assistent gelöscht werden? - - - - + + + + SetCommands - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 true QUEUE 900 @@ -4848,7 +4876,7 @@ Soll der Assistent gelöscht werden? Update AMAD Flowset - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 true QUEUE @@ -4910,7 +4938,7 @@ Soll der Assistent gelöscht werden? VoiceControl - AMADNG Info/Control Flowset v4.1.99.1 + AMADNG Info/Control Flowset v4.1.99.3 true QUEUE @@ -4944,4 +4972,4 @@ Soll der Assistent gelöscht werden? - \ No newline at end of file + From e6810cce0d1c95d27103bbee604bac93390ca52f Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 21 Dec 2017 09:31:36 +0100 Subject: [PATCH 16/42] add dummy port in define for remoteServer = other --- 74_AMADDevice.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 966c258..1d593fc 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.23"; +my $modulversion = "4.1.99.25"; my $flowsetversion = "4.1.99.3"; @@ -154,6 +154,7 @@ sub AMADDevice_Define($$) { $hash->{PORT} = 8090 if($remoteServer eq 'Automagic'); $hash->{PORT} = 1817 if($remoteServer eq 'Autoremote'); $hash->{PORT} = 8765 if($remoteServer eq 'TNES'); + $hash->{PORT} = 1111 if($remoteServer eq 'other'); # Dummy Port for other $hash->{helper}{infoErrorCounter} = 0; $hash->{helper}{setCmdErrorCounter} = 0; From 9050157edd6d768e881bc2f06afcfc44eae83636 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 21 Dec 2017 15:10:53 +0100 Subject: [PATCH 17/42] fix multiple bugs --- 73_AMADCommBridge.pm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index e91ca15..37bbe16 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.22"; +my $modulversion = "4.1.99.23"; my $flowsetversion = "4.1.99.3"; @@ -275,7 +275,11 @@ sub AMADCommBridge_Write($@) { doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'TNES'); - Log3 $name, 5, "AMADCommBridge ($name) - Send with remoteServer: $remoteServer URL: $param->{url}, HEADER: $param->{header}, METHOD: $method, DATA: $param->{data}"; + + my $logtext = "AMADCommBridge ($name) - Send with remoteServer: $remoteServer URL: $param->{url}, HEADER: $param->{header}, METHOD: $method"; + $logtext .= ", DATA: $param->{data}" if( $remoteServer ne 'Automagic'; + Log3 $name, 5, "$logtext"; + HttpUtils_NonblockingGet($param) if( defined($param) ); } @@ -802,7 +806,8 @@ sub AMADCommBridge_ResponseProcessing($$) { return Log3 $bname, 3, "AMADCommBridge ($name) - AMADCommBridge: processing receive no reading values from Device: $fhemDevice" unless( (defined($decode_json->{payload}) and ($decode_json->{payload})) or (defined($decode_json->{firstrun}) and ($decode_json->{firstrun})) ); - Log3 $bname, 4, "AMADCommBridge ($bname) - AMADCommBridge: processing receive reading values - Device: $fhemDevice Data: $decode_json->{payload}" unless( defined($decode_json->{payload}) and ($decode_json->{payload}) ); + Log3 $bname, 4, "AMADCommBridge ($bname) - AMADCommBridge: processing receive reading values - Device: $fhemDevice Data: $decode_json->{payload}" + if( defined($decode_json->{payload}) and ($decode_json->{payload}) ); Dispatch($bhash,$json,undef); Log3 $bname, 4, "AMADCommBridge ($bname) - call Dispatcher"; From d2873d141847d4f3fdcc312d65d4b4534fc64d3a Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 21 Dec 2017 22:06:55 +0100 Subject: [PATCH 18/42] add change remoteServer with port --- 73_AMADCommBridge.pm | 4 ++-- 74_AMADDevice.pm | 25 +++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 37bbe16..91a2ba4 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.23"; +my $modulversion = "4.1.99.24"; my $flowsetversion = "4.1.99.3"; @@ -277,7 +277,7 @@ sub AMADCommBridge_Write($@) { my $logtext = "AMADCommBridge ($name) - Send with remoteServer: $remoteServer URL: $param->{url}, HEADER: $param->{header}, METHOD: $method"; - $logtext .= ", DATA: $param->{data}" if( $remoteServer ne 'Automagic'; + $logtext .= ", DATA: $param->{data}" if( $remoteServer ne 'Automagic' ); Log3 $name, 5, "$logtext"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 1d593fc..696172a 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.25"; +my $modulversion = "4.1.99.27"; my $flowsetversion = "4.1.99.3"; @@ -233,7 +233,28 @@ sub AMADDevice_Attr(@) { my $orig = $attrVal; - if( $attrName eq "disable" ) { + if( $attrName eq "remoteServer" ) { + if( $cmd eq "set" ) { + if( $attrVal eq "Automagic" ) { + $hash->{PORT} = 8090; + Log3 $name, 3, "AMADDevice ($name) - set remoteServer to Automagic"; + + } elsif( $attrVal eq "Autoremote" ) { + $hash->{PORT} = 1817; + Log3 $name, 3, "AMADDevice ($name) - set remoteServer to Autoremote"; + + } elsif( $attrVal eq "TNES" ) { + $hash->{PORT} = 8765; + Log3 $name, 3, "AMADDevice ($name) - set remoteServer to TNES"; + + } elsif( $attrVal eq "other" ) { + $hash->{PORT} = 1111; + Log3 $name, 3, "AMADDevice ($name) - set remoteServer to other"; + } + } + } + + elsif( $attrName eq "disable" ) { if( $cmd eq "set" ) { if( $attrVal eq "0" ) { From 8da0d9cb1e731858dd280801135feff0d0d8cf90 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Fri, 22 Dec 2017 08:20:32 +0100 Subject: [PATCH 19/42] add CommandDefMod to change the DEF then change Attribut remoteServer --- 74_AMADDevice.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 696172a..e7966d2 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.27"; +my $modulversion = "4.1.99.28"; my $flowsetversion = "4.1.99.3"; @@ -251,6 +251,8 @@ sub AMADDevice_Attr(@) { $hash->{PORT} = 1111; Log3 $name, 3, "AMADDevice ($name) - set remoteServer to other"; } + + CommandDefMod(undef,"$name $hash->{TYPE} $hash->{HOST} $hash->{AMAD_ID} $attrVal"); } } From 0bc32ea6c35d9f0af59962ef88a797b8ffa59d34 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sat, 23 Dec 2017 06:19:37 +0100 Subject: [PATCH 20/42] bugfix CommandDefMod --- 74_AMADDevice.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index e7966d2..82ac61b 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.28"; +my $modulversion = "4.1.99.29"; my $flowsetversion = "4.1.99.3"; @@ -252,7 +252,7 @@ sub AMADDevice_Attr(@) { Log3 $name, 3, "AMADDevice ($name) - set remoteServer to other"; } - CommandDefMod(undef,"$name $hash->{TYPE} $hash->{HOST} $hash->{AMAD_ID} $attrVal"); + $hash->{DEF} = "$name $hash->{TYPE} $hash->{HOST} $hash->{AMAD_ID} $attrVal"; } } From d5b695ebce89cd96e8e82d292c9e3205ab67bcf1 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sat, 23 Dec 2017 06:27:05 +0100 Subject: [PATCH 21/42] change Flowset --- 74_AMADautomagicFlowset_4.1.99.3.xml | 870 +++++++++++++-------------- 1 file changed, 435 insertions(+), 435 deletions(-) diff --git a/74_AMADautomagicFlowset_4.1.99.3.xml b/74_AMADautomagicFlowset_4.1.99.3.xml index 6166475..4e170e8 100644 --- a/74_AMADautomagicFlowset_4.1.99.3.xml +++ b/74_AMADautomagicFlowset_4.1.99.3.xml @@ -2868,24 +2868,24 @@ fhemcmd = "setreading"; true - Script: keyguardSet = "0" - + Script: keyguardset = "0" + true - Script: keyguardSet = "1" - + Script: keyguardset = "1" + true - Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardSet} + "\""; fhemcmd = "setreading"; - true - Script: keyguardSet = "not supported from your device" - + Script: keyguardset = "not supported from your device" + true @@ -3930,177 +3930,7 @@ Soll der Assistent gelöscht werden? true QUEUE 900 - Script: daydream_state = "on" - Script: daydream_state = "off" - Script: keyguard = "unlocked" - Display Orientierung: Portrait - Script: screen_orientation = "portrait" - Script: screen_orientation = "landscape" - Script: dock_state = "docked" - Script: dock_state = "undocked" - Script: keyguardSet = "0" - Script: screen_orientation_mode = "manual" - Script: scrcount = 0 - Script: keyguard = "locked" - Expression: scrcount < 5 - Script: scrcount = scrcount + 1 - Pause: 2s (Gerät wach halten) - Dock Status: Docked - Display automatisch drehen eingeschaltet - Expression: trigger == "Daydream Status: Gestartet" - Bluetooth eingeschaltet - Keyguard gesperrt - Expression: keyguard == "locked" - Expression: getAndroidSDKVersion() >= "16" - Script: keyguardSet = "not supported from your device" - Display eingeschaltet - Display eingeschaltet - Expression: getAndroidSDKVersion() >= "16" - Unterbrechnungen-Modus: Nur Wecker (Android 6+) - Unterbrechnungen-Modus: Keine / Nicht unterbrechen - Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen - Unterbrechnungen-Modus: Alle / Immer unterbrechen - Script: dndValue = "always" - Script: dndValue = "onlyImportant" - Script: dndValue = "never" - Script: dndValue = "alarmClockOnly" - Script: screen_state = "on" - Script: screen_state = "off" - Script: screen_state = "on {keyguard}" - Script: screen_state = "off {keyguard}" - Script: airplanemode = "off" - Script: bluetooth_state = "on" - Script: androidVersion = "not supported funktion" - App Task läuft: {global_activetask} (neuster) - Script: runTask = "1" - Script: runTask = "0" - Expression: getAndroidSDKVersion() >= "19" - Script: runTask = "not supported android version" - Script: runTask = "null" - Expression: global_activetask != null - Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt" - Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Akku Ladestand: grösser als 0%" - Stromversorgung: Angeschlossen - Script: screen_orientation_mode = "auto" - Script: bluetooth_state = "off" - Keyguard mit Sicherheit - Script: keyguardSet = "1" - Expression: udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle" - Expression: trigger == "Flugmodus: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Systemeinstellung verändert: System screen_brightness" - Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution) - Script: volume = {volumeBT} - Pause: 2s (Gerät wach halten) - Musik Aktiv - Benachrichtigung auf Bildschirm: [AMAD2] Nicht mehr benötigte AMAD Flows wurden entfernt! (lange) - Expression: trigger == "Systemeinstellung verändert: System volume_music_bt_a2dp" or trigger == "Systemeinstellung verändert: System volume_music_speaker" or trigger == "Systemeinstellung verändert: System volume_music_headphone" or trigger == "Systemeinstellung verändert: System volume_music_headset" - Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2 - Script: volume = {volumeSP} - Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2 - Expression: trigger == "Unterbrechnungen-Modus: Alle / Immer unterbrechen" or trigger == "Unterbrechnungen-Modus: Keine / Nicht unterbrechen" or trigger == "Unterbrechnungen-Modus: Nur Wecker (Android 6+)" or trigger == "Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "21" - Script: airpcount = 0 - Host erreichbar: {global_fhemip}:{global_bridgeport} - WLAN Reassoziieren - Expression: global_fhemip != null or global_bridgeport != null - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Script: notification_text = "not supported from your device" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp" - Benachrichtigung in Statusbar angezeigt: WhatsApp - Initialisiere Variable Systemeinstellung: screenBrightness - Initialisiere Variable Systemeinstellung: volumeNotification - Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Get Android Version - WLAN verfügbar: {global_apssid} - Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; - Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardSet} + "\""; fhemcmd = "setreading"; - Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; - Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; - Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; - Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; - Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; - Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; - Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; - Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; - Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; - Expression: Leon == "Gaultier" - Flows löschen: MultimediaControl - Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Benachrichtigung in Statusbar angezeigt: Automagic - Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; - Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flows ausführen: Send Data to AMADCommBridge - Prüfe und setze globale Variable - Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; - Script: connected_devices_names = "none"; connected_devices_addresses = "none" - Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; - Bluetooth Gerät verbunden: Beliebiges Geräte - Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; - Setze Flow Status: Aktivieren SetCommands - Script: setCommandFlow_state = "aktiv" - Script: setCommandFlow_state = "inaktiv" - Flow Aktiv: SetCommands - Expression: trigger == "Periodischer Timer: alle 120s" - Expression: global_userflowstate != "none" - Flow Aktiv: {global_userflowstate} - Script: flowState = "inactive" - Script: flowState = "active" - Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flow Aktiv: Send Data to AMADCommBridge - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Expression: trigger == "Periodischer Timer: alle 120s" - Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; - Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Pause: 2s (Gerät wach halten) - Script: airpcount = airpcount + 1 - Expression: airpcount < 11 - Script: notification_text = "not supported from your device" - Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; - Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; - Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; - Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; - Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" - Expression: package_name == {global_activetask} - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" - Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" - Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } - Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Initialisiere Variable Nächster Alarm: next_alarm - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Script: next_alarmday = "{next_alarm,dateformat,c}" - Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; - Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" - Expression: trigger == "Systemeinstellung verändert: System volume_ring" - Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" - Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Kabelgebundenes Headset verbunden - Script: headsetValue = 1 - Script: headsetValue = 0 - Initialisiere Variable Systemeinstellung: volumeRingSound - Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" - Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } - Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } - Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Benachrichtigung in Statusbar angezeigt: Telegram Messenger - Script: notification_text = "not supported from your device" - Expression: getAndroidSDKVersion() >= "19" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" - + Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE Kabelgebundenes Headset Verbunden Genereller Broadcast: wenn org.smblott.intentradio.STATE @@ -4148,259 +3978,429 @@ Soll der Assistent gelöscht werden? Systemeinstellung verändert: System volume_ring_speaker SMS Empfangen: Alle - Host erreichbar: {global_fhemip}:{global_bridgeport} - Expression: trigger == "SMS Empfangen: Alle" - Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - - - + Script: daydream_state = "on" + Script: daydream_state = "off" + Display Orientierung: Portrait + Script: screen_orientation = "portrait" + Script: screen_orientation = "landscape" + Script: dock_state = "docked" + Script: dock_state = "undocked" + Script: screen_orientation_mode = "manual" + Expression: scrcount < 5 + Script: scrcount = scrcount + 1 + Pause: 2s (Gerät wach halten) + Dock Status: Docked + Display automatisch drehen eingeschaltet + Expression: trigger == "Daydream Status: Gestartet" + Bluetooth eingeschaltet + Keyguard gesperrt + Expression: keyguard == "locked" + Expression: getAndroidSDKVersion() >= "16" + Display eingeschaltet + Display eingeschaltet + Expression: getAndroidSDKVersion() >= "16" + Unterbrechnungen-Modus: Nur Wecker (Android 6+) + Unterbrechnungen-Modus: Keine / Nicht unterbrechen + Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen + Unterbrechnungen-Modus: Alle / Immer unterbrechen + Script: dndValue = "always" + Script: dndValue = "onlyImportant" + Script: dndValue = "never" + Script: dndValue = "alarmClockOnly" + Script: screen_state = "off" + Script: screen_state = "on {keyguard}" + Script: screen_state = "off {keyguard}" + Script: airplanemode = "off" + Script: bluetooth_state = "on" + Script: androidVersion = "not supported funktion" + App Task läuft: {global_activetask} (neuster) + Script: runTask = "1" + Script: runTask = "0" + Expression: getAndroidSDKVersion() >= "19" + Script: runTask = "not supported android version" + Script: runTask = "null" + Expression: global_activetask != null + Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt" + Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Akku Ladestand: grösser als 0%" + Stromversorgung: Angeschlossen + Script: screen_orientation_mode = "auto" + Script: bluetooth_state = "off" + Keyguard mit Sicherheit + Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle" + Expression: trigger == "Flugmodus: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Systemeinstellung verändert: System screen_brightness" + Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution) + Script: volume = {volumeBT} + Pause: 2s (Gerät wach halten) + Musik Aktiv + Benachrichtigung auf Bildschirm: [AMAD2] Nicht mehr benötigte AMAD Flows wurden entfernt! (lange) + Expression: trigger == "Systemeinstellung verändert: System volume_music_bt_a2dp" or trigger == "Systemeinstellung verändert: System volume_music_speaker" or trigger == "Systemeinstellung verändert: System volume_music_headphone" or trigger == "Systemeinstellung verändert: System volume_music_headset" + Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2 + Script: volume = {volumeSP} + Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2 + Expression: trigger == "Unterbrechnungen-Modus: Alle / Immer unterbrechen" or trigger == "Unterbrechnungen-Modus: Keine / Nicht unterbrechen" or trigger == "Unterbrechnungen-Modus: Nur Wecker (Android 6+)" or trigger == "Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "21" + Script: airpcount = 0 + Host erreichbar: {global_fhemip}:{global_bridgeport} + WLAN Reassoziieren + Expression: global_fhemip != null or global_bridgeport != null + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Script: notification_text = "not supported from your device" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp" + Benachrichtigung in Statusbar angezeigt: WhatsApp + Initialisiere Variable Systemeinstellung: screenBrightness + Initialisiere Variable Systemeinstellung: volumeNotification + Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Get Android Version + WLAN verfügbar: {global_apssid} + Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; + Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; + Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; + Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; + Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; + Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; + Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; + Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; + Expression: Leon == "Gaultier" + Flows löschen: MultimediaControl + Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Automagic + Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; + Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flows ausführen: Send Data to AMADCommBridge + Prüfe und setze globale Variable + Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; + Script: connected_devices_names = "none"; connected_devices_addresses = "none" + Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; + Bluetooth Gerät verbunden: Beliebiges Geräte + Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; + Setze Flow Status: Aktivieren SetCommands + Script: setCommandFlow_state = "aktiv" + Script: setCommandFlow_state = "inaktiv" + Flow Aktiv: SetCommands + Expression: trigger == "Periodischer Timer: alle 120s" + Expression: global_userflowstate != "none" + Flow Aktiv: {global_userflowstate} + Script: flowState = "inactive" + Script: flowState = "active" + Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flow Aktiv: Send Data to AMADCommBridge + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + Expression: trigger == "Periodischer Timer: alle 120s" + Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; + Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Pause: 2s (Gerät wach halten) + Script: airpcount = airpcount + 1 + Expression: airpcount < 11 + Script: notification_text = "not supported from your device" + Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; + Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; + Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; + Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" + Expression: package_name == {global_activetask} + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" + Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" + Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } + Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Initialisiere Variable Nächster Alarm: next_alarm + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + Script: next_alarmday = "{next_alarm,dateformat,c}" + Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; + Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" + Expression: trigger == "Systemeinstellung verändert: System volume_ring" + Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" + Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Kabelgebundenes Headset verbunden + Script: headsetValue = 1 + Script: headsetValue = 0 + Initialisiere Variable Systemeinstellung: volumeRingSound + Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" + Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } + Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } + Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Telegram Messenger + Script: notification_text = "not supported from your device" + Expression: getAndroidSDKVersion() >= "19" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" + Host erreichbar: {global_fhemip}:{global_bridgeport} + Expression: trigger == "SMS Empfangen: Alle" + Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; + Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; + Script: screen_state = "on" + Script: keyguard = "locked" + Script: keyguard = "unlocked" + Script: scrcount = 0 + Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; + Script: keyguardset = "1" + Script: keyguardset = "0" + Expression: udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: keyguardset = "not supported from your device" + Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardset} + "\""; fhemcmd = "setreading"; + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NFC Tag Support @@ -4455,8 +4455,8 @@ Soll der Assistent gelöscht werden? HTTP Request: send SET data to AMADCommBridge JSON HTTP Request: send READINGSVAL data to AMADCommBridge JSON HTTP Request: send VOICEINPUTVALUE data to AMADCommBridge - Script: Set FHEMDATA JSON First Run Assistant - Expression: fhemcmd == "setreading" + Expression: fhemcmd == "setreading" + Script: Set FHEMDATA JSON First Run Assistant Script: Set FHEMDATA JSON @@ -4473,10 +4473,10 @@ Soll der Assistent gelöscht werden? - + - + @@ -4486,8 +4486,8 @@ Soll der Assistent gelöscht werden? - - + + @@ -4972,4 +4972,4 @@ Soll der Assistent gelöscht werden? - + \ No newline at end of file From 6f0299ff883acc61ed8d3b5f2d66a72bc55df344 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 28 Dec 2017 20:07:14 +0100 Subject: [PATCH 22/42] fix hash->{DEF} Bug --- 74_AMADDevice.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 82ac61b..05ced50 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,7 +58,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.29"; +my $modulversion = "4.1.99.30"; my $flowsetversion = "4.1.99.3"; @@ -252,7 +252,7 @@ sub AMADDevice_Attr(@) { Log3 $name, 3, "AMADDevice ($name) - set remoteServer to other"; } - $hash->{DEF} = "$name $hash->{TYPE} $hash->{HOST} $hash->{AMAD_ID} $attrVal"; + $hash->{DEF} = "$hash->{HOST} $hash->{AMAD_ID} $attrVal"; } } From 589bae6eb10bb6f1ee84b98206167f74cded2049 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 2 Jan 2018 12:01:33 +0100 Subject: [PATCH 23/42] add check for fhemDevice Variable --- 73_AMADCommBridge.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 91a2ba4..b6e0402 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.24"; +my $modulversion = "4.1.99.25"; my $flowsetversion = "4.1.99.3"; @@ -785,7 +785,7 @@ sub AMADCommBridge_ResponseProcessing($$) { - if( !defined($amad_id) ) { + if( !defined($amad_id) or !defined($fhemDevice) ) { readingsSingleUpdate( $bhash, "transmitterERROR", $hash->{NAME}." has no device name sends", 1 ) if( AttrVal( $bname, "expertMode", 0 ) eq "1" ); Log3 $bname, 4, "AMADCommBridge ($name) - ERROR - no device name given. please check your global variable in automagic"; From bfc84046d37eeeaf5feb0501546006273c0a2c08 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 3 Jan 2018 05:14:15 +0100 Subject: [PATCH 24/42] change old code --- 73_AMADCommBridge.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index b6e0402..156706a 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,7 +74,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.25"; +my $modulversion = "4.1.99.26"; my $flowsetversion = "4.1.99.3"; @@ -786,10 +786,10 @@ sub AMADCommBridge_ResponseProcessing($$) { if( !defined($amad_id) or !defined($fhemDevice) ) { - readingsSingleUpdate( $bhash, "transmitterERROR", $hash->{NAME}." has no device name sends", 1 ) if( AttrVal( $bname, "expertMode", 0 ) eq "1" ); - Log3 $bname, 4, "AMADCommBridge ($name) - ERROR - no device name given. please check your global variable in automagic"; + readingsSingleUpdate( $bhash, "transmitterERROR", $hash->{NAME}." has no correct amad_id", 1 ); + Log3 $bname, 4, "AMADCommBridge ($name) - ERROR - no device name given. please check your global variable amad_id in automagic"; - $response = "header lines: \r\n AMADCommBridge receive no device name. please check your global variable in automagic\r\n FHEM to do nothing\r\n"; + $response = "header lines: \r\n AMADCommBridge receive no device name. please check your global variable amad_id in automagic\r\n FHEM to do nothing\r\n"; $c = $hash->{CD}; print $c "HTTP/1.1 200 OK\r\n", "Content-Type: text/plain\r\n", From 270c72ef474ab3ebbb4e94f7824422ce32bc2c26 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 10 Jan 2018 11:13:41 +0100 Subject: [PATCH 25/42] add Taskerset --- 74_AMADtaskerset_4.1.99.3.prj.xml | 10370 ++++++++++++++++++++++++++++ 1 file changed, 10370 insertions(+) create mode 100644 74_AMADtaskerset_4.1.99.3.prj.xml diff --git a/74_AMADtaskerset_4.1.99.3.prj.xml b/74_AMADtaskerset_4.1.99.3.prj.xml new file mode 100644 index 0000000..b7546f2 --- /dev/null +++ b/74_AMADtaskerset_4.1.99.3.prj.xml @@ -0,0 +1,10370 @@ + + 1080.0,1776.0 + + 1513116735261 + true + 1512761338116 + 1000 + 923 + toGoAMAD + + 160 + %AMAD_apssid + + + + + + 165 + + + %AMAD_toGo + 2 + on + + + + + + 1513116735261 + true + 1512646676509 + 1001 + 962 + 972 + AMAD_powerPlugged + + 10 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735262 + true + 1512684208205 + 1002 + 938 + toGoAMAD + + 160 + true + %AMAD_apssid + + + + + + 165 + + + %AMAD_toGo + 2 + on + + + + + + 1513116735262 + true + 1512646890239 + 1003 + 935 + 969 + AMAD_airplanemode + + 100 + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735263 + true + 1512646887184 + 1004 + 951 + 990 + AMAD_nfc + + 195 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735264 + true + 1512664382473 + 1005 + 965 + 980 + AMAD_screenOrientation + + 122 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735264 + true + 1512646885163 + 1006 + 920 + 974 + AMAD_dockingState + + 80 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735265 + true + 1512749333107 + 1007 + 978 + Pushover AMAD + + 109437509 + 0 + + + Title=~"AMAD" + java.lang.String + true + java.lang.Boolean + + java.lang.String + + java.lang.String + net.superblock.pushover.tasker.OK + java.lang.String + + java.lang.String + false + java.lang.Boolean + AMAD + java.lang.String + + java.lang.String + + java.lang.String + + + net.superblock.pushover + net.superblock.pushover.tasker.PushoverTaskerPluginActivity + + + 165 + + + %AMAD_receive + 2 + on + + + + + + 1513116735274 + true + 1513116249338 + 1008 + 940 + AMAD_screen_off + + 165 + + + %AMAD_send + 2 + on + + + + + 210 + + + + 1513116735274 + true + 1513424870080 + 1010 + 943 + 989 + AMAD_bluetooth + + 2 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735275 + true + 1513424368275 + 1011 + 982 + TNES AMAD + + 818578785 + 0 + + + 22 + java.lang.Integer + <StringArrayList sr=""><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0>device==AMAD</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1>cmd</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1></StringArrayList> + java.util.ArrayList + 192.168.5.82 + java.lang.String + 8765 + java.lang.String + + java.lang.String + + java.lang.String + + java.lang.String + AMAD + java.lang.String + true + java.lang.Boolean + + + bidoismorgan.httpevent + taskerplugin.httpevent.ui.EditActivity + + + 165 + + + %AMAD_receive + 2 + on + + + + + + 1513147867496 + true + 1513424830740 + 1012 + 1013 + AMAD_alarm_done + + 306 + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513147695795 + true + 1513424843423 + 1014 + 1015 + AMAD_alarm_start + + 305 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513276789072 + true + 1513424824152 + 1016 + 1017 + AMAD_alarm + + com.android.deskclock.DeskClock + 2 + Uhr + true + com.android.deskclock + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735246 + true + 1513424802623 + 994 + 992 + AMAD_screen_on + + 165 + + + %AMAD_send + 2 + on + + + + + 208 + + + + 1513116735247 + true + 1512664308181 + 995 + 918 + 947 + AMAD_daydream + + 175 + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735247 + true + 1512646889105 + 996 + 948 + 983 + AMAD_wiredHeadsetPlugged + + 30 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735248 + true + 1512646889713 + 997 + 979 + AMAD_InformationFlow + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1513116735259 + true + 1513147652107 + 998 + 914 + AMAD_screen_unlocked + + 165 + + + %AMAD_send + 2 + on + + + + + 1000 + + + + 1513116735259 + true + 1513422799932 + 999 + 982 + AutoRemote AMAD + + 1015828216 + 0 + + + AMAD=:= + java.lang.String + <null> + java.lang.String + AMAD=:= + java.lang.String + false + java.lang.Boolean + false + java.lang.Boolean + false + java.lang.Boolean + <null> + java.lang.String + true + java.lang.Boolean + <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%err +Error Code +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg +Error Message +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%armessage +The whole received AutoRemote message. +The whole received AutoRemote message.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%arpar() +Single words to the left of =:= +Single words to the left of =:=</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%arcomm +Whole of the text to the right of =:= +Whole of the text to the right of =:=</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5>%artime +Current Time +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6>%arfiles() +Files +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7>%arsenderbtmac +Sender Bluetooth Mac Address +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8>%arsenderid +Sender Id +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9>%arsenderlocalip +Sender Local IP +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10>%arsendername +Sender Name +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11>%arsenderpublicip +Sender Public IP +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12>%arsendertype +Sender Type +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13>%arvia +Way the message was sent (BT, Wifi, GCM) +</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13></StringArray> + [Ljava.lang.String; + messagevar tempvar commparamsvar message target plugininstanceid plugintypeid + java.lang.String + true + java.lang.Boolean + af7bff02-f94c-479d-b5a4-1aad4787b934 + java.lang.String + com.joaomgcd.autoremote.IntentRemoteEvent + java.lang.String + <null> + java.lang.String + + + com.joaomgcd.autoremote + com.joaomgcd.autoremote.activity.ActivityConfigConditionTaskerEvent + + + 165 + + + %AMAD_receive + 2 + on + + + + + + 1502789371413 + AMAD + 1006,1007,1003,1000,1011,999,997,1005,995,1001,1004,1014,996,994,1002,1008,1016,1012,998,1010 + AMAD_Dialog_Message,AMAD_settings + 922,984,1050,1048,1023,980,1047,1020,1053,966,1013,1035,949,1041,1032,1033,1022,1038,920,1025,1049,1021,1034,962,970,926,954,1054,972,937,948,1051,1037,1055,979,1056,1030,914,1045,935,1028,1036,1043,983,1015,1057,938,967,982,975,944,927,974,969,1031,989,1024,1026,990,940,1058,968,978,1019,1044,1052,943,1046,939,947,951,1039,963,1029,918,965,934,923,1017,992 + + android.hardware.bluetooth:y + android.hardware.wifi:y + 963 + net.superblock.pushover + com.joaomgcd.autoremote + bidoismorgan.httpevent + com.schlimbo.amad + 1.0 + 6 + + + /storage/emulated/0/Tasker/.icn/Eigene Icons/TaskerFHEM_icon.png + + + + 1502817008040 + 1513454407485 + 437 + 437 + AMAD_Dialog_Message + 945 + 945 + + 4 + 0,0,944,437,0,0,944,437 + Rectangle_Hintergrund + + #77333333 + + + #FFFFFFFF + + + + + 4 + 8,0,928,340,8,0,928,340 + Text_Title + %message + + + #FFFFFFFF + + + + + + + 954 + 4 + 639,340,306,95,639,340,306,95 + Text_Weiter + Weiter + + + #FF03A9F4 + + + + + + + 966 + + + #FF424242 + + Input Dialog + + + + + true + + + + + 1512032010150 + 1513454811685 + 720 + 1280 + AMAD_settings + 1280 + 720 + + 1057 + 4 + 0,561,159,75,651,272,133,73 + Text_fhemctlmode + Control +Mode: + + + #FFFFFFFF + + + + + + + 1041 + 4 + 0,464,159,75,651,173,133,73 + Text_AMADport + AMAD +Bridge Port: + + + #FFFFFFFF + + + + + + + 4 + 1037 + 168,367,397,75,796,75,343,73 + 1048 + TextEdit_FHEMip + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 4 + 1033 + 168,464,397,75,796,173,343,73 + 1044 + TextEdit_AMADport + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 4 + 1023 + 168,271,397,75,143,272,343,73 + 1049 + TextEdit_AMAD_ID + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1021 + 168,1030,397,75,796,518,343,73 + 1031 + TextEdit_SSID + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 4 + 168,561,397,75,796,272,345,74 + Spinner_fhemctlmode + + + + + 1512142679276 + 1512142679276 + 74 + 75 + spinner + 345 + 397 + + 1 + 232,0,159,73,195,0,150,74 + Icon + + hd_aaa_ext_tiles_small + + + + + 1 + 11,0,101,73,15,0,95,74 + Index + 1. + + + #FFFFFFFF + + + + + + + 5 + 0,0,397,75,0,0,345,74 + Label + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + + + #FF858585 + + spinner + + + + + + + + + + + + + + + + true + + + + 1058 + 4 + 578,76,134,75,503,75,121,73 + Text_getDeviceName + auto +set + + + #FF03A9F4 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1025 + 4 + 578,271,134,75,503,272,121,73 + Text_getID + Generate +new ID + + + #FF03A9F4 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1043 + 4 + 578,174,134,75,503,173,121,73 + Text_getIP + get +Device IP + + + #FF03A9F4 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1032 + 578,1030,134,75,1153,518,121,73 + Text_getSSID + get +SSID + + + #FF03A9F4 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1050 + 4 + 578,464,134,75,1153,173,121,73 + Text_setPort + default +8090 + + + #FF03A9F4 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1045 + 0,1030,159,75,651,518,133,73 + Text_SSID + WLAN +SSID: + + + #FFFFFFFF + + + + + + + 1051 + 4 + 0,1175,182,102,0,643,374,75 + Text_close + CLOSE + + + #FF03A9F4 + + + + + + + 1047 + 4 + 283,1175,199,102,452,643,369,75 + Text_autocreate + create Device + + + #FF03A9F4 + + + + + + + 1046 + 4 + 544,1175,174,102,947,643,330,75 + Text_save + SAVE + + + #FF03A9F4 + + + + + + + 1056 + 4 + 591,884,118,74,503,518,118,73 + Switch_information + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + + + + #FF000000 + + + + + + 1052 + 4 + 0,884,567,74,0,518,478,73 + Text_information + information Profiles + + + #FFFFFFFF + + + + + + + 1039 + 4 + 0,957,567,74,651,444,478,73 + Text_toGo + toGo Funktion + + + #FFFFFFFF + + + + + + + 1038 + 4 + 591,957,118,74,1153,444,118,73 + Switch_toGo + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + + + + #FF000000 + + + + + + 1035 + 4 + 0,737,567,74,0,370,478,73 + Text_StatusRequest + StatusRequest + + + #FFFFFFFF + + + + + + + 1034 + 4 + 578,737,134,75,503,370,123,73 + Text_sendStatusRequest + send + + + #FF03A9F4 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1055 + 4 + 0,1124,707,53,0,593,1269,49 + Text_lastCommand + %AMAD_lastSetCommand + + + #FF858585 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + + + + #FF000000 + + + + + + 1030 + 4 + 0,174,159,75,0,173,133,73 + Text_DeviceIP + Device +IP: + + + #FFFFFFFF + + + + + + + 4 + 682,16,19,19,1243,16,19,19 + Oval_online + + #FF424242 + + + #FFFFFFFF + + + 1054 + 4 + 499,6,179,58,1070,0,173,50 + Text_deviceState + deviceState + + + #FFFFFFFF + + + + + + + 1024 + 4 + 0,809,567,74,1,444,478,73 + Text_setCommands + setCommand Profiles + + + #FFFFFFFF + + + + + + + 4 + 591,809,118,74,503,444,118,73 + Switch_setCommands + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + + + + #FF000000 + + + + + + 1019 + 4 + 0,659,159,75,651,370,133,73 + Text_remoteServer + remote +Server: + + + #FFFFFFFF + + + + + + + 4 + 168,659,397,75,796,370,345,74 + Spinner_remoteServer + + + + + 1512142679276 + 1512142679276 + 74 + 75 + spinner + 345 + 397 + + 1 + 232,0,159,73,195,0,150,74 + Icon + + hd_aaa_ext_tiles_small + + + + + 1 + 11,0,101,73,15,0,95,74 + Index + 1. + + + #FFFFFFFF + + + + + + + 5 + 0,0,397,75,0,0,345,74 + Label + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + + + #FF858585 + + spinner + + + + + + + + + + + + + + + + true + + + + 1028 + 4 + 0,271,159,75,0,272,133,73 + Text_AMAD_ID + AMAD +ID: + + + #FFFFFFFF + + + + + + + 1022 + 4 + 0,76,159,75,0,75,133,73 + Text_DeviceName + Device +Name: + + + #FFFFFFFF + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + + + + #FFFFFFFF + + + + + + 4 + 168,0,349,74,478,0,369,74 + Text_Title + AMAD for Tasker + + + #FFFFFFFF + + + + + + + 4 + 1026 + 168,76,397,75,143,75,343,73 + 1053 + TextEdit_DeviceName + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 4 + 1020 + 168,174,397,75,143,173,343,73 + 1036 + TextEdit_DeviceIP + + + + #FF000000 + + + + + + 4 + -1,-1,-1,-1,-1,-1,-1,-1 + + + #FF858585 + + + #FFFFFFFF + + + + + + 1029 + 4 + 0,367,159,75,651,75,133,73 + Text_FHEMip + AMAD +Bridge IP: + + + #FFFFFFFF + + + + + + + + + #FF424242 + + AMAD Settings + + + + + + + 1513147872631 + 1513276907496 + 1013 + + 547 + + %setreading + "nextAlarmState": "done" + + + + + + 664 + + false + contres + CONTEXT + getContentResolver +{ContentResolver} () + + + + + + + + + + 38 + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + 664 + + false + %alarm + android.provider.Settings$System + getString +{String} (ContentResolver, String) + contres + next_alarm_formatted + + + + + + + + 37 + + + %alarm + 3 + \%alarm + + + + + 547 + %blank + + + + + + + 590 + %alarm + .,%blank + + + + 547 + + %setreading + %setreading,"nextAlarmDay": "%alarm1" + + + + + + %alarm1 + 3 + \%alarm1 + + + + + 547 + + %setreading + %setreading,"nextAlarmTime": "%alarm2" + + + + + + %alarm2 + 3 + \%alarm2 + + + + + 43 + + + 547 + + %setreading + %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + + 1513147701841 + 1513277267125 + 1015 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "nextAlarmState": "alert","nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + 1513276797078 + 1513424688732 + 1017 + + 547 + + %setreading + "nextAlarmState": "done" + + + + + + 664 + + false + contres + CONTEXT + getContentResolver +{ContentResolver} () + + + + + + + + + + 38 + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + 664 + + false + %alarm + android.provider.Settings$System + getString +{String} (ContentResolver, String) + contres + next_alarm_formatted + + + + + + + + 37 + + + %alarm + 3 + \%alarm + + + + + 547 + %blank + + + + + + + 590 + %alarm + .,%blank + + + + 547 + + %setreading + %setreading,"nextAlarmDay": "%alarm1" + + + + + + %alarm1 + 3 + \%alarm1 + + + + + 547 + + %setreading + %setreading,"nextAlarmTime": "%alarm2" + + + + + + %alarm2 + 3 + \%alarm2 + + + + + 43 + + + 547 + + %setreading + %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + + 1512172077193 + 1512172077193 + 1019 + + 548 + Attribut: remoteServer +Hierüber wird festgelegt, über welchen Dienst die setCommands empfangen werden. + + + + + 1512505998767 + 1512505998767 + 1020 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512509936846 + 1512509936846 + 1021 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512170785531 + 1512170785531 + 1022 + + 548 + Wie soll das Device in FHEM heißen? +(Zulässige Zeichen: "a".."z", "A".."Z", "0".."9", "_", ".") + + + + + 1512506004674 + 1512506004674 + 1023 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512758867606 + 1512758867606 + 1024 + + 548 + Wenn deaktiviert werden keine set-Befehle auf dem Gerät ausgeführt. + + + + + 1512054845923 + 1512054845923 + 1025 + + 51 + %scene_name + TextEdit_AMAD_ID + + %TIMES + + + + 548 + Eine neue AMAD ID wurde generiert. + + + + + 1512505794248 + 1512505794248 + 1026 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512172711494 + 1512172711494 + 1028 + + 548 + Falls das AMAD Device in FHEM von Hand angelegt wurde, muss hier die "AMAD_ID" auf den gleichen Wert wie in FHEM gesetzt werden. + + + + + 1512172357867 + 1512172357867 + 1029 + + 548 + Bitte gebe die IP Adresse oder den FQDN Deines FHEM Servers an. + + + + + 1512172416613 + 1512172416613 + 1030 + + 548 + Bitte gebe die IP Adresse Deines Androidgerätes an. NUR IP kein FQDN!!! + + + + + 1512509955759 + 1512509955759 + 1031 + + 547 + %enter + + + + + + + + 37 + + And + + %new_val + 4 + %enter + + + %initial + 2 + false + + + + + 598 + %new_val + %enter + + + + + + + + + 51 + %scene_name + %element_name + + %new_val + + + + %new_val + 3 + \%new_val + + + + + 68 + %scene_name + TextEdit_DeviceName + + + + 38 + + + + 1512054845923 + 1512054845923 + 1032 + + 341 + false + + + %ssid + + + 37 + + Or + + %ssid + 2 + \%ssid + + + %ssid + 2 + <unknown ssid> + + + + + 548 + Die aktuelle SSID konnte nicht ermittelt werden. + + + + 43 + + + 51 + + AMAD_settings + TextEdit_SSID + + %ssid + + + + 548 + Die aktuelle SSID: "%ssid" wurde übernommen. + + + + 38 + + + + 1512506016964 + 1512506016964 + 1033 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1503937837718 + 1503937837718 + 1034 + 102 + + 548 + Status Request wird an AMAD CommBridge gesendet... + + + + 130 + + AMAD_informations + + %priority + + + + + + + + 55 + + %scene_name + Oval_online + #FFFF0000 + #FFFF0000 + + + 38 + + + 547 + %readingsvalcmd + %AMAD_fhemdevice deviceState kaputt + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + readingsval + %readingsvalcmd + %respreadingsval + + + + 548 + status: %respreadingsval + + + + %respreadingsval + 3 + \%respreadingsval + + + + + 37 + + + %respreadingsval + 2 + online + + + + + 55 + + %scene_name + Oval_online + #FF00FF00 + #FF00FF00 + + + 43 + + And + And + + %respreadingsval + 3 + kaputt + + + %respreadingsval + 3 + no connection + + + %respreadingsval + 3 + /%respreadingsval + + + + + 55 + + %scene_name + Oval_online + #FFFFFF00 + #FFFFFF00 + + + 43 + + + + 1512715391071 + 1512715391071 + 1035 + + 548 + Manuelles auslösen einen status Requests + + + + + 1512032849766 + 1512032849766 + 1036 + 102 + + 598 + + %new_val + [^0-9\.] + + + + + + + + + 51 + %scene_name + TextEdit_DeviceIP + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + + 1512506010779 + 1512506010779 + 1037 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512173777582 + 1512173777582 + 1038 + + 37 + + + %new_val + 2 + on + + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 43 + + + %new_val + 2 + off + + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 38 + + + + 1512758684068 + 1512758684068 + 1039 + + 548 + Wenn aktiviert werde Statusänderungen nur gesenden, wenn mit angegebener SSID verbunden. + + + + + 1512172222460 + 1512172222460 + 1041 + + 548 + Bitte gebe den Port der AMADCommBridge vom FHEM Server an. (Default: 8090) + + + + + 1503937837718 + 1503937837718 + 1043 + 102 + + 130 + AMAD_getDeviceIP + + %priority + + + + %deviceip + + + + 37 + + + %deviceip + 3 + \%deviceip + + + + + 51 + %scene_name + TextEdit_DeviceIP + + %deviceip + + + + 548 + Geräte Adresse "%deviceip" wurde erkannt. + + + + 43 + + + 548 + Die eigene IP konnte nicht ermittelt werden. + + + + 38 + + + + 1512032849766 + 1512032849766 + 1044 + 102 + + 598 + + %new_val + [^0-9] + + + + + + + + + 51 + %scene_name + TextEdit_AMADport + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + + 1512171985482 + 1512171985482 + 1045 + + 548 + toGo Funktion: hiermit wird die Sendefunktion deaktiviert, sobald der/die APSSID/'s getrennt wurden. +Es können mehrere SSIDs durch slash "/" getrennt angegeben werden. + + + + + 1503937837718 + 1503937837718 + 1046 + 102 + + 130 + + AMAD_save + + %priority+1 + + %scene_name + + + + + + + 1503937837718 + 1503937837718 + 1047 + 102 + + 130 + + AMAD_save + + %priority+1 + + %scene_name + + + + + + 548 + Send Data to AMADCommBridge: firstrun + + + + 37 + + + + %response + 2 + no connection + + + + + 547 + %message + Es konnte keine Verbindung zur AMAD CommBridge hergestellt werden. +Hast Du die AMADCommBridge definiert, und ist sie auch aktiv? +Bitten prüfe die Eingetragene FHEM Adresse "%AMAD_fhemip:%AMAD_bridgeport". + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 137 + + + + + 38 + + + 30 + + + + + + + + 130 + + AMAD_informations + + %priority+1 + + + + %response + + + + 30 + + + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + firstrun + %AMAD_DeviceIP + %response + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + readingsval + %AMAD_fhemdevice deviceState kaputt + %respreadingsval + + + + 37 + + + %respreadingsval + 2 + online + + + + + 55 + + %scene_name + Oval_online + #FF00FF00 + #FF00FF00 + + + 547 + %message + Die Einrichtung ist nun abgeschlossen und das AMAD Device online. + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 547 + + %AMAD_send + on + + + + + + 547 + + %AMAD_receive + on + + + + + + 50 + + AMAD_settings + Switch_information + + + + 37 + + + + %response + 2 + Variable not set + + + + + 50 + + AMAD_settings + Switch_setCommands + + + + 65 + + AMAD_settings + Text_toGo + + + + + + 65 + + AMAD_settings + Switch_toGo + + + + + + 43 + + And + And + + %respreadingsval + 3 + kaputt + + + %respreadingsval + 3 + no connection + + + %respreadingsval + 3 + /%respreadingsval + + + + + 55 + + %scene_name + Oval_online + #FFFFFF00 + #FFFFFF00 + + + 547 + %message + Die Einrichtung ist nun abgeschlossen und das AMAD Device wurde angelegt. Es scheint aber noch keine Verbindung zwischen FHEM und Deinem AMAD Device zu bestehen. Mache am besten einmal ein Status Request in FHEM für das AMAD Device. Ist der Status in FHEM weiterhin offline schaue bitte ob alle AMAD Tasker Profiele aktiv sind. + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 43 + + + 547 + %message + Die Eingaben sind unvollständig. +Bitten prüfe die eingetragene Daten. + + + + + + 55 + + %scene_name + Oval_online + #FFFF0000 + #FFFF0000 + + + 547 + %message + Leider scheint es ein Problem beim Einrichten des FHEM Devices gegeben zu haben. +-Stelle sicher, dass in FHEM noch kein Device mit dem Namen "%AMAD_fhemdevice" existiert. +-Stelle sicher, dass autocreate aktiviert ist. + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 38 + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 137 + + + + + 38 + + + + 1512506655696 + 1512506655696 + 1048 + 102 + + 547 + %enter + + + + + + + + 37 + + And + + %new_val + 4 + %enter + + + %initial + 2 + false + + + + + 598 + %new_val + %enter + + + + + + + + + 51 + %scene_name + %element_name + + %new_val + + + + %new_val + 3 + \%new_val + + + + + 68 + %scene_name + TextEdit_AMADport + + + + 38 + + + + 1512064023268 + 1512064023268 + 1049 + 102 + + 598 + + %new_val + [^0-9] + + + + + + + + + 51 + %scene_name + TextEdit_AMAD_ID + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + + 1503937837718 + 1503937837718 + 1050 + 102 + + 51 + %scene_name + TextEdit_AMADport + + 8090 + + + + 548 + AMAD Bridge Port wurde auf 8090 gesetzt + + + + + 1503937837718 + 1503937837718 + 1051 + 102 + + 49 + %scene_name + + + + 1512758764278 + 1512758764278 + 1052 + + 548 + Wenn deaktiviert werden keine Statusänderungen an die CommBridge gesendet. + + + + + 1512032849766 + 1512032849766 + 1053 + 102 + + 547 + %enter + + + + + + + + 37 + + + %new_val + 4 + %enter + + + + + 598 + %new_val + %enter + + + + + + + + + 51 + %scene_name + %element_name + + %new_val + + + + %new_val + 3 + \%new_val + + + + + 68 + %scene_name + TextEdit_DeviceIP + + + + 43 + + + 598 + + %new_val + [^a-zA-Z_0-9\.] + + + + %fail + + + + + 51 + %scene_name + TextEdit_DeviceName + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + 548 + Es werden nur folgende Zeichen unterstüzt: a-z A-Z 0-9 _ . + + + + %fail(#) + 7 + 0 + + + + + 38 + + + + 1512253437179 + 1512253437179 + 1054 + + 547 + %readingsvalcmd + %AMAD_fhemdevice deviceState kaputt + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + readingsval + %readingsvalcmd + %respreadingsval + + + + 548 + status: %respreadingsval + + + + %respreadingsval + 3 + \%respreadingsval + + + + + 37 + + + %respreadingsval + 2 + online + + + + + 55 + + %scene_name + Oval_online + #FF00FF00 + #FF00FF00 + + + 43 + + And + And + + %respreadingsval + 3 + kaputt + + + %respreadingsval + 3 + no connection + + + %respreadingsval + 3 + /%respreadingsval + + + + + 55 + + %scene_name + Oval_online + #FFFFFF00 + #FFFFFF00 + + + 43 + + + 55 + + %scene_name + Oval_online + #FFFF0000 + #FFFF0000 + + + 38 + + + + 1512424887005 + 1512424887005 + 1055 + + 105 + false + %AMAD_lastSetCommand + + + + 548 + letzter empfangener set-Befehl + + + + + 1512173777582 + 1512173777582 + 1056 + + 37 + + And + + %new_val + 2 + on + + + %WIFI + 2 + on + + + + + 65 + + %scene_name + Text_toGo + + + + + + 38 + + + 43 + + + %new_val + 2 + off + + + + + 65 + + %scene_name + Text_toGo + + + + + + 65 + + %scene_name + Switch_toGo + + + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 38 + + + 65 + + %scene_name + Switch_toGo + + + + + + 37 + + + + %AMAD_toGo + 2 + on + + + + + 50 + + %scene_name + Switch_toGo + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 43 + + + 50 + + %scene_name + Switch_toGo + + + + + 1512172077193 + 1512172077193 + 1057 + + 548 + Attribut: fhemControlMode +Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefehl reinkommen. +(Für Sprachsteuerung relevant) + + + + + 1503937837718 + 1503937837718 + 1058 + 102 + + 130 + AMAD_getDeviceName + + %priority+1 + + + + %fhemdevice + + + + 37 + + + %fhemdevice + 3 + \%fhemdevice + + + + + 51 + %scene_name + TextEdit_DeviceName + + %fhemdevice + + + + 548 + Gerätename "%fhemdevice" wurde gesetzt. + + + + 43 + + + 548 + Der Gerätename konnte nicht ermittelt werden. + + + + 38 + + + + 1503612579492 + 1513147652107 + 914 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screen": "on unlocked" + + + + + + 1503612697002 + 1512664308181 + 918 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "daydream": "on" + + + + + + 1503690306712 + 1503690348078 + 920 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "dockingState": "docked" + + + + + + 1503611036750 + 1513445150127 + 922 + AMAD_SDK2Name + + 547 + %androidversion + 8.0 Oreo + + + + + + %SDK + 8 + 26 + + + + + 547 + %androidversion + 7.1 Nougat + + + + + + %SDK + 8 + 25 + + + + + 547 + %androidversion + 4.0.3 - 4.0.4 Ice Cream Sandwich MR1 + + + + + + %SDK + 8 + 15 + + + + + 547 + %androidversion + 4.0 - 4.0.2 Ice Cream Sandwich + + + + + + %SDK + 8 + 14 + + + + + 126 + %androidversion + + + + 547 + %androidversion + 7.0 Nougat + + + + + + %SDK + 8 + 24 + + + + + 547 + %androidversion + 6.0 Marshmallow + + + + + + %SDK + 8 + 23 + + + + + 547 + %androidversion + 5.1 Lollipop MR1 + + + + + + %SDK + 8 + 22 + + + + + 547 + %androidversion + 5.0 Lollipop + + + + + + %SDK + 8 + 21 + + + + + 547 + %androidversion + 4.4 KitKat + + + + + + %SDK + 8 + 19 + + + + + 547 + %androidversion + 4.3 Jelly Bean MR2 + + + + + + %SDK + 8 + 18 + + + + + 547 + %androidversion + 4.2 - 4.2.2 Jelly Bean MR1 + + + + + + %SDK + 8 + 17 + + + + + 547 + %androidversion + 4.1 - 4.1.1 Jelly Bean + + + + + + %SDK + 8 + 16 + + + + + + 1503691080060 + 1512761338116 + 923 + 100 + + 547 + + %AMAD_send + on + + + + + + + 1512327302282 + 1512508027166 + 926 + AMAD_multimediaControl + 100 + + 547 + %tpe_mplayer + %par1 + + + + + + 547 + %tpe_button + %par2 + + + + + + 443 + + + + org.videolan.vlc.RemoteControlClientReceiver + org.videolan.vlc + + + + + %tpe_button + 2 + back + + + + + 443 + + + + org.videolan.vlc.RemoteControlClientReceiver + org.videolan.vlc + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaAmazonMusic + + + + + 443 + + + + com.amazon.mp3.playback.service.HeadsetControlsReceiver + com.amazon.mp3 + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.amazon.mp3.playback.service.HeadsetControlsReceiver + com.amazon.mp3 + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.amazon.mp3.playback.service.HeadsetControlsReceiver + com.amazon.mp3 + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.amazon.mp3.playback.service.HeadsetControlsReceiver + com.amazon.mp3 + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaSpotifyMusic + + + + + 443 + + + + com.spotify.music.internal.receiver.MediaButtonReceiver + com.spotify.music + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.spotify.music.internal.receiver.MediaButtonReceiver + com.spotify.music + + + + + %tpe_button + 4 + play/pause + + + + + 37 + + + + %tpe_mplayer + 2 + mediaGoogleMusic + + + + + 443 + + + + com.spotify.music.internal.receiver.MediaButtonReceiver + com.spotify.music + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.spotify.music.internal.receiver.MediaButtonReceiver + com.spotify.music + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaTuneinRadio + + + + + 443 + + + + tunein.ui.helpers.MediaButtonIntentReceiver + tunein.player + + + + + %tpe_button + 2 + next + + + + + 443 + + + + tunein.ui.helpers.MediaButtonIntentReceiver + tunein.player + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + tunein.ui.helpers.MediaButtonIntentReceiver + tunein.player + + + + + %tpe_button + 2 + back + + + + + 443 + + + + tunein.ui.helpers.MediaButtonIntentReceiver + tunein.player + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaAldiMusic + + + + + 443 + + + + com.napster.player.MediaButtonReceiver + com.rhapsody.alditalk + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.napster.player.MediaButtonReceiver + com.rhapsody.alditalk + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.google.android.music.playback.MediaButtonIntentReceiver + com.google.android.music + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.napster.player.MediaButtonReceiver + com.rhapsody.alditalk + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.napster.player.MediaButtonReceiver + com.rhapsody.alditalk + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaYouTube + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.youtube + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.youtube + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.youtube + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.youtube + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaYouTubeKids + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.apps.youtube.kids + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.apps.youtube.kids + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.google.android.music.playback.MediaButtonIntentReceiver + com.google.android.music + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.apps.youtube.kids + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.google.android.libraries.youtube.player.PlayerUiModule$LegacyMediaButtonIntentReceiver + com.google.android.apps.youtube.kids + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaAudible + + + + + 443 + + + + com.audible.application.AudibleMediaButtonProcessingReceiver + com.audible.application + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.audible.application.AudibleMediaButtonProcessingReceiver + com.audible.application + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.audible.application.AudibleMediaButtonProcessingReceiver + com.audible.application + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.audible.application.AudibleMediaButtonProcessingReceiver + com.audible.application + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaSamsungMusic + + + + + 443 + + + + com.samsung.android.app.music.service.receiver.MediaButtonReceiver + com.sec.android.app.music + + + + + %tpe_button + 2 + next + + + + + 443 + + + + com.samsung.android.app.music.service.receiver.MediaButtonReceiver + com.sec.android.app.music + + + + + %tpe_button + 4 + play/pause + + + + + 443 + + + + com.google.android.music.playback.MediaButtonIntentReceiver + com.google.android.music + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.samsung.android.app.music.service.receiver.MediaButtonReceiver + com.sec.android.app.music + + + + + %tpe_button + 2 + back + + + + + 443 + + + + com.samsung.android.app.music.service.receiver.MediaButtonReceiver + com.sec.android.app.music + + + + + %tpe_button + 2 + stop + + + + + 38 + + + 443 + + + + com.google.android.music.playback.MediaButtonIntentReceiver + com.google.android.music + + + + + %tpe_button + 2 + stop + + + + + 43 + + + + %tpe_mplayer + 2 + mediaVlcPlayer + + + + + 443 + + + + org.videolan.vlc.RemoteControlClientReceiver + org.videolan.vlc + + + + + %tpe_button + 2 + next + + + + + 443 + + + + org.videolan.vlc.RemoteControlClientReceiver + org.videolan.vlc + + + + + %tpe_button + 4 + play/pause + + + + + + 1512752289034 + 1513015000298 + 927 + AMAD_save + 100 + + 547 + %scene_name + %par1 + + + + + + 195 + + %scene_name + TextEdit_DeviceName + + %AMAD_fhemdevice + + + 195 + + %scene_name + Switch_information + + %state + + + 547 + + %AMAD_send + %state + + + + + + 195 + + %scene_name + Switch_toGo + + %state + + + %state + 2 + on + + + + + 547 + + %AMAD_toGo + %state + + + + + + 195 + + %scene_name + TextEdit_SSID + + %AMAD_apssid + + + %state + 2 + on + + + + + 548 + AMAD Einstellungen wurden gespeichert. + + + + 195 + + %scene_name + TextEdit_DeviceIP + + %AMAD_DeviceIP + + + 195 + + %scene_name + TextEdit_FHEMip + + %AMAD_fhemip + + + 195 + + %scene_name + TextEdit_AMADport + + %AMAD_bridgeport + + + 195 + + %scene_name + TextEdit_AMAD_ID + + %AMAD_amadid + + + 195 + + %scene_name + Spinner_fhemctlmode + + %AMAD_fhemctlmode + + + 195 + + %scene_name + Spinner_remoteServer + + %AMAD_remoteServer + + + 195 + + %scene_name + Switch_setCommands + + %state + + + 547 + + %AMAD_receive + %state + + + + + + + 1512982481361 + 1513445177271 + 934 + AMAD_generate_Icon + 100 + + 547 + %taskerpath + /storage/emulated/0/Tasker + + + + + + 342 + + %taskerpath + %exists + + + + 342 + + %iconpath/TaskerFHEM_icon.png + %exists + + + + 548 + AMAD: Icon erfolgreich erstellt. + + + + %exists + 2 + true + + + + + 548 + AMAD: Icon konnte nicht erstellt werden. + + + + %exists + 3 + true + + + + + 43 + + + 548 + AMAD: Icon ist bereits vorhanden + + + + 38 + + + 43 + + + 548 + AMAD: Erstellen des Icon nicht möglich - Tasker Pfad nicht gefunden. + + + + 38 + + + 37 + + + %exists + 2 + true + + + + + 547 + %iconpath + %taskerpath/.icn/Eigene Icons + + + + + + 342 + + %iconpath + %exists + + + + 409 + %iconpath + + + + + %exists + 2 + false + + + + + 342 + + %iconpath/TaskerFHEM_icon.png + %exists + + + + 37 + + + %exists + 2 + false + + + + + 547 + + %icon + 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 + + + + + + + 775 + %icon + %iconpath/TaskerFHEM_icon.png + + + + 1503689660711 + 1511637650420 + 935 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "airplanemode": "on" + + + + + + 1503089941004 + 1512022429362 + 937 + AMAD_Beispiel_Set + 100 + + 547 + %setcmd + HUEWohnzimmer1 toggle + + + + + + 547 + %fhemcmd + set + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + %fhemcmd + %setcmd + %respset + + + + 548 + %respset + + + + + 1503692408945 + 1512684208205 + 938 + 100 + + 547 + + %AMAD_send + off + + + + + + 137 + + AMAD_SendData2CommBridge + + + + 1503089941004 + 1512684267061 + 939 + AMAD_Beispiel_function + 100 + + 547 + %fhemsub + TimestampToText('2017-05-12 23:32:19') + + + + + + 547 + %fhemcmd + fhemfunc + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + %fhemcmd + %fhemsub + %respfhemfunc + + + + 548 + %respfhemfunc + + + + + 1503612978140 + 1513116249338 + 940 + + 30 + + + + + + + + 664 + + kgm + CONTEXT + getSystemService +{KeyguardManager} (String) + keyguard + + + + + + + + + 664 + + %locked + kgm + inKeyguardRestrictedInputMode +{boolean} () + + + + + + + + + + 547 + + %setreading + "screen": "%SCREEN locked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + true + + + + + 547 + + %setreading + "screen": "%SCREEN unlocked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + false + + + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + + 1503689793813 + 1513275921434 + 943 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "bluetooth": "on" + + + + + + 1511727021932 + 1512550454190 + 944 + AMAD_getDeviceIP + 100 + + 123 + false + ifconfig wlan0 + + + %output + + + + + 547 + %ifconfig + %output + + + + + + %output + 4 + inet addr: + + + + + 123 + false + ifconfig eth0 + + + %output + + + + + 547 + %ifconfig + %output + + + + + + %output + 4 + inet addr: + + + + + 123 + false + ifconfig tun0 + + + %output + + + + + 547 + %ifconfig + %output + + + + + + %output + 4 + inet addr: + + + + + 590 + %ifconfig + inet addr: + + + + 590 + %ifconfig2 + + + + + %ifconfig2 + 3 + \%ifconfig2 + + + + + 547 + %ipaddr + %ifconfig21 + + + + + + %ifconfig21 + 3 + \%ifconfig21 + + + + + 126 + %ipaddr + + + + + 1503612743210 + 1512664299869 + 947 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "daydream": "off" + + + + + + 1511655705149 + 1511655888647 + 948 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "wiredHeadsetPlugged": "1" + + + + + + 1503089941004 + 1512022786086 + 949 + AMAD_Beispiel_readingsval + 100 + + 547 + %readingsvalcmd + %AMAD_fhemdevice deviceState kaputt + + + + + + 547 + %fhemcmd + readingsval + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + %fhemcmd + %readingsvalcmd + %respreadingsval + + + + 548 + %respreadingsval + + + + + 1511708774249 + 1511708860118 + 951 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "nfc": "on" + + + + + + 1503937837718 + 1503937837718 + 954 + + 49 + %scene_name + + + + 1503690514289 + 1503690532524 + 962 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "powerPlugged": "1" + + + + + + 1512032686923 + 1513014890967 + 963 + AMAD + 7 + + 547 + %initial + true + + + + + + 194 + AMAD_settings + + %scene + + + 38 + + + 37 + + + + %AMAD_DeviceIP + 2 + \%AMAD_DeviceIP + + + + + 130 + + AMAD_getDeviceIP + + %priority + + + + %deviceip + + + + 51 + + AMAD_settings + TextEdit_DeviceIP + + %deviceip + + + + %deviceip + 3 + \%deviceip + + + + + 43 + + + 51 + + AMAD_settings + TextEdit_DeviceIP + + %AMAD_DeviceIP + + + + 38 + + + 51 + + AMAD_settings + TextEdit_FHEMip + + %AMAD_fhemip + + + + %AMAD_fhemip + 3 + \%AMAD_fhemip + + + + + 51 + + AMAD_settings + TextEdit_AMADport + + %AMAD_bridgeport + + + + %AMAD_bridgeport + 3 + \%AMAD_bridgeport + + + + + 51 + + AMAD_settings + TextEdit_AMADport + + 8090 + + + + %AMAD_bridgeport + 2 + \%AMAD_bridgeport + + + + + 46 + AMAD_settings + + + %scene + 2 + uncreated + + + + + 51 + + AMAD_settings + TextEdit_AMAD_ID + + %AMAD_amadid + + + + %AMAD_amadid + 3 + \%AMAD_amadid + + + + + 51 + + AMAD_settings + TextEdit_AMAD_ID + + %TIMES + + + + %AMAD_amadid + 2 + \%AMAD_amadid + + + + + 37 + + + + %AMAD_apssid + 2 + \%AMAD_apssid + + + + + 341 + false + + + %ssid + + + 51 + + AMAD_settings + TextEdit_SSID + + %ssid + + + And + + %ssid + 3 + <unknown ssid> + + + %ssid + 3 + \%ssid + + + + + 43 + + + 51 + + AMAD_settings + TextEdit_SSID + + %AMAD_apssid + + + + 38 + + + 50 + + AMAD_settings + Switch_setCommands + + + + %AMAD_receive + 2 + on + + + + + 50 + + AMAD_settings + Switch_setCommands + + + + %AMAD_receive + 2 + off + + + + + 47 + AMAD_settings + + + + + + + + + + 50 + + AMAD_settings + Switch_information + + + + %AMAD_send + 2 + on + + + + + 50 + + AMAD_settings + Switch_information + + + + %AMAD_send + 2 + off + + + + + 37 + + + And + + %AMAD_send + 2 + on + + + %WIFI + 2 + on + + + + + 65 + + AMAD_settings + Text_toGo + + + + + + 65 + + AMAD_settings + Switch_toGo + + + + + + 50 + + AMAD_settings + Switch_toGo + + + + %AMAD_toGo + 2 + on + + + + + 50 + + AMAD_settings + Switch_toGo + + + + %AMAD_toGo + 3 + on + + + + + 43 + + + 65 + + AMAD_settings + Text_toGo + + + + + + 65 + + AMAD_settings + Switch_toGo + + + + + + 30 + + + + + + + + 38 + + + 37 + + + And + And + + %AMAD_send + 2 + on + + + %AMAD_toGo + 2 + on + + + %WIFI + 2 + on + + + + + 65 + + AMAD_settings + Text_SSID + + + + + + 65 + + AMAD_settings + TextEdit_SSID + + + + + + 65 + + AMAD_settings + Text_getSSID + + + + + + 43 + + + 65 + + AMAD_settings + Text_SSID + + + + + + 65 + + AMAD_settings + TextEdit_SSID + + + + + + 65 + + AMAD_settings + Text_getSSID + + + + + + 38 + + + 37 + + + + %AMAD_fhemdevice + 2 + \%AMAD_fhemdevice + + + + + 30 + + + + + + + + 50 + + AMAD_settings + Spinner_fhemctlmode + + + + %AMAD_fhemctlmode + 2 + trigger + + + + + 50 + + AMAD_settings + Spinner_fhemctlmode + + + + %AMAD_fhemctlmode + 2 + setControl + + + + + 50 + + AMAD_settings + Spinner_fhemctlmode + + + + %AMAD_fhemctlmode + 2 + thirdPartyControl + + + + + 50 + + AMAD_settings + Spinner_remoteServer + + + + %AMAD_remoteServer + 2 + TNES + + + + + 50 + + AMAD_settings + Spinner_remoteServer + + + + %AMAD_remoteServer + 2 + Autoremote + + + + + 50 + + AMAD_settings + Spinner_remoteServer + + + + %AMAD_remoteServer + 2 + other + + + + + 30 + + + + + + + + 547 + %initial + false + + + + + + 130 + + AMAD_getDeviceName + + %priority+1 + + + + %fhemdevice + + + + 51 + + AMAD_settings + TextEdit_DeviceName + + %fhemdevice + + + + %fhemdevice + 3 + \%fhemdevice + + + + + 43 + + + 51 + + AMAD_settings + TextEdit_DeviceName + + %AMAD_fhemdevice + + + + /storage/emulated/0/Tasker/.icn/Eigene Icons/TaskerFHEM_icon.png + + + + 1503612289745 + 1503612849987 + 965 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screenOrientation": "portrait" + + + + + + 1512765957106 + 1512765957106 + 966 + + 49 + %scene_name + + + + 1512113548622 + 1512113663305 + 967 + AMAD_getDeviceName + + 547 + %fhemdevice + %DEVMAN_%DEVMOD + + + + + + 596 + %fhemdevice + + + + + 598 + %fhemdevice + [^a-zA-Z_0-9\.] + + + + + + _ + + + 126 + %fhemdevice + + + + + 1503829156475 + 1512982546223 + 968 + AMAD_UpdateFlowset + 100 + + 548 + + AMAD: "set currentflowsetupdate'" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set currentflowsetupdate: not supported by Tasker" + + + + + 548 + AMAD: Download der Tasker Projekt Datei nicht möglich - Tasker Pfad nicht gefunden. + + + + 38 + + + 137 + + + + + + 547 + %path + /storage/emulated/0/Tasker/projects + + + + + + 342 + + %path + %exists + + + + 37 + + + %exists + 2 + true + + + + + 118 + false + %AMAD_fhemip:%AMAD_bridgeport + AMAD.prj.xml + + + + + text/xml + %path/AMAD.prj.xml + + + + 548 + AMAD: Beim Download der Tasker Projekt Datei ist ein Fehler augetreten. +Code: %HTTPR + + + + %HTTPR + 3 + 200 + + + + + 548 + AMAD: Die aktuelle Tasker Projekt Datei wurde heruntergrladen und kann importiert werden. + + + + %HTTPR + 2 + 200 + + + + + 43 + + + + 1503689740378 + 1503689753554 + 969 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "airplanemode": "off" + + + + + + 1502789397309 + 1513276239987 + 970 + AMAD_informations + 100 + + 547 + + %setreading + "flowsetVersionAtDevice": "Tasker v0.1" + + + + + + 547 + + %setreading + %setreading,"deviceState": "online" + + + + + + 547 + %interrupt + never + + + + + + %INTERRUPT + 2 + none + + + + + 547 + %interrupt + alarmClockOnly + + + + + + %INTERRUPT + 2 + alarms + + + + + 547 + + %setreading + %setreading,"doNotDisturb": "%interrupt" + + + + + + %interrupt + 3 + \%interrupt + + + + + 547 + + %setreading + %setreading,"keyguardSet": "1" + + + + + + %KEYG + 2 + on + + + + + 547 + + %setreading + %setreading,"keyguardSet": "0" + + + + + + %KEYG + 2 + off + + + + + 547 + + %setreading + %setreading,"incomingCallerName": "%CNAME" + + + + + And + + %CNAME + 3 + ? + + + %CNAME + 3 + \%CNAME + + + + + 547 + + %setreading + %setreading,"incomingCallerName": "unknown" + + + + + + %CNAME + 2 + ? + + + + + 547 + + %setreading + %setreading,"incomingCallerNumber": "%CNUM" + + + + + And + + %CNUM + 3 + 0 + + + %CNUM + 3 + \%CNUM + + + + + 547 + + %setreading + %setreading,"incomingCallerNumber": "unknown" + + + + + + %CNUM + 2 + 0 + + + + + 547 + + %setreading + %setreading,"powerLevel": "%BATT" + + + + + + %BATT + 12 + + + + + + 547 + + %setreading + %setreading,"airplanemode": "%AIR" + + + + + + %AIR + 12 + \%AIR + + + + + 664 + + kgm + CONTEXT + getSystemService +{KeyguardManager} (String) + keyguard + + + + + + + + + 664 + + %locked + kgm + inKeyguardRestrictedInputMode +{boolean} () + + + + + + + + + + 547 + + %setreading + %setreading,"screen": "%SCREEN locked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + true + + + + + 547 + + %setreading + %setreading,"screen": "%SCREEN unlocked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + false + + + + + 547 + + %setreading + %setreading,"screenBrightness": "%BRIGHT" + + + + + + %BRIGHT + 12 + + + + + + 348 + + + %orientation + + + 547 + + %setreading + %setreading,"screenOrientation": "%orientation" + + + + + + %orientation + 3 + \%orientation + + + + + 348 + + + %autorotate + + + 547 + + %setreading + %setreading,"screenOrientationMode": "auto" + + + + + + %autorotate + 2 + on + + + + + 547 + + %setreading + %setreading,"screenOrientationMode": "manual" + + + + + + %autorotate + 2 + off + + + + + 130 + AMAD_SDK2Name + + %priority + + + + %androidversion + + + + 547 + %setstate + inaktiv + + + + + + 547 + %infostate + inaktiv + + + + + + 547 + %setstate + aktiv + + + + + Or + Or + + %PENABLED + 4 + AutoRemote AMAD + + + %PENABLED + 4 + TNES AMAD + + + %PENABLED + 2 + Pushover AMAD + + + + + 547 + %infostate + aktiv + + + + + And + + %PENABLED + 4 + AMAD_InformationFlow + + + %AMAD_send + 2 + on + + + + + 547 + + %setreading + %setreading,"flow_SetCommands": "%setstate" + + + + + + 547 + + %setreading + %setreading,"flow_informations": "%infostate" + + + + + + 547 + + %setreading + %setreading,"volume": "%VOLM" + + + + + + %VOLM + 12 + + + + + + 547 + + %setreading + %setreading,"volumeNotification": "%VOLN" + + + + + + %VOLN + 12 + + + + + + 664 + + false + contres + CONTEXT + getContentResolver +{ContentResolver} () + + + + + + + + + + 664 + + false + %alarm + android.provider.Settings$System + getString +{String} (ContentResolver, String) + contres + next_alarm_formatted + + + + + + + + 547 + + %setreading + %setreading,"androidVersion": "%androidversion" + + + + + + %androidversion + 3 + \%androidversion + + + + + 37 + + + %alarm + 3 + \%alarm + + + + + 547 + %blank + + + + + + + 590 + %alarm + .,%blank + + + + 547 + + %setreading + %setreading,"nextAlarmDay": "%alarm1" + + + + + + %alarm1 + 3 + \%alarm1 + + + + + 547 + + %setreading + %setreading,"nextAlarmTime": "%alarm2" + + + + + + %alarm2 + 3 + \%alarm2 + + + + + 43 + + + 547 + + %setreading + %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + 38 + + + 547 + %fhemcmd + setreading + + + + + + 130 + AMAD_SendData2CommBridge + + %priority + + %fhemcmd + %setreading + + + + + 547 + + %setreading + %setreading,"bluetooth": "%BLUE" + + + + + + %BLUE + 12 + \%BLUE + + + + + 547 + + %setreading + %setreading,"currentMusicTrack": "%MTRACK" + + + + + + %MTRACK + 12 + + + + + + 547 + + %setreading + %setreading,"currentMusicTrack": "no player active" + + + + + + %MTRACK + 13 + + + + + + 547 + %interrupt + always + + + + + + %INTERRUPT + 2 + all + + + + + 547 + %interrupt + onlyImportant + + + + + + %INTERRUPT + 2 + priority + + + + + + 1503690545406 + 1503690559299 + 972 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "powerPlugged": "0" + + + + + + 1503690358282 + 1503690362326 + 974 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "dockingState": "undocked" + + + + + + 1503260793343 + 1512176548967 + 975 + AMAD_VoiceControl + 100 + + 903 + + + + de-DE + + + + + 547 + %value + %VOICE + + + + + + 547 + %voiceinputdata + %value + + + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + voiceinputvalue + %voiceinputdata + + + + + 38 + + + 43 + + + 559 + + Ihre Eingabe wurde nicht verstanden + default:default + + + + + + + + + 38 + + + 548 + Antwort: "%value" + + + + 37 + + + %VOICE + 12 + ja + + + + + 37 + + And + + %value + 4 + und + + + %AMAD_fhemctlmode + 3 + thirdPartControl + + + + + 590 + %value + und + + + + 39 + %voiceinputdata + %value() + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + voiceinputvalue + %voiceinputdata + + + + + 40 + + + 43 + + + mw_action_settings_voice + + + + 1511815475378 + 1511815562350 + 978 + + 596 + %pushovermessage + + + + + 130 + AMAD_SetCommands + + %priority + + %pushovermessage + + + + + + + 1502904145564 + 1503611980132 + 979 + 100 + + 130 + AMAD_informations + + %priority + + + + + + + + + 1503612864622 + 1512664382473 + 980 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screenOrientation": "landscape" + + + + + + 1503693866986 + 1513110531034 + 982 + AMAD_SetCommands + 100 + + 547 + %receive + %par1 + + + + + + 547 + %receive + %arcomm + + + + + + %caller1 + 2 + profile=enter:AutoRemote AMAD + + + + + 598 + %receive4 + /%receive2/%receive3/ + + + + + + + + + %receive(#) + 7 + 4 + + + + + 548 + + AMAD: "set clearNotificationBar all" benötigt Root rechte + + + And + + %tpe_app + 2 + All + + + %ROOT + 2 + no + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set clearNotificationBar all: only works on rooted Devices" + + + + And + + %tpe_app + 2 + All + + + %ROOT + 2 + no + + + + + 43 + + + %command + 2 + setvibrate + + + + + 62 + 0,500,500,500 + + + 43 + + + %command + 2 + showhomescreen + + + + + 25 + + + + 43 + + + %command + 2 + sendIntent + + + + + 877 + %tpe_action + + text/plain + + %tpe_exkey1,%tpe_exval1 + %tpe_exkey2,%tpe_exval2 + + + + + + + 43 + + + %command + 2 + installFlow + + + + + 548 + AMAD: "Flow install: not supported by Tasker" + + + + 590 + %receive4 + ? + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "Flow install: not supported by Tasker" + + + + + 43 + + + %command + 2 + openCall + + + + + 90 + %tpe_callnumber + + + + 30 + + + %tpe_hanguptime + + + + + + + %tpe_hanguptime + 7 + 1 + + + + + 733 + + + %tpe_hanguptime + 7 + 1 + + + + + 43 + + + %command + 2 + closeCall + + + + + 733 + + + 43 + + + %command + 2 + startDaydream + + + + + 20 + + com.android.systemui.Somnambulator + com.android.systemui + + + + + + + + 43 + + + %command + 2 + sendSms + + + + + 547 + %command + %receive41 + + + + + + 41 + %tpe_smsnumber + %tpe_smsmessage + + + + 43 + + + %command + 2 + screenlock + + + + + 548 + + AMAD: "set screen lock|unlock" wird noch nicht unterstützt + + + + %tpe_lockmod + 4 + lock|unlock + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screen lock|unlock: not supported by Tasker" + + + + + %tpe_lockmod + 4 + lock|unlock + + + + + 43 + + + %command + 2 + setScreenOnOff + + + + + 548 + + AMAD: "set screen on" wird noch nicht unterstützt + + + + %tpe_screen + 2 + on + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screen on: not supported by Tasker" + + + + + %tpe_screen + 2 + on + + + + + 16 + + + %tpe_screen + 2 + off + + + + + 38 + + + 38 + + + 37 + + + + %receive4(#) + 7 + 1 + + + + + 547 + %valueall + %receive42 + + + + + + 590 + %valueall + & + + + + 39 + %cmdpair + %valueall() + + + 590 + %cmdpair + = + + + + 547 + %name + %cmdpair1 + + + + + + 590 + %cmdpair + %name= + + + + 547 + %receive + %tpe_cmd + + + + + + %caller1 + 2 + profile=enter:TNES AMAD + + + + + 596 + %name + + + + + 547 + %name + tpe_%name + + + + + + 596 + %cmdpair2 + + + + + %cmdpair2 + 3 + \%cmdpair2 + + + + + 547 + %%name + %cmdpair2 + + + + + + %cmdpair2 + 3 + \%cmdpair2 + + + + + 40 + + + 38 + + + 37 + + + %type + 2 + setCommands + + + + + 37 + + + %command + 2 + screenMsg + + + + + 548 + %tpe_message + + + + 43 + + + %command + 2 + ttsMsg + + + + + 547 + %AMAD_lastSetCommand + %receive + + + + + + 547 + %tpe_msglang + deu-deu + + + + + + %tpe_msglang + 4 + en + + + + + 547 + %tpe_msglang + eng-usa + + + + + + %tpe_msglang + 2 + en + + + + + 547 + %volume + %VOLM + + + + + + 307 + + %tpe_msgvol + + + + + + %tpe_msgvol + 7 + 1 + + + + + 559 + %tpe_message + com.google.android.tts:%tpe_msglang + + + + %tpe_msgspeed + + + + + + + 307 + + %volume + + + + + + %tpe_msgvol + 7 + 1 + + + + + 43 + + + %command + 2 + flowState + + + + + 159 + %tpe_flowname + + + + %tpe_flowstate + 2 + active + + + + + 159 + %tpe_flowname + + + + %tpe_flowstate + 2 + inactive + + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "Flow %tpe_flowname has been set %tpe_flowstate" + + + + + 547 + + false + %receive + %AMAD_lastSetCommand + + + + + + 43 + + + %command + 2 + flowRun + + + + + 130 + %tpe_flowname + + %priority + + + + + + + + 43 + + + %command + 2 + setVolume + + + + + 307 + + %tpe_volume + + + + + + 43 + + + %command + 2 + setNotifiVolume + + + + + 305 + + %tpe_notifivolume + + + + + + 43 + + + %command + 2 + setRingSoundVolume + + + + + 304 + + %tpe_ringsoundvolume + + + + + + 43 + + + %command + 2 + setBrightness + + + + + 810 + + %tpe_brightness + + + + + + + 590 + %receive + / + + + + 43 + + + %command + 2 + multimediaControl + + + + + 130 + + AMAD_multimediaControl + + %priority + + %tpe_mplayer + %tpe_button + + + + + 43 + + + %command + 2 + setvoicecmd + + + + + 130 + AMAD_VoiceControl + + %priority+1 + + + + + + + + 43 + + + %command + 2 + setScreenOrientation + + + + + 822 + + + + %tpe_orientation + 2 + auto + + + + + 822 + + + + + %tpe_orientation + 3 + auto + + + + + 548 + + AMAD: "set screenOrientation landscape|portrait" wird noch nicht unterstützt + + + + %tpe_orientation + 4 + landscape|portrait + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screenOrientation landscape|portrait: not supported by Tasker" + + + + + %tpe_orientation + 4 + landscape|portrait + + + + + 43 + + + %command + 2 + setScreenFullscreen + + + + + 547 + %type + %receive3 + + + + + + 548 + + AMAD: "set screenFullscreen on|off" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screenFullscreen on|off: not supported by Tasker" + + + + + 43 + + + %command + 2 + openURL + + + + + 547 + %tpe_url + http://%tpe_url + + + + + + %tpe_url + 5 + ^http* + + + + + 877 + android.intent.action.VIEW + + + %tpe_url + + + + %tpe_browserapp + %tpe_browserappclass + + + + 43 + + + %command + 2 + setAlarm + + + + + 566 + + %tpe_hour + + + %tpe_minute + + AMAD Wecker + + + + + + 43 + + + %command + 2 + setTimer + + + + + 547 + %tpe_seconds + %tpe_minute*60 + + + + + + 543 + + %tpe_seconds + + AMAD Timer + + + + 130 + + AMAD_informations + + %priority+1 + + + + + + + + %type + 2 + deviceInfo + + + + + 43 + + + %command + 2 + openApp + + + + + 664 + pacman + CONTEXT + getPackageManager {PackageManager} ()  + + + + + + + + + + 664 + intent + pacman + getLaunchIntentForPackage {Intent} (String) + %tpe_app + + + + + + + + + 664 + + CONTEXT + startActivity +{} (Intent) + intent + + + + + + + + + 43 + + + %command + 2 + setnfc + + + + + 123 + svc nfc enable + + + + + + + And + + %tpe_nfc + 2 + on + + + %ROOT + 2 + yes + + + + + 123 + svc nfc disable + + + + + + + And + + %tpe_nfc + 2 + off + + + %ROOT + 2 + yes + + + + + 548 + + AMAD: "set nfc on|off" benötigt Root rechte + + + + %ROOT + 2 + no + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set nfc on|off: only works on rooted Devices" + + + + + %ROOT + 2 + no + + + + + 43 + + + %command + 2 + systemcommand + + + + + 130 + + AMAD_UpdateFlowset + + %priority+1 + + + + + + + + %type + 2 + currentFlowsetUpdate + + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + airplanemode@@on + + + + + %tpe_syscmd + 2 + airplanemodeON + + + + + 333 + + + + %tpe_syscmd + 2 + airplanemodeON + + + + + 59 + + + + %tpe_syscmd + 2 + shutdown + + + + + 59 + + + + %tpe_syscmd + 2 + reboot + + + + + 43 + + + %command + 2 + donotdisturb + + + + + 312 + + + + %tpe_disturbmod + 2 + always + + + + + 312 + + + + %tpe_disturbmod + 2 + onlyImportant + + + + + 312 + + + + %tpe_disturbmod + 2 + never + + + + + 312 + + + + %tpe_disturbmod + 2 + alarmClockOnly + + + + + 43 + + + %command + 2 + setbluetooth + + + + + 547 + %receive4 + %receive + + + + + + %receive(#) + 7 + 4 + + + + + 294 + + + + %tpe_bluetooth + 2 + on + + + + + 294 + + + + %tpe_bluetooth + 2 + off + + + + + 43 + + + %command + 2 + playnotifysnd + + + + + 445 + %tpe_notifypath%tpe_notifyfile + + + + + + + 43 + + + %command + 2 + setbtdevice + + + + + 548 + + AMAD: "set changetoBtDevice" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set changetoBtDevice: not supported by Tasker" + + + + + 43 + + + %command + 2 + clearnotificationbar + + + + + 779 + + + + + %tpe_app + 2 + Automagic + + + + + 123 + false + service call notification 1 + + + + + + + And + + %tpe_app + 2 + All + + + %ROOT + 2 + yes + + + + + + 1511655849449 + 1511655867388 + 983 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "wiredHeadsetPlugged": "0" + + + + + + 1502789757098 + 1513424396436 + 984 + AMAD_SendData2CommBridge + 100 + + 137 + + + + + And + + %caller() + 4 + profile=exit:AMAD_ + + + %AMAD_send + 3 + on + + + + + 37 + + Or + Or + + %AMAD_fhemip + 2 + \%AMAD_fhemip + + + %AMAD_bridgeport + 2 + \%AMAD_bridgeport + + + %AMAD_fhemdevice + 2 + \%AMAD_fhemdevice + + + + + 43 + + + + %fhemcmd + 2 + set + + + + + 547 + %setcmd + %par2 + + + + + + 547 + + %setcmd + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "set"},"payload": {"setcmd": "%setcmd"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %setcmd + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + readingsval + + + + + 547 + %readingsvalcmd + %par2 + + + + + + 547 + + %readingsvalcmd + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "readingsval"},"payload": {"readingsvalcmd": "%readingsvalcmd"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %readingsvalcmd + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + voiceinputvalue + + + + + 547 + %voiceinputdata + %par2 + + + + + + 548 + AMAD: Fehler beim Senden +Variablen nicht gesetzt + + + + 547 + + %voiceinputdata + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "voiceinputvalue"},"payload": {"voiceinputdata": "%voiceinputdata"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %voiceinputdata + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + fhemfunc + + + + + 547 + %fhemsub + %par2 + + + + + + 547 + + %fhemfunc + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "fhemfunc"},"payload": {"fhemsub": "%fhemsub"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %fhemfunc + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + firstrun + + + + + 547 + %amaddevice_ip + %par2 + + + + + + 547 + + %firstrundata + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "setreading"},"firstrun": {"fhemdevice": "%AMAD_fhemdevice","fhemserverip": "%AMAD_fhemip","amaddevice_ip": "%amaddevice_ip","remoteserver":"%AMAD_remoteServer"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %firstrundata + + + + text/* + + + + + 126 + Variable not set + + + + 38 + + + 547 + %return + %HTTPD + + + + + + 547 + %return + no connection + + + + + + %HTTPR + 2 + -1 + + + + + 126 + %return + + + + 38 + + + 547 + %fhemcmd + %par1 + + + + + + 37 + + + + %fhemcmd + 2 + setreading + + + + + 547 + %fhemdata + %par2 + + + + + + 547 + + %fhemdata + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "setreading"},"payload": {%fhemdata}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %fhemdata + + + + text/* + + + + + + 1503689826684 + 1503689839417 + 989 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "bluetooth": "off" + + + + + + 1511708875113 + 1511708893034 + 990 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "nfc": "off" + + + + + + 1503612579492 + 1513147602338 + 992 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screen": "on locked" + + + + + From ae14e66616f0e4232ca0123ceec3680885179dd6 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 10 Jan 2018 22:08:54 +0100 Subject: [PATCH 26/42] add check ammad_id for security reasion --- 73_AMADCommBridge.pm | 23 +- 74_AMADDevice.pm | 4 +- ...ml => 74_AMADautomagicFlowset_4.1.99.5.xml | 1856 +++++++++-------- 3 files changed, 1025 insertions(+), 858 deletions(-) rename 74_AMADautomagicFlowset_4.1.99.3.xml => 74_AMADautomagicFlowset_4.1.99.5.xml (78%) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 156706a..48a84e6 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -74,8 +74,8 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.26"; -my $flowsetversion = "4.1.99.3"; +my $modulversion = "4.1.99.30"; +my $flowsetversion = "4.1.99.5"; @@ -254,13 +254,20 @@ sub AMADCommBridge_Write($@) { Log3 $name, 4, "AMADCommBridge ($name) - AMADCommBridge_Write Path: $path"; + + + if($remoteServer ne 'Automagic' and $path =~ /\?/) { + $path .= "&amad_id=$amad_id"; + } elsif($remoteServer ne 'Automagic') { + $path .= "?amad_id=$amad_id"; + } return readingsSingleUpdate($dhash,'lastSetCommand',$path,1) if( $remoteServer eq 'other' ); - - - $param = { url => "http://" . $uri . $path, timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => $header, doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Automagic'); - + + $param = { url => "http://" . $uri . $path, timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, header => $header . "\r\namadid: $amad_id", doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Automagic'); + + $param = { url => "http://" . $uri . "/", data => "{\"message\":\"AMAD=:=$path\", \"sender\":\"AMAD\", \"ttl\":60, \"communication_base_params\":{\"type\":\"Message\", \"fallback\":false, \"via\":\"Wifi\"},\"version\":\"1.62\"}", timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, @@ -268,6 +275,7 @@ sub AMADCommBridge_Write($@) { doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'Autoremote'); + $param = { url => "http://" . $uri . "/", data => "device=AMAD&cmd=".urlEncode($path), timeout => 15, hash => $hash, amad_id => $amad_id, method => $method, @@ -275,7 +283,8 @@ sub AMADCommBridge_Write($@) { doTrigger => 1, callback => \&AMADCommBridge_ErrorHandling } if($remoteServer eq 'TNES'); - + + my $logtext = "AMADCommBridge ($name) - Send with remoteServer: $remoteServer URL: $param->{url}, HEADER: $param->{header}, METHOD: $method"; $logtext .= ", DATA: $param->{data}" if( $remoteServer ne 'Automagic' ); Log3 $name, 5, "$logtext"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 05ced50..4ccac3b 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -59,7 +59,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.30"; -my $flowsetversion = "4.1.99.3"; +my $flowsetversion = "4.1.99.5"; @@ -378,7 +378,7 @@ sub AMADDevice_statusRequest($) { my $fhemCtlMode = AttrVal($hash->{IODev}->{NAME},'fhemControlMode','none' ); my $bport = $hash->{IODev}->{PORT}; - $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\namadid: $amad_id\r\nfhemctlmode: $fhemCtlMode"; + $header .= "\r\nfhemip: $fhemip\r\nfhemdevice: $name\r\nactivetask: $activetask\r\napssid: $apssid\r\nbport: $bport\r\nuserflowstate: $userFlowState\r\nfhemctlmode: $fhemCtlMode"; $method = "GET" if( AttrVal($name,'remoteServer','Automagic') eq 'Automagic' ); $method = "POST" if (AttrVal($name,'remoteServer','Automagic') ne 'Automagic' ); diff --git a/74_AMADautomagicFlowset_4.1.99.3.xml b/74_AMADautomagicFlowset_4.1.99.5.xml similarity index 78% rename from 74_AMADautomagicFlowset_4.1.99.3.xml rename to 74_AMADautomagicFlowset_4.1.99.5.xml index 4e170e8..ef21324 100644 --- a/74_AMADautomagicFlowset_4.1.99.3.xml +++ b/74_AMADautomagicFlowset_4.1.99.5.xml @@ -673,6 +673,11 @@ irname=getString("name") Expression: global_userflowstate != "none" global_userflowstate != "none" + + true + Expression: header_amadid == {global_amadid} + header_amadid == {global_amadid} + false Expression: installFlow" @@ -838,6 +843,31 @@ irname=getString("name") Expression: param_orientation == "portrait" param_orientation == "portrait" + + true + Expression: param_pictureresolution == "1024x768" + param_pictureresolution == "1024x768" + + + true + Expression: param_pictureresolution == "1280x720" + param_pictureresolution == "1280x720" + + + true + Expression: param_pictureresolution == "1600x1200" + param_pictureresolution == "1600x1200" + + + true + Expression: param_pictureresolution == "1920x1080" + param_pictureresolution == "1920x1080" + + + true + Expression: param_pictureresolution == "800x600" + param_pictureresolution == "800x600" + true Expression: param_screen=="off" @@ -983,6 +1013,11 @@ irname=getString("name") Expression: System Command" request_path == "/fhem-amad/setCommands/systemcommand" + + false + Expression: takepicture + request_path == "/fhem-amad/setCommands/takepicture" + true Expression: togocount < 6 @@ -1091,8 +1126,8 @@ or trigger == "HTTP Request: /fhem-amad/deviceInfo/" true - Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" - trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" and header_amadid == {global_amadid} + trigger == "HTTP Request: /fhem-amad/deviceInfo/" and header_amadid == {global_amadid} true @@ -1842,6 +1877,96 @@ putString("{param_exkey2}", "{param_exval2}"); SYSTEM_SETTING true + + false + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 + false + /storage/emulated/0/AMADpicture.jpg + 0 + 1024*768 + 100 + auto + none + + auto + auto + false + true + 2000 + true + + + false + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 + false + /storage/emulated/0/AMADpicture.jpg + 0 + 1280*720 + 100 + auto + none + + auto + auto + false + true + 2000 + true + + + false + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 + false + /storage/emulated/0/AMADpicture.jpg + 0 + 1600*1200 + 100 + auto + none + + auto + auto + false + true + 2000 + true + + + false + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 + false + /storage/emulated/0/AMADpicture.jpg + 0 + 1920*1080 + 100 + auto + none + + auto + auto + false + true + 2000 + true + + + false + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 + false + /storage/emulated/0/AMADpicture.jpg + 0 + 800*600 + 100 + auto + none + + auto + auto + false + true + 2000 + true + true Gerät sperren @@ -1849,7 +1974,17 @@ putString("{param_exkey2}", "{param_exval2}"); false Get Android Version - false Script: Set FHEMDATA JSON - Script: notification_text = "not supported from your device" + + true + Script: notification_text = "Take Picture: can not save camerapicture, path does not exist" + + true Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; @@ -4799,30 +4899,43 @@ Soll der Assistent gelöscht werden? Expression: showhomescreen" Zeige Home Screen Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*" - Expression: takepicture - Expression: param_button == "stop" - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 - Expression: param_pictureresolution == "800x600" - Expression: param_pictureresolution == "1024x768" - Expression: param_pictureresolution == "1280x720" - Expression: param_pictureresolution == "1600x1200" - Expression: param_pictureresolution == "1920x1080" - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 - Vibrieren: Pattern 2 (-- --) - Flows ausführen: Send Data to AMADCommBridge - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Host erreichbar: {global_fhemip}:{global_bridgeport} - + Expression: param_button == "stop" + Vibrieren: Pattern 2 (-- --) + Flows ausführen: Send Data to AMADCommBridge + Host erreichbar: {global_fhemip}:{global_bridgeport} + HTTP Request: /fhem-amad/deviceInfo/ Sprachbefehl angefordert HTTP Request: /fhem-amad/setCommands/* Periodischer Timer: alle 120s - Expression: global_fhemip != null or global_bridgeport != null - Expression: header_amadid == {global_amadid} + Expression: global_fhemip != null or global_bridgeport != null + Expression: header_amadid == {global_amadid} + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 Front + Expression: param_pictureresolution == "800x600" + Expression: param_pictureresolution == "1024x768" + Expression: param_pictureresolution == "1280x720" + Expression: param_pictureresolution == "1600x1200" + Expression: param_pictureresolution == "1920x1080" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Expression: takepicture + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Take Picture: can not save camerapicture, path does not exist" @@ -4885,7 +4998,7 @@ Soll der Assistent gelöscht werden? - + @@ -4918,7 +5031,7 @@ Soll der Assistent gelöscht werden? - + @@ -4937,8 +5050,8 @@ Soll der Assistent gelöscht werden? - - + + @@ -4961,7 +5074,7 @@ Soll der Assistent gelöscht werden? - + @@ -5008,27 +5121,41 @@ Soll der Assistent gelöscht werden? - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Update AMAD Flowset @@ -5036,63 +5163,63 @@ Soll der Assistent gelöscht werden? true QUEUE Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Script: notification_text = "Flowset Update: path for download not exist" - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Flows ausführen: Send Data to AMADCommBridge - Flow Aktiv: First Run Assistant - Setze Flow Status: Deaktivieren First Run Assistant - Prüfe und setze Bridgeport Variable - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) - Verzeichnisse erstellen: /storage/sdcard0/AMADNG_FlowsetUpdate - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0) - Verzeichnisse erstellen: /sdcard/AMADNG_FlowsetUpdate - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard) - Verzeichnisse erstellen: /storage/emulated/0/AMADNG_FlowsetUpdate - Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/emulated/0/AMADNG_FlowsetUpdate - Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/sdcard0/AMADNG_FlowsetUpdate - Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /sdcard/AMADNG_FlowsetUpdate - Flows/Widgets importieren: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Flows/Widgets importieren: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Flows/Widgets importieren: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Dateien löschen: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Dateien löschen: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Dateien löschen: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - + Flows ausführen: Send Data to AMADCommBridge + Flow Aktiv: First Run Assistant + Setze Flow Status: Deaktivieren First Run Assistant + Prüfe und setze Bridgeport Variable + Verzeichnisse erstellen: /storage/sdcard0/AMADNG_FlowsetUpdate + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0) + Verzeichnisse erstellen: /sdcard/AMADNG_FlowsetUpdate + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard) + Verzeichnisse erstellen: /storage/emulated/0/AMADNG_FlowsetUpdate + Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/emulated/0/AMADNG_FlowsetUpdate + Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/sdcard0/AMADNG_FlowsetUpdate + Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /sdcard/AMADNG_FlowsetUpdate + Flows/Widgets importieren: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Flows/Widgets importieren: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Flows/Widgets importieren: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Dateien löschen: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Dateien löschen: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Dateien löschen: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + HTTP Request: /fhem-amad/currentFlowsetUpdate - Expression: header_amadid == {global_amadid} - - - - - - - - - - - - - - - - - + Expression: header_amadid == {global_amadid} + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Flowset Update: path for download not exist" + + + + + + + + + + + + + + + - - + + - - - - - - - - + + + + + + + + + + VoiceControl diff --git a/74_AMADtaskerset_4.1.99.3.prj.xml b/74_AMADtaskerset_4.1.99.5.prj.xml similarity index 99% rename from 74_AMADtaskerset_4.1.99.3.prj.xml rename to 74_AMADtaskerset_4.1.99.5.prj.xml index b7546f2..7b157b2 100644 --- a/74_AMADtaskerset_4.1.99.3.prj.xml +++ b/74_AMADtaskerset_4.1.99.5.prj.xml @@ -1,9 +1,9 @@ - + 1080.0,1776.0 1513116735261 true - 1512761338116 + 1514566300708 1000 923 toGoAMAD @@ -51,7 +51,7 @@ 1513116735262 true - 1512684208205 + 1514566358989 1002 938 toGoAMAD @@ -260,7 +260,7 @@ 1513116735275 true - 1513424368275 + 1514473987581 1011 982 TNES AMAD @@ -273,7 +273,7 @@ java.lang.Integer <StringArrayList sr=""><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0>device==AMAD</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1>cmd</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1></StringArrayList> java.util.ArrayList - 192.168.5.82 + 192.168.5.81 java.lang.String 8765 java.lang.String @@ -487,7 +487,7 @@ 1513116735259 true - 1513422799932 + 1513464771034 999 982 AutoRemote AMAD @@ -571,9 +571,9 @@ Way the message was sent (BT, Wifi, GCM) 1502789371413 AMAD - 1006,1007,1003,1000,1011,999,997,1005,995,1001,1004,1014,996,994,1002,1008,1016,1012,998,1010 + 1001,1002,994,1005,1011,1014,1012,1000,998,1006,1010,1008,999,1016,995,1004,1007,1003,997,996 AMAD_Dialog_Message,AMAD_settings - 922,984,1050,1048,1023,980,1047,1020,1053,966,1013,1035,949,1041,1032,1033,1022,1038,920,1025,1049,1021,1034,962,970,926,954,1054,972,937,948,1051,1037,1055,979,1056,1030,914,1045,935,1028,1036,1043,983,1015,1057,938,967,982,975,944,927,974,969,1031,989,1024,1026,990,940,1058,968,978,1019,1044,1052,943,1046,939,947,951,1039,963,1029,918,965,934,923,1017,992 + 984,944,1057,1019,922,972,938,1035,918,1041,1028,1036,923,975,947,980,1053,1044,1013,954,1054,990,1031,916,1033,914,1058,1038,970,1049,926,968,1046,1055,1050,951,1029,1015,1034,1022,1020,934,1017,949,979,943,967,978,966,939,1021,963,1023,1037,1045,1051,982,1048,962,1052,1026,940,1056,1024,1039,935,1043,1030,965,1032,927,992,937,969,1047,974,948,983,1025,989,920 android.hardware.bluetooth:y android.hardware.wifi:y @@ -653,7 +653,7 @@ Way the message was sent (BT, Wifi, GCM) 1512032010150 - 1513454811685 + 1515014317697 720 1280 AMAD_settings @@ -1182,6 +1182,7 @@ SSID: 1055 4 0,1124,707,53,0,593,1269,49 + 916 Text_lastCommand %AMAD_lastSetCommand @@ -3332,12 +3333,6 @@ Bitten prüfe die eingetragene Daten. 1512424887005 1055 - 105 - false - %AMAD_lastSetCommand - - - 548 letzter empfangener set-Befehl @@ -3577,6 +3572,21 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh + + 1515014192359 + 1515014192359 + 916 + + 105 + %AMAD_lastSetCommand + + + + 548 + letzter empfangener set-Befehl in Zwischenablage kopiert + + + 1503612697002 1512664308181 @@ -3802,7 +3812,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh 1503691080060 - 1512761338116 + 1514566300708 923 100 @@ -3814,6 +3824,15 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh + + 547 + + %AMAD_receive + on + + + + 1512327302282 @@ -6391,12 +6410,12 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= 1503692408945 - 1512684208205 + 1514566358989 938 100 547 - + %AMAD_send off @@ -6404,6 +6423,15 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= + 547 + + %AMAD_receive + off + + + + + 137 AMAD_SendData2CommBridge @@ -7612,7 +7640,7 @@ Code: %HTTPR 1502789397309 - 1513276239987 + 1515620693000 970 AMAD_informations 100 @@ -7620,7 +7648,7 @@ Code: %HTTPR 547 %setreading - "flowsetVersionAtDevice": "Tasker v0.1" + "flowsetVersionAtDevice": "Tasker v0.2" @@ -8346,10 +8374,10 @@ Code: %HTTPR 1503260793343 - 1512176548967 + 1515484018445 975 AMAD_VoiceControl - 100 + 7 903 @@ -8409,6 +8437,7 @@ Code: %HTTPR 548 + false Antwort: "%value" @@ -8527,7 +8556,7 @@ Code: %HTTPR 1503693866986 - 1513110531034 + 1515619510405 982 AMAD_SetCommands 100 @@ -8555,24 +8584,37 @@ Code: %HTTPR - 598 - %receive4 - /%receive2/%receive3/ + 547 + %command + %receive41 + + + 123 + false + service call notification 1 + + + + - - + And - %receive(#) - 7 - 4 + %tpe_app + 2 + All + + + %ROOT + 2 + yes - + 548 AMAD: "set clearNotificationBar all" benötigt Root rechte @@ -8591,7 +8633,7 @@ Code: %HTTPR - + 130 AMAD_SendData2CommBridge @@ -8616,7 +8658,7 @@ Code: %HTTPR - + 43 @@ -8626,11 +8668,11 @@ Code: %HTTPR - + 62 0,500,500,500 - + 43 @@ -8640,11 +8682,11 @@ Code: %HTTPR - + 25 - + 43 @@ -8654,7 +8696,7 @@ Code: %HTTPR - + 877 %tpe_action @@ -8667,7 +8709,7 @@ Code: %HTTPR - + 43 @@ -8677,18 +8719,23 @@ Code: %HTTPR - + + 37 + + + + %receive4(#) + 7 + 1 + + + + 548 AMAD: "Flow install: not supported by Tasker" - - 590 - %receive4 - ? - - - + 130 AMAD_SendData2CommBridge @@ -8699,7 +8746,7 @@ Code: %HTTPR - + 43 @@ -8709,12 +8756,12 @@ Code: %HTTPR - + 90 %tpe_callnumber - + 30 @@ -8731,7 +8778,7 @@ Code: %HTTPR - + 733 @@ -8741,7 +8788,7 @@ Code: %HTTPR - + 43 @@ -8751,10 +8798,10 @@ Code: %HTTPR - + 733 - + 43 @@ -8764,7 +8811,7 @@ Code: %HTTPR - + 20 com.android.systemui.Somnambulator @@ -8775,7 +8822,15 @@ Code: %HTTPR - + + 547 + %valueall + %receive42 + + + + + 43 @@ -8785,21 +8840,13 @@ Code: %HTTPR - - 547 - %command - %receive41 - - - - - + 41 %tpe_smsnumber %tpe_smsmessage - + 43 @@ -8809,7 +8856,7 @@ Code: %HTTPR - + 548 AMAD: "set screen lock|unlock" wird noch nicht unterstützt @@ -8822,7 +8869,7 @@ Code: %HTTPR - + 130 AMAD_SendData2CommBridge @@ -8841,7 +8888,7 @@ Code: %HTTPR - + 43 @@ -8851,7 +8898,7 @@ Code: %HTTPR - + 548 AMAD: "set screen on" wird noch nicht unterstützt @@ -8864,7 +8911,7 @@ Code: %HTTPR - + 130 AMAD_SendData2CommBridge @@ -8883,7 +8930,7 @@ Code: %HTTPR - + 16 @@ -8893,49 +8940,42 @@ Code: %HTTPR - - 38 - 38 - 37 - - - - %receive4(#) - 7 - 1 - - - - - 547 - %valueall - %receive42 - - - - - 590 %valueall & - + + 38 + + + 43 + + + + 548 + AMAD: Befehl mit falscher AMAD_ID empfangen + + + + 38 + + 39 %cmdpair %valueall() - + 590 %cmdpair = - + 547 %name %cmdpair1 @@ -8943,12 +8983,26 @@ Code: %HTTPR - + 590 %cmdpair %name= + + 596 + %name + + + + + 547 + %name + tpe_%name + + + + 547 %receive @@ -8965,20 +9019,6 @@ Code: %HTTPR - 596 - %name - - - - - 547 - %name - tpe_%name - - - - - 596 %cmdpair2 @@ -8991,7 +9031,7 @@ Code: %HTTPR - + 547 %%name %cmdpair2 @@ -9006,523 +9046,24 @@ Code: %HTTPR - + 40 - + 38 - + 37 + - %type + %tpe_amad_id 2 - setCommands + %AMAD_amadid - - 37 - - - %command - 2 - screenMsg - - - - - 548 - %tpe_message - - - - 43 - - - %command - 2 - ttsMsg - - - - - 547 - %AMAD_lastSetCommand - %receive - - - - - - 547 - %tpe_msglang - deu-deu - - - - - - %tpe_msglang - 4 - en - - - - - 547 - %tpe_msglang - eng-usa - - - - - - %tpe_msglang - 2 - en - - - - - 547 - %volume - %VOLM - - - - - - 307 - - %tpe_msgvol - - - - - - %tpe_msgvol - 7 - 1 - - - - - 559 - %tpe_message - com.google.android.tts:%tpe_msglang - - - - %tpe_msgspeed - - - - - - - 307 - - %volume - - - - - - %tpe_msgvol - 7 - 1 - - - - - 43 - - - %command - 2 - flowState - - - - - 159 - %tpe_flowname - - - - %tpe_flowstate - 2 - active - - - - - 159 - %tpe_flowname - - - - %tpe_flowstate - 2 - inactive - - - - - 130 - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "Flow %tpe_flowname has been set %tpe_flowstate" - - - - - 547 - - false - %receive - %AMAD_lastSetCommand - - - - - - 43 - - - %command - 2 - flowRun - - - - - 130 - %tpe_flowname - - %priority - - - - - - - - 43 - - - %command - 2 - setVolume - - - - - 307 - - %tpe_volume - - - - - - 43 - - - %command - 2 - setNotifiVolume - - - - - 305 - - %tpe_notifivolume - - - - - - 43 - - - %command - 2 - setRingSoundVolume - - - - - 304 - - %tpe_ringsoundvolume - - - - - - 43 - - - %command - 2 - setBrightness - - - - - 810 - - %tpe_brightness - - - - - - - 590 - %receive - / - - - - 43 - - - %command - 2 - multimediaControl - - - - - 130 - - AMAD_multimediaControl - - %priority - - %tpe_mplayer - %tpe_button - - - - - 43 - - - %command - 2 - setvoicecmd - - - - - 130 - AMAD_VoiceControl - - %priority+1 - - - - - - - - 43 - - - %command - 2 - setScreenOrientation - - - - - 822 - - - - %tpe_orientation - 2 - auto - - - - - 822 - - - - - %tpe_orientation - 3 - auto - - - - - 548 - - AMAD: "set screenOrientation landscape|portrait" wird noch nicht unterstützt - - - - %tpe_orientation - 4 - landscape|portrait - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set screenOrientation landscape|portrait: not supported by Tasker" - - - - - %tpe_orientation - 4 - landscape|portrait - - - - - 43 - - - %command - 2 - setScreenFullscreen - - - - - 547 - %type - %receive3 - - - - - - 548 - - AMAD: "set screenFullscreen on|off" wird noch nicht unterstützt - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set screenFullscreen on|off: not supported by Tasker" - - - - - 43 - - - %command - 2 - openURL - - - - - 547 - %tpe_url - http://%tpe_url - - - - - - %tpe_url - 5 - ^http* - - - - - 877 - android.intent.action.VIEW - - - %tpe_url - - - - %tpe_browserapp - %tpe_browserappclass - - - - 43 - - - %command - 2 - setAlarm - - - - - 566 - - %tpe_hour - - - %tpe_minute - - AMAD Wecker - - - - - - 43 - - - %command - 2 - setTimer - - - - - 547 - %tpe_seconds - %tpe_minute*60 - - - - - - 543 - - %tpe_seconds - - AMAD Timer - - - + 130 AMAD_informations @@ -9541,7 +9082,551 @@ Code: %HTTPR + + 130 + + AMAD_UpdateFlowset + + %priority+1 + + + + + + + + %type + 2 + currentFlowsetUpdate + + + + + 37 + + + %type + 2 + setCommands + + + + + 37 + + + %command + 2 + screenMsg + + + + + 548 + %tpe_message + + + + 547 + %AMAD_lastSetCommand + %receive + + + + + + 43 + + + %command + 2 + ttsMsg + + + + + 547 + %tpe_msglang + deu-deu + + + + + + %tpe_msglang + 4 + en + + + + + 547 + %tpe_msglang + eng-usa + + + + + + %tpe_msglang + 2 + en + + + + + 547 + %volume + %VOLM + + + + + + 307 + + %tpe_msgvol + + + + + + %tpe_msgvol + 7 + 1 + + + + + 559 + %tpe_message + com.google.android.tts:%tpe_msglang + + + + %tpe_msgspeed + + + + + + + 307 + + %volume + + + + + + %tpe_msgvol + 7 + 1 + + + + + 43 + + + %command + 2 + flowState + + + + + 159 + %tpe_flowname + + + + %tpe_flowstate + 2 + active + + + + + 159 + %tpe_flowname + + + + %tpe_flowstate + 2 + inactive + + + + + 547 + + false + %receive + %AMAD_lastSetCommand + + + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "Flow %tpe_flowname has been set %tpe_flowstate" + + + + + 43 + + + %command + 2 + flowRun + + + + + 130 + %tpe_flowname + + %priority + + + + + + + + 43 + + + %command + 2 + setVolume + + + + + 307 + + %tpe_volume + + + + + + 43 + + + %command + 2 + setNotifiVolume + + + + + 305 + + %tpe_notifivolume + + + + + + 43 + + + %command + 2 + setRingSoundVolume + + + + + 304 + + %tpe_ringsoundvolume + + + + + + 43 + + + %command + 2 + setBrightness + + + + + 590 + %receive + / + + + + 810 + + %tpe_brightness + + + + + + + 43 + + + %command + 2 + multimediaControl + + + + + 130 + + AMAD_multimediaControl + + %priority + + %tpe_mplayer + %tpe_button + + + + + 43 + + + %command + 2 + setvoicecmd + + + + + 130 + AMAD_VoiceControl + + %priority+1 + + + + + + + + 43 + + + %command + 2 + setScreenOrientation + + + + + 822 + + + + %tpe_orientation + 2 + auto + + + + + 822 + + + + + %tpe_orientation + 3 + auto + + + + + 548 + + AMAD: "set screenOrientation landscape|portrait" wird noch nicht unterstützt + + + + %tpe_orientation + 4 + landscape|portrait + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screenOrientation landscape|portrait: not supported by Tasker" + + + + + %tpe_orientation + 4 + landscape|portrait + + + + + 547 + %type + %receive3 + + + + + + 43 + + + %command + 2 + setScreenFullscreen + + + + + 548 + + AMAD: "set screenFullscreen on|off" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screenFullscreen on|off: not supported by Tasker" + + + + + 43 + + + %command + 2 + openURL + + + + + 547 + %tpe_url + http://%tpe_url + + + + + + %tpe_url + 5 + ^http* + + + + + 877 + android.intent.action.VIEW + + + %tpe_url + + + + %tpe_browserapp + %tpe_browserappclass + + + + 43 + + + %command + 2 + setAlarm + + + + + 566 + + %tpe_hour + + + %tpe_minute + + AMAD Wecker + + + + + + 43 + + + %command + 2 + setTimer + + + + + 547 + %tpe_seconds + %tpe_minute*60 + + + + + + 547 + %receive4 + %receive + + + + + + %receive(#) + 7 + 4 + + + + 543 + + %tpe_seconds + + AMAD Timer + + + 43 @@ -9551,7 +9636,7 @@ Code: %HTTPR - + 664 pacman CONTEXT @@ -9564,7 +9649,7 @@ Code: %HTTPR - + 664 intent pacman @@ -9577,7 +9662,7 @@ Code: %HTTPR - + 664 CONTEXT @@ -9591,7 +9676,7 @@ Code: %HTTPR - + 43 @@ -9601,7 +9686,7 @@ Code: %HTTPR - + 123 svc nfc enable @@ -9623,7 +9708,7 @@ Code: %HTTPR - + 123 svc nfc disable @@ -9645,7 +9730,7 @@ Code: %HTTPR - + 548 AMAD: "set nfc on|off" benötigt Root rechte @@ -9658,7 +9743,7 @@ Code: %HTTPR - + 130 AMAD_SendData2CommBridge @@ -9677,7 +9762,25 @@ Code: %HTTPR - + + 598 + %receive4 + /%receive2/%receive3/ + + + + + + + + + %receive(#) + 7 + 4 + + + + 43 @@ -9687,26 +9790,7 @@ Code: %HTTPR - - 130 - - AMAD_UpdateFlowset - - %priority+1 - - - - - - - - %type - 2 - currentFlowsetUpdate - - - - + 130 AMAD_SendData2CommBridge @@ -9724,7 +9808,7 @@ Code: %HTTPR - + 333 @@ -9735,7 +9819,7 @@ Code: %HTTPR - + 59 @@ -9746,7 +9830,7 @@ Code: %HTTPR - + 59 @@ -9757,7 +9841,7 @@ Code: %HTTPR - + 43 @@ -9767,7 +9851,7 @@ Code: %HTTPR - + 312 @@ -9778,7 +9862,7 @@ Code: %HTTPR - + 312 @@ -9789,7 +9873,7 @@ Code: %HTTPR - + 312 @@ -9800,7 +9884,7 @@ Code: %HTTPR - + 312 @@ -9811,7 +9895,13 @@ Code: %HTTPR - + + 590 + %receive4 + ? + + + 43 @@ -9821,22 +9911,7 @@ Code: %HTTPR - - 547 - %receive4 - %receive - - - - - - %receive(#) - 7 - 4 - - - - + 294 @@ -9847,7 +9922,7 @@ Code: %HTTPR - + 294 @@ -9858,7 +9933,7 @@ Code: %HTTPR - + 43 @@ -9868,7 +9943,7 @@ Code: %HTTPR - + 445 %tpe_notifypath%tpe_notifyfile @@ -9876,7 +9951,7 @@ Code: %HTTPR - + 43 @@ -9886,13 +9961,13 @@ Code: %HTTPR - + 548 AMAD: "set changetoBtDevice" wird noch nicht unterstützt - + 130 AMAD_SendData2CommBridge @@ -9904,7 +9979,7 @@ Code: %HTTPR - + 43 @@ -9914,7 +9989,7 @@ Code: %HTTPR - + 779 @@ -9926,29 +10001,6 @@ Code: %HTTPR - - 123 - false - service call notification 1 - - - - - - - And - - %tpe_app - 2 - All - - - %ROOT - 2 - yes - - - 1511655849449 From 53bf33ff29ec1d3f4a9a906e8ebdb217a0480c29 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 11 Jan 2018 09:00:17 +0100 Subject: [PATCH 31/42] little bugfix --- 74_AMADDevice.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 7f39a5e..c6253a1 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -386,7 +386,6 @@ sub AMADDevice_statusRequest($) { $method = "POST" if (AttrVal($name,'remoteServer','Automagic') ne 'Automagic' ); $path ="/fhem-amad/deviceInfo/"; # Pfad muß so im Automagic als http request Trigger drin stehen - readingsSingleUpdate( $hash, "lastSetCommand", $path, 1 ); IOWrite($hash,$amad_id,$uri,$path,$header,$method); From 1ddf81f2bfe9ed279824bcc99993422f3c97072f Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 17 Jan 2018 20:27:47 +0100 Subject: [PATCH 32/42] change currentFlowsetUpdate Routine --- 73_AMADCommBridge.pm | 2 +- 74_AMADDevice.pm | 14 +- ...ml => 74_AMADautomagicFlowset_4.1.99.6.xml | 1726 +++++++++-------- 3 files changed, 875 insertions(+), 867 deletions(-) rename 74_AMADautomagicFlowset_4.1.99.5.xml => 74_AMADautomagicFlowset_4.1.99.6.xml (81%) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 48a84e6..def72d0 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -75,7 +75,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.30"; -my $flowsetversion = "4.1.99.5"; +my $flowsetversion = "4.1.99.6"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index c6253a1..6bf941e 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -58,8 +58,8 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode "; eval "use JSON;1" or $missingModul .= "JSON "; -my $modulversion = "4.1.99.33"; -my $flowsetversion = "4.1.99.5"; +my $modulversion = "4.1.99.37"; +my $flowsetversion = "4.1.99.6"; @@ -507,16 +507,16 @@ sub AMADDevice_Set($$@) { } elsif( lc $cmd eq 'volumenotification' ) { - my $vol = join( " ", @args ); + my $volnote = join( " ", @args ); - $path = "/fhem-amad/setCommands/setNotifiVolume?notifivolume=$vol"; + $path = "/fhem-amad/setCommands/setNotifiVolume?notifivolume=$volnote"; $method = "POST"; } elsif( lc $cmd eq 'volumeringsound' ) { - my $vol = join( " ", @args ); + my $volring = join( " ", @args ); - $path = "/fhem-amad/setCommands/setRingSoundVolume?ringsoundvolume=$vol"; + $path = "/fhem-amad/setCommands/setRingSoundVolume?ringsoundvolume=$volring"; $method = "POST"; } @@ -721,7 +721,7 @@ sub AMADDevice_Set($$@) { elsif( lc $cmd eq 'currentflowsetupdate' ) { - $path = "/fhem-amad/currentFlowsetUpdate"; + $path = "/fhem-amad/setCommands/currentFlowsetUpdate"; $method = "POST"; } diff --git a/74_AMADautomagicFlowset_4.1.99.5.xml b/74_AMADautomagicFlowset_4.1.99.6.xml similarity index 81% rename from 74_AMADautomagicFlowset_4.1.99.5.xml rename to 74_AMADautomagicFlowset_4.1.99.6.xml index 9c65917..fd538ca 100644 --- a/74_AMADautomagicFlowset_4.1.99.5.xml +++ b/74_AMADautomagicFlowset_4.1.99.6.xml @@ -250,14 +250,6 @@ irname=getString("name") false - - false - HTTP Request: /fhem-amad/currentFlowsetUpdate - true - /fhem-amad/currentFlowsetUpdate - 8090 - true - false HTTP Request: /fhem-amad/deviceInfo/ @@ -598,6 +590,11 @@ irname=getString("name") Expression: contains(value, " und ") contains(value, " und ") + + false + Expression: currentFlowsetUpdate" + request_path == "/fhem-amad/setCommands/currentFlowsetUpdate" + false Expression: do not Disturb" @@ -1816,6 +1813,15 @@ putString("{param_exkey2}", "{param_exval2}"); true false + + true + Flows ausführen: Update AMAD Flowset + Update AMAD Flowset + + false + false + false + true Flows ausführen: VoiceControl @@ -3280,7 +3286,7 @@ fhemcmd = "setreading"; false Script: Set FHEMDATA JSON - true - Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } + Script: if(playback_state == 0) { playback_state = "none" } else if(playback_state == 1) { playback_state = "stopped" } else if(playback_state == 2) { playback_state = "pause" } else if(playback_state == 3) { playback_state = "play" } else if(playback_state == 4) { playback_state = "fast forward" } else if(playback_state == 5) { playback_state = "fast backward" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "error" } else if(playback_state == 8) { playback_state = "connect" } else if(playback_state == 9) { playback_state = "skip forward" } else if(playback_state == 10) { playback_state = "skip backward" } else if(playback_state == 11) { playback_state = "jump to position in playlist" } @@ -3286,7 +3290,7 @@ fhemcmd = "setreading"; false Script: Set FHEMDATA JSON - false Script: Zuordnung Mediaplayer - @@ -3991,7 +4001,7 @@ Soll der Assistent gelöscht werden? First Run Assistant - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 false PARALLEL @@ -4164,16 +4174,188 @@ Soll der Assistent gelöscht werden? Informations - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 true QUEUE 900 - + Script: daydream_state = "on" + Script: daydream_state = "off" + Display Orientierung: Portrait + Script: screen_orientation = "portrait" + Script: screen_orientation = "landscape" + Script: dock_state = "docked" + Script: dock_state = "undocked" + Script: screen_orientation_mode = "manual" + Expression: scrcount < 5 + Script: scrcount = scrcount + 1 + Pause: 2s (Gerät wach halten) + Dock Status: Docked + Display automatisch drehen eingeschaltet + Expression: trigger == "Daydream Status: Gestartet" + Bluetooth eingeschaltet + Keyguard gesperrt + Expression: keyguard == "locked" + Expression: getAndroidSDKVersion() >= "16" + Display eingeschaltet + Display eingeschaltet + Expression: getAndroidSDKVersion() >= "16" + Unterbrechnungen-Modus: Nur Wecker (Android 6+) + Unterbrechnungen-Modus: Keine / Nicht unterbrechen + Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen + Unterbrechnungen-Modus: Alle / Immer unterbrechen + Script: dndValue = "always" + Script: dndValue = "onlyImportant" + Script: dndValue = "never" + Script: dndValue = "alarmClockOnly" + Script: screen_state = "off" + Script: screen_state = "on {keyguard}" + Script: screen_state = "off {keyguard}" + Script: airplanemode = "off" + Script: bluetooth_state = "on" + Script: androidVersion = "not supported funktion" + App Task läuft: {global_activetask} (neuster) + Script: runTask = "1" + Script: runTask = "0" + Expression: getAndroidSDKVersion() >= "19" + Script: runTask = "not supported android version" + Script: runTask = "null" + Expression: global_activetask != null + Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt" + Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Akku Ladestand: grösser als 0%" + Stromversorgung: Angeschlossen + Script: screen_orientation_mode = "auto" + Script: bluetooth_state = "off" + Keyguard mit Sicherheit + Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle" + Expression: trigger == "Flugmodus: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "Systemeinstellung verändert: System screen_brightness" + Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution) + Script: volume = {volumeBT} + Pause: 2s (Gerät wach halten) + Musik Aktiv + Benachrichtigung auf Bildschirm: [AMAD2] Nicht mehr benötigte AMAD Flows wurden entfernt! (lange) + Expression: trigger == "Systemeinstellung verändert: System volume_music_bt_a2dp" or trigger == "Systemeinstellung verändert: System volume_music_speaker" or trigger == "Systemeinstellung verändert: System volume_music_headphone" or trigger == "Systemeinstellung verändert: System volume_music_headset" + Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2 + Script: volume = {volumeSP} + Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2 + Expression: trigger == "Unterbrechnungen-Modus: Alle / Immer unterbrechen" or trigger == "Unterbrechnungen-Modus: Keine / Nicht unterbrechen" or trigger == "Unterbrechnungen-Modus: Nur Wecker (Android 6+)" or trigger == "Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "21" + Script: airpcount = 0 + Host erreichbar: {global_fhemip}:{global_bridgeport} + WLAN Reassoziieren + Expression: global_fhemip != null or global_bridgeport != null + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Script: notification_text = "not supported from your device" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp" + Benachrichtigung in Statusbar angezeigt: WhatsApp + Initialisiere Variable Systemeinstellung: screenBrightness + Initialisiere Variable Systemeinstellung: volumeNotification + Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + WLAN verfügbar: {global_apssid} + Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; + Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; + Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; + Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; + Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; + Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; + Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; + Expression: Leon == "Gaultier" + Flows löschen: MultimediaControl + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: getAndroidSDKVersion() >= "19" + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Automagic + Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; + Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flows ausführen: Send Data to AMADCommBridge + Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; + Script: connected_devices_names = "none"; connected_devices_addresses = "none" + Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; + Bluetooth Gerät verbunden: Beliebiges Geräte + Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; + Setze Flow Status: Aktivieren SetCommands + Script: setCommandFlow_state = "aktiv" + Script: setCommandFlow_state = "inaktiv" + Flow Aktiv: SetCommands + Expression: trigger == "Periodischer Timer: alle 120s" + Expression: global_userflowstate != "none" + Flow Aktiv: {global_userflowstate} + Script: flowState = "inactive" + Script: flowState = "active" + Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Flow Aktiv: Send Data to AMADCommBridge + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + Expression: trigger == "Periodischer Timer: alle 120s" + Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; + Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Pause: 2s (Gerät wach halten) + Script: airpcount = airpcount + 1 + Expression: airpcount < 11 + Script: notification_text = "not supported from your device" + Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; + Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; + Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" + Expression: package_name == {global_activetask} + Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" + Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" + Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } + Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Initialisiere Variable Nächster Alarm: next_alarm + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + Script: next_alarmday = "{next_alarm,dateformat,c}" + Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; + Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; + Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" + Expression: trigger == "Systemeinstellung verändert: System volume_ring" + Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" + Kabelgebundenes Headset verbunden + Script: headsetValue = 1 + Script: headsetValue = 0 + Initialisiere Variable Systemeinstellung: volumeRingSound + Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" + Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" + Benachrichtigung in Statusbar angezeigt: Telegram Messenger + Script: notification_text = "not supported from your device" + Expression: getAndroidSDKVersion() >= "19" + Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" + Host erreichbar: {global_fhemip}:{global_bridgeport} + Expression: trigger == "SMS Empfangen: Alle" + Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; + Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; + Script: screen_state = "on" + Script: keyguard = "locked" + Script: keyguard = "unlocked" + Script: scrcount = 0 + Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; + Script: keyguardset = "1" + Script: keyguardset = "0" + Expression: udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" + Script: keyguardset = "not supported from your device" + Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardset} + "\""; fhemcmd = "setreading"; + Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; + Get Android Version + Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; + Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; + Prüfe und setze globale Variable + Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" and header_amadid == {global_amadid} + Script: if(playback_state == 0) { playback_state = "none" } else if(playback_state == 1) { playback_state = "stopped" } else if(playback_state == 2) { playback_state = "pause" } else if(playback_state == 3) { playback_state = "play" } else if(playback_state == 4) { playback_state = "fast forward" } else if(playback_state == 5) { playback_state = "fast backward" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "error" } else if(playback_state == 8) { playback_state = "connect" } else if(playback_state == 9) { playback_state = "skip forward" } else if(playback_state == 10) { playback_state = "skip backward" } else if(playback_state == 11) { playback_state = "jump to position in playlist" } + Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } else if(package_name == "deezer.android.app") { musicapp = "Deezer" } + Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE Kabelgebundenes Headset Verbunden Genereller Broadcast: wenn org.smblott.intentradio.STATE Systemeinstellung verändert: System volume_music_headphone - Medien Session verändert Kabelgebundenes Headset Getrennt Systemeinstellung verändert: System volume_music_headset Stromversorgung: Angeschlossen @@ -4215,434 +4397,262 @@ Soll der Assistent gelöscht werden? Flugmodus: Aus Systemeinstellung verändert: System volume_ring_speaker SMS Empfangen: Alle + Medien Session verändert - Script: daydream_state = "on" - Script: daydream_state = "off" - Display Orientierung: Portrait - Script: screen_orientation = "portrait" - Script: screen_orientation = "landscape" - Script: dock_state = "docked" - Script: dock_state = "undocked" - Script: screen_orientation_mode = "manual" - Expression: scrcount < 5 - Script: scrcount = scrcount + 1 - Pause: 2s (Gerät wach halten) - Dock Status: Docked - Display automatisch drehen eingeschaltet - Expression: trigger == "Daydream Status: Gestartet" - Bluetooth eingeschaltet - Keyguard gesperrt - Expression: keyguard == "locked" - Expression: getAndroidSDKVersion() >= "16" - Display eingeschaltet - Display eingeschaltet - Expression: getAndroidSDKVersion() >= "16" - Unterbrechnungen-Modus: Nur Wecker (Android 6+) - Unterbrechnungen-Modus: Keine / Nicht unterbrechen - Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen - Unterbrechnungen-Modus: Alle / Immer unterbrechen - Script: dndValue = "always" - Script: dndValue = "onlyImportant" - Script: dndValue = "never" - Script: dndValue = "alarmClockOnly" - Script: screen_state = "off" - Script: screen_state = "on {keyguard}" - Script: screen_state = "off {keyguard}" - Script: airplanemode = "off" - Script: bluetooth_state = "on" - Script: androidVersion = "not supported funktion" - App Task läuft: {global_activetask} (neuster) - Script: runTask = "1" - Script: runTask = "0" - Expression: getAndroidSDKVersion() >= "19" - Script: runTask = "not supported android version" - Script: runTask = "null" - Expression: global_activetask != null - Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt" - Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Akku Ladestand: grösser als 0%" - Stromversorgung: Angeschlossen - Script: screen_orientation_mode = "auto" - Script: bluetooth_state = "off" - Keyguard mit Sicherheit - Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle" - Expression: trigger == "Flugmodus: Aus" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "Systemeinstellung verändert: System screen_brightness" - Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution) - Script: volume = {volumeBT} - Pause: 2s (Gerät wach halten) - Musik Aktiv - Benachrichtigung auf Bildschirm: [AMAD2] Nicht mehr benötigte AMAD Flows wurden entfernt! (lange) - Expression: trigger == "Systemeinstellung verändert: System volume_music_bt_a2dp" or trigger == "Systemeinstellung verändert: System volume_music_speaker" or trigger == "Systemeinstellung verändert: System volume_music_headphone" or trigger == "Systemeinstellung verändert: System volume_music_headset" - Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2 - Script: volume = {volumeSP} - Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2 - Expression: trigger == "Unterbrechnungen-Modus: Alle / Immer unterbrechen" or trigger == "Unterbrechnungen-Modus: Keine / Nicht unterbrechen" or trigger == "Unterbrechnungen-Modus: Nur Wecker (Android 6+)" or trigger == "Unterbrechnungen-Modus: Wichtig / Nur wichtige Unterbrechnungen zulassen" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "21" - Script: airpcount = 0 - Host erreichbar: {global_fhemip}:{global_bridgeport} - WLAN Reassoziieren - Expression: global_fhemip != null or global_bridgeport != null - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Script: notification_text = "not supported from your device" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp" - Benachrichtigung in Statusbar angezeigt: WhatsApp - Initialisiere Variable Systemeinstellung: screenBrightness - Initialisiere Variable Systemeinstellung: volumeNotification - Expression: trigger == "Medien Session verändert" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - WLAN verfügbar: {global_apssid} - Script: intentRadioState = "\"intentRadioState\":" + " \"" + {irstate} + "\"" + "," + "\"intentRadioName\":" + " \"" + {irname} + "\""; fhemcmd = "setreading"; - Script: dockingState = "\"dockingState\":" + " \"" + {dock_state} + "\""; fhemcmd = "setreading"; - Script: screenOrientation = "\"screenOrientation\":" + " \"" + {screen_orientation} + "\"" + "," + "\"screenOrientationMode\":" + " \"" + {screen_orientation_mode} + "\""; fhemcmd = "setreading"; - Script: screenBrightness = "\"screenBrightness\":" + " \"" + {screenBrightness} + "\""; fhemcmd = "setreading"; - Script: volumeNotification = "\"volumeNotification\":" + " \"" + {volumeNotification} + "\""; fhemcmd = "setreading"; - Script: airplanemode = "\"airplanemode\":" + " \"" + {airplanemode} + "\""; fhemcmd = "setreading"; - Script: checkActiveTask = "\"checkActiveTask\":" + " \"" + {runTask} + "\""; fhemcmd = "setreading"; - Expression: Leon == "Gaultier" - Flows löschen: MultimediaControl - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: getAndroidSDKVersion() >= "19" - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Benachrichtigung in Statusbar angezeigt: Automagic - Script: deviceState = "\"deviceState\": \"online\""; fhemcmd = "setreading"; - Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flows ausführen: Send Data to AMADCommBridge - Script: bluetooth = "\"bluetooth\":" + " \"" + {bluetooth_state} + "\""; fhemcmd = "setreading"; - Script: connected_devices_names = "none"; connected_devices_addresses = "none" - Script: btdeviceinfo = "\"connectedBTdevices\":" + " \"" + {connected_devices_names} + "\"" + "," + "\"connectedBTdevicesMAC\":" + " \"" + {connected_devices_addresses} + "\""; fhemcmd = "setreading"; - Bluetooth Gerät verbunden: Beliebiges Geräte - Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Gerät verbunden: Alle Geräte" or trigger == "Bluetooth Gerät getrennt: Alle Geräte" or trigger == "Bluetooth Status: Schaltet ein, Ein" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: flow_SetCommands = "\"flow_SetCommands\":" + " \"" + {setCommandFlow_state} + "\""; fhemcmd = "setreading"; - Setze Flow Status: Aktivieren SetCommands - Script: setCommandFlow_state = "aktiv" - Script: setCommandFlow_state = "inaktiv" - Flow Aktiv: SetCommands - Expression: trigger == "Periodischer Timer: alle 120s" - Expression: global_userflowstate != "none" - Flow Aktiv: {global_userflowstate} - Script: flowState = "inactive" - Script: flowState = "active" - Script: flow_informations = "\"userFlowState\":" + " \"" + {flowState} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Flow Aktiv: Send Data to AMADCommBridge - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Expression: trigger == "Periodischer Timer: alle 120s" - Script: incomingCaller = "\"incomingCallerName\":" + " \"" + {contact_name} + "\"" + "," + "\"incomingCallerNumber\":" + " \"" + {incoming_number} + "\""; fhemcmd = "setreading"; - Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Pause: 2s (Gerät wach halten) - Script: airpcount = airpcount + 1 - Expression: airpcount < 11 - Script: notification_text = "not supported from your device" - Script: currentMusic = "\"currentMusicTrack\":" + " \"" + {title} + "\"" + "," + "\"currentMusicAlbum\":" + " \"" + {description} + "\"" + "," + "\"currentMusicArtist\":" + " \"" + {subtitle} + "\"" + "," + "\"currentMusicApp\":" + " \"" + {musicapp} + "\"" + "," + "\"currentMusicIcon\":" + " \"" + {icon} + "\"" + "," + "\"currentMusicState\":" + " \"" + {playback_state} + "\""; fhemcmd = "setreading"; - Script: volumevalue = "\"volume\":" + " \"" + {volume} + "\""; fhemcmd = "setreading"; - Script: nextAlarm = "\"nextAlarmTime\":" + " \"" + {next_alarmtime} + "\"" + "," + "\"nextAlarmDay\":" + " \"" + {next_alarmday} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker" - Expression: package_name == {global_activetask} - Expression: trigger == "Periodischer Timer: alle 120s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Expression: trigger == "App Task Beendet" or trigger == "App Task Gestartet" - Expression: trigger == "App Task Gestartet" or trigger == "Periodischer Timer: alle 120s" - Expression: trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE" or trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT") { nextalarmstate = "alert" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DISMISS") { nextalarmstate = "dismiss" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE") { nextalarmstate = "done" } if(trigger == "Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE") { nextalarmstate = "snooze" } - Expression: trigger == "Systemeinstellung verändert: System next_alarm" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Initialisiere Variable Nächster Alarm: next_alarm - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Script: next_alarmday = "{next_alarm,dateformat,c}" - Script: volumeRingSound = "\"volumeRingSound\":" + " \"" + {volumeRingSound} + "\""; fhemcmd = "setreading"; - Script: wiredHeadsetPlugged = "\"wiredHeadsetPlugged\":" + " \"" + {headsetValue} + "\""; fhemcmd = "setreading"; - Expression: trigger == "Kabelgebundenes Headset Verbunden" or trigger == "Kabelgebundenes Headset Getrennt" - Expression: trigger == "Systemeinstellung verändert: System volume_ring" - Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE" - Kabelgebundenes Headset verbunden - Script: headsetValue = 1 - Script: headsetValue = 0 - Initialisiere Variable Systemeinstellung: volumeRingSound - Script: subtitle = "no player active"; title = "no player active"; description = "no player active"; musicapp = "no player active"; icon = "no player active" - Script: if(playback_state == 0) { playback_state = "keiner" } else if(playback_state == 1) { playback_state = "gestoppt" } else if(playback_state == 2) { playback_state = "pausiert" } else if(playback_state == 3) { playback_state = "spielt ab" } else if(playback_state == 4) { playback_state = "spult vorwärts" } else if(playback_state == 5) { playback_state = "spült rückwärts" } else if(playback_state == 6) { playback_state = "buffert" } else if(playback_state == 7) { playback_state = "Fehler" } else if(playback_state == 8) { playback_state = "verbindet" } else if(playback_state == 9) { playback_state = "springt zum vorherigen" } else if(playback_state == 10) { playback_state = "springt zum nächsten" } else if(playback_state == 11) { playback_state = "springt zu Position in Wiedergabeliste" } - Script: if(package_name == "com.google.android.music") { musicapp = "Google Musik" } else if(package_name == "com.amazon.mp3") { musicapp = "Amazon Musik" } else if(package_name == "com.google.android.videos") { musicapp = "Google Video" } else if(package_name == "com.spotify.music") { musicapp = "Spotify Musik" } else if(package_name == "com.google.android.youtube") { musicapp = "YouTube" } else if(package_name == "com.google.android.apps.youtube.kids") { musicapp = "YouTube Kids" } else if(package_name == "tunein.player") { musicapp = "TuneIn Player" } else if(package_name == "com.rhapsody.alditalk") { musicapp = "Aldi Life Musik" } else if(package_name == "org.videolan.vlc") { musicapp = "VLC Player" } else if(package_name == "com.sec.android.app.music") { musicapp = "Samsung Music Player" } - Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff" - Benachrichtigung in Statusbar angezeigt: Telegram Messenger - Script: notification_text = "not supported from your device" - Expression: getAndroidSDKVersion() >= "19" - Expression: trigger == "Benachrichtigung in Statusbar angezeigt: org.telegram.messenger" - Host erreichbar: {global_fhemip}:{global_bridgeport} - Expression: trigger == "SMS Empfangen: Alle" - Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: nextAlarmState = "\"nextAlarmState\":" + " \"" + {nextalarmstate} + "\""; fhemcmd = "setreading"; - Script: doNotDisturb = "\"doNotDisturb\":" + " \"" + {dndValue} + "\""; fhemcmd = "setreading"; - Script: screen_state = "on" - Script: keyguard = "locked" - Script: keyguard = "unlocked" - Script: scrcount = 0 - Script: screen = "\"screen\":" + " \"" + {screen_state} + "\""; fhemcmd = "setreading"; - Script: keyguardset = "1" - Script: keyguardset = "0" - Expression: udef_trigger == "setLockPin" or trigger == "HTTP Request: /fhem-amad/deviceInfo/" - Script: keyguardset = "not supported from your device" - Script: keyguardSet = "\"keyguardSet\":" + " \"" + {keyguardset} + "\""; fhemcmd = "setreading"; - Script: androidVersion = "\"androidVersion\":" + " \"" + {androidVersion} + "\""; fhemcmd = "setreading"; - Get Android Version - Script: powerinfo = "\"powerLevel\":" + " \"" + "{battery_percentage,numberformat,0}" + "\"" + "," + "\"powerPlugged\":" + " \"" + {battery_plugged} + "\"" + "," + "\"batteryTemperature\":" + " \"" + "{battery_temperature/10.0,numberformat.0.0}" + "\"" + "," + "\"batteryHealth\":" + " \"" + {battery_health} + "\""; fhemcmd = "setreading"; - Script: daydream = "\"daydream\":" + " \"" + {daydream_state} + "\""; fhemcmd = "setreading"; - Prüfe und setze globale Variable - Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/" and header_amadid == {global_amadid} - - - - - - - - + + + + + + + + - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NFC Tag Support - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 true PARALLEL @@ -4656,7 +4666,7 @@ Soll der Assistent gelöscht werden? Send Data to AMADCommBridge - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 true PARALLEL 900 @@ -4730,7 +4740,7 @@ Soll der Assistent gelöscht werden? SetCommands - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 true QUEUE 900 @@ -4847,104 +4857,104 @@ Soll der Assistent gelöscht werden? Expression: Clear Automagic Meldungen" Expression: setVibrate" Audio Player steuern: Medienknopf Zurück ({pname}/{kname}) - Expression: param_button == "next" - Expression: param_button == "back" - Schalte Display ein: Hell für {param_screenontime}s - Setze Alarm: um {param_hour}:{param_minute} - Audio Player steuern: Medienknopf Weiter ({pname}/{kname}) - Expression: openCall" - Nummer anrufen: {param_callnumber} - Expression: param_flowstate == "active" or param_flowstate == "inactive" - Expression: param_flowstate == "active" - Setze Flow Status: Deaktivieren {param_flowname} - Script: notification_text = "Flow '{param_flowname}' has been set {param_flowstate}" - Expression: multimediaControl" - Starte Daydream - Expression: startDaydream" - Lautstärken setzen param_volume - Expression: setNotifiVolume" - Lautstärken setzen param_notifivolume - Expression: param_button == "play/pause" - Audio Player steuern: Medienknopf Play/Pause (/{kname}) - Sound: {param_notifypath}{param_notifyfile} als Benachrichtigung - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) - Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/emulated/0/Download - Script: flow_informations = "\"flow_informations\":" + " \"" + {informationFlow_state} + "\""; fhemcmd = "setreading"; - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Flows ausführen: udef_trigger setLockPin - Flow Aktiv: Informations - Script: informationFlow_state = "aktiv" - Script: informationFlow_state = "inaktiv" - Setze Flow Status: Aktivieren Informations - Flow Aktiv: Send Data to AMADCommBridge - Setze Flow Status: Aktivieren Send Data to AMADCommBridge - Audio Player steuern: Medienknopf Stopp ({pname}/{kname}) - SMS senden an: an {param_smsnumber} '{param_smsmessage}' (10 in 12h) - Expression: param_lockmod == "lock" - Expression: Airplanemode - Expression: param_nfc == "on" - Expression: param_nfc == "off" - NFC ein-/ausschalten: Aus - Expression: sendSms" - Expression: closeCall" - Expression: nfc" - NFC ein-/ausschalten: Ein - Expression: setRingSoundVolume" - Lautstärken setzen param_ringsoundvolume - Setze Timer - Expression: ttsMsg" - Expression: ttsMsgLang" - Medianlautstärken Speichern - Lautstärke einstellen: Medien auf Level {param_msgvol} - Script: Zuordnung Mediaplayer - Expression: param_msgvol == "none" - Sprachausgabe: Englisch - Sprachausgabe: Deutsch - Expression: param_msgvol == "none" - Medienlautstärke Wiederherstellen - Expression: flowState" - Setze Flow Status: Aktivieren {param_flowname} - Flows ausführen: VoiceControl - Setze Lock PIN/Passwort: PIN/Passwort zurücksetzen - Expression: showhomescreen" - Zeige Home Screen - Expression: param_button == "stop" - Vibrieren: Pattern 2 (-- --) - Flows ausführen: Send Data to AMADCommBridge - Host erreichbar: {global_fhemip}:{global_bridgeport} - Expression: global_fhemip != null or global_bridgeport != null - Expression: header_amadid == {global_amadid} - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 Front - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 Front - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 Front - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 Front - Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 Front - Expression: param_pictureresolution == "800x600" - Expression: param_pictureresolution == "1024x768" - Expression: param_pictureresolution == "1280x720" - Expression: param_pictureresolution == "1600x1200" - Expression: param_pictureresolution == "1920x1080" - Expression: param_picturecamera == "Back" - Expression: param_picturecamera == "Back" - Expression: param_picturecamera == "Back" - Expression: param_picturecamera == "Back" - Expression: param_picturecamera == "Back" - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Expression: takepicture - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: notification_text = "Take Picture: can not save camerapicture, path does not exist" - Expression: flowRun" - Flows ausführen: {param_flowname} - Flows ausführen: Update AMAD Flowset - Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*" - Expression: currentFlowsetUpdate" - + Schalte Display ein: Hell für {param_screenontime}s + Setze Alarm: um {param_hour}:{param_minute} + Audio Player steuern: Medienknopf Weiter ({pname}/{kname}) + Expression: openCall" + Nummer anrufen: {param_callnumber} + Expression: param_flowstate == "active" or param_flowstate == "inactive" + Expression: param_flowstate == "active" + Setze Flow Status: Deaktivieren {param_flowname} + Script: notification_text = "Flow '{param_flowname}' has been set {param_flowstate}" + Expression: multimediaControl" + Starte Daydream + Expression: startDaydream" + Lautstärken setzen param_volume + Expression: setNotifiVolume" + Lautstärken setzen param_notifivolume + Audio Player steuern: Medienknopf Play/Pause (/{kname}) + Sound: {param_notifypath}{param_notifyfile} als Benachrichtigung + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) + Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/emulated/0/Download + Script: flow_informations = "\"flow_informations\":" + " \"" + {informationFlow_state} + "\""; fhemcmd = "setreading"; + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Flows ausführen: udef_trigger setLockPin + Flow Aktiv: Informations + Script: informationFlow_state = "aktiv" + Script: informationFlow_state = "inaktiv" + Setze Flow Status: Aktivieren Informations + Flow Aktiv: Send Data to AMADCommBridge + Setze Flow Status: Aktivieren Send Data to AMADCommBridge + SMS senden an: an {param_smsnumber} '{param_smsmessage}' (10 in 12h) + Expression: param_lockmod == "lock" + Expression: Airplanemode + Expression: param_nfc == "on" + Expression: param_nfc == "off" + NFC ein-/ausschalten: Aus + Expression: sendSms" + Expression: closeCall" + Expression: nfc" + NFC ein-/ausschalten: Ein + Expression: setRingSoundVolume" + Lautstärken setzen param_ringsoundvolume + Setze Timer + Expression: ttsMsg" + Expression: ttsMsgLang" + Medianlautstärken Speichern + Lautstärke einstellen: Medien auf Level {param_msgvol} + Expression: param_msgvol == "none" + Sprachausgabe: Englisch + Sprachausgabe: Deutsch + Expression: param_msgvol == "none" + Medienlautstärke Wiederherstellen + Expression: flowState" + Setze Flow Status: Aktivieren {param_flowname} + Flows ausführen: VoiceControl + Setze Lock PIN/Passwort: PIN/Passwort zurücksetzen + Expression: showhomescreen" + Zeige Home Screen + Vibrieren: Pattern 2 (-- --) + Flows ausführen: Send Data to AMADCommBridge + Host erreichbar: {global_fhemip}:{global_bridgeport} + Expression: global_fhemip != null or global_bridgeport != null + Expression: header_amadid == {global_amadid} + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1920x1080 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1600x1200 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1024x768 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 800x600 Front + Foto aufnehmen: /storage/emulated/0/AMADpicture.jpg (ohne Benutzeroberfläche) 1280x720 Front + Expression: param_pictureresolution == "800x600" + Expression: param_pictureresolution == "1024x768" + Expression: param_pictureresolution == "1280x720" + Expression: param_pictureresolution == "1600x1200" + Expression: param_pictureresolution == "1920x1080" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Expression: param_picturecamera == "Back" + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Expression: takepicture + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Take Picture: can not save camerapicture, path does not exist" + Expression: flowRun" + Flows ausführen: {param_flowname} + Flows ausführen: Update AMAD Flowset + Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*" + Expression: currentFlowsetUpdate" + Audio Player steuern: Medienknopf Stopp ({pname}/{kname}) + Expression: param_button == "mediaStop" + Expression: param_button == "mediaPlay" + Expression: param_button == "mediaNext" + Expression: param_button == "mediaBack" + Script: Zuordnung Mediaplayer + @@ -4973,19 +4983,19 @@ Soll der Assistent gelöscht werden? - - + + - + - + - + - + @@ -5000,14 +5010,14 @@ Soll der Assistent gelöscht werden? - + - - + + @@ -5021,11 +5031,11 @@ Soll der Assistent gelöscht werden? - + - + @@ -5033,205 +5043,205 @@ Soll der Assistent gelöscht werden? - + - + - - - + + + - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Update AMAD Flowset - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 true QUEUE - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Flows ausführen: Send Data to AMADCommBridge - Flow Aktiv: First Run Assistant - Setze Flow Status: Deaktivieren First Run Assistant - Prüfe und setze Bridgeport Variable - Verzeichnisse erstellen: /storage/sdcard0/AMADNG_FlowsetUpdate - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0) - Verzeichnisse erstellen: /sdcard/AMADNG_FlowsetUpdate - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard) - Verzeichnisse erstellen: /storage/emulated/0/AMADNG_FlowsetUpdate - Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/emulated/0/AMADNG_FlowsetUpdate - Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/sdcard0/AMADNG_FlowsetUpdate - Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /sdcard/AMADNG_FlowsetUpdate - Flows/Widgets importieren: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Flows/Widgets importieren: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Flows/Widgets importieren: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} - Dateien löschen: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Dateien löschen: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Dateien löschen: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml - Expression: header_amadid == {global_amadid} - Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) - Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - Script: notification_text = "Flowset Update: path for download not exist" - - - - - - - - - - - - - - + + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Flows ausführen: Send Data to AMADCommBridge + Flow Aktiv: First Run Assistant + Setze Flow Status: Deaktivieren First Run Assistant + Prüfe und setze Bridgeport Variable + Verzeichnisse erstellen: /storage/sdcard0/AMADNG_FlowsetUpdate + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0) + Verzeichnisse erstellen: /sdcard/AMADNG_FlowsetUpdate + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard) + Verzeichnisse erstellen: /storage/emulated/0/AMADNG_FlowsetUpdate + Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/emulated/0/AMADNG_FlowsetUpdate + Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /storage/sdcard0/AMADNG_FlowsetUpdate + Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml nach /sdcard/AMADNG_FlowsetUpdate + Flows/Widgets importieren: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Flows/Widgets importieren: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Flows/Widgets importieren: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma} + Dateien löschen: /storage/emulated/0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Dateien löschen: /sdcard/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Dateien löschen: /storage/sdcard0/AMADNG_FlowsetUpdate/currentFlowsetUpdate.xml + Expression: header_amadid == {global_amadid} + Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0) + Script: automagicState = "\"automagicState\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; + Script: notification_text = "Flowset Update: path for download not exist" + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + VoiceControl - AMADNG Info/Control Flowset v4.1.99.6 + AMADNG Info/Control Flowset v4.1.99.7 true QUEUE From e9933e50e870a4fc008e7bce89970333a48aa8ec Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Wed, 31 Jan 2018 10:19:00 +0100 Subject: [PATCH 37/42] add new Taskerset --- ...j.xml => 74_AMADtaskerset_4.1.99.6.prj.xml | 12646 ++++++++-------- 1 file changed, 6680 insertions(+), 5966 deletions(-) rename 74_AMADtaskerset_4.1.99.5.prj.xml => 74_AMADtaskerset_4.1.99.6.prj.xml (91%) diff --git a/74_AMADtaskerset_4.1.99.5.prj.xml b/74_AMADtaskerset_4.1.99.6.prj.xml similarity index 91% rename from 74_AMADtaskerset_4.1.99.5.prj.xml rename to 74_AMADtaskerset_4.1.99.6.prj.xml index 7b157b2..45b31ae 100644 --- a/74_AMADtaskerset_4.1.99.5.prj.xml +++ b/74_AMADtaskerset_4.1.99.6.prj.xml @@ -1,495 +1,11 @@ 1080.0,1776.0 - - 1513116735261 - true - 1514566300708 - 1000 - 923 - toGoAMAD - - 160 - %AMAD_apssid - - - - - - 165 - - - %AMAD_toGo - 2 - on - - - - - - 1513116735261 - true - 1512646676509 - 1001 - 962 - 972 - AMAD_powerPlugged - - 10 - - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735262 - true - 1514566358989 - 1002 - 938 - toGoAMAD - - 160 - true - %AMAD_apssid - - - - - - 165 - - - %AMAD_toGo - 2 - on - - - - - - 1513116735262 - true - 1512646890239 - 1003 - 935 - 969 - AMAD_airplanemode - - 100 - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735263 - true - 1512646887184 - 1004 - 951 - 990 - AMAD_nfc - - 195 - - - - 165 - - - %AMAD_send - 2 - on - - - - - 1513116735264 + 1516830496835 true - 1512664382473 + 1517341634125 1005 - 965 - 980 - AMAD_screenOrientation - - 122 - - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735264 - true - 1512646885163 - 1006 - 920 - 974 - AMAD_dockingState - - 80 - - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735265 - true - 1512749333107 - 1007 - 978 - Pushover AMAD - - 109437509 - 0 - - - Title=~"AMAD" - java.lang.String - true - java.lang.Boolean - - java.lang.String - - java.lang.String - net.superblock.pushover.tasker.OK - java.lang.String - - java.lang.String - false - java.lang.Boolean - AMAD - java.lang.String - - java.lang.String - - java.lang.String - - - net.superblock.pushover - net.superblock.pushover.tasker.PushoverTaskerPluginActivity - - - 165 - - - %AMAD_receive - 2 - on - - - - - - 1513116735274 - true - 1513116249338 - 1008 - 940 - AMAD_screen_off - - 165 - - - %AMAD_send - 2 - on - - - - - 210 - - - - 1513116735274 - true - 1513424870080 - 1010 - 943 - 989 - AMAD_bluetooth - - 2 - - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735275 - true - 1514473987581 - 1011 - 982 - TNES AMAD - - 818578785 - 0 - - - 22 - java.lang.Integer - <StringArrayList sr=""><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0>device==AMAD</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1>cmd</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1></StringArrayList> - java.util.ArrayList - 192.168.5.81 - java.lang.String - 8765 - java.lang.String - - java.lang.String - - java.lang.String - - java.lang.String - AMAD - java.lang.String - true - java.lang.Boolean - - - bidoismorgan.httpevent - taskerplugin.httpevent.ui.EditActivity - - - 165 - - - %AMAD_receive - 2 - on - - - - - - 1513147867496 - true - 1513424830740 - 1012 - 1013 - AMAD_alarm_done - - 306 - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513147695795 - true - 1513424843423 - 1014 - 1015 - AMAD_alarm_start - - 305 - - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513276789072 - true - 1513424824152 - 1016 - 1017 - AMAD_alarm - - com.android.deskclock.DeskClock - 2 - Uhr - true - com.android.deskclock - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735246 - true - 1513424802623 - 994 - 992 - AMAD_screen_on - - 165 - - - %AMAD_send - 2 - on - - - - - 208 - - - - 1513116735247 - true - 1512664308181 - 995 - 918 - 947 - AMAD_daydream - - 175 - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735247 - true - 1512646889105 - 996 - 948 - 983 - AMAD_wiredHeadsetPlugged - - 30 - - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735248 - true - 1512646889713 - 997 - 979 - AMAD_InformationFlow - - - 165 - - - %AMAD_send - 2 - on - - - - - - 1513116735259 - true - 1513147652107 - 998 - 914 - AMAD_screen_unlocked - - 165 - - - %AMAD_send - 2 - on - - - - - 1000 - - - - 1513116735259 - true - 1513464771034 - 999 - 982 + 1004 AutoRemote AMAD 1015828216 @@ -568,22 +84,596 @@ Way the message was sent (BT, Wifi, GCM) + + 1516830496835 + true + 1512646890239 + 1006 + 984 + 973 + AMAD_airplanemode + + 100 + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496836 + true + 1516907246352 + 1007 + 991 + toGoAMAD + + 160 + true + %AMAD_apssid + + + + + + 165 + + + %AMAD_toGo + 2 + on + + + + + + 1516830496836 + true + 1512646887184 + 1008 + 968 + 974 + AMAD_nfc + + 195 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496837 + true + 1513116249338 + 1010 + 992 + AMAD_screen_off + + 165 + + + %AMAD_send + 2 + on + + + + + 210 + + + + 1516830496847 + true + 1512646889105 + 1011 + 942 + 927 + AMAD_wiredHeadsetPlugged + + 30 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496847 + true + 1516488793383 + 1012 + 952 + AMAD_IntentRadio + + 599 + org.smblott.intentradio.STATE + + + + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496848 + true + 1513424870080 + 1013 + 983 + 932 + AMAD_bluetooth + + 2 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496848 + true + 1516474460529 + 1014 + 964 + AMAD_SMS + + 7 + 0 + + + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496849 + true + 1513424843423 + 1015 + 947 + AMAD_alarm_start + + 305 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496849 + true + 1512646885163 + 1016 + 988 + 926 + AMAD_dockingState + + 80 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496849 + true + 1513424830740 + 1017 + 963 + AMAD_alarm_done + + 306 + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496850 + true + 1516907074420 + 1019 + 1004 + TNES AMAD + + 818578785 + 0 + + + 22 + java.lang.Integer + <StringArrayList sr=""><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0>device==AMAD</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS0><_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1>cmd</_arrlst_com.taskerplugin.httpevent.extra.STRINGS_FILTERS1></StringArrayList> + java.util.ArrayList + 192.168.5.81 + java.lang.String + 8765 + java.lang.String + + java.lang.String + + java.lang.String + + java.lang.String + AMAD + java.lang.String + true + java.lang.Boolean + + + bidoismorgan.httpevent + taskerplugin.httpevent.ui.EditActivity + + + 165 + + + %AMAD_receive + 2 + on + + + + + + 1516830496858 + true + 1513147652107 + 1020 + 1000 + AMAD_screen_unlocked + + 165 + + + %AMAD_send + 2 + on + + + + + 1000 + + + + 1516830496872 + true + 1512664308181 + 1021 + 934 + 997 + AMAD_daydream + + 175 + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496883 + true + 1512664382473 + 1022 + 916 + 931 + AMAD_screenOrientation + + 122 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496883 + true + 1513424824152 + 1023 + 925 + AMAD_alarm + + com.android.deskclock.DeskClock + 2 + Uhr + true + com.android.deskclock + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496890 + true + 1512646889713 + 1024 + 972 + AMAD_InformationFlow + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496891 + true + 1516907192240 + 1025 + 1001 + toGoAMAD + + 160 + %AMAD_apssid + + + + + + 165 + + + %AMAD_toGo + 2 + on + + + + + + 1516830496892 + true + 1513424802623 + 1026 + 1003 + AMAD_screen_on + + 165 + + + %AMAD_send + 2 + on + + + + + 208 + + + + 1516830496892 + true + 1512646676509 + 1028 + 989 + 945 + AMAD_powerPlugged + + 10 + + + + 165 + + + %AMAD_send + 2 + on + + + + + + 1516830496893 + true + 1516467998157 + 1029 + 993 + Pushover AMAD + + 109437509 + 0 + + + Title=~"AMAD" + java.lang.String + true + java.lang.Boolean + + java.lang.String + + java.lang.String + net.superblock.pushover.tasker.OK + java.lang.String + + java.lang.String + false + java.lang.Boolean + AMAD + java.lang.String + + java.lang.String + + java.lang.String + + + net.superblock.pushover + net.superblock.pushover.tasker.PushoverTaskerPluginActivity + + + 165 + + + %AMAD_receive + 2 + on + + + + + + 1517260526109 + true + 1517330678766 + 1030 + 1031 + AMAD_Messenger + + 461 + + com.whatsapp.Main, +org.telegram.ui.LaunchActivity + com.whatsapp, +org.telegram.messenger + + + + + + + + + + + + 165 + + + %AMAD_send + 2 + on + + + + 1502789371413 AMAD - 1001,1002,994,1005,1011,1014,1012,1000,998,1006,1010,1008,999,1016,995,1004,1007,1003,997,996 - AMAD_Dialog_Message,AMAD_settings - 984,944,1057,1019,922,972,938,1035,918,1041,1028,1036,923,975,947,980,1053,1044,1013,954,1054,990,1031,916,1033,914,1058,1038,970,1049,926,968,1046,1055,1050,951,1029,1015,1034,1022,1020,934,1017,949,979,943,967,978,966,939,1021,963,1023,1037,1045,1051,982,1048,962,1052,1026,940,1056,1024,1039,935,1043,1030,965,1032,927,992,937,969,1047,974,948,983,1025,989,920 + 1020,1023,1016,1024,1013,1026,1017,1019,1014,1030,1010,1011,1007,1006,1028,1008,1012,1015,1005,1025,1022,1021,1029 + AMAD_settings,AMAD_Dialog_Message + 959,969,940,948,1003,989,999,956,922,996,923,1004,961,980,935,924,962,927,967,974,938,920,957,975,952,947,943,982,954,953,988,960,944,987,937,992,976,939,966,995,1000,914,1035,932,998,985,955,934,970,916,918,950,936,977,990,986,994,984,968,942,945,951,1031,979,972,973,978,946,925,926,1001,949,981,963,991,997,941,965,1002,993,931,958,983,964 - android.hardware.bluetooth:y - android.hardware.wifi:y + android.hardware.camera:y + android.hardware.bluetooth:y + android.hardware.camera.flash:y + android.hardware.camera.front:y + android.hardware.wifi:y 963 net.superblock.pushover com.joaomgcd.autoremote bidoismorgan.httpevent com.schlimbo.amad 1.0 - 6 + 8 /storage/emulated/0/Tasker/.icn/Eigene Icons/TaskerFHEM_icon.png @@ -623,7 +713,7 @@ Way the message was sent (BT, Wifi, GCM) - 954 + 920 4 639,340,306,95,639,340,306,95 Text_Weiter @@ -637,7 +727,7 @@ Way the message was sent (BT, Wifi, GCM) - 966 + 950 #FF424242 @@ -660,7 +750,7 @@ Way the message was sent (BT, Wifi, GCM) 1280 720 - 1057 + 951 4 0,561,159,75,651,272,133,73 Text_fhemctlmode @@ -675,7 +765,7 @@ Mode: - 1041 + 923 4 0,464,159,75,651,173,133,73 Text_AMADport @@ -691,9 +781,9 @@ Bridge Port: 4 - 1037 + 938 168,367,397,75,796,75,343,73 - 1048 + 953 TextEdit_FHEMip @@ -718,9 +808,9 @@ Bridge Port: 4 - 1033 + 936 168,464,397,75,796,173,343,73 - 1044 + 955 TextEdit_AMADport @@ -745,9 +835,9 @@ Bridge Port: 4 - 1023 + 946 168,271,397,75,143,272,343,73 - 1049 + 937 TextEdit_AMAD_ID @@ -771,9 +861,9 @@ Bridge Port: - 1021 + 924 168,1030,397,75,796,518,343,73 - 1031 + 941 TextEdit_SSID @@ -883,7 +973,7 @@ Bridge Port: - 1058 + 985 4 578,76,134,75,503,75,121,73 Text_getDeviceName @@ -910,7 +1000,7 @@ set - 1025 + 969 4 578,271,134,75,503,272,121,73 Text_getID @@ -937,7 +1027,7 @@ new ID - 1043 + 975 4 578,174,134,75,503,173,121,73 Text_getIP @@ -964,7 +1054,7 @@ Device IP - 1032 + 987 578,1030,134,75,1153,518,121,73 Text_getSSID get @@ -990,7 +1080,7 @@ SSID - 1050 + 957 4 578,464,134,75,1153,173,121,73 Text_setPort @@ -1017,7 +1107,7 @@ SSID - 1045 + 954 0,1030,159,75,651,518,133,73 Text_SSID WLAN @@ -1031,7 +1121,7 @@ SSID: - 1051 + 994 4 0,1175,182,102,0,643,374,75 Text_close @@ -1045,7 +1135,7 @@ SSID: - 1047 + 977 4 283,1175,199,102,452,643,369,75 Text_autocreate @@ -1059,7 +1149,7 @@ SSID: - 1046 + 939 4 544,1175,174,102,947,643,330,75 Text_save @@ -1073,7 +1163,7 @@ SSID: - 1056 + 986 4 591,884,118,74,503,518,118,73 Switch_information @@ -1092,7 +1182,7 @@ SSID: - 1052 + 949 4 0,884,567,74,0,518,478,73 Text_information @@ -1106,7 +1196,7 @@ SSID: - 1039 + 940 4 0,957,567,74,651,444,478,73 Text_toGo @@ -1120,7 +1210,7 @@ SSID: - 1038 + 970 4 591,957,118,74,1153,444,118,73 Switch_toGo @@ -1139,7 +1229,7 @@ SSID: - 1035 + 995 4 0,737,567,74,0,370,478,73 Text_StatusRequest @@ -1153,7 +1243,7 @@ SSID: - 1034 + 978 4 578,737,134,75,503,370,123,73 Text_sendStatusRequest @@ -1179,10 +1269,10 @@ SSID: - 1055 + 943 4 0,1124,707,53,0,593,1269,49 - 916 + 990 Text_lastCommand %AMAD_lastSetCommand @@ -1206,7 +1296,7 @@ SSID: - 1030 + 959 4 0,174,159,75,0,173,133,73 Text_DeviceIP @@ -1231,7 +1321,7 @@ IP: #FFFFFFFF - 1054 + 966 4 499,6,179,58,1070,0,173,50 Text_deviceState @@ -1245,7 +1335,7 @@ IP: - 1024 + 981 4 0,809,567,74,1,444,478,73 Text_setCommands @@ -1277,7 +1367,7 @@ IP: - 1019 + 961 4 0,659,159,75,651,370,133,73 Text_remoteServer @@ -1378,7 +1468,7 @@ Server: - 1028 + 998 4 0,271,159,75,0,272,133,73 Text_AMAD_ID @@ -1393,7 +1483,7 @@ ID: - 1022 + 962 4 0,76,159,75,0,75,133,73 Text_DeviceName @@ -1434,9 +1524,9 @@ Name: 4 - 1026 + 976 168,76,397,75,143,75,343,73 - 1053 + 982 TextEdit_DeviceName @@ -1461,9 +1551,9 @@ Name: 4 - 1020 + 980 168,174,397,75,143,173,343,73 - 1036 + 956 TextEdit_DeviceIP @@ -1487,7 +1577,7 @@ Name: - 1029 + 979 4 0,367,159,75,651,75,133,73 Text_FHEMip @@ -1512,2054 +1602,10 @@ Bridge IP: - - 1513147872631 - 1513276907496 - 1013 - - 547 - - %setreading - "nextAlarmState": "done" - - - - - - 664 - - false - contres - CONTEXT - getContentResolver -{ContentResolver} () - - - - - - - - - - 38 - - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - %setreading - - - - - 664 - - false - %alarm - android.provider.Settings$System - getString -{String} (ContentResolver, String) - contres - next_alarm_formatted - - - - - - - - 37 - - - %alarm - 3 - \%alarm - - - - - 547 - %blank - - - - - - - 590 - %alarm - .,%blank - - - - 547 - - %setreading - %setreading,"nextAlarmDay": "%alarm1" - - - - - - %alarm1 - 3 - \%alarm1 - - - - - 547 - - %setreading - %setreading,"nextAlarmTime": "%alarm2" - - - - - - %alarm2 - 3 - \%alarm2 - - - - - 43 - - - 547 - - %setreading - %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" - - - - - - - 1513147701841 - 1513277267125 - 1015 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "nextAlarmState": "alert","nextAlarmDay": "off","nextAlarmTime": "off" - - - - - - 1513276797078 - 1513424688732 - 1017 - - 547 - - %setreading - "nextAlarmState": "done" - - - - - - 664 - - false - contres - CONTEXT - getContentResolver -{ContentResolver} () - - - - - - - - - - 38 - - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - %setreading - - - - - 664 - - false - %alarm - android.provider.Settings$System - getString -{String} (ContentResolver, String) - contres - next_alarm_formatted - - - - - - - - 37 - - - %alarm - 3 - \%alarm - - - - - 547 - %blank - - - - - - - 590 - %alarm - .,%blank - - - - 547 - - %setreading - %setreading,"nextAlarmDay": "%alarm1" - - - - - - %alarm1 - 3 - \%alarm1 - - - - - 547 - - %setreading - %setreading,"nextAlarmTime": "%alarm2" - - - - - - %alarm2 - 3 - \%alarm2 - - - - - 43 - - - 547 - - %setreading - %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" - - - - - - - 1512172077193 - 1512172077193 - 1019 - - 548 - Attribut: remoteServer -Hierüber wird festgelegt, über welchen Dienst die setCommands empfangen werden. - - - - - 1512505998767 - 1512505998767 - 1020 - - 55 - %scene_name - %element_name - #FFD9D9D9 - #FFD9D9D9 - - - %focused - 2 - true - - - - - 55 - %scene_name - %element_name - #FF858585 - #FF858585 - - - %focused - 2 - false - - - - - - 1512509936846 - 1512509936846 - 1021 - - 55 - %scene_name - %element_name - #FFD9D9D9 - #FFD9D9D9 - - - %focused - 2 - true - - - - - 55 - %scene_name - %element_name - #FF858585 - #FF858585 - - - %focused - 2 - false - - - - - - 1512170785531 - 1512170785531 - 1022 - - 548 - Wie soll das Device in FHEM heißen? -(Zulässige Zeichen: "a".."z", "A".."Z", "0".."9", "_", ".") - - - - - 1512506004674 - 1512506004674 - 1023 - - 55 - %scene_name - %element_name - #FFD9D9D9 - #FFD9D9D9 - - - %focused - 2 - true - - - - - 55 - %scene_name - %element_name - #FF858585 - #FF858585 - - - %focused - 2 - false - - - - - - 1512758867606 - 1512758867606 - 1024 - - 548 - Wenn deaktiviert werden keine set-Befehle auf dem Gerät ausgeführt. - - - - - 1512054845923 - 1512054845923 - 1025 - - 51 - %scene_name - TextEdit_AMAD_ID - - %TIMES - - - - 548 - Eine neue AMAD ID wurde generiert. - - - - - 1512505794248 - 1512505794248 - 1026 - - 55 - %scene_name - %element_name - #FFD9D9D9 - #FFD9D9D9 - - - %focused - 2 - true - - - - - 55 - %scene_name - %element_name - #FF858585 - #FF858585 - - - %focused - 2 - false - - - - - - 1512172711494 - 1512172711494 - 1028 - - 548 - Falls das AMAD Device in FHEM von Hand angelegt wurde, muss hier die "AMAD_ID" auf den gleichen Wert wie in FHEM gesetzt werden. - - - - - 1512172357867 - 1512172357867 - 1029 - - 548 - Bitte gebe die IP Adresse oder den FQDN Deines FHEM Servers an. - - - - - 1512172416613 - 1512172416613 - 1030 - - 548 - Bitte gebe die IP Adresse Deines Androidgerätes an. NUR IP kein FQDN!!! - - - - - 1512509955759 - 1512509955759 - 1031 - - 547 - %enter - - - - - - - - 37 - - And - - %new_val - 4 - %enter - - - %initial - 2 - false - - - - - 598 - %new_val - %enter - - - - - - - - - 51 - %scene_name - %element_name - - %new_val - - - - %new_val - 3 - \%new_val - - - - - 68 - %scene_name - TextEdit_DeviceName - - - - 38 - - - - 1512054845923 - 1512054845923 - 1032 - - 341 - false - - - %ssid - - - 37 - - Or - - %ssid - 2 - \%ssid - - - %ssid - 2 - <unknown ssid> - - - - - 548 - Die aktuelle SSID konnte nicht ermittelt werden. - - - - 43 - - - 51 - - AMAD_settings - TextEdit_SSID - - %ssid - - - - 548 - Die aktuelle SSID: "%ssid" wurde übernommen. - - - - 38 - - - - 1512506016964 - 1512506016964 - 1033 - - 55 - %scene_name - %element_name - #FFD9D9D9 - #FFD9D9D9 - - - %focused - 2 - true - - - - - 55 - %scene_name - %element_name - #FF858585 - #FF858585 - - - %focused - 2 - false - - - - - - 1503937837718 - 1503937837718 - 1034 - 102 - - 548 - Status Request wird an AMAD CommBridge gesendet... - - - - 130 - - AMAD_informations - - %priority - - - - - - - - 55 - - %scene_name - Oval_online - #FFFF0000 - #FFFF0000 - - - 38 - - - 547 - %readingsvalcmd - %AMAD_fhemdevice deviceState kaputt - - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - readingsval - %readingsvalcmd - %respreadingsval - - - - 548 - status: %respreadingsval - - - - %respreadingsval - 3 - \%respreadingsval - - - - - 37 - - - %respreadingsval - 2 - online - - - - - 55 - - %scene_name - Oval_online - #FF00FF00 - #FF00FF00 - - - 43 - - And - And - - %respreadingsval - 3 - kaputt - - - %respreadingsval - 3 - no connection - - - %respreadingsval - 3 - /%respreadingsval - - - - - 55 - - %scene_name - Oval_online - #FFFFFF00 - #FFFFFF00 - - - 43 - - - - 1512715391071 - 1512715391071 - 1035 - - 548 - Manuelles auslösen einen status Requests - - - - - 1512032849766 - 1512032849766 - 1036 - 102 - - 598 - - %new_val - [^0-9\.] - - - - - - - - - 51 - %scene_name - TextEdit_DeviceIP - - %new_val - - - And - - %new_val - 3 - \%new_val - - - %initial - 2 - false - - - - - - 1512506010779 - 1512506010779 - 1037 - - 55 - %scene_name - %element_name - #FFD9D9D9 - #FFD9D9D9 - - - %focused - 2 - true - - - - - 55 - %scene_name - %element_name - #FF858585 - #FF858585 - - - %focused - 2 - false - - - - - - 1512173777582 - 1512173777582 - 1038 - - 37 - - - %new_val - 2 - on - - - - - 65 - - %scene_name - Text_SSID - - - - - - 65 - - %scene_name - TextEdit_SSID - - - - - - 65 - - %scene_name - Text_getSSID - - - - - - 43 - - - %new_val - 2 - off - - - - - 65 - - %scene_name - Text_SSID - - - - - - 65 - - %scene_name - TextEdit_SSID - - - - - - 65 - - %scene_name - Text_getSSID - - - - - - 38 - - - - 1512758684068 - 1512758684068 - 1039 - - 548 - Wenn aktiviert werde Statusänderungen nur gesenden, wenn mit angegebener SSID verbunden. - - - - - 1512172222460 - 1512172222460 - 1041 - - 548 - Bitte gebe den Port der AMADCommBridge vom FHEM Server an. (Default: 8090) - - - - - 1503937837718 - 1503937837718 - 1043 - 102 - - 130 - AMAD_getDeviceIP - - %priority - - - - %deviceip - - - - 37 - - - %deviceip - 3 - \%deviceip - - - - - 51 - %scene_name - TextEdit_DeviceIP - - %deviceip - - - - 548 - Geräte Adresse "%deviceip" wurde erkannt. - - - - 43 - - - 548 - Die eigene IP konnte nicht ermittelt werden. - - - - 38 - - - - 1512032849766 - 1512032849766 - 1044 - 102 - - 598 - - %new_val - [^0-9] - - - - - - - - - 51 - %scene_name - TextEdit_AMADport - - %new_val - - - And - - %new_val - 3 - \%new_val - - - %initial - 2 - false - - - - - - 1512171985482 - 1512171985482 - 1045 - - 548 - toGo Funktion: hiermit wird die Sendefunktion deaktiviert, sobald der/die APSSID/'s getrennt wurden. -Es können mehrere SSIDs durch slash "/" getrennt angegeben werden. - - - - - 1503937837718 - 1503937837718 - 1046 - 102 - - 130 - - AMAD_save - - %priority+1 - - %scene_name - - - - - - - 1503937837718 - 1503937837718 - 1047 - 102 - - 130 - - AMAD_save - - %priority+1 - - %scene_name - - - - - - 548 - Send Data to AMADCommBridge: firstrun - - - - 37 - - - - %response - 2 - no connection - - - - - 547 - %message - Es konnte keine Verbindung zur AMAD CommBridge hergestellt werden. -Hast Du die AMADCommBridge definiert, und ist sie auch aktiv? -Bitten prüfe die Eingetragene FHEM Adresse "%AMAD_fhemip:%AMAD_bridgeport". - - - - - - 194 - AMAD_Dialog_Message - - %scene - - - 46 - AMAD_Dialog_Message - - - %scene - 2 - uncreated - - - - - 47 - AMAD_Dialog_Message - - - - - - - - - - 137 - - - - - 38 - - - 30 - - - - - - - - 130 - - AMAD_informations - - %priority+1 - - - - %response - - - - 30 - - - - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - firstrun - %AMAD_DeviceIP - %response - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - readingsval - %AMAD_fhemdevice deviceState kaputt - %respreadingsval - - - - 37 - - - %respreadingsval - 2 - online - - - - - 55 - - %scene_name - Oval_online - #FF00FF00 - #FF00FF00 - - - 547 - %message - Die Einrichtung ist nun abgeschlossen und das AMAD Device online. - - - - - - 194 - AMAD_Dialog_Message - - %scene - - - 46 - AMAD_Dialog_Message - - - %scene - 2 - uncreated - - - - - 47 - AMAD_Dialog_Message - - - - - - - - - - 547 - - %AMAD_send - on - - - - - - 547 - - %AMAD_receive - on - - - - - - 50 - - AMAD_settings - Switch_information - - - - 37 - - - - %response - 2 - Variable not set - - - - - 50 - - AMAD_settings - Switch_setCommands - - - - 65 - - AMAD_settings - Text_toGo - - - - - - 65 - - AMAD_settings - Switch_toGo - - - - - - 43 - - And - And - - %respreadingsval - 3 - kaputt - - - %respreadingsval - 3 - no connection - - - %respreadingsval - 3 - /%respreadingsval - - - - - 55 - - %scene_name - Oval_online - #FFFFFF00 - #FFFFFF00 - - - 547 - %message - Die Einrichtung ist nun abgeschlossen und das AMAD Device wurde angelegt. Es scheint aber noch keine Verbindung zwischen FHEM und Deinem AMAD Device zu bestehen. Mache am besten einmal ein Status Request in FHEM für das AMAD Device. Ist der Status in FHEM weiterhin offline schaue bitte ob alle AMAD Tasker Profiele aktiv sind. - - - - - - 194 - AMAD_Dialog_Message - - %scene - - - 46 - AMAD_Dialog_Message - - - %scene - 2 - uncreated - - - - - 47 - AMAD_Dialog_Message - - - - - - - - - - 43 - - - 547 - %message - Die Eingaben sind unvollständig. -Bitten prüfe die eingetragene Daten. - - - - - - 55 - - %scene_name - Oval_online - #FFFF0000 - #FFFF0000 - - - 547 - %message - Leider scheint es ein Problem beim Einrichten des FHEM Devices gegeben zu haben. --Stelle sicher, dass in FHEM noch kein Device mit dem Namen "%AMAD_fhemdevice" existiert. --Stelle sicher, dass autocreate aktiviert ist. - - - - - - 194 - AMAD_Dialog_Message - - %scene - - - 46 - AMAD_Dialog_Message - - - %scene - 2 - uncreated - - - - - 47 - AMAD_Dialog_Message - - - - - - - - - - 38 - - - 194 - AMAD_Dialog_Message - - %scene - - - 46 - AMAD_Dialog_Message - - - %scene - 2 - uncreated - - - - - 47 - AMAD_Dialog_Message - - - - - - - - - - 137 - - - - - 38 - - - - 1512506655696 - 1512506655696 - 1048 - 102 - - 547 - %enter - - - - - - - - 37 - - And - - %new_val - 4 - %enter - - - %initial - 2 - false - - - - - 598 - %new_val - %enter - - - - - - - - - 51 - %scene_name - %element_name - - %new_val - - - - %new_val - 3 - \%new_val - - - - - 68 - %scene_name - TextEdit_AMADport - - - - 38 - - - - 1512064023268 - 1512064023268 - 1049 - 102 - - 598 - - %new_val - [^0-9] - - - - - - - - - 51 - %scene_name - TextEdit_AMAD_ID - - %new_val - - - And - - %new_val - 3 - \%new_val - - - %initial - 2 - false - - - - - - 1503937837718 - 1503937837718 - 1050 - 102 - - 51 - %scene_name - TextEdit_AMADport - - 8090 - - - - 548 - AMAD Bridge Port wurde auf 8090 gesetzt - - - - - 1503937837718 - 1503937837718 - 1051 - 102 - - 49 - %scene_name - - - - 1512758764278 - 1512758764278 - 1052 - - 548 - Wenn deaktiviert werden keine Statusänderungen an die CommBridge gesendet. - - - - - 1512032849766 - 1512032849766 - 1053 - 102 - - 547 - %enter - - - - - - - - 37 - - - %new_val - 4 - %enter - - - - - 598 - %new_val - %enter - - - - - - - - - 51 - %scene_name - %element_name - - %new_val - - - - %new_val - 3 - \%new_val - - - - - 68 - %scene_name - TextEdit_DeviceIP - - - - 43 - - - 598 - - %new_val - [^a-zA-Z_0-9\.] - - - - %fail - - - - - 51 - %scene_name - TextEdit_DeviceName - - %new_val - - - And - - %new_val - 3 - \%new_val - - - %initial - 2 - false - - - - - 548 - Es werden nur folgende Zeichen unterstüzt: a-z A-Z 0-9 _ . - - - - %fail(#) - 7 - 0 - - - - - 38 - - - - 1512253437179 - 1512253437179 - 1054 - - 547 - %readingsvalcmd - %AMAD_fhemdevice deviceState kaputt - - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - readingsval - %readingsvalcmd - %respreadingsval - - - - 548 - status: %respreadingsval - - - - %respreadingsval - 3 - \%respreadingsval - - - - - 37 - - - %respreadingsval - 2 - online - - - - - 55 - - %scene_name - Oval_online - #FF00FF00 - #FF00FF00 - - - 43 - - And - And - - %respreadingsval - 3 - kaputt - - - %respreadingsval - 3 - no connection - - - %respreadingsval - 3 - /%respreadingsval - - - - - 55 - - %scene_name - Oval_online - #FFFFFF00 - #FFFFFF00 - - - 43 - - - 55 - - %scene_name - Oval_online - #FFFF0000 - #FFFF0000 - - - 38 - - - - 1512424887005 - 1512424887005 - 1055 - - 548 - letzter empfangener set-Befehl - - - - - 1512173777582 - 1512173777582 - 1056 - - 37 - - And - - %new_val - 2 - on - - - %WIFI - 2 - on - - - - - 65 - - %scene_name - Text_toGo - - - - - - 38 - - - 43 - - - %new_val - 2 - off - - - - - 65 - - %scene_name - Text_toGo - - - - - - 65 - - %scene_name - Switch_toGo - - - - - - 65 - - %scene_name - Text_SSID - - - - - - 65 - - %scene_name - TextEdit_SSID - - - - - - 65 - - %scene_name - Text_getSSID - - - - - - 38 - - - 65 - - %scene_name - Switch_toGo - - - - - - 37 - - - - %AMAD_toGo - 2 - on - - - - - 50 - - %scene_name - Switch_toGo - - - - 65 - - %scene_name - Text_SSID - - - - - - 65 - - %scene_name - TextEdit_SSID - - - - - - 65 - - %scene_name - Text_getSSID - - - - - - 43 - - - 50 - - %scene_name - Switch_toGo - - - - - 1512172077193 - 1512172077193 - 1057 - - 548 - Attribut: fhemControlMode -Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefehl reinkommen. -(Für Sprachsteuerung relevant) - - - - - 1503937837718 - 1503937837718 - 1058 - 102 - - 130 - AMAD_getDeviceName - - %priority+1 - - - - %fhemdevice - - - - 37 - - - %fhemdevice - 3 - \%fhemdevice - - - - - 51 - %scene_name - TextEdit_DeviceName - - %fhemdevice - - - - 548 - Gerätename "%fhemdevice" wurde gesetzt. - - - - 43 - - - 548 - Der Gerätename konnte nicht ermittelt werden. - - - - 38 - - - + 1503612579492 1513147652107 - 914 + 1000 130 AMAD_SendData2CommBridge @@ -3572,259 +1618,12 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh - - 1515014192359 - 1515014192359 - 916 - - 105 - %AMAD_lastSetCommand - - - - 548 - letzter empfangener set-Befehl in Zwischenablage kopiert - - - - - 1503612697002 - 1512664308181 - 918 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "daydream": "on" - - - - - - 1503690306712 - 1503690348078 - 920 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "dockingState": "docked" - - - - - - 1503611036750 - 1513445150127 - 922 - AMAD_SDK2Name - - 547 - %androidversion - 8.0 Oreo - - - - - - %SDK - 8 - 26 - - - - - 547 - %androidversion - 7.1 Nougat - - - - - - %SDK - 8 - 25 - - - - - 547 - %androidversion - 4.0.3 - 4.0.4 Ice Cream Sandwich MR1 - - - - - - %SDK - 8 - 15 - - - - - 547 - %androidversion - 4.0 - 4.0.2 Ice Cream Sandwich - - - - - - %SDK - 8 - 14 - - - - - 126 - %androidversion - - - - 547 - %androidversion - 7.0 Nougat - - - - - - %SDK - 8 - 24 - - - - - 547 - %androidversion - 6.0 Marshmallow - - - - - - %SDK - 8 - 23 - - - - - 547 - %androidversion - 5.1 Lollipop MR1 - - - - - - %SDK - 8 - 22 - - - - - 547 - %androidversion - 5.0 Lollipop - - - - - - %SDK - 8 - 21 - - - - - 547 - %androidversion - 4.4 KitKat - - - - - - %SDK - 8 - 19 - - - - - 547 - %androidversion - 4.3 Jelly Bean MR2 - - - - - - %SDK - 8 - 18 - - - - - 547 - %androidversion - 4.2 - 4.2.2 Jelly Bean MR1 - - - - - - %SDK - 8 - 17 - - - - - 547 - %androidversion - 4.1 - 4.1.1 Jelly Bean - - - - - - %SDK - 8 - 16 - - - - - + 1503691080060 - 1514566300708 - 923 + 1516907192240 + 1001 100 - 547 - - %AMAD_send - on - - - - - 547 %AMAD_receive @@ -3833,11 +1632,1747 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh + + 547 + + %AMAD_send + on + + + + + + 37 + + + %AMAD_remoteServer + 2 + Autoremote + + + + + 785392305 + false + + + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + /storage/emulated/0/Tasker/.icn/Eigene Icons/TaskerFHEM_icon.png + java.lang.String + <null> + java.lang.String + AMAD Autoremote Server + java.lang.String + true + java.lang.Boolean + false + java.lang.Boolean + +Starting Wifi Service +Persistent Notification: true +Notification Title: AMAD Autoremote Server + java.lang.String + true + java.lang.Boolean + <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%err +Error Code +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg +Error Message +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray> + [Ljava.lang.String; + FieldsToGet NotificationTitle NotificationText NotificationIcon LedColor LedOn LedOff plugininstanceid plugintypeid + java.lang.String + true + java.lang.Boolean + 2136a7e4-dee6-446f-8c72-dc98e51af9d0 + java.lang.String + com.joaomgcd.autoremote.IntentWifiService + java.lang.String + + + com.joaomgcd.autoremote + com.joaomgcd.autoremote.activity.ActivityConfigWifiService + + + + 38 + - + + 1503089941004 + 1512022429362 + 1002 + AMAD_Beispiel_Set + 100 + + 547 + %setcmd + HUEWohnzimmer1 toggle + + + + + + 547 + %fhemcmd + set + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + %fhemcmd + %setcmd + %respset + + + + 548 + %respset + + + + + 1503612579492 + 1513147602338 + 1003 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screen": "on locked" + + + + + + 1503693866986 + 1516474467797 + 1004 + AMAD_SetCommands + 100 + 2 + + 547 + %receive + %par1 + + + + + + 547 + %receive + %arcomm + + + + + + %caller1 + 2 + profile=enter:AutoRemote AMAD + + + + + 547 + %command + %receive41 + + + + + + 548 + + AMAD: "set clearNotificationBar all" benötigt Root rechte + + + And + + %tpe_app + 2 + All + + + %ROOT + 2 + no + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set clearNotificationBar all: only works on rooted Devices" + + + + And + + %tpe_app + 2 + All + + + %ROOT + 2 + no + + + + + 43 + + + %command + 2 + setvibrate + + + + + 62 + 0,500,500,500 + + + 43 + + + %command + 2 + showhomescreen + + + + + 25 + + + + 43 + + + %command + 2 + sendIntent + + + + + 877 + %tpe_action + + + + %tpe_exkey1: %tpe_exval1 + %tpe_exkey2: %tpe_exval2 + + + + + + + 43 + + + %command + 2 + currentFlowsetUpdate + + + + + 130 + + AMAD_UpdateFlowset + + %priority+1 + + + + + + + + 37 + + + + %receive4(#) + 7 + 1 + + + + + 43 + + + %command + 2 + installFlow + + + + + 548 + AMAD: "Flow install: not supported by Tasker" + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "Flow install: not supported by Tasker" + + + + + 43 + + + %command + 2 + openCall + + + + + 90 + %tpe_callnumber + + + + 30 + + + %tpe_hanguptime + + + + + + + %tpe_hanguptime + 7 + 1 + + + + + 733 + + + %tpe_hanguptime + 7 + 1 + + + + + 43 + + + %command + 2 + closeCall + + + + + 733 + + + 43 + + + %command + 2 + startDaydream + + + + + 547 + %valueall + %receive42 + + + + + + 20 + + com.android.systemui.Somnambulator + com.android.systemui + + + + + + + + 43 + + + %command + 2 + sendSms + + + + + 41 + %tpe_smsnumber + %tpe_smsmessage + + + + 43 + + + %command + 2 + screenlock + + + + + 548 + + AMAD: "set screen lock|unlock" wird noch nicht unterstützt + + + + %tpe_lockmod + 4 + lock|unlock + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screen lock|unlock: not supported by Tasker" + + + + + %tpe_lockmod + 4 + lock|unlock + + + + + 43 + + + %command + 2 + setScreenOnOff + + + + + 548 + + AMAD: "set screen on" wird noch nicht unterstützt + + + + %tpe_screen + 2 + on + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screen on: not supported by Tasker" + + + + + %tpe_screen + 2 + on + + + + + 16 + + + %tpe_screen + 2 + off + + + + + 590 + %valueall + & + + + + 43 + + + + %command + 2 + takepicture + + + + + 101 + false + + AMADpicture + + + + %tpe_pictureresolution + + + + + + + %tpe_picturecamera + 3 + Back + + + + + 101 + false + + AMADpicture + + + + %tpe_pictureresolution + + + + + + + %tpe_picturecamera + 2 + Back + + + + + 38 + + + 38 + + + 43 + + + + 548 + AMAD: Befehl mit falscher AMAD_ID empfangen + + + + 38 + + + 39 + %cmdpair + %valueall() + + + 590 + %cmdpair + = + + + + 547 + %name + %cmdpair1 + + + + + + 590 + %cmdpair + %name= + + + + 596 + %name + + + + + 547 + %name + tpe_%name + + + + + + 547 + %receive + %tpe_cmd + + + + + + %caller1 + 2 + profile=enter:TNES AMAD + + + + + 596 + %cmdpair2 + + + + + %cmdpair2 + 3 + \%cmdpair2 + + + + + 547 + %%name + %cmdpair2 + + + + + + %cmdpair2 + 3 + \%cmdpair2 + + + + + 40 + + + 38 + + + 37 + + + + %tpe_amad_id + 2 + %AMAD_amadid + + + + + 130 + + AMAD_informations + + %priority+1 + + + + + + + + %type + 2 + deviceInfo + + + + + 37 + + + %type + 2 + setCommands + + + + + 37 + + + %command + 2 + screenMsg + + + + + 548 + %tpe_message + + + + %tpe_message + 3 + \%tpe_message + + + + + 43 + + + %command + 2 + ttsMsg + + + + + 547 + %AMAD_lastSetCommand + %receive + + + + + + 547 + %tpe_msglang + deu-deu + + + + + + %tpe_msglang + 4 + en + + + + + 547 + %tpe_msglang + eng-usa + + + + + + %tpe_msglang + 2 + en + + + + + 547 + %volume + %VOLM + + + + + + 307 + + %tpe_msgvol + + + + + + %tpe_msgvol + 7 + 1 + + + + + 559 + %tpe_message + com.google.android.tts:%tpe_msglang + + + + %tpe_msgspeed + + + + + + + %tpe_message + 5 + \%tpe_message + + + + + 307 + + %volume + + + + + + %tpe_msgvol + 7 + 1 + + + + + 43 + + + %command + 2 + flowState + + + + + 159 + %tpe_flowname + + + + %tpe_flowstate + 2 + active + + + + + 159 + %tpe_flowname + + + + %tpe_flowstate + 2 + inactive + + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "Flow %tpe_flowname has been set %tpe_flowstate" + + + + + 547 + + false + %receive + %AMAD_lastSetCommand + + + + + + 43 + + + %command + 2 + flowRun + + + + + 130 + %tpe_flowname + + %priority + + + + + + + + 43 + + + %command + 2 + setVolume + + + + + 307 + + %tpe_volume + + + + + + 43 + + + %command + 2 + setNotifiVolume + + + + + 305 + + %tpe_notifivolume + + + + + + 43 + + + %command + 2 + setRingSoundVolume + + + + + 304 + + %tpe_ringsoundvolume + + + + + + 43 + + + %command + 2 + setBrightness + + + + + 810 + + %tpe_brightness + + + + + + + 590 + %receive + / + + + + 43 + + + %command + 2 + multimediaControl + + + + + 130 + + AMAD_multimediaControl + + %priority + + %tpe_mplayer + %tpe_button + + + + + 43 + + + %command + 2 + setvoicecmd + + + + + 130 + AMAD_VoiceControl + + %priority+1 + + + + + + + + 43 + + + %command + 2 + setScreenOrientation + + + + + 822 + + + + %tpe_orientation + 2 + auto + + + + + 822 + + + + + %tpe_orientation + 3 + auto + + + + + 548 + + AMAD: "set screenOrientation landscape|portrait" wird noch nicht unterstützt + + + + %tpe_orientation + 4 + landscape|portrait + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screenOrientation landscape|portrait: not supported by Tasker" + + + + + %tpe_orientation + 4 + landscape|portrait + + + + + 43 + + + %command + 2 + setScreenFullscreen + + + + + 547 + %type + %receive3 + + + + + + 548 + + AMAD: "set screenFullscreen on|off" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set screenFullscreen on|off: not supported by Tasker" + + + + + 43 + + + %command + 2 + openURL + + + + + 547 + %tpe_url + http://%tpe_url + + + + + + %tpe_url + 5 + ^http* + + + + + 877 + android.intent.action.VIEW + + + %tpe_url + + + + %tpe_browserapp + %tpe_browserappclass + + + + 43 + + + %command + 2 + setAlarm + + + + + 566 + + %tpe_hour + + + %tpe_minute + + AMAD Wecker + + + + + + 43 + + + %command + 2 + setTimer + + + + + 547 + %tpe_seconds + %tpe_minute*60 + + + + + + 543 + + %tpe_seconds + + AMAD Timer + + + + 547 + %receive4 + %receive + + + + + + %receive(#) + 7 + 4 + + + + + 43 + + + %command + 2 + openApp + + + + + 664 + pacman + CONTEXT + getPackageManager {PackageManager} ()  + + + + + + + + + + 664 + intent + pacman + getLaunchIntentForPackage {Intent} (String) + %tpe_app + + + + + + + + + 664 + + CONTEXT + startActivity +{} (Intent) + intent + + + + + + + + + 43 + + + %command + 2 + setnfc + + + + + 123 + svc nfc enable + + + + + + + And + + %tpe_nfc + 2 + on + + + %ROOT + 2 + yes + + + + + 123 + svc nfc disable + + + + + + + And + + %tpe_nfc + 2 + off + + + %ROOT + 2 + yes + + + + + 548 + + AMAD: "set nfc on|off" benötigt Root rechte + + + + %ROOT + 2 + no + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set nfc on|off: only works on rooted Devices" + + + + + %ROOT + 2 + no + + + + + 43 + + + %command + 2 + systemcommand + + + + + 598 + %receive4 + /%receive2/%receive3/ + + + + + + + + + %receive(#) + 7 + 4 + + + + + 130 + AMAD_SendData2CommBridge + + %priority+1 + + setreading + airplanemode@@on + + + + + %tpe_syscmd + 2 + airplanemodeON + + + + + 333 + + + + %tpe_syscmd + 2 + airplanemodeON + + + + + 59 + + + + %tpe_syscmd + 2 + shutdown + + + + + 59 + + + + %tpe_syscmd + 2 + reboot + + + + + 43 + + + %command + 2 + donotdisturb + + + + + 312 + + + + %tpe_disturbmod + 2 + always + + + + + 312 + + + + %tpe_disturbmod + 2 + onlyImportant + + + + + 312 + + + + %tpe_disturbmod + 2 + never + + + + + 312 + + + + %tpe_disturbmod + 2 + alarmClockOnly + + + + + 43 + + + %command + 2 + setbluetooth + + + + + 590 + %receive4 + ? + + + + 294 + + + + %tpe_bluetooth + 2 + on + + + + + 294 + + + + %tpe_bluetooth + 2 + off + + + + + 43 + + + %command + 2 + playnotifysnd + + + + + 445 + %tpe_notifypath%tpe_notifyfile + + + + + + + 43 + + + %command + 2 + setbtdevice + + + + + 548 + + AMAD: "set changetoBtDevice" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set changetoBtDevice: not supported by Tasker" + + + + + 43 + + + %command + 2 + clearnotificationbar + + + + + 779 + + + + + %tpe_app + 2 + Automagic + + + + + 123 + false + service call notification 1 + + + + + + + And + + %tpe_app + 2 + All + + + %ROOT + 2 + yes + + + + + + 1517260534313 + 1517330678766 + 1031 + 100 + + 37 + + + %evtprm3 + 3 + \%evtprm3 + + + + + 547 + %enter + + + + + + + + 547 + + %text + %evtprm3 + + + + + + 598 + %text + %enter + + + + + + + + + 547 + + %setreading + "incommingWhatsAppMessageFrom": "%evtprm2: %text" + + + + + + %evtprm1 + 2 + WhatsApp + + + + + 547 + + %setreading + "incommingTelegramMessageFrom": "%evtprm2: %text" + + + + + + %evtprm1 + 2 + Telegram + + + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + 38 + + + 1512327302282 - 1512508027166 - 926 + 1517344482249 + 1035 AMAD_multimediaControl 100 @@ -3869,7 +3404,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -3886,18 +3421,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaAmazonMusic + AmazonMusic @@ -3914,7 +3449,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -3931,7 +3466,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -3948,7 +3483,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -3965,18 +3500,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaSpotifyMusic + SpotifyMusic @@ -3993,7 +3528,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4010,18 +3545,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay 37 - + %tpe_mplayer 2 - mediaGoogleMusic + GoogleMusic @@ -4038,7 +3573,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4055,18 +3590,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaTuneinRadio + TuneinRadio @@ -4083,7 +3618,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4100,7 +3635,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4117,7 +3652,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4134,18 +3669,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaAldiMusic + AldiMusic @@ -4162,7 +3697,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4179,7 +3714,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4196,7 +3731,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4213,7 +3748,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4230,18 +3765,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaYouTube + YouTube @@ -4258,7 +3793,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4275,7 +3810,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4292,7 +3827,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4309,18 +3844,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaYouTubeKids + YouTubeKids @@ -4337,7 +3872,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4354,7 +3889,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4371,7 +3906,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4388,7 +3923,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4405,18 +3940,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaAudible + Audible @@ -4433,7 +3968,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4450,7 +3985,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4467,7 +4002,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4484,18 +4019,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaSamsungMusic + SamsungMusic @@ -4512,7 +4047,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4529,7 +4064,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay @@ -4546,7 +4081,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4563,7 +4098,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - back + mediaBack @@ -4580,11 +4115,90 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop + 43 + + + + %tpe_mplayer + 2 + Deezer + + + + + 443 + + + + com.deezer.core.jukebox.receivers.JukeboxMediaButtonReceiver + deezer.android.com + + + + + %tpe_button + 2 + mediaNext + + + + + 443 + + + + com.deezer.core.jukebox.receivers.JukeboxMediaButtonReceiver + deezer.android.com + + + + + %tpe_button + 4 + mediaPlay + + + + + 443 + + + + com.deezer.core.jukebox.receivers.JukeboxMediaButtonReceiver + deezer.android.com + + + + + %tpe_button + 2 + mediaBack + + + + + 443 + + + + com.deezer.core.jukebox.receivers.JukeboxMediaButtonReceiver + deezer.android.com + + + + + %tpe_button + 2 + mediaStop + + + + 38 @@ -4600,18 +4214,18 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - stop + mediaStop 43 - + %tpe_mplayer 2 - mediaVlcPlayer + VlcPlayer @@ -4628,7 +4242,7 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 2 - next + mediaNext @@ -4645,164 +4259,197 @@ Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefeh %tpe_button 4 - play/pause + mediaPlay - - 1512752289034 - 1513015000298 - 927 - AMAD_save + + 1511727021932 + 1512550454190 + 914 + AMAD_getDeviceIP 100 + 123 + false + ifconfig wlan0 + + + %output + + + + 547 - %scene_name - %par1 + %ifconfig + %output + + + + + + %output + 4 + inet addr: + + + + + 123 + false + ifconfig eth0 + + + %output + + + + + 547 + %ifconfig + %output + + + + + + %output + 4 + inet addr: + + + + + 123 + false + ifconfig tun0 + + + %output + + + + + 547 + %ifconfig + %output + + + + + + %output + 4 + inet addr: + + + + + 590 + %ifconfig + inet addr: + + + + 590 + %ifconfig2 + + + + + %ifconfig2 + 3 + \%ifconfig2 + + + + + 547 + %ipaddr + %ifconfig21 + + + + + + %ifconfig21 + 3 + \%ifconfig21 + + + + + 126 + %ipaddr + + + + + 1503612289745 + 1503612849987 + 916 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screenOrientation": "portrait" + + + + + + 1512113548622 + 1512113663305 + 918 + AMAD_getDeviceName + + 547 + %fhemdevice + %DEVMAN_%DEVMOD - 195 - - %scene_name - TextEdit_DeviceName - - %AMAD_fhemdevice - - - 195 - - %scene_name - Switch_information - - %state - - - 547 - - %AMAD_send - %state - - - - - - 195 - - %scene_name - Switch_toGo - - %state - - - %state - 2 - on - - - - - 547 - - %AMAD_toGo - %state - - - - - - 195 - - %scene_name - TextEdit_SSID - - %AMAD_apssid - - - %state - 2 - on - - - - - 548 - AMAD Einstellungen wurden gespeichert. - + 596 + %fhemdevice + + - 195 - - %scene_name - TextEdit_DeviceIP - - %AMAD_DeviceIP - - - 195 - - %scene_name - TextEdit_FHEMip - - %AMAD_fhemip - - - 195 - - %scene_name - TextEdit_AMADport - - %AMAD_bridgeport - - - 195 - - %scene_name - TextEdit_AMAD_ID - - %AMAD_amadid - - - 195 - - %scene_name - Spinner_fhemctlmode - - %AMAD_fhemctlmode - - - 195 - - %scene_name - Spinner_remoteServer - - %AMAD_remoteServer - - - 195 - - %scene_name - Switch_setCommands - - %state - - - 547 - - %AMAD_receive - %state + 598 + %fhemdevice + [^a-zA-Z_0-9\.] + + + _ + + + 126 + %fhemdevice + - + + 1503937837718 + 1503937837718 + 920 + + 49 + %scene_name + + + 1512982481361 1513445177271 - 934 + 922 AMAD_generate_Icon 100 @@ -6352,165 +5999,70 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= %iconpath/TaskerFHEM_icon.png - - 1503689660711 - 1511637650420 - 935 + + 1512172222460 + 1512172222460 + 923 - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "airplanemode": "on" - - - - - - 1503089941004 - 1512022429362 - 937 - AMAD_Beispiel_Set - 100 - - 547 - %setcmd - HUEWohnzimmer1 toggle - - - - - - 547 - %fhemcmd - set - - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - %fhemcmd - %setcmd - %respset - - - 548 - %respset - - - - - 1503692408945 - 1514566358989 - 938 - 100 - - 547 - - %AMAD_send - off - - - - - - 547 - - %AMAD_receive - off - - - - - - 137 - - AMAD_SendData2CommBridge - - - - 1503089941004 - 1512684267061 - 939 - AMAD_Beispiel_function - 100 - - 547 - %fhemsub - TimestampToText('2017-05-12 23:32:19') - - - - - - 547 - %fhemcmd - fhemfunc - - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - %fhemcmd - %fhemsub - %respfhemfunc - - - - 548 - %respfhemfunc - - - - - 1503612978140 - 1513116249338 - 940 - - 30 - + Bitte gebe den Port der AMADCommBridge vom FHEM Server an. (Default: 8090) + + + + 1512509936846 + 1512509936846 + 924 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1513276797078 + 1513424688732 + 925 + + 547 + + %setreading + "nextAlarmState": "done" 664 - - kgm + + false + contres CONTEXT - getSystemService -{KeyguardManager} (String) - keyguard - - - - - - - - - 664 - - %locked - kgm - inKeyguardRestrictedInputMode -{boolean} () + getContentResolver +{ContentResolver} () @@ -6519,51 +6071,10 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= - - 547 - - %setreading - "screen": "%SCREEN locked" - - - - - And - - %SCREEN - 12 - - - - %locked - 2 - true - - + + 38 - - 547 - - %setreading - "screen": "%SCREEN unlocked" - - - - - And - - %SCREEN - 12 - - - - %locked - 2 - false - - - - + 130 AMAD_SendData2CommBridge @@ -6574,148 +6085,95 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= - - - 1503689793813 - 1513275921434 - 943 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "bluetooth": "on" - - - - - - 1511727021932 - 1512550454190 - 944 - AMAD_getDeviceIP - 100 - - 123 - false - ifconfig wlan0 - - - %output - - - - - 547 - %ifconfig - %output - - - - - - %output - 4 - inet addr: - - - - 123 + 664 + false - ifconfig eth0 - - - %output - + %alarm + android.provider.Settings$System + getString +{String} (ContentResolver, String) + contres + next_alarm_formatted + + + + - 547 - %ifconfig - %output - - - + 37 - %output - 4 - inet addr: + %alarm + 3 + \%alarm - 123 - false - ifconfig tun0 - + 547 + %blank + - %output - - + + + 590 + %alarm + .,%blank + + + 547 - %ifconfig - %output + + %setreading + %setreading,"nextAlarmDay": "%alarm1" - %output - 4 - inet addr: + %alarm1 + 3 + \%alarm1 - - 590 - %ifconfig - inet addr: - - - 590 - %ifconfig2 - + 547 + + %setreading + %setreading,"nextAlarmTime": "%alarm2" + + - %ifconfig2 + %alarm2 3 - \%ifconfig2 + \%alarm2 + 43 + + 547 - %ipaddr - %ifconfig21 + + %setreading + %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" - - - %ifconfig21 - 3 - \%ifconfig21 - - - - - 126 - %ipaddr - - - 1503612743210 - 1512664299869 - 947 + + 1503690358282 + 1503690362326 + 926 130 AMAD_SendData2CommBridge @@ -6723,15 +6181,382 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= %priority setreading - "daydream": "off" + "dockingState": "undocked" - + + 1511655849449 + 1511655867388 + 927 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "wiredHeadsetPlugged": "0" + + + + + + 1503612864622 + 1512664382473 + 931 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "screenOrientation": "landscape" + + + + + + 1503689826684 + 1503689839417 + 932 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "bluetooth": "off" + + + + + + 1503612697002 + 1512664308181 + 934 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "daydream": "on" + + + + + + 1503829156475 + 1516226450970 + 935 + AMAD_UpdateFlowset + 100 + + 548 + + AMAD: "set currentflowsetupdate'" wird noch nicht unterstützt + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + setreading + "automagicState": "set currentflowsetupdate: not supported by Tasker" + + + + + 548 + AMAD: Download der Tasker Projekt Datei nicht möglich - Tasker Pfad nicht gefunden. + + + + 38 + + + 137 + + + + + + 547 + %path + /storage/emulated/0/Tasker/projects + + + + + + 342 + + %path + %exists + + + + 37 + + + %exists + 2 + true + + + + + 118 + false + %AMAD_fhemip:%AMAD_bridgeport + AMAD.prj.xml + + + + + text/xml + %path/AMAD.prj.xml + + + + 548 + AMAD: Beim Download der Tasker Projekt Datei ist ein Fehler augetreten. +Code: %HTTPR + + + + %HTTPR + 3 + 200 + + + + + 548 + AMAD: Die aktuelle Tasker Projekt Datei wurde heruntergrladen und kann importiert werden. + + + + %HTTPR + 2 + 200 + + + + + 43 + + + + 1512506016964 + 1512506016964 + 936 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512064023268 + 1512064023268 + 937 + 102 + + 598 + + %new_val + [^0-9] + + + + + + + + + 51 + %scene_name + TextEdit_AMAD_ID + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + + 1512506010779 + 1512506010779 + 938 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1503937837718 + 1503937837718 + 939 + 102 + + 130 + + AMAD_save + + %priority+1 + + %scene_name + + + + + + + 1512758684068 + 1512758684068 + 940 + + 548 + Wenn aktiviert werde Statusänderungen nur gesenden, wenn mit angegebener SSID verbunden. + + + + + 1512509955759 + 1512509955759 + 941 + + 547 + %enter + + + + + + + + 37 + + And + + %new_val + 4 + %enter + + + %initial + 2 + false + + + + + 598 + %new_val + %enter + + + + + + + + + 51 + %scene_name + %element_name + + %new_val + + + + %new_val + 3 + \%new_val + + + + + 68 + %scene_name + TextEdit_DeviceName + + + + 38 + + + 1511655705149 1511655888647 - 948 + 942 130 AMAD_SendData2CommBridge @@ -6744,10 +6569,20 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= - + + 1512424887005 + 1512424887005 + 943 + + 548 + letzter empfangener set-Befehl + + + + 1503089941004 1512022786086 - 949 + 944 AMAD_Beispiel_readingsval 100 @@ -6784,10 +6619,10 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= - - 1511708774249 - 1511708860118 - 951 + + 1503690545406 + 1503690559299 + 945 130 AMAD_SendData2CommBridge @@ -6795,24 +6630,449 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= %priority setreading - "nfc": "on" + "powerPlugged": "0" - - 1503937837718 - 1503937837718 - 954 + + 1512506004674 + 1512506004674 + 946 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1513147701841 + 1513277267125 + 947 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "nextAlarmState": "alert","nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + 1502789757098 + 1516489272812 + 948 + AMAD_SendData2CommBridge + 100 + 2 + + 137 + + + + + And + + %caller() + 4 + profile=exit:AMAD_ + + + %AMAD_send + 3 + on + + + + + 37 + + Or + Or + + %AMAD_fhemip + 2 + \%AMAD_fhemip + + + %AMAD_bridgeport + 2 + \%AMAD_bridgeport + + + %AMAD_fhemdevice + 2 + \%AMAD_fhemdevice + + + + + 43 + + + + %fhemcmd + 2 + set + + + + + 547 + %setcmd + %par2 + + + + + + 547 + + %setcmd + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "set"},"payload": {"setcmd": "%setcmd"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %setcmd + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + readingsval + + + + + 547 + %readingsvalcmd + %par2 + + + + + + 547 + + %readingsvalcmd + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "readingsval"},"payload": {"readingsvalcmd": "%readingsvalcmd"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %readingsvalcmd + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + voiceinputvalue + + + + + 547 + %voiceinputdata + %par2 + + + + + + 548 + AMAD: Fehler beim Senden +Variablen nicht gesetzt + + + + 547 + + %voiceinputdata + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "voiceinputvalue"},"payload": {"voiceinputdata": "%voiceinputdata"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %voiceinputdata + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + fhemfunc + + + + + 547 + %fhemsub + %par2 + + + + + + 547 + + %fhemfunc + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "fhemfunc"},"payload": {"fhemsub": "%fhemsub"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %fhemfunc + + + + text/* + + + + + 43 + + + + %fhemcmd + 2 + firstrun + + + + + 547 + %amaddevice_ip + %par2 + + + + + + 547 + + %firstrundata + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "setreading"},"firstrun": {"fhemdevice": "%AMAD_fhemdevice","fhemserverip": "%AMAD_fhemip","amaddevice_ip": "%amaddevice_ip","remoteserver":"%AMAD_remoteServer"}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %firstrundata + + + + text/* + + + + + 126 + Variable not set + + + + 38 + + + 547 + %return + %HTTPD + + + + + + 547 + %return + no connection + + + + + + %HTTPR + 2 + -1 + + + + + 126 + %return + + + + 38 + + + 547 + %fhemcmd + %par1 + + + + + + 37 + + + + %fhemcmd + 2 + setreading + + + + + 547 + %fhemdata + %par2 + + + + + + 547 + + %fhemdata + {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "setreading"},"payload": {%fhemdata}} + + + + + + 116 + + false + http://%AMAD_fhemip:%AMAD_bridgeport + + %fhemdata + + + + text/* + + + + + + 1512758764278 + 1512758764278 + 949 + + 548 + Wenn deaktiviert werden keine Statusänderungen an die CommBridge gesendet. + + + + + 1512765957106 + 1512765957106 + 950 49 %scene_name - - 1503690514289 - 1503690532524 - 962 + + 1512172077193 + 1512172077193 + 951 + + 548 + Attribut: fhemControlMode +Art der Steuerung von FHEM set Befehlen, welche über die Bridge als Steuerbefehl reinkommen. +(Für Sprachsteuerung relevant) + + + + + 1516488111428 + 1516488697663 + 952 130 AMAD_SendData2CommBridge @@ -6820,15 +7080,1226 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= %priority setreading - "powerPlugged": "1" + "intentRadioName": "%name","intentRadioState": "%state" + + 1512506655696 + 1512506655696 + 953 + 102 + + 547 + %enter + + + + + + + + 37 + + And + + %new_val + 4 + %enter + + + %initial + 2 + false + + + + + 598 + %new_val + %enter + + + + + + + + + 51 + %scene_name + %element_name + + %new_val + + + + %new_val + 3 + \%new_val + + + + + 68 + %scene_name + TextEdit_AMADport + + + + 38 + + + + 1512171985482 + 1512171985482 + 954 + + 548 + toGo Funktion: hiermit wird die Sendefunktion deaktiviert, sobald der/die APSSID/'s getrennt wurden. +Es können mehrere SSIDs durch slash "/" getrennt angegeben werden. + + + + + 1512032849766 + 1512032849766 + 955 + 102 + + 598 + + %new_val + [^0-9] + + + + + + + + + 51 + %scene_name + TextEdit_AMADport + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + + 1512032849766 + 1512032849766 + 956 + 102 + + 598 + + %new_val + [^0-9\.] + + + + + + + + + 51 + %scene_name + TextEdit_DeviceIP + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + + 1503937837718 + 1503937837718 + 957 + 102 + + 51 + %scene_name + TextEdit_AMADport + + 8090 + + + + 548 + AMAD Bridge Port wurde auf 8090 gesetzt + + + + + 1503089941004 + 1512684267061 + 958 + AMAD_Beispiel_function + 100 + + 547 + %fhemsub + TimestampToText('2017-05-12 23:32:19') + + + + + + 547 + %fhemcmd + fhemfunc + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + %fhemcmd + %fhemsub + %respfhemfunc + + + + 548 + %respfhemfunc + + + + + 1512172416613 + 1512172416613 + 959 + + 548 + Bitte gebe die IP Adresse Deines Androidgerätes an. NUR IP kein FQDN!!! + + + + + 1502789397309 + 1517252219734 + 960 + AMAD_informations + 100 + + 547 + %enter + + + + + + + + 547 + + %setreading + "flowsetVersionAtDevice": "Tasker v0.23" + + + + + + 547 + %interrupt + onlyImportant + + + + + + %INTERRUPT + 2 + priority + + + + + 547 + %interrupt + never + + + + + + %INTERRUPT + 2 + none + + + + + 547 + %interrupt + alarmClockOnly + + + + + + %INTERRUPT + 2 + alarms + + + + + 547 + + %setreading + %setreading,"doNotDisturb": "%interrupt" + + + + + + %interrupt + 3 + \%interrupt + + + + + 547 + + %setreading + %setreading,"keyguardSet": "1" + + + + + + %KEYG + 2 + on + + + + + 547 + + %setreading + %setreading,"keyguardSet": "0" + + + + + + %KEYG + 2 + off + + + + + 547 + + %setreading + %setreading,"incomingCallerName": "%CNAME" + + + + + And + + %CNAME + 3 + ? + + + %CNAME + 3 + \%CNAME + + + + + 547 + + %setreading + %setreading,"incomingCallerName": "unknown" + + + + + + %CNAME + 2 + ? + + + + + 547 + + %setreading + %setreading,"incomingCallerNumber": "%CNUM" + + + + + And + + %CNUM + 3 + 0 + + + %CNUM + 3 + \%CNUM + + + + + 547 + + %setreading + %setreading,"incomingCallerNumber": "unknown" + + + + + + %CNUM + 2 + 0 + + + + + 547 + + %setreading + %setreading,"deviceState": "online" + + + + + + 547 + + %text + %SMSRB + + + + + + %SMSRB + 12 + + + + + + 598 + %text + %enter + + + + + + + + + %text + 3 + \%text + + + + + 547 + + false + %setreading + %setreading,"incommingSmsText": "%text" + + + + + + %text + 3 + \%text + + + + + 547 + + %setreading + %setreading,"powerLevel": "%BATT" + + + + + + %BATT + 12 + + + + + + 664 + + kgm + CONTEXT + getSystemService +{KeyguardManager} (String) + keyguard + + + + + + + + + 664 + + %locked + kgm + inKeyguardRestrictedInputMode +{boolean} () + + + + + + + + + + 547 + + %setreading + %setreading,"screen": "%SCREEN locked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + true + + + + + 547 + + %setreading + %setreading,"screen": "%SCREEN unlocked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + false + + + + + 547 + + %setreading + %setreading,"screenBrightness": "%BRIGHT" + + + + + + %BRIGHT + 12 + + + + + + 348 + + + %orientation + + + 547 + + %setreading + %setreading,"airplanemode": "%AIR" + + + + + + %AIR + 12 + \%AIR + + + + + 547 + + %setreading + %setreading,"screenOrientation": "%orientation" + + + + + + %orientation + 3 + \%orientation + + + + + 348 + + + %autorotate + + + 547 + + %setreading + %setreading,"screenOrientationMode": "auto" + + + + + + %autorotate + 2 + on + + + + + 547 + + %setreading + %setreading,"screenOrientationMode": "manual" + + + + + + %autorotate + 2 + off + + + + + 547 + %setstate + inaktiv + + + + + + 547 + %infostate + inaktiv + + + + + + 547 + %setstate + aktiv + + + + + Or + Or + + %PENABLED + 4 + AutoRemote AMAD + + + %PENABLED + 4 + TNES AMAD + + + %PENABLED + 2 + Pushover AMAD + + + + + 547 + %infostate + aktiv + + + + + And + + %PENABLED + 4 + AMAD_InformationFlow + + + %AMAD_send + 2 + on + + + + + 547 + + %setreading + %setreading,"flow_SetCommands": "%setstate" + + + + + + 547 + + %setreading + %setreading,"flow_informations": "%infostate" + + + + + + 130 + AMAD_SDK2Name + + %priority + + + + %androidversion + + + + 547 + + %setreading + %setreading,"volume": "%VOLM" + + + + + + %VOLM + 12 + + + + + + 547 + + %setreading + %setreading,"volumeNotification": "%VOLN" + + + + + + %VOLN + 12 + + + + + + 664 + + false + contres + CONTEXT + getContentResolver +{ContentResolver} () + + + + + + + + + + 664 + + false + %alarm + android.provider.Settings$System + getString +{String} (ContentResolver, String) + contres + next_alarm_formatted + + + + + + + + 37 + + + %alarm + 3 + \%alarm + + + + + 547 + %blank + + + + + + + 590 + %alarm + .,%blank + + + + 547 + + %setreading + %setreading,"nextAlarmDay": "%alarm1" + + + + + + %alarm1 + 3 + \%alarm1 + + + + + 547 + + %setreading + %setreading,"nextAlarmTime": "%alarm2" + + + + + + %alarm2 + 3 + \%alarm2 + + + + + 43 + + + 547 + + %setreading + %setreading,"androidVersion": "%androidversion" + + + + + + %androidversion + 3 + \%androidversion + + + + + 547 + + %setreading + %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + 38 + + + 547 + %fhemcmd + setreading + + + + + + 130 + AMAD_SendData2CommBridge + + %priority + + %fhemcmd + %setreading + + + + + 547 + + %setreading + %setreading,"bluetooth": "%BLUE" + + + + + + %BLUE + 12 + \%BLUE + + + + + 547 + + %setreading + %setreading,"currentMusicTrack": "%MTRACK" + + + + + + %MTRACK + 12 + + + + + + 547 + + %setreading + %setreading,"currentMusicTrack": "no player active" + + + + + + %MTRACK + 13 + + + + + + 547 + %interrupt + always + + + + + + %INTERRUPT + 2 + all + + + + + + 1512172077193 + 1512172077193 + 961 + + 548 + Attribut: remoteServer +Hierüber wird festgelegt, über welchen Dienst die setCommands empfangen werden. + + + + + 1512170785531 + 1512170785531 + 962 + + 548 + Wie soll das Device in FHEM heißen? +(Zulässige Zeichen: "a".."z", "A".."Z", "0".."9", "_", ".") + + + + 1513147872631 + 1513276907496 + 963 + + 547 + + %setreading + "nextAlarmState": "done" + + + + + + 664 + + false + contres + CONTEXT + getContentResolver +{ContentResolver} () + + + + + + + + + + 38 + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + 664 + + false + %alarm + android.provider.Settings$System + getString +{String} (ContentResolver, String) + contres + next_alarm_formatted + + + + + + + + 37 + + + %alarm + 3 + \%alarm + + + + + 547 + %blank + + + + + + + 590 + %alarm + .,%blank + + + + 547 + + %setreading + %setreading,"nextAlarmDay": "%alarm1" + + + + + + %alarm1 + 3 + \%alarm1 + + + + + 547 + + %setreading + %setreading,"nextAlarmTime": "%alarm2" + + + + + + %alarm2 + 3 + \%alarm2 + + + + + 43 + + + 547 + + %setreading + %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" + + + + + + + 1515785545040 + 1515785680561 + 964 + + 547 + %enter + + + + + + + + 547 + + %text + %SMSRB + + + + + + %SMSRB + 12 + + + + + + 598 + %text + %enter + + + + + + + + + %text + 3 + \%text + + + + + 547 + + %setreading + "incommingSmsText": "%text" + + + + + + %text + 3 + \%text + + + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + 1512032686923 1513014890967 - 963 + 965 AMAD 7 @@ -7456,926 +8927,109 @@ TWlKU5rSlKY0pSlNaUpTmtKUpjSlfTWTSP4HD723A9m6n1sAAAAASUVORK5CYII= /storage/emulated/0/Tasker/.icn/Eigene Icons/TaskerFHEM_icon.png - - 1503612289745 - 1503612849987 - 965 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "screenOrientation": "portrait" - - - - - 1512765957106 - 1512765957106 + 1512253437179 + 1512253437179 966 - - 49 - %scene_name - - - - 1512113548622 - 1512113663305 - 967 - AMAD_getDeviceName 547 - %fhemdevice - %DEVMAN_%DEVMOD + %readingsvalcmd + %AMAD_fhemdevice deviceState kaputt - - 596 - %fhemdevice - - - - - 598 - %fhemdevice - [^a-zA-Z_0-9\.] - - - - - - _ - - - 126 - %fhemdevice - - - - - 1503829156475 - 1512982546223 - 968 - AMAD_UpdateFlowset - 100 - - 548 - - AMAD: "set currentflowsetupdate'" wird noch nicht unterstützt - - 130 - + AMAD_SendData2CommBridge %priority+1 - setreading - "automagicState": "set currentflowsetupdate: not supported by Tasker" - + readingsval + %readingsvalcmd + %respreadingsval - - 548 - AMAD: Download der Tasker Projekt Datei nicht möglich - Tasker Pfad nicht gefunden. - - - - 38 - - 137 - - - + 548 + status: %respreadingsval + + + + %respreadingsval + 3 + \%respreadingsval + + - 547 - %path - /storage/emulated/0/Tasker/projects - - - - - - 342 - - %path - %exists - - - 37 - %exists + %respreadingsval 2 - true + online - - 118 - false - %AMAD_fhemip:%AMAD_bridgeport - AMAD.prj.xml - - - - - text/xml - %path/AMAD.prj.xml - + + 55 + + %scene_name + Oval_online + #FF00FF00 + #FF00FF00 - - 548 - AMAD: Beim Download der Tasker Projekt Datei ist ein Fehler augetreten. -Code: %HTTPR - - - - %HTTPR - 3 - 200 - - - - - 548 - AMAD: Die aktuelle Tasker Projekt Datei wurde heruntergrladen und kann importiert werden. - - - - %HTTPR - 2 - 200 - - - - + 43 - - - - 1503689740378 - 1503689753554 - 969 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "airplanemode": "off" - - - - - - 1502789397309 - 1515620693000 - 970 - AMAD_informations - 100 - - 547 - - %setreading - "flowsetVersionAtDevice": "Tasker v0.2" - - - - - - 547 - - %setreading - %setreading,"deviceState": "online" - - - - - - 547 - %interrupt - never - - - - - - %INTERRUPT - 2 - none - - - - - 547 - %interrupt - alarmClockOnly - - - - - - %INTERRUPT - 2 - alarms - - - - - 547 - - %setreading - %setreading,"doNotDisturb": "%interrupt" - - - - - - %interrupt - 3 - \%interrupt - - - - - 547 - - %setreading - %setreading,"keyguardSet": "1" - - - - - - %KEYG - 2 - on - - - - - 547 - - %setreading - %setreading,"keyguardSet": "0" - - - - - - %KEYG - 2 - off - - - - - 547 - - %setreading - %setreading,"incomingCallerName": "%CNAME" - - - And + And - %CNAME + %respreadingsval 3 - ? + kaputt - %CNAME + %respreadingsval 3 - \%CNAME - - - - - 547 - - %setreading - %setreading,"incomingCallerName": "unknown" - - - - - - %CNAME - 2 - ? - - - - - 547 - - %setreading - %setreading,"incomingCallerNumber": "%CNUM" - - - - - And - - %CNUM - 3 - 0 - - - %CNUM - 3 - \%CNUM - - - - - 547 - - %setreading - %setreading,"incomingCallerNumber": "unknown" - - - - - - %CNUM - 2 - 0 - - - - - 547 - - %setreading - %setreading,"powerLevel": "%BATT" - - - - - - %BATT - 12 - - - - - - 547 - - %setreading - %setreading,"airplanemode": "%AIR" - - - - - - %AIR - 12 - \%AIR - - - - - 664 - - kgm - CONTEXT - getSystemService -{KeyguardManager} (String) - keyguard - - - - - - - - - 664 - - %locked - kgm - inKeyguardRestrictedInputMode -{boolean} () - - - - - - - - - - 547 - - %setreading - %setreading,"screen": "%SCREEN locked" - - - - - And - - %SCREEN - 12 - - - - %locked - 2 - true - - - - - 547 - - %setreading - %setreading,"screen": "%SCREEN unlocked" - - - - - And - - %SCREEN - 12 - - - - %locked - 2 - false - - - - - 547 - - %setreading - %setreading,"screenBrightness": "%BRIGHT" - - - - - - %BRIGHT - 12 - - - - - - 348 - - - %orientation - - - 547 - - %setreading - %setreading,"screenOrientation": "%orientation" - - - - - - %orientation - 3 - \%orientation - - - - - 348 - - - %autorotate - - - 547 - - %setreading - %setreading,"screenOrientationMode": "auto" - - - - - - %autorotate - 2 - on - - - - - 547 - - %setreading - %setreading,"screenOrientationMode": "manual" - - - - - - %autorotate - 2 - off - - - - - 130 - AMAD_SDK2Name - - %priority - - - - %androidversion - - - - 547 - %setstate - inaktiv - - - - - - 547 - %infostate - inaktiv - - - - - - 547 - %setstate - aktiv - - - - - Or - Or - - %PENABLED - 4 - AutoRemote AMAD - - - %PENABLED - 4 - TNES AMAD + no connection - %PENABLED - 2 - Pushover AMAD - - - - - 547 - %infostate - aktiv - - - - - And - - %PENABLED - 4 - AMAD_InformationFlow - - - %AMAD_send - 2 - on - - - - - 547 - - %setreading - %setreading,"flow_SetCommands": "%setstate" - - - - - - 547 - - %setreading - %setreading,"flow_informations": "%infostate" - - - - - - 547 - - %setreading - %setreading,"volume": "%VOLM" - - - - - - %VOLM - 12 - - - - - - 547 - - %setreading - %setreading,"volumeNotification": "%VOLN" - - - - - - %VOLN - 12 - - - - - - 664 - - false - contres - CONTEXT - getContentResolver -{ContentResolver} () - - - - - - - - - - 664 - - false - %alarm - android.provider.Settings$System - getString -{String} (ContentResolver, String) - contres - next_alarm_formatted - - - - - - - - 547 - - %setreading - %setreading,"androidVersion": "%androidversion" - - - - - - %androidversion + %respreadingsval 3 - \%androidversion - - - - - 37 - - - %alarm - 3 - \%alarm - - - - - 547 - %blank - - - - - - - 590 - %alarm - .,%blank - - - - 547 - - %setreading - %setreading,"nextAlarmDay": "%alarm1" - - - - - - %alarm1 - 3 - \%alarm1 - - - - - 547 - - %setreading - %setreading,"nextAlarmTime": "%alarm2" - - - - - - %alarm2 - 3 - \%alarm2 - - - - - 43 - - - 547 - - %setreading - %setreading,"nextAlarmDay": "off","nextAlarmTime": "off" - - - - - - 38 - - - 547 - %fhemcmd - setreading - - - - - - 130 - AMAD_SendData2CommBridge - - %priority - - %fhemcmd - %setreading - - - - - 547 - - %setreading - %setreading,"bluetooth": "%BLUE" - - - - - - %BLUE - 12 - \%BLUE + /%respreadingsval - 547 - - %setreading - %setreading,"currentMusicTrack": "%MTRACK" - - - - - - %MTRACK - 12 - - - + 55 + + %scene_name + Oval_online + #FFFFFF00 + #FFFFFF00 - 547 - - %setreading - %setreading,"currentMusicTrack": "no player active" - - - - - - %MTRACK - 13 - - - + 43 - 547 - %interrupt - always - - - - - - %INTERRUPT - 2 - all - - + 55 + + %scene_name + Oval_online + #FFFF0000 + #FFFF0000 - 547 - %interrupt - onlyImportant - - - - - - %INTERRUPT - 2 - priority - - + 38 - - 1503690545406 - 1503690559299 - 972 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "powerPlugged": "0" - - - - - - 1503690358282 - 1503690362326 - 974 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "dockingState": "undocked" - - - - - + 1503260793343 1515484018445 - 975 + 967 AMAD_VoiceControl 7 @@ -8499,10 +9153,1472 @@ Code: %HTTPR mw_action_settings_voice + + 1511708774249 + 1511708860118 + 968 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "nfc": "on" + + + + + + 1512054845923 + 1512054845923 + 969 + + 51 + %scene_name + TextEdit_AMAD_ID + + %TIMES + + + + 548 + Eine neue AMAD ID wurde generiert. + + + + + 1512173777582 + 1512173777582 + 970 + + 37 + + + %new_val + 2 + on + + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 43 + + + %new_val + 2 + off + + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 38 + + + + 1502904145564 + 1503611980132 + 972 + 100 + + 130 + AMAD_informations + + %priority + + + + + + + + + 1503689740378 + 1503689753554 + 973 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "airplanemode": "off" + + + + + + 1511708875113 + 1511708893034 + 974 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "nfc": "off" + + + + + + 1503937837718 + 1503937837718 + 975 + 102 + + 130 + AMAD_getDeviceIP + + %priority + + + + %deviceip + + + + 37 + + + %deviceip + 3 + \%deviceip + + + + + 51 + %scene_name + TextEdit_DeviceIP + + %deviceip + + + + 548 + Geräte Adresse "%deviceip" wurde erkannt. + + + + 43 + + + 548 + Die eigene IP konnte nicht ermittelt werden. + + + + 38 + + + + 1512505794248 + 1512505794248 + 976 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1503937837718 + 1503937837718 + 977 + 102 + + 130 + + AMAD_save + + %priority+1 + + %scene_name + + + + + + 548 + Send Data to AMADCommBridge: firstrun + + + + 37 + + + + %response + 2 + no connection + + + + + 547 + %message + Es konnte keine Verbindung zur AMAD CommBridge hergestellt werden. +Hast Du die AMADCommBridge definiert, und ist sie auch aktiv? +Bitten prüfe die Eingetragene FHEM Adresse "%AMAD_fhemip:%AMAD_bridgeport". + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 137 + + + + + 38 + + + 30 + + + + + + + + 130 + + AMAD_informations + + %priority+1 + + + + %response + + + + 30 + + + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + firstrun + %AMAD_DeviceIP + %response + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + readingsval + %AMAD_fhemdevice deviceState kaputt + %respreadingsval + + + + 37 + + + %respreadingsval + 2 + online + + + + + 55 + + %scene_name + Oval_online + #FF00FF00 + #FF00FF00 + + + 547 + %message + Die Einrichtung ist nun abgeschlossen und das AMAD Device online. + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 547 + + %AMAD_send + on + + + + + + 547 + + %AMAD_receive + on + + + + + + 50 + + AMAD_settings + Switch_information + + + + 37 + + + + %response + 2 + Variable not set + + + + + 50 + + AMAD_settings + Switch_setCommands + + + + 65 + + AMAD_settings + Text_toGo + + + + + + 65 + + AMAD_settings + Switch_toGo + + + + + + 43 + + And + And + + %respreadingsval + 3 + kaputt + + + %respreadingsval + 3 + no connection + + + %respreadingsval + 3 + /%respreadingsval + + + + + 55 + + %scene_name + Oval_online + #FFFFFF00 + #FFFFFF00 + + + 547 + %message + Die Einrichtung ist nun abgeschlossen und das AMAD Device wurde angelegt. Es scheint aber noch keine Verbindung zwischen FHEM und Deinem AMAD Device zu bestehen. Mache am besten einmal ein Status Request in FHEM für das AMAD Device. Ist der Status in FHEM weiterhin offline schaue bitte ob alle AMAD Tasker Profiele aktiv sind. + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 43 + + + 547 + %message + Die Eingaben sind unvollständig. +Bitten prüfe die eingetragene Daten. + + + + + + 55 + + %scene_name + Oval_online + #FFFF0000 + #FFFF0000 + + + 547 + %message + Leider scheint es ein Problem beim Einrichten des FHEM Devices gegeben zu haben. +-Stelle sicher, dass in FHEM noch kein Device mit dem Namen "%AMAD_fhemdevice" existiert. +-Stelle sicher, dass autocreate aktiviert ist. + + + + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 38 + + + 194 + AMAD_Dialog_Message + + %scene + + + 46 + AMAD_Dialog_Message + + + %scene + 2 + uncreated + + + + + 47 + AMAD_Dialog_Message + + + + + + + + + + 137 + + + + + 38 + + + 1503937837718 + 1503937837718 + 978 + 102 + + 548 + Status Request wird an AMAD CommBridge gesendet... + + + + 130 + + AMAD_informations + + %priority + + + + + + + + 55 + + %scene_name + Oval_online + #FFFF0000 + #FFFF0000 + + + 38 + + + 547 + %readingsvalcmd + %AMAD_fhemdevice deviceState kaputt + + + + + + 130 + + AMAD_SendData2CommBridge + + %priority+1 + + readingsval + %readingsvalcmd + %respreadingsval + + + + 548 + status: %respreadingsval + + + + %respreadingsval + 3 + \%respreadingsval + + + + + 37 + + + %respreadingsval + 2 + online + + + + + 55 + + %scene_name + Oval_online + #FF00FF00 + #FF00FF00 + + + 43 + + And + And + + %respreadingsval + 3 + kaputt + + + %respreadingsval + 3 + no connection + + + %respreadingsval + 3 + /%respreadingsval + + + + + 55 + + %scene_name + Oval_online + #FFFFFF00 + #FFFFFF00 + + + 43 + + + + 1512172357867 + 1512172357867 + 979 + + 548 + Bitte gebe die IP Adresse oder den FQDN Deines FHEM Servers an. + + + + + 1512505998767 + 1512505998767 + 980 + + 55 + %scene_name + %element_name + #FFD9D9D9 + #FFD9D9D9 + + + %focused + 2 + true + + + + + 55 + %scene_name + %element_name + #FF858585 + #FF858585 + + + %focused + 2 + false + + + + + + 1512758867606 + 1512758867606 + 981 + + 548 + Wenn deaktiviert werden keine set-Befehle auf dem Gerät ausgeführt. + + + + + 1512032849766 + 1512032849766 + 982 + 102 + + 547 + %enter + + + + + + + + 37 + + + %new_val + 4 + %enter + + + + + 598 + %new_val + %enter + + + + + + + + + 51 + %scene_name + %element_name + + %new_val + + + + %new_val + 3 + \%new_val + + + + + 68 + %scene_name + TextEdit_DeviceIP + + + + 43 + + + 598 + + %new_val + [^a-zA-Z_0-9\.] + + + + %fail + + + + + 51 + %scene_name + TextEdit_DeviceName + + %new_val + + + And + + %new_val + 3 + \%new_val + + + %initial + 2 + false + + + + + 548 + Es werden nur folgende Zeichen unterstüzt: a-z A-Z 0-9 _ . + + + + %fail(#) + 7 + 0 + + + + + 38 + + + + 1503689793813 + 1513275921434 + 983 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "bluetooth": "on" + + + + + + 1503689660711 + 1511637650420 + 984 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "airplanemode": "on" + + + + + + 1503937837718 + 1503937837718 + 985 + 102 + + 130 + AMAD_getDeviceName + + %priority+1 + + + + %fhemdevice + + + + 37 + + + %fhemdevice + 3 + \%fhemdevice + + + + + 51 + %scene_name + TextEdit_DeviceName + + %fhemdevice + + + + 548 + Gerätename "%fhemdevice" wurde gesetzt. + + + + 43 + + + 548 + Der Gerätename konnte nicht ermittelt werden. + + + + 38 + + + + 1512173777582 + 1512173777582 + 986 + + 37 + + And + + %new_val + 2 + on + + + %WIFI + 2 + on + + + + + 65 + + %scene_name + Text_toGo + + + + + + 38 + + + 43 + + + %new_val + 2 + off + + + + + 65 + + %scene_name + Text_toGo + + + + + + 65 + + %scene_name + Switch_toGo + + + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 38 + + + 65 + + %scene_name + Switch_toGo + + + + + + 37 + + + + %AMAD_toGo + 2 + on + + + + + 50 + + %scene_name + Switch_toGo + + + + 65 + + %scene_name + Text_SSID + + + + + + 65 + + %scene_name + TextEdit_SSID + + + + + + 65 + + %scene_name + Text_getSSID + + + + + + 43 + + + 50 + + %scene_name + Switch_toGo + + + + + 1512054845923 + 1512054845923 + 987 + + 341 + false + + + %ssid + + + 37 + + Or + + %ssid + 2 + \%ssid + + + %ssid + 2 + <unknown ssid> + + + + + 548 + Die aktuelle SSID konnte nicht ermittelt werden. + + + + 43 + + + 51 + + AMAD_settings + TextEdit_SSID + + %ssid + + + + 548 + Die aktuelle SSID: "%ssid" wurde übernommen. + + + + 38 + + + + 1503690306712 + 1503690348078 + 988 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "dockingState": "docked" + + + + + + 1503690514289 + 1503690532524 + 989 + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + "powerPlugged": "1" + + + + + + 1515014192359 + 1515014192359 + 990 + + 105 + %AMAD_lastSetCommand + + + + 548 + letzter empfangener set-Befehl in Zwischenablage kopiert + + + + + 1503692408945 + 1516907246352 + 991 + 100 + + 547 + + %AMAD_send + off + + + + + + 547 + + %AMAD_receive + off + + + + + + 137 + + AMAD_SendData2CommBridge + + + 37 + + + %AMAD_remoteServer + 2 + Autoremote + + + + + 785392305 + + false + + + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + false + java.lang.Boolean + false + java.lang.Boolean + +Stopping Wifi Service + java.lang.String + false + java.lang.Boolean + <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%err +Error Code +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg +Error Message +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray> + [Ljava.lang.String; + FieldsToGet NotificationTitle NotificationText NotificationIcon LedColor LedOn LedOff plugininstanceid plugintypeid + java.lang.String + true + java.lang.Boolean + 2136a7e4-dee6-446f-8c72-dc98e51af9d0 + java.lang.String + com.joaomgcd.autoremote.IntentWifiService + java.lang.String + + + com.joaomgcd.autoremote + com.joaomgcd.autoremote.activity.ActivityConfigWifiService + + + + 38 + + + + 1503612978140 + 1513116249338 + 992 + + 30 + + + + + + + + 664 + + kgm + CONTEXT + getSystemService +{KeyguardManager} (String) + keyguard + + + + + + + + + 664 + + %locked + kgm + inKeyguardRestrictedInputMode +{boolean} () + + + + + + + + + + 547 + + %setreading + "screen": "%SCREEN locked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + true + + + + + 547 + + %setreading + "screen": "%SCREEN unlocked" + + + + + And + + %SCREEN + 12 + + + + %locked + 2 + false + + + + + 130 + AMAD_SendData2CommBridge + + %priority + + setreading + %setreading + + + + + 1511815475378 1511815562350 - 978 + 993 596 %pushovermessage @@ -8521,1491 +10637,289 @@ Code: %HTTPR - - 1502904145564 - 1503611980132 - 979 - 100 + + 1503937837718 + 1503937837718 + 994 + 102 - 130 - AMAD_informations - - %priority - - - - - + 49 + %scene_name - - 1503612864622 - 1512664382473 - 980 + + 1512715391071 + 1512715391071 + 995 - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "screenOrientation": "landscape" - - + 548 + Manuelles auslösen einen status Requests + - - 1503693866986 - 1515619510405 - 982 - AMAD_SetCommands + + 1512752289034 + 1516907362346 + 996 + AMAD_save 100 547 - %receive + %scene_name %par1 - 547 - %receive - %arcomm - - - - - - %caller1 - 2 - profile=enter:AutoRemote AMAD - - + 195 + + %scene_name + TextEdit_DeviceName + + %AMAD_fhemdevice - 547 - %command - %receive41 - - - - - - 123 - false - service call notification 1 - - - - - - - And - - %tpe_app - 2 - All - - - %ROOT - 2 - yes - - - - - 548 - - AMAD: "set clearNotificationBar all" benötigt Root rechte - - - And - - %tpe_app - 2 - All - - - %ROOT - 2 - no - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set clearNotificationBar all: only works on rooted Devices" - - - - And - - %tpe_app - 2 - All - - - %ROOT - 2 - no - - - - - 43 - - - %command - 2 - setvibrate - - - - - 62 - 0,500,500,500 - - - 43 - - - %command - 2 - showhomescreen - - - - - 25 - - - - 43 - - - %command - 2 - sendIntent - - - - - 877 - %tpe_action - - text/plain - - %tpe_exkey1,%tpe_exval1 - %tpe_exkey2,%tpe_exval2 - - - - - - - 43 - - - %command - 2 - installFlow - - + 195 + + %scene_name + Switch_information + + %state - 37 - - - - %receive4(#) - 7 - 1 - - - - - 548 - AMAD: "Flow install: not supported by Tasker" - - - - 130 - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "Flow install: not supported by Tasker" - - - - - 43 - - - %command - 2 - openCall - - - - - 90 - %tpe_callnumber - - - - 30 - - - %tpe_hanguptime - + 547 + + %AMAD_send + %state - - - %tpe_hanguptime - 7 - 1 - - - - - 733 - - - %tpe_hanguptime - 7 - 1 - - - - - 43 - - - %command - 2 - closeCall - - - - - 733 - - - 43 - - - %command - 2 - startDaydream - - - - - 20 - - com.android.systemui.Somnambulator - com.android.systemui - - - - - - 547 - %valueall - %receive42 - - - - - - 43 + 195 + + %scene_name + Switch_toGo + + %state - %command - 2 - sendSms - - - - - 41 - %tpe_smsnumber - %tpe_smsmessage - - - - 43 - - - %command - 2 - screenlock - - - - - 548 - - AMAD: "set screen lock|unlock" wird noch nicht unterstützt - - - - %tpe_lockmod - 4 - lock|unlock - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set screen lock|unlock: not supported by Tasker" - - - - - %tpe_lockmod - 4 - lock|unlock - - - - - 43 - - - %command - 2 - setScreenOnOff - - - - - 548 - - AMAD: "set screen on" wird noch nicht unterstützt - - - - %tpe_screen + %state 2 on - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set screen on: not supported by Tasker" - - - - - %tpe_screen - 2 - on - - - - - 16 - - - %tpe_screen - 2 - off - - - - - 38 - - 590 - %valueall - & + 547 + + %AMAD_toGo + %state - - - 38 - - - 43 - - - - 548 - AMAD: Befehl mit falscher AMAD_ID empfangen - - - - 38 + + - 39 - %cmdpair - %valueall() + 195 + + %scene_name + TextEdit_SSID + + %AMAD_apssid + + + %state + 2 + on + + - 590 - %cmdpair - = - + 548 + AMAD Einstellungen wurden gespeichert. + - 547 - %name - %cmdpair1 - + 785392305 + + false + + + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + /storage/emulated/0/Tasker/.icn/Eigene Icons/TaskerFHEM_icon.png + java.lang.String + <null> + java.lang.String + AMAD Autoremote Server + java.lang.String + true + java.lang.Boolean + false + java.lang.Boolean + +Starting Wifi Service +Persistent Notification: true +Notification Title: AMAD Autoremote Server + java.lang.String + true + java.lang.Boolean + <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%err +Error Code +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg +Error Message +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray> + [Ljava.lang.String; + FieldsToGet NotificationTitle NotificationText NotificationIcon LedColor LedOn LedOff plugininstanceid plugintypeid + java.lang.String + true + java.lang.Boolean + 2136a7e4-dee6-446f-8c72-dc98e51af9d0 + java.lang.String + com.joaomgcd.autoremote.IntentWifiService + java.lang.String + + + com.joaomgcd.autoremote + com.joaomgcd.autoremote.activity.ActivityConfigWifiService - + + + %AMAD_remoteServer + 2 + Autoremote + + - 590 - %cmdpair - %name= - - - - 596 - %name - - - - - 547 - %name - tpe_%name - + 785392305 + + false + + + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + <null> + java.lang.String + false + java.lang.Boolean + false + java.lang.Boolean + +Stopping Wifi Service + java.lang.String + false + java.lang.Boolean + <StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%err +Error Code +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%errmsg +Error Message +Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1></StringArray> + [Ljava.lang.String; + FieldsToGet NotificationTitle NotificationText NotificationIcon LedColor LedOn LedOff plugininstanceid plugintypeid + java.lang.String + true + java.lang.Boolean + 2136a7e4-dee6-446f-8c72-dc98e51af9d0 + java.lang.String + com.joaomgcd.autoremote.IntentWifiService + java.lang.String + + + com.joaomgcd.autoremote + com.joaomgcd.autoremote.activity.ActivityConfigWifiService - + + + %AMAD_remoteServer + 3 + Autoremote + + - 547 - %receive - %tpe_cmd - - - - - - %caller1 - 2 - profile=enter:TNES AMAD - - - - - 596 - %cmdpair2 - - - - - %cmdpair2 - 3 - \%cmdpair2 - - - - - 547 - %%name - %cmdpair2 - - - - - - %cmdpair2 - 3 - \%cmdpair2 - - - - - 40 - - - 38 - - - 37 - - - - %tpe_amad_id - 2 - %AMAD_amadid - - - - - 130 - - AMAD_informations - - %priority+1 - - - - - - - - %type - 2 - deviceInfo - - - - - 130 - - AMAD_UpdateFlowset - - %priority+1 - - - - - - - - %type - 2 - currentFlowsetUpdate - - - - - 37 - - - %type - 2 - setCommands - - - - - 37 - - - %command - 2 - screenMsg - - - - - 548 - %tpe_message - + 195 + + %scene_name + TextEdit_DeviceIP + + %AMAD_DeviceIP - 547 - %AMAD_lastSetCommand - %receive - - - - - - 43 - - - %command - 2 - ttsMsg - - - - - 547 - %tpe_msglang - deu-deu - - - - - - %tpe_msglang - 4 - en - - - - - 547 - %tpe_msglang - eng-usa - - - - - - %tpe_msglang - 2 - en - - - - - 547 - %volume - %VOLM - - - - - - 307 - - %tpe_msgvol - - - - - - %tpe_msgvol - 7 - 1 - - - - - 559 - %tpe_message - com.google.android.tts:%tpe_msglang - - - - %tpe_msgspeed - - - - - - - 307 - - %volume - - - - - - %tpe_msgvol - 7 - 1 - - - - - 43 - - - %command - 2 - flowState - - - - - 159 - %tpe_flowname - - - - %tpe_flowstate - 2 - active - - - - - 159 - %tpe_flowname - - - - %tpe_flowstate - 2 - inactive - - + 195 + + %scene_name + TextEdit_FHEMip + + %AMAD_fhemip - 547 - - false - %receive - %AMAD_lastSetCommand - - - - - - 130 - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "Flow %tpe_flowname has been set %tpe_flowstate" - - - - - 43 - - - %command - 2 - flowRun - - - - - 130 - %tpe_flowname - - %priority - - - - - - - - 43 - - - %command - 2 - setVolume - - - - - 307 - - %tpe_volume - - - - - - 43 - - - %command - 2 - setNotifiVolume - - - - - 305 - - %tpe_notifivolume - - - - - - 43 - - - %command - 2 - setRingSoundVolume - - - - - 304 - - %tpe_ringsoundvolume - - - - - - 43 - - - %command - 2 - setBrightness - - + 195 + + %scene_name + TextEdit_AMADport + + %AMAD_bridgeport - 590 - %receive - / - - - - 810 - - %tpe_brightness - - - - - - - 43 - - - %command - 2 - multimediaControl - - - - - 130 - - AMAD_multimediaControl - - %priority - - %tpe_mplayer - %tpe_button - - - - - 43 - - - %command - 2 - setvoicecmd - - - - - 130 - AMAD_VoiceControl - - %priority+1 - - - - - - - - 43 - - - %command - 2 - setScreenOrientation - - - - - 822 - - - - %tpe_orientation - 2 - auto - - - - - 822 - - - - - %tpe_orientation - 3 - auto - - - - - 548 - - AMAD: "set screenOrientation landscape|portrait" wird noch nicht unterstützt - - - - %tpe_orientation - 4 - landscape|portrait - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set screenOrientation landscape|portrait: not supported by Tasker" - - - - - %tpe_orientation - 4 - landscape|portrait - - + 195 + + %scene_name + TextEdit_AMAD_ID + + %AMAD_amadid - 547 - %type - %receive3 - - - - - - 43 - - - %command - 2 - setScreenFullscreen - - - - - 548 - - AMAD: "set screenFullscreen on|off" wird noch nicht unterstützt - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set screenFullscreen on|off: not supported by Tasker" - - - - - 43 - - - %command - 2 - openURL - - - - - 547 - %tpe_url - http://%tpe_url - - - - - - %tpe_url - 5 - ^http* - - - - - 877 - android.intent.action.VIEW - - - %tpe_url - - - - %tpe_browserapp - %tpe_browserappclass - - - - 43 - - - %command - 2 - setAlarm - - - - - 566 - - %tpe_hour - - - %tpe_minute - - AMAD Wecker - - - - - - 43 - - - %command - 2 - setTimer - - - - - 547 - %tpe_seconds - %tpe_minute*60 - - - + 195 + + %scene_name + Spinner_fhemctlmode + + %AMAD_fhemctlmode - 547 - %receive4 - %receive - - - - - - %receive(#) - 7 - 4 - - - - - 543 - - %tpe_seconds - - AMAD Timer - - - - 43 - - - %command - 2 - openApp - - - - - 664 - pacman - CONTEXT - getPackageManager {PackageManager} ()  - - - - - - - - - - 664 - intent - pacman - getLaunchIntentForPackage {Intent} (String) - %tpe_app - - - - - - - - - 664 - - CONTEXT - startActivity -{} (Intent) - intent - - - - - - - - - 43 - - - %command - 2 - setnfc - - - - - 123 - svc nfc enable - - - - - - - And - - %tpe_nfc - 2 - on - - - %ROOT - 2 - yes - - - - - 123 - svc nfc disable - - - - - - - And - - %tpe_nfc - 2 - off - - - %ROOT - 2 - yes - - - - - 548 - - AMAD: "set nfc on|off" benötigt Root rechte - - - - %ROOT - 2 - no - - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set nfc on|off: only works on rooted Devices" - - - - - %ROOT - 2 - no - - + 195 + + %scene_name + Spinner_remoteServer + + %AMAD_remoteServer - 598 - %receive4 - /%receive2/%receive3/ + 195 + + %scene_name + Switch_setCommands + + %state + + + 547 + + %AMAD_receive + %state - - - - - - %receive(#) - 7 - 4 - - - - - 43 - - - %command - 2 - systemcommand - - - - - 130 - AMAD_SendData2CommBridge - - %priority+1 - - setreading - airplanemode@@on - - - - - %tpe_syscmd - 2 - airplanemodeON - - - - - 333 - - - - %tpe_syscmd - 2 - airplanemodeON - - - - - 59 - - - - %tpe_syscmd - 2 - shutdown - - - - - 59 - - - - %tpe_syscmd - 2 - reboot - - - - - 43 - - - %command - 2 - donotdisturb - - - - - 312 - - - - %tpe_disturbmod - 2 - always - - - - - 312 - - - - %tpe_disturbmod - 2 - onlyImportant - - - - - 312 - - - - %tpe_disturbmod - 2 - never - - - - - 312 - - - - %tpe_disturbmod - 2 - alarmClockOnly - - - - - 590 - %receive4 - ? - - - - 43 - - - %command - 2 - setbluetooth - - - - - 294 - - - - %tpe_bluetooth - 2 - on - - - - - 294 - - - - %tpe_bluetooth - 2 - off - - - - - 43 - - - %command - 2 - playnotifysnd - - - - - 445 - %tpe_notifypath%tpe_notifyfile - - - - - - - 43 - - - %command - 2 - setbtdevice - - - - - 548 - - AMAD: "set changetoBtDevice" wird noch nicht unterstützt - - - - 130 - - AMAD_SendData2CommBridge - - %priority+1 - - setreading - "automagicState": "set changetoBtDevice: not supported by Tasker" - - - - - 43 - - - %command - 2 - clearnotificationbar - - - - - 779 - - - - - %tpe_app - 2 - Automagic - - - - 1511655849449 - 1511655867388 - 983 + + 1503612743210 + 1512664299869 + 997 130 AMAD_SendData2CommBridge @@ -10013,410 +10927,210 @@ Code: %HTTPR %priority setreading - "wiredHeadsetPlugged": "0" + "daydream": "off" - - 1502789757098 - 1513424396436 - 984 - AMAD_SendData2CommBridge - 100 + + 1512172711494 + 1512172711494 + 998 - 137 - - - + 548 + Falls das AMAD Device in FHEM von Hand angelegt wurde, muss hier die "AMAD_ID" auf den gleichen Wert wie in FHEM gesetzt werden. + + + + + 1503611036750 + 1513445150127 + 999 + AMAD_SDK2Name + + 547 + %androidversion + 8.0 Oreo + + + - And - %caller() - 4 - profile=exit:AMAD_ - - - %AMAD_send - 3 - on + %SDK + 8 + 26 - 37 + 547 + %androidversion + 7.1 Nougat + + + - Or - Or - %AMAD_fhemip - 2 - \%AMAD_fhemip - - - %AMAD_bridgeport - 2 - \%AMAD_bridgeport - - - %AMAD_fhemdevice - 2 - \%AMAD_fhemdevice + %SDK + 8 + 25 - 43 - + 547 + %androidversion + 4.0.3 - 4.0.4 Ice Cream Sandwich MR1 + + + - %fhemcmd - 2 - set + %SDK + 8 + 15 547 - %setcmd - %par2 + %androidversion + 4.0 - 4.0.2 Ice Cream Sandwich + + + %SDK + 8 + 14 + + - 547 - - %setcmd - {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "set"},"payload": {"setcmd": "%setcmd"}} - - - - - - 116 - - false - http://%AMAD_fhemip:%AMAD_bridgeport - - %setcmd - - - - text/* - - - - - 43 - - - - %fhemcmd - 2 - readingsval - - - - - 547 - %readingsvalcmd - %par2 - - - - - - 547 - - %readingsvalcmd - {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "readingsval"},"payload": {"readingsvalcmd": "%readingsvalcmd"}} - - - - - - 116 - - false - http://%AMAD_fhemip:%AMAD_bridgeport - - %readingsvalcmd - - - - text/* - - - - - 43 - - - - %fhemcmd - 2 - voiceinputvalue - - - - - 547 - %voiceinputdata - %par2 - - - + 126 + %androidversion + - 548 - AMAD: Fehler beim Senden -Variablen nicht gesetzt - - - 547 - - %voiceinputdata - {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "voiceinputvalue"},"payload": {"voiceinputdata": "%voiceinputdata"}} + %androidversion + 7.0 Nougat - - - 116 - - false - http://%AMAD_fhemip:%AMAD_bridgeport - - %voiceinputdata - - - - text/* - - - - - 43 - - %fhemcmd - 2 - fhemfunc + %SDK + 8 + 24 - - 547 - %fhemsub - %par2 - - - - - - 547 - - %fhemfunc - {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "fhemfunc"},"payload": {"fhemsub": "%fhemsub"}} - - - - - - 116 - - false - http://%AMAD_fhemip:%AMAD_bridgeport - - %fhemfunc - - - - text/* - - - - - 43 - - - - %fhemcmd - 2 - firstrun - - - - - 547 - %amaddevice_ip - %par2 - - - - - - 547 - - %firstrundata - {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "setreading"},"firstrun": {"fhemdevice": "%AMAD_fhemdevice","fhemserverip": "%AMAD_fhemip","amaddevice_ip": "%amaddevice_ip","remoteserver":"%AMAD_remoteServer"}} - - - - - - 116 - - false - http://%AMAD_fhemip:%AMAD_bridgeport - - %firstrundata - - - - text/* - - - - 126 - Variable not set - - - - 38 - - 547 - %return - %HTTPD - - - - - - 547 - %return - no connection + %androidversion + 6.0 Marshmallow - %HTTPR - 2 - -1 + %SDK + 8 + 23 - - 126 - %return - - - 38 + 547 + %androidversion + 5.1 Lollipop MR1 + + + + + + %SDK + 8 + 22 + + 547 - %fhemcmd - %par1 + %androidversion + 5.0 Lollipop - - - 37 - - %fhemcmd - 2 - setreading + %SDK + 8 + 21 + + + + + 547 + %androidversion + 4.4 KitKat + + + + + + %SDK + 8 + 19 547 - %fhemdata - %par2 + %androidversion + 4.3 Jelly Bean MR2 + + + %SDK + 8 + 18 + + 547 - - %fhemdata - {"amad": {"amad_id": "%AMAD_amadid","fhemcmd": "setreading"},"payload": {%fhemdata}} + %androidversion + 4.2 - 4.2.2 Jelly Bean MR1 + + + %SDK + 8 + 17 + + - 116 - - false - http://%AMAD_fhemip:%AMAD_bridgeport - - %fhemdata - - - - text/* - - - - - - 1503689826684 - 1503689839417 - 989 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "bluetooth": "off" - - - - - - 1511708875113 - 1511708893034 - 990 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "nfc": "off" - - - - - - 1503612579492 - 1513147602338 - 992 - - 130 - AMAD_SendData2CommBridge - - %priority - - setreading - "screen": "on locked" - - + 547 + %androidversion + 4.1 - 4.1.1 Jelly Bean + + + + + + %SDK + 8 + 16 + + From e2f76d811f34fb4d8a476ad4162f805d0a87864c Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sat, 10 Feb 2018 03:32:53 +0100 Subject: [PATCH 38/42] new tesker flowset, add sms sender to Reading incommingSmsMassage --- 73_AMADCommBridge.pm | 2 +- 74_AMADDevice.pm | 2 +- ...ml => 74_AMADautomagicFlowset_4.1.99.8.xml | 824 +++++++++--------- ...j.xml => 74_AMADtaskerset_4.1.99.8.prj.xml | 0 4 files changed, 414 insertions(+), 414 deletions(-) rename 74_AMADautomagicFlowset_4.1.99.7.xml => 74_AMADautomagicFlowset_4.1.99.8.xml (90%) rename 74_AMADtaskerset_4.1.99.6.prj.xml => 74_AMADtaskerset_4.1.99.8.prj.xml (100%) diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm index 6a04148..0d673b8 100644 --- a/73_AMADCommBridge.pm +++ b/73_AMADCommBridge.pm @@ -75,7 +75,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.30"; -my $flowsetversion = "4.1.99.7"; +my $flowsetversion = "4.1.99.8"; diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm index 3916071..91e0e52 100644 --- a/74_AMADDevice.pm +++ b/74_AMADDevice.pm @@ -59,7 +59,7 @@ eval "use JSON;1" or $missingModul .= "JSON "; my $modulversion = "4.1.99.40"; -my $flowsetversion = "4.1.99.7"; +my $flowsetversion = "4.1.99.8"; diff --git a/74_AMADautomagicFlowset_4.1.99.7.xml b/74_AMADautomagicFlowset_4.1.99.8.xml similarity index 90% rename from 74_AMADautomagicFlowset_4.1.99.7.xml rename to 74_AMADautomagicFlowset_4.1.99.8.xml index 262c60f..21eeb3e 100644 --- a/74_AMADautomagicFlowset_4.1.99.7.xml +++ b/74_AMADautomagicFlowset_4.1.99.8.xml @@ -3060,8 +3060,8 @@ fhemcmd = "setreading"; true - Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - @@ -3290,7 +3290,7 @@ fhemcmd = "setreading"; false Script: Set FHEMDATA JSON - true - Script: incommingSmsText = "\"incommingSmsText\":" + " \"" + {sms_sender} + " - " + replaceAll({sms_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - true - Script: incommingTelegramMessage = "\"incommingTelegramMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - true - Script: incommingWhatsAppMessage = "\"incommingWhatsAppMessageFrom\":" + " \"" + replaceAll({notification_text}, "\\n", " ") + "\""; fhemcmd = "setreading"; - @@ -3290,7 +3290,7 @@ fhemcmd = "setreading"; false Script: Set FHEMDATA JSON - false Script: Set FHEMDATA JSON -