Commandref erweitert, diverser Codecleaning, neue Funktionen Dokumentiert

This commit is contained in:
Marko Oldenburg
2015-12-01 21:43:53 +01:00
parent 75c5b9cc0e
commit 3a5c36b808
2 changed files with 271 additions and 101 deletions

View File

@@ -35,7 +35,7 @@ use Time::HiRes qw(gettimeofday);
use HttpUtils; use HttpUtils;
use TcpServerUtils; use TcpServerUtils;
my $version = "0.9.7"; my $version = "0.9.9";
@@ -1069,6 +1069,7 @@ sub AMAD_Header2Hash($) {
The AndroidAPP Auto Magic (this 3rd party app costs 2.90Euro) works better than Tasker and is more user-friendly.<br> The AndroidAPP Auto Magic (this 3rd party app costs 2.90Euro) works better than Tasker and is more user-friendly.<br>
The following information can be displayed: The following information can be displayed:
<ul> <ul>
<li>Android Version</li>
<li>State of Automagic on the device</li> <li>State of Automagic on the device</li>
<li>Bluetooth on / off</li> <li>Bluetooth on / off</li>
<li>Connected Bluetooth devices </li> <li>Connected Bluetooth devices </li>
@@ -1093,6 +1094,7 @@ sub AMAD_Header2Hash($) {
<br><br> <br><br>
With this module it is also possible to control an Android device as follows. With this module it is also possible to control an Android device as follows.
<ul> <ul>
<li>Activate Voice Input</li>
<li>Switch Bluetooth on/off</li> <li>Switch Bluetooth on/off</li>
<li>Set or change the connection to a specific Bluetooth device</li> <li>Set or change the connection to a specific Bluetooth device</li>
<li>State of the device (online, offline)</li> <li>State of the device (online, offline)</li>
@@ -1154,6 +1156,7 @@ sub AMAD_Header2Hash($) {
<a name="AMADreadings"></a> <a name="AMADreadings"></a>
<b>Readings</b> <b>Readings</b>
<ul> <ul>
<li>androidVersion - installed Android Version</li>
<li>automagic state - status messages from the AutomagicApp</li> <li>automagic state - status messages from the AutomagicApp</li>
<li>bluetooth on / off - is Bluetooth switched on or off on the device</li> <li>bluetooth on / off - is Bluetooth switched on or off on the device</li>
<li>checkActiveTask - state of an app being defined before, 1=activ in the foreground, see the hint further down</li> <li>checkActiveTask - state of an app being defined before, 1=activ in the foreground, see the hint further down</li>
@@ -1224,6 +1227,7 @@ sub AMAD_Header2Hash($) {
<a name="AMADset"></a> <a name="AMADset"></a>
<b>Set</b> <b>Set</b>
<ul> <ul>
<li>activateVoiceInput - activat Voice Input on Android Device</li>
<li>Device State - sets the Device Status Online / Offline. See Readings</li> <li>Device State - sets the Device Status Online / Offline. See Readings</li>
<li>Media Player - controls the default media player. Play, Stop, Back Route title, ahead of title.</li> <li>Media Player - controls the default media player. Play, Stop, Back Route title, ahead of title.</li>
<li>NextAlarm time - sets the alarm time. only within the next 24hrs.</li> <li>NextAlarm time - sets the alarm time. only within the next 24hrs.</li>
@@ -1286,6 +1290,7 @@ sub AMAD_Header2Hash($) {
Die AndroidAPP Automagic (welche nicht von mir stammt und 2.90Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher. Die AndroidAPP Automagic (welche nicht von mir stammt und 2.90Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher.
Im Auslieferungszustand werden folgende Zust&auml;nde dargestellt: Im Auslieferungszustand werden folgende Zust&auml;nde dargestellt:
<ul> <ul>
<li>Android Version</li>
<li>Zustand von Automagic auf dem Ger&auml;t</li> <li>Zustand von Automagic auf dem Ger&auml;t</li>
<li>Bluetooth An/Aus</li> <li>Bluetooth An/Aus</li>
<li>Zustand einer definierten App (l&auml;uft aktiv im Vordergrund oder nicht?)</li> <li>Zustand einer definierten App (l&auml;uft aktiv im Vordergrund oder nicht?)</li>
@@ -1312,6 +1317,7 @@ sub AMAD_Header2Hash($) {
<br><br> <br><br>
Das Modul gibt Dir auch die M&ouml;glichkeit Deine Androidger&auml;te zu steuern. So k&ouml;nnen folgende Aktionen durchgef&uuml;hrt werden. Das Modul gibt Dir auch die M&ouml;glichkeit Deine Androidger&auml;te zu steuern. So k&ouml;nnen folgende Aktionen durchgef&uuml;hrt werden.
<ul> <ul>
<li>aktiviert Spracheingabe</li>
<li>Bluetooth Ein/Aus schalten</li> <li>Bluetooth Ein/Aus schalten</li>
<li>zu einem bestimmten Bluetoothger&auml;t wechseln/verbinden</li> <li>zu einem bestimmten Bluetoothger&auml;t wechseln/verbinden</li>
<li>Status des Ger&auml;tes (Online,Offline)</li> <li>Status des Ger&auml;tes (Online,Offline)</li>
@@ -1375,6 +1381,7 @@ sub AMAD_Header2Hash($) {
<a name="AMADreadings"></a> <a name="AMADreadings"></a>
<b>Readings</b> <b>Readings</b>
<ul> <ul>
<li>androidVersion - aktuell installierte Androidversion</li>
<li>automagicState - Statusmeldungen von der AutomagicApp <b>(Voraussetzung Android >4.3). Wer ein Android >4.3 hat und im Reading steht "wird nicht unterst&uuml;tzt", mu&szlig; in den Androideinstellungen unter Ton und Benachrichtigungen -> Benachrichtigungszugriff ein Haken setzen f&uuml;r Automagic</b></li> <li>automagicState - Statusmeldungen von der AutomagicApp <b>(Voraussetzung Android >4.3). Wer ein Android >4.3 hat und im Reading steht "wird nicht unterst&uuml;tzt", mu&szlig; in den Androideinstellungen unter Ton und Benachrichtigungen -> Benachrichtigungszugriff ein Haken setzen f&uuml;r Automagic</b></li>
<li>bluetooth on/off - ist auf dem Ger&auml;t Bluetooth an oder aus</li> <li>bluetooth on/off - ist auf dem Ger&auml;t Bluetooth an oder aus</li>
<li>checkActiveTask - Zustand einer zuvor definierten APP. 0=nicht aktiv oder nicht aktiv im Vordergrund, 1=aktiv im Vordergrund, <b>siehe Hinweis unten</b></li> <li>checkActiveTask - Zustand einer zuvor definierten APP. 0=nicht aktiv oder nicht aktiv im Vordergrund, 1=aktiv im Vordergrund, <b>siehe Hinweis unten</b></li>
@@ -1445,6 +1452,7 @@ sub AMAD_Header2Hash($) {
<a name="AMADset"></a> <a name="AMADset"></a>
<b>Set</b> <b>Set</b>
<ul> <ul>
<li>activateVoiceInput - schaltet die Spracheingabe ein</li>
<li>bluetooth - Schaltet Bluetooth on/off</li> <li>bluetooth - Schaltet Bluetooth on/off</li>
<li>clearNotificationBar - (All,Automagic) l&ouml;scht alle Meldungen oder nur die Automagic Meldungen in der Statusleiste</li> <li>clearNotificationBar - (All,Automagic) l&ouml;scht alle Meldungen oder nur die Automagic Meldungen in der Statusleiste</li>
<li>deviceState - setzt den Device Status Online/Offline. Siehe Readings</li> <li>deviceState - setzt den Device Status Online/Offline. Siehe Readings</li>

View File

@@ -17,12 +17,30 @@ global_track = getString("track");
global_album = getString("album");</extras> global_album = getString("album");</extras>
<receiveInitialStickyBroadcast>false</receiveInitialStickyBroadcast> <receiveInitialStickyBroadcast>false</receiveInitialStickyBroadcast>
</trigger> </trigger>
<trigger type="display_state">
<useDefaultName>true</useDefaultName>
<name>Display Status: Aus</name>
<enabled>false</enabled>
<displayOn>false</displayOn>
</trigger>
<trigger type="display_state">
<useDefaultName>true</useDefaultName>
<name>Display Status: Ein</name>
<enabled>false</enabled>
<displayOn>true</displayOn>
</trigger>
<trigger type="global_variable"> <trigger type="global_variable">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Globale Variable: global_own_reading</name> <name>Globale Variable: global_own_reading</name>
<enabled>true</enabled> <enabled>true</enabled>
<variable>global_own_reading</variable> <variable>global_own_reading</variable>
</trigger> </trigger>
<trigger type="global_variable">
<useDefaultName>true</useDefaultName>
<name>Globale Variable: global_touched</name>
<enabled>false</enabled>
<variable>global_touched</variable>
</trigger>
<trigger type="http_request"> <trigger type="http_request">
<useDefaultName>false</useDefaultName> <useDefaultName>false</useDefaultName>
<name>HTTP Request: /fhem-amad/deviceInfo/</name> <name>HTTP Request: /fhem-amad/deviceInfo/</name>
@@ -39,6 +57,27 @@ global_album = getString("album");</extras>
<port>8090</port> <port>8090</port>
<acquireWifiLock>true</acquireWifiLock> <acquireWifiLock>true</acquireWifiLock>
</trigger> </trigger>
<trigger type="periodic_timer">
<useDefaultName>true</useDefaultName>
<name>Periodischer Timer: alle 4m</name>
<enabled>false</enabled>
<frequency>240000</frequency>
<wakeDevice>true</wakeDevice>
<fixedTimes>false</fixedTimes>
<limitTimeRange>false</limitTimeRange>
<weekday>Mon</weekday>
<weekday>Tue</weekday>
<weekday>Wed</weekday>
<weekday>Thu</weekday>
<weekday>Fri</weekday>
<weekday>Sat</weekday>
<weekday>Sun</weekday>
<hourFrom>8</hourFrom>
<minuteFrom>0</minuteFrom>
<hourTo>17</hourTo>
<minuteTo>0</minuteTo>
<allowInDeviceIdle>false</allowInDeviceIdle>
</trigger>
<trigger type="voice_command_requested"> <trigger type="voice_command_requested">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Sprachbefehl angefordert</name> <name>Sprachbefehl angefordert</name>
@@ -158,6 +197,16 @@ global_album = getString("album");</extras>
<name>Expression: getAndroidSDKVersion() &gt;= "19"</name> <name>Expression: getAndroidSDKVersion() &gt;= "19"</name>
<expression>getAndroidSDKVersion() &gt;= "19"</expression> <expression>getAndroidSDKVersion() &gt;= "19"</expression>
</condition> </condition>
<condition type="expression">
<useDefaultName>true</useDefaultName>
<name>Expression: global_touched=="ja"</name>
<expression>global_touched=="ja"</expression>
</condition>
<condition type="expression">
<useDefaultName>true</useDefaultName>
<name>Expression: global_touched=="wait"</name>
<expression>global_touched=="wait"</expression>
</condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>false</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: gplay</name> <name>Expression: gplay</name>
@@ -699,6 +748,16 @@ androidVersion = "4.1 Jelly Bean"
<settingName>volume_music_speaker</settingName> <settingName>volume_music_speaker</settingName>
<variable>volumeMusikSpeaker</variable> <variable>volumeMusikSpeaker</variable>
</action> </action>
<action type="execute_root_command">
<useDefaultName>true</useDefaultName>
<name>Kommandozeilenbefehl als Root ausführen: getevent -c 1 in </name>
<command>getevent -c 1</command>
<seContext></seContext>
<workingDirectory></workingDirectory>
<variableStdout>stdout</variableStdout>
<variableStderr>stderr</variableStderr>
<variableExitCode>exit_code</variableExitCode>
</action>
<action type="set_audio_stream_volume"> <action type="set_audio_stream_volume">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Lautstärke einstellen: Benachrichtigung auf Level 7</name> <name>Lautstärke einstellen: Benachrichtigung auf Level 7</name>
@@ -851,6 +910,20 @@ FHEMCMD: setreading</customHTTPHeaders>
<path>/storage/emulated/0/Download/file.bin</path> <path>/storage/emulated/0/Download/file.bin</path>
<followRedirects>true</followRedirects> <followRedirects>true</followRedirects>
</action> </action>
<action type="sleep">
<useDefaultName>true</useDefaultName>
<name>Pause: 10s (Schlafmodus zulassen)</name>
<duration>10s</duration>
<keepDeviceAwake>false</keepDeviceAwake>
<allowWakeupFromDeviceIdle>false</allowWakeupFromDeviceIdle>
</action>
<action type="sleep">
<useDefaultName>true</useDefaultName>
<name>Pause: 15s (Gerät wach halten)</name>
<duration>15s</duration>
<keepDeviceAwake>true</keepDeviceAwake>
<allowWakeupFromDeviceIdle>false</allowWakeupFromDeviceIdle>
</action>
<action type="sleep"> <action type="sleep">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Pause: 2s (Gerät wach halten)</name> <name>Pause: 2s (Gerät wach halten)</name>
@@ -910,12 +983,42 @@ FHEMCMD: setreading</customHTTPHeaders>
global_track = "no soundplayer activ"; global_track = "no soundplayer activ";
global_album = "no soundplayer activ";</script> global_album = "no soundplayer activ";</script>
</action> </action>
<action type="script">
<useDefaultName>true</useDefaultName>
<name>Script: global_display="an";global_own_reading="{getDate()}_display"</name>
<script>global_display="an";global_own_reading="{getDate()}_display"</script>
</action>
<action type="script">
<useDefaultName>true</useDefaultName>
<name>Script: global_display="aus";global_own_reading="{getDate()}_display"</name>
<script>global_display="aus";global_own_reading="{getDate()}_display"</script>
</action>
<action type="script"> <action type="script">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Script: global_fhemip = {header_fhemip} global_fhemdevice = {header_fhemdevice}</name> <name>Script: global_fhemip = {header_fhemip} global_fhemdevice = {header_fhemdevice}</name>
<script>global_fhemip = {header_fhemip} <script>global_fhemip = {header_fhemip}
global_fhemdevice = {header_fhemdevice}</script> global_fhemdevice = {header_fhemdevice}</script>
</action> </action>
<action type="script">
<useDefaultName>true</useDefaultName>
<name>Script: global_touch="ja";global_own_reading="{getDate()}_touch";global_touched="ja"</name>
<script>global_touch="ja";global_own_reading="{getDate()}_touch";global_touched="ja"</script>
</action>
<action type="script">
<useDefaultName>true</useDefaultName>
<name>Script: global_touch="nein";global_own_reading="{getDate()}_touch"</name>
<script>global_touch="nein";global_own_reading="{getDate()}_touch"</script>
</action>
<action type="script">
<useDefaultName>true</useDefaultName>
<name>Script: global_touched="ja"</name>
<script>global_touched="ja"</script>
</action>
<action type="script">
<useDefaultName>true</useDefaultName>
<name>Script: global_touched="wait"</name>
<script>global_touched="wait"</script>
</action>
<action type="script"> <action type="script">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Script: informationFlow_state = "aktiv"</name> <name>Script: informationFlow_state = "aktiv"</name>
@@ -1157,7 +1260,7 @@ FHEMCMD: statusrequest</customHTTPHeaders>
</action> </action>
<flow type="flow"> <flow type="flow">
<name>Informations</name> <name>Informations</name>
<group>FHEM Info / Steuerung über AMAD Modul v0.9.7</group> <group>FHEM Info / Steuerung über AMAD Modul v0.9.9</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>QUEUE</executionPolicy> <executionPolicy>QUEUE</executionPolicy>
<emergencyStopCount>240</emergencyStopCount> <emergencyStopCount>240</emergencyStopCount>
@@ -1177,113 +1280,172 @@ FHEMCMD: statusrequest</customHTTPHeaders>
<conditioncontainer id="t10" x="1330.0" y="-962.5">WLAN Verbunden: Alle SSIDs</conditioncontainer> <conditioncontainer id="t10" x="1330.0" y="-962.5">WLAN Verbunden: Alle SSIDs</conditioncontainer>
<conditioncontainer id="t11" x="665.0" y="-612.5">WLAN Verbunden: Alle SSIDs</conditioncontainer> <conditioncontainer id="t11" x="665.0" y="-612.5">WLAN Verbunden: Alle SSIDs</conditioncontainer>
<actioncontainer id="t12" x="1330.0" y="-612.5">Reading Music Metachanged</actioncontainer> <actioncontainer id="t12" x="1330.0" y="-612.5">Reading Music Metachanged</actioncontainer>
<actioncontainer id="t13" x="3255.0" y="612.5">Get Android Version</actioncontainer> <conditioncontainer id="t13" x="2135.0" y="612.5">Display automatisch drehen eingeschaltet</conditioncontainer>
<conditioncontainer id="t14" x="2135.0" y="612.5">Display automatisch drehen eingeschaltet</conditioncontainer> <actioncontainer id="t14" x="-875.0" y="1557.5">Script: runTask = "1"</actioncontainer>
<actioncontainer id="t15" x="-875.0" y="1557.5">Script: runTask = "1"</actioncontainer> <actioncontainer id="t15" x="-665.0" y="1732.5">Setze Flow Status: Aktivieren SetCommands</actioncontainer>
<actioncontainer id="t16" x="-665.0" y="1732.5">Setze Flow Status: Aktivieren SetCommands</actioncontainer> <actioncontainer id="t16" x="-560.0" y="1557.5">Script: setCommandFlow_state = "inaktiv"</actioncontainer>
<actioncontainer id="t17" x="-560.0" y="1557.5">Script: setCommandFlow_state = "inaktiv"</actioncontainer> <actioncontainer id="t17" x="-350.0" y="1557.5">Script: setCommandFlow_state = "aktiv"</actioncontainer>
<actioncontainer id="t18" x="-350.0" y="1557.5">Script: setCommandFlow_state = "aktiv"</actioncontainer> <actioncontainer id="t18" x="-140.0" y="1557.5">Script: global_artist = "no soundplayer activ"; global_track = "no soundplayer activ"; global_album = "no soundplayer activ";</actioncontainer>
<actioncontainer id="t19" x="-140.0" y="1557.5">Script: global_artist = "no soundplayer activ"; global_track = "no soundplayer activ"; global_album = "no soundplayer activ";</actioncontainer> <actioncontainer id="t19" x="665.0" y="1557.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
<actioncontainer id="t20" x="665.0" y="1557.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer> <actioncontainer id="t20" x="875.0" y="1557.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
<actioncontainer id="t21" x="875.0" y="1557.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer> <actioncontainer id="t21" x="2135.0" y="1557.5">Script: screen_orientation = "auto"</actioncontainer>
<actioncontainer id="t22" x="2135.0" y="1557.5">Script: screen_orientation = "auto"</actioncontainer> <actioncontainer id="t22" x="2345.0" y="1557.5">Script: screen_orientation = "portrait"</actioncontainer>
<actioncontainer id="t23" x="2345.0" y="1557.5">Script: screen_orientation = "portrait"</actioncontainer> <actioncontainer id="t23" x="2555.0" y="1557.5">Script: screen_orientation = "landscape"</actioncontainer>
<actioncontainer id="t24" x="2555.0" y="1557.5">Script: screen_orientation = "landscape"</actioncontainer> <actioncontainer id="t24" x="1015.0" y="2187.5">HTTP Response Information</actioncontainer>
<actioncontainer id="t25" x="2765.0" y="1557.5">Script: bluetooth_state = "on"</actioncontainer> <conditioncontainer id="t25" x="2450.0" y="927.5">Display Orientierung: Portrait</conditioncontainer>
<conditioncontainer id="t26" x="2905.0" y="1557.5">Bluetooth Gerät verbunden: Beliebiges Geräte</conditioncontainer> <actioncontainer id="t26" x="-1085.0" y="1557.5">Script: runTask = "0"</actioncontainer>
<actioncontainer id="t27" x="3045.0" y="1557.5">Script: bluetooth_state = "off"</actioncontainer> <conditioncontainer id="t27" x="-980.0" y="1172.5">App Task läuft: {header_activetask} (neuster)</conditioncontainer>
<actioncontainer id="t28" x="1015.0" y="2187.5">HTTP Response Information</actioncontainer> <conditioncontainer id="t28" x="-1295.0" y="927.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<conditioncontainer id="t29" x="2450.0" y="927.5">Display Orientierung: Portrait</conditioncontainer> <conditioncontainer id="t29" x="-1505.0" y="612.5">Expression: header_activetask != "none"</conditioncontainer>
<actioncontainer id="t30" x="-1085.0" y="1557.5">Script: runTask = "0"</actioncontainer> <actioncontainer id="t30" x="-1505.0" y="1557.5">Script: runTask = "null"</actioncontainer>
<conditioncontainer id="t31" x="-980.0" y="1172.5">App Task läuft: {header_activetask} (neuster)</conditioncontainer> <actioncontainer id="t31" x="-1295.0" y="1557.5">Script: runTask = "not supported android version"</actioncontainer>
<conditioncontainer id="t32" x="-1295.0" y="927.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer> <conditioncontainer id="t32" x="1015.0" y="-962.5">Expression: trigger == "Globale Variable: global_own_reading"</conditioncontainer>
<conditioncontainer id="t33" x="-1505.0" y="612.5">Expression: header_activetask != "none"</conditioncontainer> <actioncontainer id="t33" x="1015.0" y="-612.5">Script: global_fhemip = {header_fhemip} global_fhemdevice = {header_fhemdevice}</actioncontainer>
<actioncontainer id="t34" x="-1505.0" y="1557.5">Script: runTask = "null"</actioncontainer> <actioncontainer id="t34" x="1890.0" y="1557.5">Script: notification_text = "not supported from your device"</actioncontainer>
<actioncontainer id="t35" x="-1295.0" y="1557.5">Script: runTask = "not supported android version"</actioncontainer> <conditioncontainer id="t35" x="1715.0" y="1557.5">Benachrichtigung in Statusbar angezeigt: Automagic</conditioncontainer>
<conditioncontainer id="t36" x="2905.0" y="612.5">Bluetooth eingeschaltet</conditioncontainer> <actioncontainer id="t36" x="1540.0" y="1557.5">Script: notification_text = "Aktiviere Automagic unter Einstellungen -&gt; Benachrichtigungen -&gt; Benachrichtigungszugriff"</actioncontainer>
<conditioncontainer id="t37" x="1015.0" y="-962.5">Expression: trigger == "Globale Variable: global_own_reading"</conditioncontainer> <conditioncontainer id="t37" x="1015.0" y="-87.5">Akku Ladestand: grösser als 0%</conditioncontainer>
<actioncontainer id="t38" x="1015.0" y="-612.5">Script: global_fhemip = {header_fhemip} global_fhemdevice = {header_fhemdevice}</actioncontainer> <actioncontainer id="t38" x="1330.0" y="1557.5">Script: screen_state = "off"</actioncontainer>
<actioncontainer id="t39" x="1890.0" y="1557.5">Script: notification_text = "not supported from your device"</actioncontainer> <actioncontainer id="t39" x="1155.0" y="1557.5">Script: screen_state = "on"</actioncontainer>
<conditioncontainer id="t40" x="1715.0" y="1557.5">Benachrichtigung in Statusbar angezeigt: Automagic</conditioncontainer> <conditioncontainer id="t40" x="1225.0" y="612.5">Display eingeschaltet</conditioncontainer>
<actioncontainer id="t41" x="1540.0" y="1557.5">Script: notification_text = "Aktiviere Automagic unter Einstellungen -&gt; Benachrichtigungen -&gt; Benachrichtigungszugriff"</actioncontainer> <conditioncontainer id="t41" x="1715.0" y="612.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<conditioncontainer id="t42" x="1015.0" y="-87.5">Akku Ladestand: grösser als 0%</conditioncontainer> <conditioncontainer id="t42" x="2765.0" y="1557.5">Bluetooth Gerät verbunden: Beliebiges Geräte</conditioncontainer>
<actioncontainer id="t43" x="1330.0" y="1557.5">Script: screen_state = "off"</actioncontainer> <actioncontainer id="t43" x="2765.0" y="1242.5">Script: bluetooth_state = "on"</actioncontainer>
<actioncontainer id="t44" x="1155.0" y="1557.5">Script: screen_state = "on"</actioncontainer> <conditioncontainer id="t44" x="2765.0" y="612.5">Bluetooth eingeschaltet</conditioncontainer>
<conditioncontainer id="t45" x="1225.0" y="612.5">Display eingeschaltet</conditioncontainer> <actioncontainer id="t45" x="2905.0" y="1557.5">Script: bluetooth_state = "off"</actioncontainer>
<conditioncontainer id="t46" x="1715.0" y="612.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer> <actioncontainer id="t46" x="3115.0" y="612.5">Get Android Version</actioncontainer>
<actioncontainer id="t47" x="665.0" y="-332.5">Own Reading</actioncontainer> <actioncontainer id="t47" x="665.0" y="-332.5">Own Reading</actioncontainer>
<connection from="t1" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t1" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t19" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t20" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t2" to="t20" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t21" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t3" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t4" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t5" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t6" to="t17" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t6" to="t18" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t6" to="t16" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t6" to="t17" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t7" to="t18" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t7" to="t19" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t8" to="t37" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t8" to="t42" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t10" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t9" to="t10" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t37" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t9" to="t32" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t10" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t10" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t11" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t13" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t13" to="t25" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t14" to="t29" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t13" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t14" to="t22" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t14" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t15" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t16" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t17" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t16" to="t15" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t17" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t17" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t18" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t19" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t19" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t20" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t20" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t21" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t21" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t22" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t22" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t23" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t23" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t24" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t25" to="t22" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t25" to="t23" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t27" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t26" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t29" to="t23" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t27" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t29" to="t24" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t27" to="t26" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t30" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t28" to="t27" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t31" to="t15" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t28" to="t31" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t31" to="t30" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t29" to="t30" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t32" to="t31" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t29" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t32" to="t35" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t30" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t33" to="t34" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t31" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t33" to="t32" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t33" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t34" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t11" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t35" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t33" to="t8" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t36" to="t25" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t34" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t36" to="t27" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t35" to="t36" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t36" to="t26" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t35" to="t24" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t37" to="t38" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t36" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t37" to="t11" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t38" to="t8" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t39" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t40" to="t41" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t40" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t40" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t41" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t44" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t29" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t45" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t46" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t41" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t38" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t36" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t39" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t40" to="t39" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t33" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t40" to="t38" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t41" to="t34" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t46" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t41" to="t35" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t43" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t42" to="t24" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t44" to="t28" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t43" to="t42" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t45" to="t44" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t44" to="t43" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t45" to="t43" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t44" to="t45" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t46" to="t39" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t45" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t46" to="t40" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t46" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow>
<flow type="flow">
<name>Meldung Display An</name>
<group>AMAD FHEM / OwnReadings Examples</group>
<enabled>false</enabled>
<executionPolicy>PARALLEL</executionPolicy>
<triggercontainer id="t1" x="70.0" y="52.5">
<trigger>Display Status: Ein</trigger>
</triggercontainer>
<actioncontainer id="t2" x="70.0" y="262.5">Script: global_display="an";global_own_reading="{getDate()}_display"</actioncontainer>
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow>
<flow type="flow">
<name>Meldung Display Aus</name>
<group>AMAD FHEM / OwnReadings Examples</group>
<enabled>false</enabled>
<executionPolicy>PARALLEL</executionPolicy>
<triggercontainer id="t1" x="70.0" y="52.5">
<trigger>Display Status: Aus</trigger>
</triggercontainer>
<actioncontainer id="t2" x="70.0" y="262.5">Script: global_display="aus";global_own_reading="{getDate()}_display"</actioncontainer>
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow>
<flow type="flow">
<name>Meldung kein Touch</name>
<group>AMAD FHEM / OwnReadings Examples</group>
<enabled>false</enabled>
<executionPolicy>STOP</executionPolicy>
<triggercontainer id="t1" x="245.0" y="52.5">
<trigger>Globale Variable: global_touched</trigger>
</triggercontainer>
<actioncontainer id="t2" x="245.0" y="297.5">Pause: 15s (Gerät wach halten)</actioncontainer>
<actioncontainer id="t3" x="525.0" y="682.5">Script: global_touched="wait"</actioncontainer>
<conditioncontainer id="t4" x="245.0" y="472.5">Expression: global_touched=="ja"</conditioncontainer>
<conditioncontainer id="t5" x="-105.0" y="682.5">Expression: global_touched=="wait"</conditioncontainer>
<actioncontainer id="t6" x="-105.0" y="927.5">Script: global_touch="nein";global_own_reading="{getDate()}_touch"</actioncontainer>
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t4" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t5" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow>
<flow type="flow">
<name>Meldung Touch</name>
<group>AMAD FHEM / OwnReadings Examples</group>
<enabled>false</enabled>
<executionPolicy>STOP</executionPolicy>
<triggercontainer id="t1" x="245.0" y="-87.5">
<trigger>Periodischer Timer: alle 4m</trigger>
</triggercontainer>
<actioncontainer id="t2" x="245.0" y="122.5">Kommandozeilenbefehl als Root ausführen: getevent -c 1 in </actioncontainer>
<actioncontainer id="t3" x="245.0" y="297.5">Script: global_touched="ja"</actioncontainer>
<actioncontainer id="t4" x="245.0" y="647.5">Pause: 10s (Schlafmodus zulassen)</actioncontainer>
<actioncontainer id="t5" x="245.0" y="472.5">Script: global_touch="ja";global_own_reading="{getDate()}_touch";global_touched="ja"</actioncontainer>
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t5" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t4" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>SetCommands</name> <name>SetCommands</name>
<group>FHEM Info / Steuerung über AMAD Modul v0.9.7</group> <group>FHEM Info / Steuerung über AMAD Modul v0.9.9</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>QUEUE</executionPolicy> <executionPolicy>QUEUE</executionPolicy>
<emergencyStopCount>240</emergencyStopCount> <emergencyStopCount>240</emergencyStopCount>
@@ -1514,7 +1676,7 @@ FHEMCMD: statusrequest</customHTTPHeaders>
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>VoiceControl</name> <name>VoiceControl</name>
<group>FHEM Info / Steuerung über AMAD Modul v0.9.7</group> <group>FHEM Info / Steuerung über AMAD Modul v0.9.9</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>QUEUE</executionPolicy> <executionPolicy>QUEUE</executionPolicy>
<triggercontainer id="t1" x="70.0" y="-647.5" /> <triggercontainer id="t1" x="70.0" y="-647.5" />