diff --git a/fhem/CHANGED b/fhem/CHANGED
index 169a4e362..ebe8aa838 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -1,5 +1,8 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
+ - updated: 74_AMAD: New Minor Release 2.2 real state for deviceState Reading,
+ Support for Amazon Music Player and Spotify Player, Keep
+ Alive funktion for Android 6
- bugfix: 77_UWZ: Commandref Warn Type 7 and 6 exchanged, new method for no
eperimental warnings
- feature: plex: play command now handles single media items, music albums
diff --git a/fhem/FHEM/74_AMAD.pm b/fhem/FHEM/74_AMAD.pm
index 8d8e21b9a..3b98c34c6 100644
--- a/fhem/FHEM/74_AMAD.pm
+++ b/fhem/FHEM/74_AMAD.pm
@@ -37,8 +37,8 @@ use TcpServerUtils;
use Encode qw(encode);
-my $modulversion = "2.0.3";
-my $flowsetversion = "2.0.5";
+my $modulversion = "2.2.0";
+my $flowsetversion = "2.2.0";
@@ -97,6 +97,7 @@ sub AMAD_Define($$) {
$hash->{VERSIONFLOWSET} = $flowsetversion;
$hash->{helper}{infoErrorCounter} = 0 if( $hash->{HOST} );
$hash->{helper}{setCmdErrorCounter} = 0 if( $hash->{HOST} );
+ $hash->{helper}{deviceStateErrorCounter} = 0 if( $hash->{HOST} );
@@ -122,10 +123,10 @@ sub AMAD_Define($$) {
$attr{$name}{room} = "AMAD" if( !defined( $attr{$name}{room} ) );
readingsSingleUpdate ( $hash, "state", "initialized", 1 ) if( $hash->{HOST} );
- #readingsSingleUpdate ( $hash, "deviceState", "online", 1 ) if( $hash->{HOST} );
+ readingsSingleUpdate ( $hash, "deviceState", "unknown", 1 ) if( $hash->{HOST} );
RemoveInternalTimer($hash);
- InternalTimer( gettimeofday()+15, "AMAD_GetUpdate", $hash, 0 ) if( ($hash->{HOST}) && ($hash->{APSSID}) );
+ InternalTimer( gettimeofday()+30, "AMAD_GetUpdate", $hash, 0 ) if( ($hash->{HOST}) && ($hash->{APSSID}) );
$modules{AMAD}{defptr}{$hash->{HOST}} = $hash;
@@ -138,7 +139,7 @@ sub AMAD_Undef($$) {
my ( $hash, $arg ) = @_;
if( $hash->{BRIDGE} ) {
- delete $modules{AMAD}{defptr}{BRIDGE};
+ delete $modules{AMAD}{defptr}{BRIDGE} if(defined($modules{AMAD}{defptr}{BRIDGE}));
TcpServer_Close( $hash );
} else {
@@ -187,9 +188,10 @@ sub AMAD_Attr(@) {
}
}
- elsif( $attrName eq "setScreenBrightness" ) {
- Log3 $name, 1, "AMAD ($name) - !!!The Attribut \"setScreenBrightness\" is obsolete and will be remove in the future!!! Please delete the attribut description in your AMAD Device";
- Log3 $name, 1, "AMAD ($name) - !!!Das Attribut \"setScreenBrightness\" wird nicht mehr benötigt und in zukünftigen Versionen entfernt!!! Bitte lösche die Attributszuweisung aus Deinem AMAD Device";
+ elsif( $attrName eq "checkActiveTask" ) {
+
+ AMAD_statusRequest( $hash );
+ Log3 $name, 3, "AMAD ($name) - $cmd $attrName $attrVal and run statusRequest";
}
elsif( $attrName eq "port" ) {
@@ -246,9 +248,10 @@ my ( $hash ) = @_;
RemoveInternalTimer( $hash );
- if( $init_done && ReadingsVal( $name, "deviceState", "online" ) eq "online" && AttrVal( $name, "disable", 0 ) ne "1" && ReadingsVal( $bname, "fhemServerIP", "not set" ) ne "not set" && $hash->{APSSID} ) {
+ if( $init_done && ( ReadingsVal( $name, "deviceState", "unknown" ) eq "unknown" or ReadingsVal( $name, "deviceState", "online" ) eq "online" ) && AttrVal( $name, "disable", 0 ) ne "1" && ReadingsVal( $bname, "fhemServerIP", "not set" ) ne "not set" && $hash->{APSSID} ) {
AMAD_statusRequest( $hash );
+ AMAD_checkDeviceState( $hash );
} else {
@@ -477,6 +480,8 @@ sub AMAD_ResponseProcessing($$) {
readingsBulkUpdate( $hash, "state", "active" ) if( ReadingsVal( $name, "state", 0 ) eq "initialized" );
readingsEndUpdate( $hash, 1 );
+ $hash->{helper}{deviceStateErrorCounter} = 0 if( $hash->{helper}{deviceStateErrorCounter} > 0 and ReadingsVal( $name, "deviceState", "offline") eq "online" );
+
return undef;
}
@@ -496,8 +501,10 @@ sub AMAD_Set($$@) {
$list .= "screenMsg ";
$list .= "ttsMsg ";
$list .= "volume:slider,0,1,15 ";
- $list .= "deviceState:online,offline ";
- $list .= "mediaPlayer:play,stop,next,back " if( ReadingsVal( $bname, "fhemServerIP", "none" ) ne "none");
+ $list .= "googleMusic:play,stop,next,back " if( ReadingsVal( $bname, "fhemServerIP", "none" ) ne "none");
+ $list .= "amazonMusic:play,stop,next,back " if( ReadingsVal( $bname, "fhemServerIP", "none" ) ne "none");
+ $list .= "spotifyMusic:play,stop,next,back " if( ReadingsVal( $bname, "fhemServerIP", "none" ) ne "none");
+ $list .= "tuneinRadio:play,stop,next,back " if( ReadingsVal( $bname, "fhemServerIP", "none" ) ne "none");
$list .= "screenBrightness:slider,0,1,255 ";
$list .= "screen:on,off,lock,unlock ";
$list .= "screenOrientation:auto,landscape,portrait " if( AttrVal( $name, "setScreenOrientation", "0" ) eq "1" );
@@ -516,14 +523,17 @@ sub AMAD_Set($$@) {
$list .= "volumeNotification:slider,0,1,7 ";
$list .= "vibrate:noArg ";
$list .= "sendIntent ";
+ $list .= "openCall ";
$list .= "currentFlowsetUpdate:noArg ";
$list .= "installFlowSource ";
if( lc $cmd eq 'screenmsg'
|| lc $cmd eq 'ttsmsg'
|| lc $cmd eq 'volume'
- || lc $cmd eq 'mediaplayer'
- || lc $cmd eq 'devicestate'
+ || lc $cmd eq 'googlemusic'
+ || lc $cmd eq 'amazonmusic'
+ || lc $cmd eq 'spotifymusic'
+ || lc $cmd eq 'tuneinradio'
|| lc $cmd eq 'screenbrightness'
|| lc $cmd eq 'screenorientation'
|| lc $cmd eq 'screenfullscreen'
@@ -544,6 +554,7 @@ sub AMAD_Set($$@) {
|| lc $cmd eq 'sendintent'
|| lc $cmd eq 'currentflowsetupdate'
|| lc $cmd eq 'installflowsource'
+ || lc $cmd eq 'opencall'
|| lc $cmd eq 'vibrate') {
Log3 $name, 5, "AMAD ($name) - set $name $cmd ".join(" ", @val);
@@ -551,7 +562,7 @@ sub AMAD_Set($$@) {
return "set command only works if state not equal initialized" if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "initialized");
return "Cannot set command, FHEM Device is disabled" if( AttrVal( $name, "disable", "0" ) eq "1" );
- return AMAD_SelectSetCmd( $hash, $cmd, @val ) if( @val ) && ( ReadingsVal( $name, "deviceState", "online" ) eq "offline" ) && ( lc $cmd eq 'devicestate' );
+ return "Cannot set command, FHEM Device is unknown" if( ReadingsVal( $name, "deviceState", "online" ) eq "unknown" );
return "Cannot set command, FHEM Device is offline" if( ReadingsVal( $name, "deviceState", "online" ) eq "offline" );
return AMAD_SelectSetCmd( $hash, $cmd, @val ) if( @val ) || ( lc $cmd eq 'statusrequest' ) || ( lc $cmd eq 'activatevoiceinput' ) || ( lc $cmd eq 'vibrate' ) || ( lc $cmd eq 'currentflowsetupdate' );
@@ -630,24 +641,15 @@ sub AMAD_SelectSetCmd($$@) {
return AMAD_HTTP_POST( $hash, $url );
}
- elsif( lc $cmd eq 'mediaplayer' ) {
+ elsif( lc $cmd eq 'googlemusic' or lc $cmd eq 'amazonmusic' or lc $cmd eq 'spotifymusic' or lc $cmd eq 'tuneinradio' ) {
my $btn = join( " ", @data );
- my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/mediaPlayer?button=$btn";
+ my $url = "http://" . $host . ":" . $port . "/fhem-amad/multimediaControl?mplayer=".$cmd."&button=".$btn;
return AMAD_HTTP_POST( $hash,$url );
}
- elsif( lc $cmd eq 'devicestate' ) {
-
- my $v = join( " ", @data );
-
- readingsSingleUpdate( $hash, $cmd, $v, 1 );
-
- return undef;
- }
-
elsif( lc $cmd eq 'screenbrightness' ) {
my $bri = join( " ", @data );
@@ -741,7 +743,7 @@ sub AMAD_SelectSetCmd($$@) {
elsif( lc $cmd eq 'statusrequest' ) {
- AMAD_GetUpdate( $hash );
+ AMAD_statusRequest( $hash );
return undef;
}
@@ -838,6 +840,17 @@ sub AMAD_SelectSetCmd($$@) {
return AMAD_HTTP_POST( $hash,$url );
}
+ elsif( lc $cmd eq 'opencall' ) {
+
+ my $string = join( " ", @data );
+ my ($callnumber, $time) = split( "[ \t][ \t]*", $string );
+ $time = "none" if( !$time );
+
+ my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/openCall?callnumber=".$callnumber."&hanguptime=".$time;
+
+ return AMAD_HTTP_POST( $hash,$url );
+ }
+
elsif( lc $cmd eq 'currentflowsetupdate' ) {
my $url = "http://" . $host . ":" . $port . "/fhem-amad/currentFlowsetUpdate";
@@ -1001,6 +1014,27 @@ sub AMAD_HTTP_POSTerrorHandling($$$) {
return undef;
}
+sub AMAD_checkDeviceState($) {
+
+ my ( $hash ) = @_;
+ my $name = $hash->{NAME};
+
+ Log3 $name, 4, "AMAD ($name) - AMAD_checkDeviceState: run Check";
+
+ RemoveInternalTimer( $hash );
+
+ if( ReadingsAge( $name, "deviceState", 90 ) > 90 ) {
+
+ AMAD_statusRequest( $hash ) if( $hash->{helper}{deviceStateErrorCounter} == 0 );
+ readingsSingleUpdate( $hash, "deviceState", "offline", 1 ) if( ReadingsAge( $name, "deviceState", 180) > 180 and $hash->{helper}{deviceStateErrorCounter} > 0 );
+ $hash->{helper}{deviceStateErrorCounter} = ( $hash->{helper}{deviceStateErrorCounter} + 1 );
+ }
+
+ InternalTimer( gettimeofday()+90, "AMAD_checkDeviceState", $hash, 0 );
+
+ Log3 $name, 4, "AMAD ($name) - AMAD_checkDeviceState: set new Timer";
+}
+
sub AMAD_CommBridge_Open($) {
my ( $hash ) = @_;
@@ -1057,7 +1091,7 @@ sub AMAD_CommBridge_Read($) {
my @data = split( '\R\R', $buf );
my $header = AMAD_Header2Hash( $data[0] );
- my $device = $header->{FHEMDEVICE};
+ my $device = $header->{FHEMDEVICE} if(defined($header->{FHEMDEVICE}));
my $dhash = $defs{$device};
my $response;
my $c;
@@ -1147,7 +1181,7 @@ sub AMAD_CommBridge_Read($) {
elsif ( $fhemcmd =~ /readingsval\b/ ) {
my $fhemCmd = $data[1];
- my @datavalue = split( ' ', $data[1] );
+ my @datavalue = split( ' ', $fhemCmd );
$response = ReadingsVal( $datavalue[0], $datavalue[1], $datavalue[2] );
$c = $hash->{CD};
@@ -1165,7 +1199,7 @@ sub AMAD_CommBridge_Read($) {
Log3 $bname, 4, "AMAD ($bname) - AMAD_CommBridge: receive fhem-function command";
- if( $fhemcmd =~ /^{.*}$/ ) {
+ if( $fhemCmd =~ /^{.*}$/ ) {
$response = $fhemCmd if( ReadingsVal( $bname, "expertMode", 0 ) eq "1" );
@@ -1265,7 +1299,7 @@ sub AMAD_decrypt($) {
How to use AMAD?
- install the "Automagic Premium" app from the Google Play store or use the test version from here
- - install the flowset 74_AMADautomagicFlowset$VERSION.xml from the directory $INSTALLFHEM/FHEM/lib/ on your Android device. Do not yet activate the flows.
+ - install the flowset 74_AMADautomagicFlowset$VERSION.xml from the directory $INSTALLFHEM/FHEM/lib/ on your Android device and activate.
Now you need to define a device in FHEM.
@@ -1277,10 +1311,10 @@ sub AMAD_decrypt($) {
Example:
- define WandTabletWohnzimmer AMAD 192.168.0.23 TuxNetAP@@OpaZuHause
+ define WandTabletWohnzimmer AMAD 192.168.0.23 TuxNetAP,Opa@@Zu@@Hause
- With this command two new AMAD devices in a room called AMAD are created. The parameter <IP-ADDRESS< defines the IP address of your Android device, parameter WLANAP-SSID defines the SSID(s) of the WLAN(s) from which the FHEM server can be reached. More than one SSID can be defined which need to be joined by two consequent "@". The second device created is the AMADCommBridge which serves as a communication device from each Android device to FHEM.
+ With this command two new AMAD devices in a room called AMAD are created. The parameter <IP-ADDRESS< defines the IP address of your Android device, parameter WLANAP-SSID defines the SSID(s) of the WLAN(s) from which the FHEM server can be reached. Multiple SSID can be defined. They need to be separated by a comma (,). If a SSID contains spaces replace these spaces by a double at-sign (@@). For Android devices connected by LAN use "usb-ethernet" as SSID. The second device created is the AMADCommBridge which serves as a communication device from each Android device to FHEM.
!!!Coming Soon!!! The communication port of each AMAD device may be set by the definition of the "port" attribute. One needs background knowledge of Automagic and HTTP requests as this port will be set in the HTTP request trigger of both flows, therefore the port also needs to be set there.
The communication port of the AMADCommBridge device can easily be changed within the attribut "port".
@@ -1292,7 +1326,6 @@ sub AMAD_decrypt($) {
Please us the following command for configuration of the FHEM server IP address in the AMADCommBridge: set AMADCommBridge fhemServerIP <FHEM-IP>.
Additionally the expertMode may be configured. By this setting a direct communication with FHEM will be established without the restriction of needing to make use of a notify to execute set commands.
- NOW please activate the flows in Automagic!!!
You are finished now! After 15 seconds latest the readings of your AMAD Android device should be updated. Consequently each 15 seconds a status request will be sent. If the state of your AMAD Android device does not change to "active" over a longer period of time one should take a look into the log file for error messages.
@@ -1307,10 +1340,11 @@ sub AMAD_decrypt($) {
connectedBTdevices - list of all devices connected via bluetooth
connectedBTdevicesMAC - list of MAC addresses of all devices connected via bluetooth
currentMusicAlbum - currently playing album of mediaplayer
+ currentMusicApp - currently playing player app
currentMusicArtist - currently playing artist of mediaplayer
currentMusicTrack - currently playing song title of mediaplayer
daydream - on/off, daydream currently active
- deviceState - state of Android devices. !!!It does not show the real state!!! deviceState must be set manually by the command "set DEVICE deviceState" e.g. by your PRESENCE function.
In case deviceState is set to "offline" no set commands can be issued.
+ deviceState - state of Android devices. unknown, online, offline.
dockingState - undocked/docked, Android device in docking station
flow_SetCommands - active/inactive, state of SetCommands flow
flow_informations - active/inactive, state of Informations flow
@@ -1345,17 +1379,18 @@ sub AMAD_decrypt($) {
Set
- activateVoiceInput - start voice input on Android device
+ - amazonMusic - play/stop/next/back , controlling the amazon music media player
- bluetooth - on/off, switch bluetooth on/off
- clearNotificationBar - All/Automagic, deletes all or only Automagic notifications in status bar
- currentFlowsetUpdate - start flowset update on Android device
- - deviceState - online/offline, sets device state . For more information see section Readings
+ - googleMusic - play/stop/next/back , controlling the google play music media player
- installFlowSource - install a Automagic flow on device, XML file must be stored in /tmp/ with extension xml. Example: set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml
- - mediaPlayer - play/stop/next/back , controlling the standard media player
- nextAlarmTime - sets the alarm time. Only valid for the next 24 hours.
- - notifySndFile - start playing the defined media file on the Android device The media file must be stored in /storage/emulated/0/Notifications/
+ - notifySndFile - plays a media-file which by default needs to be stored in the folder "/storage/emulated/0/Notifications/" of the Android device. You may use the attribute setNotifySndFilePath for defining a different folder.
- screenBrightness - 0-255, set screen brighness
- screenMsg - display message on screen of Android device
- sendintent - send intent string Example: set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, first parameter contains the action, second parameter contains the extra. At most two extras can be used.
+ - spotifyMusic - play/stop/next/back , controlling the spotify media player
- statusRequest - Get a new status report of Android device. Not all readings can be updated using a statusRequest as some readings are only updated if the value of the reading changes.
- timer - set a countdown timer in the "Clock" stock app. Only seconds are allowed as parameter.
- ttsMsg - send a message which will be played as voice message
@@ -1416,7 +1451,7 @@ sub AMAD_decrypt($) {
Wie genau verwendet man nun AMAD?
- man installiert die App "Automagic Premium" aus dem PlayStore oder die Testversion von hier
- - dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät. NOCH NICHT die Flows aktivieren
+ - dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät und aktiviert die Flows.
Es muß noch ein Device in FHEM anlegt werden.
@@ -1428,7 +1463,7 @@ sub AMAD_decrypt($) {
Beispiel:
- define WandTabletWohnzimmer AMAD 192.168.0.23 TuxNetAP@@OpaZuHause
+ define WandTabletWohnzimmer AMAD 192.168.0.23 TuxNetAP,Opa@@Zu@@Hause
Diese Anweisung erstellt zwei neues AMAD-Device im Raum AMAD.Der Parameter <IP-ADRESSE> legt die IP Adresse des Android Gerätes fest und der Parameter WLANAP-SSID die SSID Deines WLAN's. Es können mehrere SSID's mit angegeben werden, welche dann durch Komma getrennt sein müssen. Haben die SSID's Leerzeichen im Namen werde die Leerzeichen durch 2 @ aufgefüllt. Gibt es Androidgeräte welche nicht über WLAN sondern USB-Ethernet angeschlossen sind, ist die WLANAP-SSID mit "usb-ethernet" zu benennen
@@ -1459,10 +1494,11 @@ sub AMAD_decrypt($) {
- connectedBTdevices - eine Liste der verbundenen Gerät
- connectedBTdevicesMAC - eine Liste der MAC Adressen aller verbundender BT Geräte
- currentMusicAlbum - aktuell abgespieltes Musikalbum des verwendeten Mediaplayers
+ - currentMusicApp - aktuell verwendeter Mediaplayers
- currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers
- currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers
- daydream - on/off, Daydream gestartet oder nicht
- - deviceState - Status des Androidgerätes. !!!Gibt nicht den tatsächlichen Status des Gerätes wieder!!! deviceState muss von Hand selbst gesetzt werden. (set DEVICE deviceState) z.B. über die Anwesenheitskontrolle.
Ist Offline gesetzt, können keine set Befehle abgesetzt werden.
+ - deviceState - Status des Androidgerätes. unknown, online, offline.
- dockingState - undocked/docked Status ob sich das Gerät in einer Dockinstation befindet.
- flow_SetCommands - active/inactive, Status des SetCommands Flow
- flow_informations - active/inactive, Status des Informations Flow
@@ -1497,17 +1533,17 @@ sub AMAD_decrypt($) {
Set
- activateVoiceInput - aktiviert die Spracheingabe
+ - amazonMusic - play, stop, next, back ,steuert den Amazon Musik Mediaplayer
- bluetooth - on/off, aktiviert/deaktiviert Bluetooth
- clearNotificationBar - All,Automagic, löscht alle Meldungen oder nur die Automagic Meldungen in der Statusleiste
- currentFlowsetUpdate - fürt ein Flowsetupdate auf dem Device durch
- - deviceState - online/offline, setzt den Device Status . mehr Info unter Readings
+ - googleMusic - play, stop, next, back ,steuert den Google Play Musik Mediaplayer
- installFlowSource - installiert einen Flow auf dem Device, das XML File muss unter /tmp/ liegen und die Endung xml haben. Bsp: set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml
- - mediaPlayer - play, stop, next, back ,steuert den Standard Mediaplayer
- nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der nächsten 24Std.
- - notifySndFile - spielt die angegebene Mediadatei auf dem Androidgerät ab. Die aufzurufende Mediadatei muß sich im Ordner /storage/emulated/0/Notifications/ befinden.
- screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.
- screenMsg - versendet eine Bildschirmnachricht
- sendintent - sendet einen Intentstring Bsp: set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, der erste Befehl ist die Aktion und der zweite das Extra. Es können immer zwei Extras mitgegeben werden.
+ - spotifyMusic - play, stop, next, back ,steuert den Spotify Mediaplayer
- statusRequest - Fordert einen neuen Statusreport beim Device an. Es können nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Statusänderung ihren Status wieder.
- timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es können nur Sekunden angegeben werden.
- ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird
@@ -1519,6 +1555,7 @@ sub AMAD_decrypt($) {
Set abhängig von gesetzten Attributen
- changetoBtDevice - wechselt zu einem anderen Bluetooth Gerät. Attribut setBluetoothDevice muß gesetzt sein. Siehe Hinweis unten!
+ - notifySndFile - spielt die angegebene Mediadatei auf dem Androidgerät ab. Die aufzurufende Mediadatei sollte sich im Ordner /storage/emulated/0/Notifications/ befinden. Ist dies nicht der Fall kann man über das Attribut setNotifySndFilePath einen Pfad vorgeben.
- openApp - öffnet eine ausgewählte App. Attribut setOpenApp
- openURL - öffnet eine URL im Standardbrowser, sofern kein anderer Browser über das Attribut setOpenUrlBrowser ausgewählt wurde. Bsp: attr Tablet setOpenUrlBrowser de.ozerov.fully|de.ozerov.fully.MainActivity, das erste ist der Package Name und das zweite der Class Name
- screen - on/off/lock/unlock schaltet den Bildschirm ein/aus oder sperrt/entsperrt ihn, in den Automagic Einstellungen muss "Admin Funktion" gesetzt werden sonst funktioniert "Screen off" nicht. Attribut setScreenOnForTimer ändert die Zeit wie lange das Display an bleiben soll!
diff --git a/fhem/FHEM/lib/74_AMADautomagicFlowset_2.0.5.xml b/fhem/FHEM/lib/74_AMADautomagicFlowset_2.2.0.xml
similarity index 67%
rename from fhem/FHEM/lib/74_AMADautomagicFlowset_2.0.5.xml
rename to fhem/FHEM/lib/74_AMADautomagicFlowset_2.2.0.xml
index 41c7506c0..3c2241df5 100644
--- a/fhem/FHEM/lib/74_AMADautomagicFlowset_2.0.5.xml
+++ b/fhem/FHEM/lib/74_AMADautomagicFlowset_2.2.0.xml
@@ -66,6 +66,24 @@
false
false
+
+ false
+ com.amazon.mp3.metachanged
+ true
+ com.amazon.mp3.metachanged
+
+
+
+
+
+
+
+ global_artist = getString("com.amazon.mp3.artist");
+global_track = getString("com.amazon.mp3.track");
+global_album = getString("com.amazon.mp3.album");
+global_musicapp = "amazonmusic";
+ false
+
false
com.android.music.metachanged
@@ -80,24 +98,8 @@
global_artist = getString("artist");
global_track = getString("track");
-global_album = getString("album");
- false
-
-
- false
- com.android.music.playstatechanged
- true
- com.android.music.playstatechanged
-
-
-
-
-
-
-
- global_artist = getString("artist");
-global_track = getString("track");
-global_album = getString("album");
+global_album = getString("album");
+global_musicapp = "googlemusic"
false
@@ -258,6 +260,14 @@ irname=getString("name")
8090
true
+
+ false
+ HTTP Request: /fhem-amad/multimediaControl
+ true
+ /fhem-amad/multimediaControl*
+ 8090
+ true
+
false
HTTP Request: /fhem-amad/setCommands/*
@@ -266,6 +276,28 @@ irname=getString("name")
8090
true
+
+ false
+ Periodischer Timer: alle 30s
+ true
+ 30000
+ true
+ false
+ false
+ Mon
+ Tue
+ Wed
+ Thu
+ Fri
+ Sat
+ Sun
+ 8
+ 0
+ 17
+ 0
+ true
+ false
+
true
Sprachbefehl angefordert
@@ -431,6 +463,11 @@ irname=getString("name")
Expression: All
param_app == "All"
+
+ false
+ Expression: Amazon Music Player
+ param_mplayer == "amazonMusic"
+
false
Expression: Automagic
@@ -487,6 +524,11 @@ or global_deviceport!= {header_dport}
Expression: global_fhemip != null or header_fhemip != null
global_fhemip != null or header_fhemip != null
+
+ false
+ Expression: Google Music Player
+ param_mplayer == "googleMusic"
+
false
Expression: installFlow"
@@ -497,11 +539,6 @@ or global_deviceport!= {header_dport}
Expression: keyguard == "locked"
keyguard == "locked"
-
- false
- Expression: mediaPlayer"
- request_path == "/fhem-amad/setCommands/mediaPlayer"
-
false
Expression: notifysnd"
@@ -512,6 +549,11 @@ or global_deviceport!= {header_dport}
Expression: openApp"
request_path == "/fhem-amad/setCommands/openApp"
+
+ false
+ Expression: openCall"
+ request_path == "/fhem-amad/setCommands/openCall"
+
false
Expression: openURL"
@@ -572,6 +614,11 @@ or global_deviceport!= {header_dport}
Expression: param_notifyfile == "RedAlert.mp3"
param_notifyfile == "RedAlert.mp3"
+
+ false
+ Expression: param_option
+ param_hanguptime != "none"
+
true
Expression: param_orientation == "auto"
@@ -687,6 +734,11 @@ or global_deviceport!= {header_dport}
Expression: Shutdown
param_syscmd == "shutdown"
+
+ false
+ Expression: Spotify Music Player
+ param_mplayer == "spotifyMusic"
+
false
Expression: System Command"
@@ -719,8 +771,8 @@ or global_deviceport!= {header_dport}
true
- Expression: trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged"
- trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged"
+ Expression: trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged" or trigger == "com.amazon.mp3.metachanged"
+ trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged" or trigger == "com.amazon.mp3.metachanged"
true
@@ -777,6 +829,11 @@ or global_deviceport!= {header_dport}
Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*"
trigger == "HTTP Request: /fhem-amad/setCommands/*"
+
+ true
+ Expression: trigger == "Periodischer Timer: alle 30s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/"
+ trigger == "Periodischer Timer: alle 30s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/"
+
true
Expression: trigger == "Sprachbefehl angefordert"
@@ -807,6 +864,11 @@ or global_deviceport!= {header_dport}
Expression: ttsMsg"
request_path == "/fhem-amad/setCommands/ttsMsg"
+
+ false
+ Expression: TuneIn Radio
+ param_mplayer == "tuneinRadio"
+
true
Expression: udef_trigger == "setLockPin"
@@ -949,23 +1011,71 @@ FHEMCMD: setreading
/storage/emulated/0/Download/file.bin
false
+
+ true
+ Anruf beenden
+
false
App Starten: App
{param_app}
+
+ true
+ Audio Player steuern: Medienknopf Play (Amazon Music)
+ true
+ LAUNCH
+ KEYCODE_MEDIA_PLAY
+ true
+ com.amazon.mp3
+ com.amazon.mp3.playback.service.HeadsetControlsReceiver
+ Amazon Music
+
true
Audio Player steuern: Medienknopf Play (Google Play Musik)
true
- TOGGLE_PAUSE
+ LAUNCH
KEYCODE_MEDIA_PLAY
true
com.google.android.music
com.google.android.music.playback.MediaButtonIntentReceiver
Google Play Musik
+
+ true
+ Audio Player steuern: Medienknopf Play (Spotify)
+ true
+ LAUNCH
+ KEYCODE_MEDIA_PLAY
+ true
+ com.spotify.music
+ com.spotify.music.internal.receiver.MediaButtonReceiver
+ Spotify
+
+
+ true
+ Audio Player steuern: Medienknopf Play (TuneIn Radio)
+ true
+ LAUNCH
+ KEYCODE_MEDIA_PLAY
+ true
+ tunein.player
+ tunein.ui.helpers.MediaButtonIntentReceiver
+ TuneIn Radio
+
+
+ true
+ Audio Player steuern: Medienknopf Stopp (Amazon Music)
+ true
+ STOP
+ KEYCODE_MEDIA_STOP
+ true
+ com.amazon.mp3
+ com.amazon.mp3.playback.service.HeadsetControlsReceiver
+ Amazon Music
+
true
Audio Player steuern: Medienknopf Stopp (Google Play Musik)
@@ -977,28 +1087,116 @@ FHEMCMD: setreading
com.google.android.music.playback.MediaButtonIntentReceiver
Google Play Musik
+
+ true
+ Audio Player steuern: Medienknopf Stopp (Spotify)
+ true
+ STOP
+ KEYCODE_MEDIA_STOP
+ true
+ com.spotify.music
+ com.spotify.music.internal.receiver.MediaButtonReceiver
+ Spotify
+
+
+ true
+ Audio Player steuern: Medienknopf Stopp (TuneIn Radio)
+ true
+ STOP
+ KEYCODE_MEDIA_STOP
+ true
+ tunein.player
+ tunein.ui.helpers.MediaButtonIntentReceiver
+ TuneIn Radio
+
+
+ true
+ Audio Player steuern: Medienknopf Weiter (Amazon Music)
+ true
+ NEXT
+ KEYCODE_MEDIA_NEXT
+ true
+ com.amazon.mp3
+ com.amazon.mp3.playback.service.HeadsetControlsReceiver
+ Amazon Music
+
true
Audio Player steuern: Medienknopf Weiter (Google Play Musik)
true
- LAUNCH
+ NEXT
KEYCODE_MEDIA_NEXT
true
com.google.android.music
com.google.android.music.playback.MediaButtonIntentReceiver
Google Play Musik
+
+ true
+ Audio Player steuern: Medienknopf Weiter (Spotify)
+ true
+ NEXT
+ KEYCODE_MEDIA_NEXT
+ true
+ com.spotify.music
+ com.spotify.music.internal.receiver.MediaButtonReceiver
+ Spotify
+
+
+ true
+ Audio Player steuern: Medienknopf Weiter (TuneIn Radio)
+ true
+ NEXT
+ KEYCODE_MEDIA_NEXT
+ true
+ tunein.player
+ tunein.ui.helpers.MediaButtonIntentReceiver
+ TuneIn Radio
+
+
+ true
+ Audio Player steuern: Medienknopf Zurück (Amazon Music)
+ true
+ PREVIOUS
+ KEYCODE_MEDIA_PREVIOUS
+ true
+ com.amazon.mp3
+ com.amazon.mp3.playback.service.HeadsetControlsReceiver
+ Amazon Music
+
true
Audio Player steuern: Medienknopf Zurück (Google Play Musik)
true
- LAUNCH
+ PREVIOUS
KEYCODE_MEDIA_PREVIOUS
true
com.google.android.music
com.google.android.music.playback.MediaButtonIntentReceiver
Google Play Musik
+
+ true
+ Audio Player steuern: Medienknopf Zurück (Spotify)
+ true
+ PREVIOUS
+ KEYCODE_MEDIA_PREVIOUS
+ true
+ com.spotify.music
+ com.spotify.music.internal.receiver.MediaButtonReceiver
+ Spotify
+
+
+ true
+ Audio Player steuern: Medienknopf Zurück (TuneIn Radio)
+ true
+ PREVIOUS
+ KEYCODE_MEDIA_PREVIOUS
+ true
+ tunein.player
+ tunein.ui.helpers.MediaButtonIntentReceiver
+ TuneIn Radio
+
false
Automagic State
@@ -1289,6 +1487,27 @@ FHEMCMD: setreading
60000
true
FHEMDEVICE: {global_fhemdevice}
+FHEMCMD: setreading
+ true
+ response
+ /storage/emulated/0/Download/file.bin
+ false
+
+
+ false
+ Device State
+ http://{global_fhemip}:{global_bridgeport}
+ false
+ false
+
+ POST
+ GENERAL_TEXT
+ text/plain
+ deviceState@@online@@@@
+ @@@@readingsNameXYZ@@readingsValueABC
+ 60000
+ true
+ FHEMDEVICE: {global_fhemdevice}
FHEMCMD: setreading
true
response
@@ -1815,6 +2034,12 @@ FHEMCMD: setreading
false
false
+
+ true
+ Nummer anrufen: {param_callnumber}
+ {param_callnumber}
+ true
+
false
Nächster Alarm
@@ -1857,6 +2082,13 @@ FHEMCMD: setreading
true
false
+
+ true
+ Pause: {param_hanguptime}s (Gerät wach halten)
+ {param_hanguptime}s
+ true
+ false
+
false
Prüfe und setze Bridgeport Variable
@@ -1896,7 +2128,7 @@ if (header_dport != null or header_dport != {global_deviceport}) {
POST
GENERAL_TEXT
text/plain
- currentMusicTrack@@{global_track}@@@@currentMusicAlbum@@{global_album}@@@@currentMusicArtist@@{global_artist}@@@@
+ currentMusicTrack@@{global_track}@@@@currentMusicAlbum@@{global_album}@@@@currentMusicArtist@@{global_artist}@@@@currentMusicApp@@{global_musicapp}@@@@
@@@@readingsNameXYZ@@readingsValueABC
60000
true
@@ -2001,8 +2233,8 @@ FHEMCMD: setreading
true
- Script: amad_flowset_version = "2.0.5"
-
+ Script: amad_flowset_version = "2.2.0"
+
true
@@ -2047,10 +2279,11 @@ connected_devices_addresses = "null"
true
- Script: global_artist = "no soundplayer active"; global_track = "no soundplayer active"; global_album = "no soundplayer active";
-
+ Script: global_artist = "no player active"; global_track = "no player active"; global_album = "no player active"; global_musicapp = "no player active";
+
true
@@ -2410,7 +2643,7 @@ FHEMCMD: voiceinputvalue
POST
GENERAL_TEXT
text/plain
- powerLevel@@{battery_percentage}@@@@powerPlugged@@{battery_plugged}@@@@
+ powerLevel@@{battery_percentage,numberformat,0}@@@@powerPlugged@@{battery_plugged}@@@@
@@@@readingsNameXYZ@@readingsValueABC
60000
true
@@ -2439,17 +2672,143 @@ FHEMCMD: setreading
Informations
- AMAD2 Info/Control Flowset v2.0.5
+ AMAD2 Info/Control Flowset v2.2.0
true
PARALLEL
900
-
+ Expression: trigger == "Daydream Status: Gestartet"
+ Script: setCommandFlow_state = "inaktiv"
+ Script: daydream_state = "on"
+ Script: daydream_state = "off"
+ Script: next_alarmday = "{next_alarm,dateformat,c}"
+ Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"
+ Initialisiere Variable Nächster Alarm: next_alarm
+ Expression: getAndroidSDKVersion() >= "19"
+ Script: runTask = "1"
+ Script: runTask = "0"
+ Script: runTask = "not supported android version"
+ Script: runTask = "null"
+ Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker"
+ Expression: trigger == "Systemeinstellung verändert: System next_alarm"
+ Expression: trigger == "Systemeinstellung verändert: System screen_brightness"
+ Script: airplanemode = "off"
+ Expression: airpcount < 11
+ Script: keyguard = "unlocked"
+ Script: screen_state = "off {keyguard}"
+ Display Orientierung: Portrait
+ Script: screen_orientation = "portrait"
+ Script: screen_orientation = "landscape"
+ Display automatisch drehen eingeschaltet
+ Script: dock_state = "docked"
+ Script: dock_state = "undocked"
+ Script: keyguardSet = "1"
+ Script: keyguardSet = "0"
+ Script: screen_orientation_mode = "auto"
+ Script: screen_orientation_mode = "manual"
+ Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus"
+ Script: setCommandFlow_state = "aktiv"
+ Flow Aktiv: SetCommands
+ Setze Flow Status: Aktivieren SetCommands
+ Script: screen_state = "on {keyguard}"
+ Script: scrcount = 0
+ Script: keyguard = "locked"
+ Display eingeschaltet
+ Keyguard gesperrt
+ Expression: scrcount < 5
+ Script: scrcount = scrcount + 1
+ Pause: 2s (Gerät wach halten)
+ Expression: keyguard == "locked"
+ 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"
+ Musik Aktiv
+ Bluetooth eingeschaltet
+ Script: bluetooth_state = "off"
+ Script: bluetooth_state = "on"
+ Bluetooth Gerät verbunden: Beliebiges Geräte
+ Script: connected_devices_names = "null"; connected_devices_addresses = "null"
+ Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt"
+ Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle"
+ Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff"
+ Benachrichtigung in Statusbar angezeigt: Automagic
+ Expression: getAndroidSDKVersion() >= "19"
+ Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff"
+ Script: notification_text = "not supported from your device"
+ Benachrichtigung in Statusbar angezeigt: WhatsApp
+ Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE"
+ Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp"
+ Check run Task
+ Screen State
+ Bluetooth Status
+ Bluetooth Device Status
+ Notification Volume
+ Lautstärke / Volume
+ Nächster Alarm
+ Screen Brightness
+ Screen Orientation
+ Dock State
+ Incoming WhatsApp Message
+ IntentRadio Status
+ Flowsetversion
+ Flow Status SetCommands
+ Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin"
+ Script: airpcount = airpcount + 1
+ 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"
+ 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" }
+ Next Alarm State
+ Expression: global_apssid != "usb-ethernet"
+ Script: airpcount = 0
+ Pause: 2s (Gerät wach halten)
+ Expression: global_apssid != "usb-ethernet"
+ WLAN Verbunden: {global_apssid}
+ Dock Status: Docked
+ Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic"
+ Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked"
+ Expression: global_activetask != null
+ Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Status: Schaltet ein, Ein"
+ App Task läuft: {global_activetask} (neuster)
+ Automagic State
+ Script: notification_text = "not supported from your device"
+ Expression: global_fhemip != null or header_fhemip != null
+ Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2
+ Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2
+ Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution)
+ Script: volume = {volumeBT}
+ Script: volume = {volumeSP}
+ Initialisiere Variable Systemeinstellung: screenBrightness
+ Initialisiere Variable Systemeinstellung: volumeNotification
+ Expression: global_bridgeport == null or global_bridgeport != {header_bport} or global_fhemip == null or global_fhemip != {header_fhemip} or global_fhemdevice == null or global_fhemdevice != {header_fhemdevice} or global_activetask == null or global_activetask != {header_activetask} or global_apssid == null or global_apssid != {header_apssid} or global_deviceport != null or global_deviceport!= {header_dport}
+ Script: androidVersion = "not supported funktion"
+ Android Version
+ Expression: trigger == "Flugmodus: Aus"
+ Expression: package_name == {global_activetask}
+ Expression: trigger == "App Task Beendet"
+ Keyguard mit Sicherheit
+ Daydream State
+ Expression: getAndroidSDKVersion() >= "19"
+ Get Android Version
+ Expression: udef_trigger == "setLockPin"
+ Incoming Call
+ KeyGuard Set
+ Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/"
+ Expression: trigger == "Periodischer Timer: alle 30s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/"
+ Device State
+ Stromversorgung: Angeschlossen
+ Expression: trigger == "Akku Ladestand: grösser als 0%"
+ Stromversorgung und Akkustand
+ Prüfe und setze globale Variablen
+ WLAN Verbunden: {global_apssid}
+ Expression: trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged" or trigger == "com.amazon.mp3.metachanged"
+ Script: global_artist = "no player active"; global_track = "no player active"; global_album = "no player active"; global_musicapp = "no player active";
+ Airplainemode
+ Reading Music Metachanged.2
+ Pause: 3s (Gerät wach halten)
+
Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE
Stromversorgung: Angeschlossen
Genereller Broadcast: wenn org.smblott.intentradio.STATE
+ com.android.music.metachanged
Systemeinstellung verändert: System volume_music_headphone
- Bluetooth Status: Schaltet ein, Ein
Stromversorgung: Entfernt
+ Bluetooth Status: Schaltet ein, Ein
Display Status: Aus
Display Orientierung: Portrait
Genereller Broadcast: wenn com.android.deskclock.ALARM_SNOOZE
@@ -2459,342 +2818,302 @@ FHEMCMD: setreading
Daydream Status: Gestoppt
Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic
Eingehender Anruf. Status: Klingelt, Nummern: Alle
- Systemeinstellung verändert: System volume_music_speaker
- Systemeinstellung verändert: System screen_brightness
Display Status: Ein
+ Systemeinstellung verändert: System screen_brightness
+ Systemeinstellung verändert: System volume_music_speaker
Daydream Status: Gestartet
Akku Ladestand: grösser als 0%
Dock Event: Docked
- com.android.music.playstatechanged
Systemeinstellung verändert: System volume_music_bt_a2dp
HTTP Request: /fhem-amad/deviceInfo/
+ com.amazon.mp3.metachanged
Genereller Broadcast: wenn com.android.deskclock.ALARM_ALERT
- com.android.music.metachanged
- Systemeinstellung verändert: System next_alarm
Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic
+ Systemeinstellung verändert: System next_alarm
App Task Beendet
Dock Event: Undocked
Display Orientierung: Landscape
Flugmodus: Aus
Systemeinstellung verändert: System volume_ring_speaker
+ Periodischer Timer: alle 30s
- Expression: trigger == "Daydream Status: Gestartet"
- Script: setCommandFlow_state = "inaktiv"
- Script: daydream_state = "on"
- Script: daydream_state = "off"
- Script: next_alarmday = "{next_alarm,dateformat,c}"
- Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"
- Initialisiere Variable Nächster Alarm: next_alarm
- Expression: getAndroidSDKVersion() >= "19"
- Script: runTask = "1"
- Script: runTask = "0"
- Script: runTask = "not supported android version"
- Script: runTask = "null"
- Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker"
- Expression: trigger == "Systemeinstellung verändert: System next_alarm"
- Expression: trigger == "Systemeinstellung verändert: System screen_brightness"
- Script: airplanemode = "off"
- Expression: airpcount < 11
- Script: keyguard = "unlocked"
- Script: screen_state = "off {keyguard}"
- Display Orientierung: Portrait
- Script: screen_orientation = "portrait"
- Script: screen_orientation = "landscape"
- Display automatisch drehen eingeschaltet
- Script: dock_state = "docked"
- Script: dock_state = "undocked"
- Script: keyguardSet = "1"
- Script: keyguardSet = "0"
- Script: screen_orientation_mode = "auto"
- Script: screen_orientation_mode = "manual"
- Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus"
- Script: setCommandFlow_state = "aktiv"
- Flow Aktiv: SetCommands
- Setze Flow Status: Aktivieren SetCommands
- Script: screen_state = "on {keyguard}"
- Script: scrcount = 0
- Script: keyguard = "locked"
- Display eingeschaltet
- Keyguard gesperrt
- Expression: scrcount < 5
- Script: scrcount = scrcount + 1
- Pause: 2s (Gerät wach halten)
- Expression: keyguard == "locked"
- Expression: trigger == "Akku Ladestand: grösser als 0%"
- 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"
- Expression: trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged"
- Pause: 1s (Gerät wach halten)
- Musik Aktiv
- Bluetooth eingeschaltet
- Script: bluetooth_state = "off"
- Script: bluetooth_state = "on"
- Bluetooth Gerät verbunden: Beliebiges Geräte
- Script: connected_devices_names = "null"; connected_devices_addresses = "null"
- Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt"
- Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle"
- Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff"
- Benachrichtigung in Statusbar angezeigt: Automagic
- Expression: getAndroidSDKVersion() >= "19"
- Script: notification_text = "Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff"
- Script: notification_text = "not supported from your device"
- Benachrichtigung in Statusbar angezeigt: WhatsApp
- Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE"
- Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp"
- Check run Task
- Screen State
- Reading Music Metachanged.2
- Bluetooth Status
- Bluetooth Device Status
- Notification Volume
- Lautstärke / Volume
- Nächster Alarm
- Stromversorgung und Akkustand
- Daydream State
- Screen Brightness
- Screen Orientation
- Dock State
- Incoming Call
- Incoming WhatsApp Message
- IntentRadio Status
- Flowsetversion
- Flow Status SetCommands
- Expression: getAndroidSDKVersion() >= "19"
- Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin"
- Airplainemode
- Script: airpcount = airpcount + 1
- 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"
- 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" }
- Next Alarm State
- WLAN Verbunden: {global_apssid}
- Expression: global_apssid != "usb-ethernet"
- Script: airpcount = 0
- Pause: 2s (Gerät wach halten)
- Expression: global_apssid != "usb-ethernet"
- WLAN Verbunden: {global_apssid}
- Dock Status: Docked
- Expression: udef_trigger == "setLockPin"
- Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic"
- Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked"
- Expression: global_activetask != null
- Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Status: Schaltet ein, Ein"
- App Task läuft: {global_activetask} (neuster)
- Script: global_artist = "no soundplayer active"; global_track = "no soundplayer active"; global_album = "no soundplayer active";
- Automagic State
- Script: notification_text = "not supported from your device"
- Expression: global_fhemip != null or header_fhemip != null
- Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/"
- Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2
- Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2
- Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution)
- Script: volume = {volumeBT}
- Script: volume = {volumeSP}
- Initialisiere Variable Systemeinstellung: screenBrightness
- Initialisiere Variable Systemeinstellung: volumeNotification
- Stromversorgung: Angeschlossen
- Expression: global_bridgeport == null or global_bridgeport != {header_bport} or global_fhemip == null or global_fhemip != {header_fhemip} or global_fhemdevice == null or global_fhemdevice != {header_fhemdevice} or global_activetask == null or global_activetask != {header_activetask} or global_apssid == null or global_apssid != {header_apssid} or global_deviceport != null or global_deviceport!= {header_dport}
- Prüfe und setze globale Variablen
- Get Android Version
- Script: androidVersion = "not supported funktion"
- Android Version
- Expression: trigger == "Flugmodus: Aus"
- Expression: package_name == {global_activetask}
- Expression: trigger == "App Task Beendet"
- Script: amad_flowset_version = "2.0.5"
- KeyGuard Set
- Keyguard mit Sicherheit
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Script: amad_flowset_version = "2.2.0"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MultimediaControl
+ AMAD2 Info/Control Flowset v2.2.0
+ true
+ PARALLEL
+
+ HTTP Request: /fhem-amad/multimediaControl
+
+ Expression: param_button == "play"
+ Expression: param_button == "back"
+ Expression: param_button == "next"
+ Expression: param_button == "stop"
+ Expression: param_button == "play"
+ Expression: param_button == "back"
+ Expression: param_button == "next"
+ Expression: param_button == "stop"
+ Expression: param_button == "play"
+ Expression: param_button == "back"
+ Expression: param_button == "next"
+ Expression: param_button == "stop"
+ Audio Player steuern: Medienknopf Stopp (Amazon Music)
+ Audio Player steuern: Medienknopf Play (Amazon Music)
+ Audio Player steuern: Medienknopf Weiter (Amazon Music)
+ Audio Player steuern: Medienknopf Zurück (Amazon Music)
+ Audio Player steuern: Medienknopf Stopp (Spotify)
+ Audio Player steuern: Medienknopf Play (Spotify)
+ Audio Player steuern: Medienknopf Weiter (Spotify)
+ Audio Player steuern: Medienknopf Zurück (Spotify)
+ Audio Player steuern: Medienknopf Stopp (TuneIn Radio)
+ Audio Player steuern: Medienknopf Play (TuneIn Radio)
+ Audio Player steuern: Medienknopf Weiter (TuneIn Radio)
+ Audio Player steuern: Medienknopf Zurück (TuneIn Radio)
+ Audio Player steuern: Medienknopf Weiter (Google Play Musik)
+ Audio Player steuern: Medienknopf Play (Google Play Musik)
+ Audio Player steuern: Medienknopf Stopp (Google Play Musik)
+ Expression: param_button == "stop"
+ Expression: param_button == "play"
+ Expression: param_button == "next"
+ Expression: param_button == "back"
+ Audio Player steuern: Medienknopf Zurück (Google Play Musik)
+ Expression: Google Music Player
+ Expression: Spotify Music Player
+ Expression: TuneIn Radio
+ Expression: Amazon Music Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SetCommands
- AMAD2 Info/Control Flowset v2.0.5
+ AMAD2 Info/Control Flowset v2.2.0
true
QUEUE
900
@@ -2814,316 +3133,308 @@ FHEMCMD: setreading
Expression: param_orientation == "landscape"
Setze Vollbild Modus: Navigation nicht anzeigen
Setze Vollbild Modus: Auf Default zurücksetzen
- Expression: param_button == "back"
- Expression: param_button == "next"
- Setze Display Orientierung: Auf Default zurücksetzen
- Expression: param_button == "play"
- Expression: mediaPlayer"
- Expression: param_button == "stop"
- Expression: param_screen=="off"
- Expression: setScreenOnOff"
- Flow Aktiv: Informations
- Expression: ttsMsg"
- Display automatisch drehen ein-/ausschalten: Aus
- Display automatisch drehen ein-/ausschalten: Ein
- Expression: setScreenOrientation"
- Expression: param_fullscreen == "off"
- Expression: param_fullscreen == "on"
- Expression: setBluetooth"
- Expression: param_bluetooth == "off"
- Expression: param_bluetooth == "on"
- Bluetooth ein-/ausschalten: Ein
- Script: informationFlow_state = "inaktiv"
- Bluetooth eingeschaltet
- Bluetooth Gerät verbinden/trennen: Trennen Advanced Audio Distribution {param_btdeviceone}
- Bluetooth Gerät verbinden/trennen: Trennen Eingabegerät {param_btdeviceone}
- Bluetooth Gerät verbinden/trennen: Trennen Personal Area Network {param_btdeviceone}
- Bluetooth Gerät verbinden/trennen: Trennen Advanced Audio Distribution {param_btdevicetwo}
- Bluetooth Gerät verbinden/trennen: Trennen Eingabegerät {param_btdevicetwo}
- Bluetooth Gerät verbinden/trennen: Trennen Headset {param_btdeviceone}
- Bluetooth Gerät verbinden/trennen: Trennen Headset {param_btdevicetwo}
- Bluetooth Gerät verbinden/trennen: Trennen Personal Area Network {param_btdevicetwo}
- Pause: 3s (Gerät wach halten)
- Bluetooth Gerät verbinden/trennen: Verbinden Advanced Audio Distribution {param_swtobtdevicemac}
- Pause: 2s (Gerät wach halten)
- Expression: setBTDevice"
- Audio Player steuern: Medienknopf Play (Google Play Musik)
- Audio Player steuern: Medienknopf Zurück (Google Play Musik)
- Bluetooth ein-/ausschalten: Aus
- Audio Player steuern: Medienknopf Stopp (Google Play Musik)
- Expression: setVolume"
- Expression: param_orientation == "portrait"
- Expression: Reboot
- Expression: System Command"
- Neustart
- Expression: Shutdown
- Herunterfahren
- Benachrichtigung aus Statusbar entfernen: Alle
- Benachrichtigung aus Statusbar entfernen: Alle (Automagic)
- Expression: Automagic
- Expression: All
- Expression: setNotifiVolume"
- Expression: notifysnd"
- NotificationLautstärke auf Level 7
- Notification Lautstärke Speichern
- Expression: param_notifyfile == "RedAlert.mp3"
- Notification Lautstärke Wiederherstellen
- Expression: setVoiceCommand"
- Flows ausführen: VoiceControl
- Expression: Clear Automagic Meldungen"
- Flugmodus ein-/ausschalten: Ein
- Setze Display Helligkeit: {param_brightness}
- Expression: setScreenlock"
- Broadcast senden: {param_action}
- Expression: sendIntent"
- Setze Flow Status: Aktivieren Informations
- Script: informationFlow_state = "aktiv"
- Expression: Airplanemode
- Pause: 1s (Gerät wach halten)
- Airplainemode ON
- Expression: param_lockmod == "lock"
- Setze Lock PIN/Passwort: PIN/Passwort zurücksetzen
- Setze Lock PIN/Passwort: Setze PIN von Variable param_lockpin
- Lautstärken setzen param_volume
- Expression: trigger == "Sprachbefehl angefordert"
- WLAN Verbunden: {global_apssid}
- Lautstärken setzen param_notifivolume
- Setze Alarm: um {param_hour}:{param_minute}
- Expression: setAlarm"
- Expression: setTimer"
- Setze Timer
- Expression: setVibrate"
- Expression: openApp"
- App Starten: App
- Schalte Display ein: Hell für {param_screenontime}s
- Flow Status Informations
- App Task läuft: App (neuster)
- Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*"
- Expression: screenMsg"
- Benachrichtigung auf Bildschirm: {param_message} (lange)
- Audio Player steuern: Medienknopf Weiter (Google Play Musik)
- Expression: openURL"
- URL in Browser öffnen: {param_url} (mit {param_browserapp}/{param_browserappclass})
- Vibrieren: Pattern 2 (-- --)
- Expression: global_apssid != "usb-ethernet"
- Expression: installFlow"
- Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/emulated/0/Download
- Flows/Widgets importieren: /storage/emulated/0/Download/installFlow_{param_flowname}
- Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
- Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname}
- Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
- Flows/Widgets importieren: /storage/sdcard0/Download/installFlow_{param_flowname}
- 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/sdcard0/Download/installFlow_{param_flowname}
- Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
- Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname}
- Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard)
- Automagic State
- Script: notification_text = "Flow install: path for download not exist"
- Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0)
- Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0)
- Sound: {param_notifypath}{param_notifyfile} als Benachrichtigung
- Sprachausgabe: {param_message}
- Dateien löschen: /storage/emulated/0/Download/installFlow_{param_flowname}
- Gerät sperren
- Script: udef_trigger = "setLockPin"
- Flows ausführen: udef_trigger setLockPin
- Display eingeschaltet
- Gerät sperren
- Schalte Display ein
- Gerät sperren
-
-
-
-
-
-
-
-
+ Setze Display Orientierung: Auf Default zurücksetzen
+ Expression: param_screen=="off"
+ Expression: setScreenOnOff"
+ Flow Aktiv: Informations
+ Expression: ttsMsg"
+ Display automatisch drehen ein-/ausschalten: Aus
+ Display automatisch drehen ein-/ausschalten: Ein
+ Expression: setScreenOrientation"
+ Expression: param_fullscreen == "off"
+ Expression: param_fullscreen == "on"
+ Expression: setBluetooth"
+ Expression: param_bluetooth == "off"
+ Expression: param_bluetooth == "on"
+ Bluetooth ein-/ausschalten: Ein
+ Script: informationFlow_state = "inaktiv"
+ Bluetooth eingeschaltet
+ Bluetooth Gerät verbinden/trennen: Trennen Advanced Audio Distribution {param_btdeviceone}
+ Bluetooth Gerät verbinden/trennen: Trennen Eingabegerät {param_btdeviceone}
+ Bluetooth Gerät verbinden/trennen: Trennen Personal Area Network {param_btdeviceone}
+ Bluetooth Gerät verbinden/trennen: Trennen Advanced Audio Distribution {param_btdevicetwo}
+ Bluetooth Gerät verbinden/trennen: Trennen Eingabegerät {param_btdevicetwo}
+ Bluetooth Gerät verbinden/trennen: Trennen Headset {param_btdeviceone}
+ Bluetooth Gerät verbinden/trennen: Trennen Headset {param_btdevicetwo}
+ Bluetooth Gerät verbinden/trennen: Trennen Personal Area Network {param_btdevicetwo}
+ Pause: 3s (Gerät wach halten)
+ Bluetooth Gerät verbinden/trennen: Verbinden Advanced Audio Distribution {param_swtobtdevicemac}
+ Pause: 2s (Gerät wach halten)
+ Expression: setBTDevice"
+ Bluetooth ein-/ausschalten: Aus
+ Expression: setVolume"
+ Expression: param_orientation == "portrait"
+ Expression: Reboot
+ Expression: System Command"
+ Neustart
+ Expression: Shutdown
+ Herunterfahren
+ Benachrichtigung aus Statusbar entfernen: Alle
+ Benachrichtigung aus Statusbar entfernen: Alle (Automagic)
+ Expression: Automagic
+ Expression: All
+ Expression: setNotifiVolume"
+ Expression: notifysnd"
+ NotificationLautstärke auf Level 7
+ Notification Lautstärke Speichern
+ Expression: param_notifyfile == "RedAlert.mp3"
+ Notification Lautstärke Wiederherstellen
+ Expression: setVoiceCommand"
+ Flows ausführen: VoiceControl
+ Expression: Clear Automagic Meldungen"
+ Flugmodus ein-/ausschalten: Ein
+ Setze Display Helligkeit: {param_brightness}
+ Expression: setScreenlock"
+ Expression: sendIntent"
+ Setze Flow Status: Aktivieren Informations
+ Script: informationFlow_state = "aktiv"
+ Expression: Airplanemode
+ Pause: 1s (Gerät wach halten)
+ Airplainemode ON
+ Expression: param_lockmod == "lock"
+ Setze Lock PIN/Passwort: PIN/Passwort zurücksetzen
+ Setze Lock PIN/Passwort: Setze PIN von Variable param_lockpin
+ Expression: trigger == "Sprachbefehl angefordert"
+ WLAN Verbunden: {global_apssid}
+ Setze Alarm: um {param_hour}:{param_minute}
+ Expression: setAlarm"
+ Setze Timer
+ Expression: setVibrate"
+ Expression: openApp"
+ App Starten: App
+ Schalte Display ein: Hell für {param_screenontime}s
+ Flow Status Informations
+ App Task läuft: App (neuster)
+ Expression: screenMsg"
+ Benachrichtigung auf Bildschirm: {param_message} (lange)
+ Expression: openURL"
+ URL in Browser öffnen: {param_url} (mit {param_browserapp}/{param_browserappclass})
+ Vibrieren: Pattern 2 (-- --)
+ Expression: global_apssid != "usb-ethernet"
+ Expression: installFlow"
+ Download URL: http://{global_fhemip}:{global_bridgeport}/installFlow_{param_flowname} to /storage/emulated/0/Download
+ Flows/Widgets importieren: /storage/emulated/0/Download/installFlow_{param_flowname}
+ Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
+ Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname}
+ Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
+ Flows/Widgets importieren: /storage/sdcard0/Download/installFlow_{param_flowname}
+ 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/sdcard0/Download/installFlow_{param_flowname}
+ Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
+ Dateien löschen: /storage/sdcard0/Download/installFlow_{param_flowname}
+ Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard)
+ Automagic State
+ Script: notification_text = "Flow install: path for download not exist"
+ Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0)
+ Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0)
+ Sound: {param_notifypath}{param_notifyfile} als Benachrichtigung
+ Dateien löschen: /storage/emulated/0/Download/installFlow_{param_flowname}
+ Gerät sperren
+ Script: udef_trigger = "setLockPin"
+ Flows ausführen: udef_trigger setLockPin
+ Display eingeschaltet
+ Gerät sperren
+ Schalte Display ein
+ Gerät sperren
+ Sprachausgabe: {param_message}
+ Lautstärken setzen param_volume
+ Lautstärken setzen param_notifivolume
+ Expression: setTimer"
+ Expression: trigger == "HTTP Request: /fhem-amad/setCommands/*"
+ Expression: openCall"
+ Nummer anrufen: {param_callnumber}
+ Expression: param_option
+ Pause: {param_hanguptime}s (Gerät wach halten)
+ Anruf beenden
+ Broadcast senden: {param_action}
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Update AMAD Flowset
- AMAD2 Flowset Updater v1.0.13
+ AMAD2 Info/Control Flowset v2.2.0
true
PARALLEL
HTTP Request: /fhem-amad/currentFlowsetUpdate
- Prüfe und setze Bridgeport Variable
- Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml to /storage/emulated/0/Download
- Flows/Widgets importieren: /storage/emulated/0/Download/currentFlowsetUpdate.xml
- Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
- Dateien löschen: /storage/emulated/0/Download/currentFlowsetUpdate.xml
- Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
- Dateien löschen: /storage/sdcard0/Download/currentFlowsetUpdate.xml
- Flows/Widgets importieren: /storage/sdcard0/Download/currentFlowsetUpdate.xml
- Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml to /storage/sdcard0/Download
- Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml to /sdcard/Download
- Flows/Widgets importieren: /sdcard/Download/currentFlowsetUpdate.xml
- Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
- Dateien löschen: /sdcard/Download/currentFlowsetUpdate.xml
- Script: notification_text = "Flowset Update: path for download not exist"
- Automagic State
- Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0)
- Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0)
- Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard)
-
-
+ Flows/Widgets importieren: /storage/emulated/0/Download/currentFlowsetUpdate.xml
+ Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
+ Dateien löschen: /storage/emulated/0/Download/currentFlowsetUpdate.xml
+ Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
+ Dateien löschen: /storage/sdcard0/Download/currentFlowsetUpdate.xml
+ Flows/Widgets importieren: /storage/sdcard0/Download/currentFlowsetUpdate.xml
+ Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml to /storage/sdcard0/Download
+ Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml to /sdcard/Download
+ Flows/Widgets importieren: /sdcard/Download/currentFlowsetUpdate.xml
+ Setze Flow Status: Aktivieren {imported_flow_names,listformat,comma}
+ Dateien löschen: /sdcard/Download/currentFlowsetUpdate.xml
+ Script: notification_text = "Flowset Update: path for download not exist"
+ Automagic State
+ Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/emulated/0)
+ Gerätespeicherplatz: Freier Speicherplatz > 1kb (/storage/sdcard0)
+ Gerätespeicherplatz: Freier Speicherplatz > 1kb (/sdcard)
+ Prüfe und setze Bridgeport Variable
+ Download URL: http://{global_fhemip}:{global_bridgeport}/currentFlowsetUpdate.xml to /storage/emulated/0/Download
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
VoiceControl
- AMAD2 Info/Control Flowset v2.0.5
+ AMAD2 Info/Control Flowset v2.2.0
true
QUEUE
60