KeepAlive Funktion für Android 6, verbessertes Errorhandling, Codebereinigung

This commit is contained in:
Marko Oldenburg 2016-05-25 06:56:24 +02:00
parent 2ceb6afe4a
commit 88c6bda72c
3 changed files with 351 additions and 342 deletions

View File

@ -37,8 +37,8 @@ use TcpServerUtils;
use Encode qw(encode); use Encode qw(encode);
my $modulversion = "2.1.3"; my $modulversion = "2.1.5";
my $flowsetversion = "2.1.4"; my $flowsetversion = "2.1.5";
@ -97,6 +97,7 @@ sub AMAD_Define($$) {
$hash->{VERSIONFLOWSET} = $flowsetversion; $hash->{VERSIONFLOWSET} = $flowsetversion;
$hash->{helper}{infoErrorCounter} = 0 if( $hash->{HOST} ); $hash->{helper}{infoErrorCounter} = 0 if( $hash->{HOST} );
$hash->{helper}{setCmdErrorCounter} = 0 if( $hash->{HOST} ); $hash->{helper}{setCmdErrorCounter} = 0 if( $hash->{HOST} );
$hash->{helper}{deviceStateErrorCounter} = 0 if( $hash->{HOST} );
@ -138,7 +139,7 @@ sub AMAD_Undef($$) {
my ( $hash, $arg ) = @_; my ( $hash, $arg ) = @_;
if( $hash->{BRIDGE} ) { if( $hash->{BRIDGE} ) {
delete $modules{AMAD}{defptr}{BRIDGE}; delete $modules{AMAD}{defptr}{BRIDGE} if(defined($modules{AMAD}{defptr}{BRIDGE}));
TcpServer_Close( $hash ); TcpServer_Close( $hash );
} else { } else {
@ -479,6 +480,8 @@ sub AMAD_ResponseProcessing($$) {
readingsBulkUpdate( $hash, "state", "active" ) if( ReadingsVal( $name, "state", 0 ) eq "initialized" ); readingsBulkUpdate( $hash, "state", "active" ) if( ReadingsVal( $name, "state", 0 ) eq "initialized" );
readingsEndUpdate( $hash, 1 ); readingsEndUpdate( $hash, 1 );
$hash->{helper}{deviceStateErrorCounter} = 0 if( $hash->{helper}{deviceStateErrorCounter} > 0 and ReadingsVal( $name, "deviceState", "offline") eq "online" );
return undef; return undef;
} }
@ -1019,8 +1022,15 @@ sub AMAD_checkDeviceState($) {
Log3 $name, 4, "AMAD ($name) - AMAD_checkDeviceState: run Check"; Log3 $name, 4, "AMAD ($name) - AMAD_checkDeviceState: run Check";
RemoveInternalTimer( $hash ); RemoveInternalTimer( $hash );
readingsSingleUpdate( $hash, "deviceState", "offline", 1 ) if( ReadingsAge($name,"deviceState",180) > 180 );
InternalTimer( gettimeofday()+180, "AMAD_checkDeviceState", $hash, 0 ); 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"; Log3 $name, 4, "AMAD ($name) - AMAD_checkDeviceState: set new Timer";
} }
@ -1081,7 +1091,7 @@ sub AMAD_CommBridge_Read($) {
my @data = split( '\R\R', $buf ); my @data = split( '\R\R', $buf );
my $header = AMAD_Header2Hash( $data[0] ); my $header = AMAD_Header2Hash( $data[0] );
my $device = $header->{FHEMDEVICE}; my $device = $header->{FHEMDEVICE} if(defined($header->{FHEMDEVICE}));
my $dhash = $defs{$device}; my $dhash = $defs{$device};
my $response; my $response;
my $c; my $c;
@ -1289,7 +1299,7 @@ sub AMAD_decrypt($) {
<b>How to use AMAD?</b> <b>How to use AMAD?</b>
<ul> <ul>
<li>install the "Automagic Premium" app from the Google Play store or use the test version from <a href="https://automagic4android.com/de/testversion">here</a></li> <li>install the "Automagic Premium" app from the Google Play store or use the test version from <a href="https://automagic4android.com/de/testversion">here</a></li>
<li>install the flowset 74_AMADautomagicFlowset$VERSION.xml from the directory $INSTALLFHEM/FHEM/lib/ on your Android device. Do not yet activate the flows.</li> <li>install the flowset 74_AMADautomagicFlowset$VERSION.xml from the directory $INSTALLFHEM/FHEM/lib/ on your Android device and activate.</li>
</ul> </ul>
<br> <br>
Now you need to define a device in FHEM. Now you need to define a device in FHEM.
@ -1316,7 +1326,6 @@ sub AMAD_decrypt($) {
Please us the following command for configuration of the FHEM server IP address in the AMADCommBridge: <i>set AMADCommBridge fhemServerIP &lt;FHEM-IP&gt;.</i><br> Please us the following command for configuration of the FHEM server IP address in the AMADCommBridge: <i>set AMADCommBridge fhemServerIP &lt;FHEM-IP&gt;.</i><br>
Additionally the <i>expertMode</i> 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. Additionally the <i>expertMode</i> 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.
</ul><br> </ul><br>
<b><u>NOW please activate the flows in Automagic!!!</u></b><br>
<br> <br>
<b><u>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.</u></b> <b><u>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.</u></b>
<br><br><br> <br><br><br>
@ -1334,7 +1343,7 @@ sub AMAD_decrypt($) {
<li>currentMusicArtist - currently playing artist of mediaplayer</li> <li>currentMusicArtist - currently playing artist of mediaplayer</li>
<li>currentMusicTrack - currently playing song title of mediaplayer</li> <li>currentMusicTrack - currently playing song title of mediaplayer</li>
<li>daydream - on/off, daydream currently active</li> <li>daydream - on/off, daydream currently active</li>
<li>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.<br> In case deviceState is set to "offline" no set commands can be issued.</li> <li>deviceState - state of Android devices. unknown, online, offline.</li>
<li>dockingState - undocked/docked, Android device in docking station</li> <li>dockingState - undocked/docked, Android device in docking station</li>
<li>flow_SetCommands - active/inactive, state of SetCommands flow</li> <li>flow_SetCommands - active/inactive, state of SetCommands flow</li>
<li>flow_informations - active/inactive, state of Informations flow</li> <li>flow_informations - active/inactive, state of Informations flow</li>
@ -1369,17 +1378,18 @@ sub AMAD_decrypt($) {
<b>Set</b> <b>Set</b>
<ul> <ul>
<li>activateVoiceInput - start voice input on Android device</li> <li>activateVoiceInput - start voice input on Android device</li>
<li>amazonMusic - play/stop/next/back , controlling the amazon music media player</li>
<li>bluetooth - on/off, switch bluetooth on/off</li> <li>bluetooth - on/off, switch bluetooth on/off</li>
<li>clearNotificationBar - All/Automagic, deletes all or only Automagic notifications in status bar</li> <li>clearNotificationBar - All/Automagic, deletes all or only Automagic notifications in status bar</li>
<li>currentFlowsetUpdate - start flowset update on Android device</li> <li>currentFlowsetUpdate - start flowset update on Android device</li>
<li>deviceState - online/offline, sets device state . <b>For more information see section Readings</b></li> <li>googleMusic - play/stop/next/back , controlling the google play music media player</li>
<li>installFlowSource - install a Automagic flow on device, <u>XML file must be stored in /tmp/ with extension xml</u>. <b>Example:</b> <i>set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml</i></li> <li>installFlowSource - install a Automagic flow on device, <u>XML file must be stored in /tmp/ with extension xml</u>. <b>Example:</b> <i>set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml</i></li>
<li>mediaPlayer - play/stop/next/back , controlling the standard media player</li>
<li>nextAlarmTime - sets the alarm time. Only valid for the next 24 hours.</li> <li>nextAlarmTime - sets the alarm time. Only valid for the next 24 hours.</li>
<li>notifySndFile - start playing the defined media file on the Android device <b>The media file must be stored in /storage/emulated/0/Notifications/</b></li> <li>notifySndFile - start playing the defined media file on the Android device <b>The media file must be stored in /storage/emulated/0/Notifications/</b></li>
<li>screenBrightness - 0-255, set screen brighness</li> <li>screenBrightness - 0-255, set screen brighness</li>
<li>screenMsg - display message on screen of Android device</li> <li>screenMsg - display message on screen of Android device</li>
<li>sendintent - send intent string <u>Example:</u><i> set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio</i>, first parameter contains the action, second parameter contains the extra. At most two extras can be used.</li> <li>sendintent - send intent string <u>Example:</u><i> set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio</i>, first parameter contains the action, second parameter contains the extra. At most two extras can be used.</li>
<li>spotifyMusic - play/stop/next/back , controlling the spotify media player</li>
<li>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.</li> <li>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.</li>
<li>timer - set a countdown timer in the "Clock" stock app. Only seconds are allowed as parameter.</li> <li>timer - set a countdown timer in the "Clock" stock app. Only seconds are allowed as parameter.</li>
<li>ttsMsg - send a message which will be played as voice message</li> <li>ttsMsg - send a message which will be played as voice message</li>
@ -1440,7 +1450,7 @@ sub AMAD_decrypt($) {
<b>Wie genau verwendet man nun AMAD?</b> <b>Wie genau verwendet man nun AMAD?</b>
<ul> <ul>
<li>man installiert die App "Automagic Premium" aus dem PlayStore oder die Testversion von <a href="https://automagic4android.com/de/testversion">hier</a></li> <li>man installiert die App "Automagic Premium" aus dem PlayStore oder die Testversion von <a href="https://automagic4android.com/de/testversion">hier</a></li>
<li>dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidger&auml;t. NOCH NICHT die Flows aktivieren</li> <li>dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidger&auml;t und aktiviert die Flows.</li>
</ul> </ul>
<br> <br>
Es mu&szlig; noch ein Device in FHEM anlegt werden. Es mu&szlig; noch ein Device in FHEM anlegt werden.
@ -1486,7 +1496,7 @@ sub AMAD_decrypt($) {
<li>currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers</li> <li>currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers</li>
<li>currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers</li> <li>currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers</li>
<li>daydream - on/off, Daydream gestartet oder nicht</li> <li>daydream - on/off, Daydream gestartet oder nicht</li>
<li>deviceState - Status des Androidger&auml;tes. !!!Gibt nicht den tats&auml;chlichen Status des Ger&auml;tes wieder!!! deviceState muss von Hand selbst gesetzt werden. (set DEVICE deviceState) z.B. &uuml;ber die Anwesenheitskontrolle.<br> Ist Offline gesetzt, k&ouml;nnen keine set Befehle abgesetzt werden.</li> <li>deviceState - Status des Androidger&auml;tes. unknown, online, offline.</li>
<li>dockingState - undocked/docked Status ob sich das Ger&auml;t in einer Dockinstation befindet.</li> <li>dockingState - undocked/docked Status ob sich das Ger&auml;t in einer Dockinstation befindet.</li>
<li>flow_SetCommands - active/inactive, Status des SetCommands Flow</li> <li>flow_SetCommands - active/inactive, Status des SetCommands Flow</li>
<li>flow_informations - active/inactive, Status des Informations Flow</li> <li>flow_informations - active/inactive, Status des Informations Flow</li>
@ -1521,17 +1531,18 @@ sub AMAD_decrypt($) {
<b>Set</b> <b>Set</b>
<ul> <ul>
<li>activateVoiceInput - aktiviert die Spracheingabe</li> <li>activateVoiceInput - aktiviert die Spracheingabe</li>
<li>amazonMusic - play, stop, next, back ,steuert den Amazon Musik Mediaplayer</li>
<li>bluetooth - on/off, aktiviert/deaktiviert Bluetooth</li> <li>bluetooth - on/off, aktiviert/deaktiviert Bluetooth</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>currentFlowsetUpdate - f&uuml;rt ein Flowsetupdate auf dem Device durch</li> <li>currentFlowsetUpdate - f&uuml;rt ein Flowsetupdate auf dem Device durch</li>
<li>deviceState - online/offline, setzt den Device Status . <b>mehr Info unter Readings</b></li> <li>googleMusic - play, stop, next, back ,steuert den Google Play Musik Mediaplayer</li>
<li>installFlowSource - installiert einen Flow auf dem Device, <u>das XML File muss unter /tmp/ liegen und die Endung xml haben</u>. <b>Bsp:</b> <i>set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml</i></li> <li>installFlowSource - installiert einen Flow auf dem Device, <u>das XML File muss unter /tmp/ liegen und die Endung xml haben</u>. <b>Bsp:</b> <i>set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml</i></li>
<li>mediaPlayer - play, stop, next, back ,steuert den Standard Mediaplayer</li>
<li>nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der n&auml;chsten 24Std.</li> <li>nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der n&auml;chsten 24Std.</li>
<li>notifySndFile - spielt die angegebene Mediadatei auf dem Androidger&auml;t ab. <b>Die aufzurufende Mediadatei mu&szlig; sich im Ordner /storage/emulated/0/Notifications/ befinden.</b></li> <li>notifySndFile - spielt die angegebene Mediadatei auf dem Androidger&auml;t ab. <b>Die aufzurufende Mediadatei mu&szlig; sich im Ordner /storage/emulated/0/Notifications/ befinden.</b></li>
<li>screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.</li> <li>screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.</li>
<li>screenMsg - versendet eine Bildschirmnachricht</li> <li>screenMsg - versendet eine Bildschirmnachricht</li>
<li>sendintent - sendet einen Intentstring <u>Bsp:</u><i> set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio</i>, der erste Befehl ist die Aktion und der zweite das Extra. Es k&ouml;nnen immer zwei Extras mitgegeben werden.</li> <li>sendintent - sendet einen Intentstring <u>Bsp:</u><i> set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio</i>, der erste Befehl ist die Aktion und der zweite das Extra. Es k&ouml;nnen immer zwei Extras mitgegeben werden.</li>
<li>spotifyMusic - play, stop, next, back ,steuert den Spotify Mediaplayer</li>
<li>statusRequest - Fordert einen neuen Statusreport beim Device an. Es k&ouml;nnen nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Status&auml;nderung ihren Status wieder.</li> <li>statusRequest - Fordert einen neuen Statusreport beim Device an. Es k&ouml;nnen nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Status&auml;nderung ihren Status wieder.</li>
<li>timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es k&ouml;nnen nur Sekunden angegeben werden.</li> <li>timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es k&ouml;nnen nur Sekunden angegeben werden.</li>
<li>ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird</li> <li>ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird</li>

View File

@ -2231,8 +2231,8 @@ FHEMCMD: setreading</customHTTPHeaders>
</action> </action>
<action type="script"> <action type="script">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Script: amad_flowset_version = "2.1.4"</name> <name>Script: amad_flowset_version = "2.1.5"</name>
<script>amad_flowset_version = "2.1.4"</script> <script>amad_flowset_version = "2.1.5"</script>
</action> </action>
<action type="script"> <action type="script">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
@ -2669,11 +2669,135 @@ FHEMCMD: setreading</customHTTPHeaders>
</action> </action>
<flow type="flow"> <flow type="flow">
<name>Informations</name> <name>Informations</name>
<group>AMAD2 Info/Control Flowset v2.1.4</group> <group>AMAD2 Info/Control Flowset v2.1.5</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>PARALLEL</executionPolicy> <executionPolicy>PARALLEL</executionPolicy>
<emergencyStopCount>900</emergencyStopCount> <emergencyStopCount>900</emergencyStopCount>
<triggercontainer id="t1" x="1015.0" y="-927.5"> <conditioncontainer id="t1" x="1155.0" y="-3132.5">Expression: trigger == "Daydream Status: Gestartet"</conditioncontainer>
<actioncontainer id="t2" x="-210.0" y="-2082.5">Script: setCommandFlow_state = "inaktiv"</actioncontainer>
<actioncontainer id="t3" x="1085.0" y="-3482.5">Script: daydream_state = "on"</actioncontainer>
<actioncontainer id="t4" x="1225.0" y="-3482.5">Script: daydream_state = "off"</actioncontainer>
<actioncontainer id="t5" x="420.0" y="-3587.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
<actioncontainer id="t6" x="630.0" y="-3587.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
<actioncontainer id="t7" x="525.0" y="-3307.5">Initialisiere Variable Nächster Alarm: next_alarm</actioncontainer>
<conditioncontainer id="t8" x="1925.0" y="-2082.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<actioncontainer id="t9" x="2275.0" y="-2292.5">Script: runTask = "1"</actioncontainer>
<actioncontainer id="t10" x="2135.0" y="-2292.5">Script: runTask = "0"</actioncontainer>
<actioncontainer id="t11" x="1925.0" y="-2292.5">Script: runTask = "not supported android version"</actioncontainer>
<actioncontainer id="t12" x="1715.0" y="-2327.5">Script: runTask = "null"</actioncontainer>
<conditioncontainer id="t13" x="0.0" y="-2782.5">Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker"</conditioncontainer>
<conditioncontainer id="t14" x="525.0" y="-2782.5">Expression: trigger == "Systemeinstellung verändert: System next_alarm"</conditioncontainer>
<conditioncontainer id="t15" x="1505.0" y="-2782.5">Expression: trigger == "Systemeinstellung verändert: System screen_brightness"</conditioncontainer>
<actioncontainer id="t16" x="-1225.0" y="-3657.5">Script: airplanemode = "off"</actioncontainer>
<conditioncontainer id="t17" x="-1050.0" y="-3657.5">Expression: airpcount &lt; 11</conditioncontainer>
<actioncontainer id="t18" x="-1540.0" y="-3517.5">Script: keyguard = "unlocked"</actioncontainer>
<actioncontainer id="t19" x="-1540.0" y="-3832.5">Script: screen_state = "off {keyguard}"</actioncontainer>
<conditioncontainer id="t20" x="1855.0" y="-3027.5">Display Orientierung: Portrait</conditioncontainer>
<actioncontainer id="t21" x="1785.0" y="-3272.5">Script: screen_orientation = "portrait"</actioncontainer>
<actioncontainer id="t22" x="1925.0" y="-3272.5">Script: screen_orientation = "landscape"</actioncontainer>
<conditioncontainer id="t23" x="1855.0" y="-3482.5">Display automatisch drehen eingeschaltet</conditioncontainer>
<actioncontainer id="t24" x="2730.0" y="-3482.5">Script: dock_state = "docked"</actioncontainer>
<actioncontainer id="t25" x="2870.0" y="-3482.5">Script: dock_state = "undocked"</actioncontainer>
<actioncontainer id="t26" x="3150.0" y="-3482.5">Script: keyguardSet = "1"</actioncontainer>
<actioncontainer id="t27" x="3290.0" y="-3482.5">Script: keyguardSet = "0"</actioncontainer>
<actioncontainer id="t28" x="1785.0" y="-3657.5">Script: screen_orientation_mode = "auto"</actioncontainer>
<actioncontainer id="t29" x="1925.0" y="-3657.5">Script: screen_orientation_mode = "manual"</actioncontainer>
<conditioncontainer id="t30" x="1855.0" y="-2782.5">Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus"</conditioncontainer>
<actioncontainer id="t31" x="0.0" y="-2082.5">Script: setCommandFlow_state = "aktiv"</actioncontainer>
<conditioncontainer id="t32" x="-105.0" y="-1907.5">Flow Aktiv: SetCommands</conditioncontainer>
<actioncontainer id="t33" x="-105.0" y="-2257.5">Setze Flow Status: Aktivieren SetCommands</actioncontainer>
<actioncontainer id="t34" x="-1680.0" y="-3832.5">Script: screen_state = "on {keyguard}"</actioncontainer>
<actioncontainer id="t35" x="-1610.0" y="-3097.5">Script: scrcount = 0</actioncontainer>
<actioncontainer id="t36" x="-1680.0" y="-3517.5">Script: keyguard = "locked"</actioncontainer>
<conditioncontainer id="t37" x="-1610.0" y="-3657.5">Display eingeschaltet</conditioncontainer>
<conditioncontainer id="t38" x="-1610.0" y="-3342.5">Keyguard gesperrt</conditioncontainer>
<conditioncontainer id="t39" x="-1855.0" y="-3832.5">Expression: scrcount &lt; 5</conditioncontainer>
<actioncontainer id="t40" x="-1855.0" y="-3657.5">Script: scrcount = scrcount + 1</actioncontainer>
<actioncontainer id="t41" x="-1855.0" y="-3517.5">Pause: 2s (Gerät wach halten)</actioncontainer>
<conditioncontainer id="t42" x="-1855.0" y="-3342.5">Expression: keyguard == "locked"</conditioncontainer>
<conditioncontainer id="t43" x="210.0" y="-2782.5">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"</conditioncontainer>
<conditioncontainer id="t44" x="-770.0" y="-2782.5">Expression: trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged"</conditioncontainer>
<actioncontainer id="t45" x="-770.0" y="-3097.5">Pause: 1s (Gerät wach halten)</actioncontainer>
<conditioncontainer id="t46" x="-770.0" y="-3342.5">Musik Aktiv</conditioncontainer>
<conditioncontainer id="t47" x="-455.0" y="-3097.5">Bluetooth eingeschaltet</conditioncontainer>
<actioncontainer id="t48" x="-455.0" y="-3552.5">Script: bluetooth_state = "off"</actioncontainer>
<actioncontainer id="t49" x="-455.0" y="-3342.5">Script: bluetooth_state = "on"</actioncontainer>
<conditioncontainer id="t50" x="-315.0" y="-3097.5">Bluetooth Gerät verbunden: Beliebiges Geräte</conditioncontainer>
<actioncontainer id="t51" x="-315.0" y="-3552.5">Script: connected_devices_names = "null"; connected_devices_addresses = "null"</actioncontainer>
<conditioncontainer id="t52" x="1155.0" y="-2782.5">Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt"</conditioncontainer>
<conditioncontainer id="t53" x="3535.0" y="-2782.5">Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle"</conditioncontainer>
<actioncontainer id="t54" x="2170.0" y="-3482.5">Script: notification_text = "Aktiviere Automagic unter Einstellungen -&gt; Benachrichtigungen -&gt; Benachrichtigungszugriff"</actioncontainer>
<conditioncontainer id="t55" x="2310.0" y="-3482.5">Benachrichtigung in Statusbar angezeigt: Automagic</conditioncontainer>
<conditioncontainer id="t56" x="3885.0" y="-3132.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<actioncontainer id="t57" x="3745.0" y="-3482.5">Script: notification_text = "Aktiviere Automagic unter Einstellungen -&gt; Benachrichtigungen -&gt; Benachrichtigungszugriff"</actioncontainer>
<actioncontainer id="t58" x="4025.0" y="-3482.5">Script: notification_text = "not supported from your device"</actioncontainer>
<conditioncontainer id="t59" x="3885.0" y="-3482.5">Benachrichtigung in Statusbar angezeigt: WhatsApp</conditioncontainer>
<conditioncontainer id="t60" x="4270.0" y="-2782.5">Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE"</conditioncontainer>
<conditioncontainer id="t61" x="3885.0" y="-2782.5">Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp"</conditioncontainer>
<actioncontainer id="t62" x="1995.0" y="-2537.5">Check run Task</actioncontainer>
<actioncontainer id="t63" x="-1610.0" y="-4042.5">Screen State</actioncontainer>
<actioncontainer id="t64" x="-770.0" y="-3832.5">Reading Music Metachanged.2</actioncontainer>
<actioncontainer id="t65" x="-455.0" y="-3832.5">Bluetooth Status</actioncontainer>
<actioncontainer id="t66" x="-315.0" y="-3832.5">Bluetooth Device Status</actioncontainer>
<actioncontainer id="t67" x="0.0" y="-3832.5">Notification Volume</actioncontainer>
<actioncontainer id="t68" x="210.0" y="-3832.5">Lautstärke / Volume</actioncontainer>
<actioncontainer id="t69" x="525.0" y="-3832.5">Nächster Alarm</actioncontainer>
<actioncontainer id="t70" x="1505.0" y="-3832.5">Screen Brightness</actioncontainer>
<actioncontainer id="t71" x="1855.0" y="-3832.5">Screen Orientation</actioncontainer>
<actioncontainer id="t72" x="2800.0" y="-3832.5">Dock State</actioncontainer>
<actioncontainer id="t73" x="3885.0" y="-3832.5">Incoming WhatsApp Message</actioncontainer>
<actioncontainer id="t74" x="4270.0" y="-3832.5">IntentRadio Status</actioncontainer>
<actioncontainer id="t75" x="-525.0" y="-2432.5">Flowsetversion</actioncontainer>
<actioncontainer id="t76" x="-105.0" y="-2432.5">Flow Status SetCommands</actioncontainer>
<conditioncontainer id="t77" x="-1610.0" y="-2782.5">Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin"</conditioncontainer>
<actioncontainer id="t78" x="-1120.0" y="-3832.5">Airplainemode</actioncontainer>
<actioncontainer id="t79" x="-1050.0" y="-3517.5">Script: airpcount = airpcount + 1</actioncontainer>
<conditioncontainer id="t80" x="-2100.0" y="-2782.5">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"</conditioncontainer>
<actioncontainer id="t81" x="-2100.0" y="-3517.5">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" }</actioncontainer>
<actioncontainer id="t82" x="-2100.0" y="-3832.5">Next Alarm State</actioncontainer>
<conditioncontainer id="t83" x="1015.0" y="-2082.5">Expression: global_apssid != "usb-ethernet"</conditioncontainer>
<actioncontainer id="t84" x="-1120.0" y="-3097.5">Script: airpcount = 0</actioncontainer>
<actioncontainer id="t85" x="-1050.0" y="-3342.5">Pause: 2s (Gerät wach halten)</actioncontainer>
<conditioncontainer id="t86" x="-1225.0" y="-3517.5">Expression: global_apssid != "usb-ethernet"</conditioncontainer>
<conditioncontainer id="t87" x="-1225.0" y="-3342.5">WLAN Verbunden: {global_apssid}</conditioncontainer>
<conditioncontainer id="t88" x="2800.0" y="-3132.5">Dock Status: Docked</conditioncontainer>
<conditioncontainer id="t89" x="2310.0" y="-2782.5">Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic"</conditioncontainer>
<conditioncontainer id="t90" x="2800.0" y="-2782.5">Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked"</conditioncontainer>
<conditioncontainer id="t91" x="1995.0" y="-1907.5">Expression: global_activetask != null</conditioncontainer>
<conditioncontainer id="t92" x="-420.0" y="-2782.5">Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Status: Schaltet ein, Ein"</conditioncontainer>
<conditioncontainer id="t93" x="2205.0" y="-2082.5">App Task läuft: {global_activetask} (neuster)</conditioncontainer>
<actioncontainer id="t94" x="-770.0" y="-3517.5">Script: global_artist = "no soundplayer active"; global_track = "no soundplayer active"; global_album = "no soundplayer active";</actioncontainer>
<actioncontainer id="t95" x="2310.0" y="-3832.5">Automagic State</actioncontainer>
<actioncontainer id="t96" x="2450.0" y="-3482.5">Script: notification_text = "not supported from your device"</actioncontainer>
<conditioncontainer id="t97" x="1015.0" y="157.5">Expression: global_fhemip != null or header_fhemip != null</conditioncontainer>
<actioncontainer id="t98" x="-455.0" y="682.5">Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2</actioncontainer>
<actioncontainer id="t99" x="-245.0" y="682.5">Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2</actioncontainer>
<conditioncontainer id="t100" x="-350.0" y="892.5">Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution)</conditioncontainer>
<actioncontainer id="t101" x="-420.0" y="1102.5">Script: volume = {volumeBT}</actioncontainer>
<actioncontainer id="t102" x="-280.0" y="1102.5">Script: volume = {volumeSP}</actioncontainer>
<actioncontainer id="t103" x="105.0" y="682.5">Initialisiere Variable Systemeinstellung: screenBrightness</actioncontainer>
<actioncontainer id="t104" x="315.0" y="682.5">Initialisiere Variable Systemeinstellung: volumeNotification</actioncontainer>
<conditioncontainer id="t105" x="805.0" y="1207.5">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}</conditioncontainer>
<actioncontainer id="t106" x="1260.0" y="1417.5">Script: androidVersion = "not supported funktion"</actioncontainer>
<actioncontainer id="t107" x="1330.0" y="1662.5">Android Version</actioncontainer>
<conditioncontainer id="t108" x="-1120.0" y="-2782.5">Expression: trigger == "Flugmodus: Aus"</conditioncontainer>
<conditioncontainer id="t109" x="2065.0" y="-1837.5">Expression: package_name == {global_activetask}</conditioncontainer>
<conditioncontainer id="t110" x="1015.0" y="-227.5">Expression: trigger == "App Task Beendet"</conditioncontainer>
<conditioncontainer id="t111" x="3220.0" y="-3132.5">Keyguard mit Sicherheit</conditioncontainer>
<actioncontainer id="t112" x="1155.0" y="-3832.5">Daydream State</actioncontainer>
<conditioncontainer id="t113" x="2310.0" y="-3027.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<actioncontainer id="t114" x="1330.0" y="1207.5">Get Android Version</actioncontainer>
<conditioncontainer id="t115" x="3220.0" y="-2782.5">Expression: udef_trigger == "setLockPin"</conditioncontainer>
<actioncontainer id="t116" x="3535.0" y="-3832.5">Incoming Call</actioncontainer>
<actioncontainer id="t117" x="3220.0" y="-3832.5">KeyGuard Set</actioncontainer>
<conditioncontainer id="t118" x="1015.0" y="507.5">Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/"</conditioncontainer>
<conditioncontainer id="t119" x="4270.0" y="-1592.5">Expression: trigger == "Periodischer Timer: alle 30s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/"</conditioncontainer>
<actioncontainer id="t120" x="4270.0" y="-892.5">Device State</actioncontainer>
<conditioncontainer id="t121" x="525.0" y="682.5">Stromversorgung: Angeschlossen</conditioncontainer>
<conditioncontainer id="t122" x="840.0" y="-2782.5">Expression: trigger == "Akku Ladestand: grösser als 0%"</conditioncontainer>
<actioncontainer id="t123" x="840.0" y="-3832.5">Stromversorgung und Akkustand</actioncontainer>
<actioncontainer id="t124" x="805.0" y="1417.5">Prüfe und setze globale Variablen</actioncontainer>
<triggercontainer id="t125" x="1015.0" y="-927.5">
<trigger>Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE</trigger> <trigger>Genereller Broadcast: wenn com.android.deskclock.ALARM_DONE</trigger>
<trigger>Stromversorgung: Angeschlossen</trigger> <trigger>Stromversorgung: Angeschlossen</trigger>
<trigger>Genereller Broadcast: wenn org.smblott.intentradio.STATE</trigger> <trigger>Genereller Broadcast: wenn org.smblott.intentradio.STATE</trigger>
@ -2709,327 +2833,203 @@ FHEMCMD: setreading</customHTTPHeaders>
<trigger>Systemeinstellung verändert: System volume_ring_speaker</trigger> <trigger>Systemeinstellung verändert: System volume_ring_speaker</trigger>
<trigger>Periodischer Timer: alle 30s</trigger> <trigger>Periodischer Timer: alle 30s</trigger>
</triggercontainer> </triggercontainer>
<conditioncontainer id="t2" x="1155.0" y="-3132.5">Expression: trigger == "Daydream Status: Gestartet"</conditioncontainer> <conditioncontainer id="t126" x="1015.0" y="-1767.5">WLAN Verbunden: {global_apssid}</conditioncontainer>
<actioncontainer id="t3" x="-210.0" y="-2082.5">Script: setCommandFlow_state = "inaktiv"</actioncontainer> <actioncontainer id="t127" x="1015.0" y="-1382.5">Script: amad_flowset_version = "2.1.5"</actioncontainer>
<actioncontainer id="t4" x="1085.0" y="-3482.5">Script: daydream_state = "on"</actioncontainer> <connection from="t1" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t5" x="1225.0" y="-3482.5">Script: daydream_state = "off"</actioncontainer> <connection from="t1" to="t4" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t6" x="420.0" y="-3587.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer> <connection from="t2" to="t33" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t7" x="630.0" y="-3587.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer> <connection from="t2" to="t76" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t8" x="525.0" y="-3307.5">Initialisiere Variable Nächster Alarm: next_alarm</actioncontainer> <connection from="t3" to="t112" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t9" x="1925.0" y="-2082.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer> <connection from="t4" to="t112" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t10" x="2275.0" y="-2292.5">Script: runTask = "1"</actioncontainer> <connection from="t5" to="t69" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t11" x="2135.0" y="-2292.5">Script: runTask = "0"</actioncontainer> <connection from="t6" to="t69" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t12" x="1925.0" y="-2292.5">Script: runTask = "not supported android version"</actioncontainer> <connection from="t7" to="t5" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t13" x="1715.0" y="-2327.5">Script: runTask = "null"</actioncontainer> <connection from="t7" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t14" x="0.0" y="-2782.5">Expression: trigger == "Systemeinstellung verändert: System volume_ring_speaker"</conditioncontainer> <connection from="t8" to="t93" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t15" x="525.0" y="-2782.5">Expression: trigger == "Systemeinstellung verändert: System next_alarm"</conditioncontainer> <connection from="t8" to="t11" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t16" x="1505.0" y="-2782.5">Expression: trigger == "Systemeinstellung verändert: System screen_brightness"</conditioncontainer> <connection from="t8" to="t11" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t17" x="-1225.0" y="-3657.5">Script: airplanemode = "off"</actioncontainer> <connection from="t9" to="t62" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t18" x="-1050.0" y="-3657.5">Expression: airpcount &lt; 11</conditioncontainer> <connection from="t10" to="t62" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t19" x="-1540.0" y="-3517.5">Script: keyguard = "unlocked"</actioncontainer> <connection from="t11" to="t62" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t20" x="-1540.0" y="-3832.5">Script: screen_state = "off {keyguard}"</actioncontainer> <connection from="t12" to="t62" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t21" x="1855.0" y="-3027.5">Display Orientierung: Portrait</conditioncontainer> <connection from="t13" to="t67" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t22" x="1785.0" y="-3272.5">Script: screen_orientation = "portrait"</actioncontainer> <connection from="t14" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t23" x="1925.0" y="-3272.5">Script: screen_orientation = "landscape"</actioncontainer> <connection from="t15" to="t70" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t24" x="1855.0" y="-3482.5">Display automatisch drehen eingeschaltet</conditioncontainer> <connection from="t16" to="t78" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t25" x="2730.0" y="-3482.5">Script: dock_state = "docked"</actioncontainer> <connection from="t17" to="t79" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t26" x="2870.0" y="-3482.5">Script: dock_state = "undocked"</actioncontainer> <connection from="t18" to="t37" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t27" x="3150.0" y="-3482.5">Script: keyguardSet = "1"</actioncontainer> <connection from="t19" to="t63" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t28" x="3290.0" y="-3482.5">Script: keyguardSet = "0"</actioncontainer> <connection from="t20" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t29" x="1785.0" y="-3657.5">Script: screen_orientation_mode = "auto"</actioncontainer> <connection from="t20" to="t22" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t30" x="1925.0" y="-3657.5">Script: screen_orientation_mode = "manual"</actioncontainer> <connection from="t21" to="t23" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t31" x="1855.0" y="-2782.5">Expression: trigger == "Display Orientierung: Landscape" or trigger == "Display Orientierung: Portrait" or trigger == "Display Status: Ein" or trigger == "Display Status: Aus"</conditioncontainer> <connection from="t22" to="t23" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t32" x="0.0" y="-2082.5">Script: setCommandFlow_state = "aktiv"</actioncontainer> <connection from="t23" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t33" x="-105.0" y="-1907.5">Flow Aktiv: SetCommands</conditioncontainer> <connection from="t23" to="t29" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t34" x="-105.0" y="-2257.5">Setze Flow Status: Aktivieren SetCommands</actioncontainer> <connection from="t24" to="t72" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t35" x="-1680.0" y="-3832.5">Script: screen_state = "on {keyguard}"</actioncontainer> <connection from="t25" to="t72" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t36" x="-1610.0" y="-3097.5">Script: scrcount = 0</actioncontainer> <connection from="t26" to="t117" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t37" x="-1680.0" y="-3517.5">Script: keyguard = "locked"</actioncontainer> <connection from="t27" to="t117" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t38" x="-1610.0" y="-3657.5">Display eingeschaltet</conditioncontainer> <connection from="t28" to="t71" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t39" x="-1610.0" y="-3342.5">Keyguard gesperrt</conditioncontainer> <connection from="t29" to="t71" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t40" x="-1855.0" y="-3832.5">Expression: scrcount &lt; 5</conditioncontainer> <connection from="t30" to="t20" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t41" x="-1855.0" y="-3657.5">Script: scrcount = scrcount + 1</actioncontainer> <connection from="t31" to="t76" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t42" x="-1855.0" y="-3517.5">Pause: 2s (Gerät wach halten)</actioncontainer> <connection from="t32" to="t31" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t43" x="-1855.0" y="-3342.5">Expression: keyguard == "locked"</conditioncontainer> <connection from="t32" to="t2" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t44" x="210.0" y="-2782.5">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"</conditioncontainer> <connection from="t34" to="t63" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t45" x="-770.0" y="-2782.5">Expression: trigger == "com.android.music.playstatechanged" or trigger == "com.android.music.metachanged"</conditioncontainer> <connection from="t35" to="t38" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t46" x="-770.0" y="-3097.5">Pause: 1s (Gerät wach halten)</actioncontainer> <connection from="t36" to="t37" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t47" x="-770.0" y="-3342.5">Musik Aktiv</conditioncontainer> <connection from="t37" to="t34" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t48" x="-455.0" y="-3097.5">Bluetooth eingeschaltet</conditioncontainer> <connection from="t37" to="t19" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t49" x="-455.0" y="-3552.5">Script: bluetooth_state = "off"</actioncontainer> <connection from="t37" to="t39" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t50" x="-455.0" y="-3342.5">Script: bluetooth_state = "on"</actioncontainer> <connection from="t38" to="t18" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t51" x="-315.0" y="-3097.5">Bluetooth Gerät verbunden: Beliebiges Geräte</conditioncontainer> <connection from="t38" to="t36" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<actioncontainer id="t52" x="-315.0" y="-3552.5">Script: connected_devices_names = "null"; connected_devices_addresses = "null"</actioncontainer> <connection from="t39" to="t40" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t53" x="1155.0" y="-2782.5">Expression: trigger == "Daydream Status: Gestartet" or trigger == "Daydream Status: Gestoppt"</conditioncontainer> <connection from="t40" to="t41" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<conditioncontainer id="t54" x="3535.0" y="-2782.5">Expression: trigger == "Eingehender Anruf. Status: Klingelt, Nummern: Alle"</conditioncontainer>
<actioncontainer id="t55" x="2170.0" y="-3482.5">Script: notification_text = "Aktiviere Automagic unter Einstellungen -&gt; Benachrichtigungen -&gt; Benachrichtigungszugriff"</actioncontainer>
<conditioncontainer id="t56" x="2310.0" y="-3482.5">Benachrichtigung in Statusbar angezeigt: Automagic</conditioncontainer>
<conditioncontainer id="t57" x="3885.0" y="-3132.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<actioncontainer id="t58" x="3745.0" y="-3482.5">Script: notification_text = "Aktiviere Automagic unter Einstellungen -&gt; Benachrichtigungen -&gt; Benachrichtigungszugriff"</actioncontainer>
<actioncontainer id="t59" x="4025.0" y="-3482.5">Script: notification_text = "not supported from your device"</actioncontainer>
<conditioncontainer id="t60" x="3885.0" y="-3482.5">Benachrichtigung in Statusbar angezeigt: WhatsApp</conditioncontainer>
<conditioncontainer id="t61" x="4270.0" y="-2782.5">Expression: trigger == "Genereller Broadcast: wenn org.smblott.intentradio.STATE"</conditioncontainer>
<conditioncontainer id="t62" x="3885.0" y="-2782.5">Expression: trigger == "Benachrichtigung in Statusbar angezeigt: com.whatsapp"</conditioncontainer>
<actioncontainer id="t63" x="1995.0" y="-2537.5">Check run Task</actioncontainer>
<actioncontainer id="t64" x="-1610.0" y="-4042.5">Screen State</actioncontainer>
<actioncontainer id="t65" x="-770.0" y="-3832.5">Reading Music Metachanged.2</actioncontainer>
<actioncontainer id="t66" x="-455.0" y="-3832.5">Bluetooth Status</actioncontainer>
<actioncontainer id="t67" x="-315.0" y="-3832.5">Bluetooth Device Status</actioncontainer>
<actioncontainer id="t68" x="0.0" y="-3832.5">Notification Volume</actioncontainer>
<actioncontainer id="t69" x="210.0" y="-3832.5">Lautstärke / Volume</actioncontainer>
<actioncontainer id="t70" x="525.0" y="-3832.5">Nächster Alarm</actioncontainer>
<actioncontainer id="t71" x="1505.0" y="-3832.5">Screen Brightness</actioncontainer>
<actioncontainer id="t72" x="1855.0" y="-3832.5">Screen Orientation</actioncontainer>
<actioncontainer id="t73" x="2800.0" y="-3832.5">Dock State</actioncontainer>
<actioncontainer id="t74" x="3885.0" y="-3832.5">Incoming WhatsApp Message</actioncontainer>
<actioncontainer id="t75" x="4270.0" y="-3832.5">IntentRadio Status</actioncontainer>
<actioncontainer id="t76" x="-525.0" y="-2432.5">Flowsetversion</actioncontainer>
<actioncontainer id="t77" x="-105.0" y="-2432.5">Flow Status SetCommands</actioncontainer>
<conditioncontainer id="t78" x="-1610.0" y="-2782.5">Expression: trigger == "Display Status: Aus" or trigger == "Display Status: Ein" or udef_trigger == "setLockPin"</conditioncontainer>
<actioncontainer id="t79" x="-1120.0" y="-3832.5">Airplainemode</actioncontainer>
<actioncontainer id="t80" x="-1050.0" y="-3517.5">Script: airpcount = airpcount + 1</actioncontainer>
<conditioncontainer id="t81" x="-2100.0" y="-2782.5">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"</conditioncontainer>
<actioncontainer id="t82" x="-2100.0" y="-3517.5">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" }</actioncontainer>
<actioncontainer id="t83" x="-2100.0" y="-3832.5">Next Alarm State</actioncontainer>
<conditioncontainer id="t84" x="1015.0" y="-2082.5">Expression: global_apssid != "usb-ethernet"</conditioncontainer>
<actioncontainer id="t85" x="-1120.0" y="-3097.5">Script: airpcount = 0</actioncontainer>
<actioncontainer id="t86" x="-1050.0" y="-3342.5">Pause: 2s (Gerät wach halten)</actioncontainer>
<conditioncontainer id="t87" x="-1225.0" y="-3517.5">Expression: global_apssid != "usb-ethernet"</conditioncontainer>
<conditioncontainer id="t88" x="-1225.0" y="-3342.5">WLAN Verbunden: {global_apssid}</conditioncontainer>
<conditioncontainer id="t89" x="2800.0" y="-3132.5">Dock Status: Docked</conditioncontainer>
<conditioncontainer id="t90" x="2310.0" y="-2782.5">Expression: trigger == "Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic" or trigger == "Benachrichtigung in Statusbar entfernt: ch.gridvision.ppam.androidautomagic"</conditioncontainer>
<conditioncontainer id="t91" x="2800.0" y="-2782.5">Expression: trigger == "Dock Event: Docked" or trigger == "Dock Event: Undocked"</conditioncontainer>
<conditioncontainer id="t92" x="1995.0" y="-1907.5">Expression: global_activetask != null</conditioncontainer>
<conditioncontainer id="t93" x="-420.0" y="-2782.5">Expression: trigger == "Bluetooth Status: Schaltet aus, Aus" or trigger == "Bluetooth Status: Schaltet ein, Ein"</conditioncontainer>
<conditioncontainer id="t94" x="2205.0" y="-2082.5">App Task läuft: {global_activetask} (neuster)</conditioncontainer>
<actioncontainer id="t95" x="-770.0" y="-3517.5">Script: global_artist = "no soundplayer active"; global_track = "no soundplayer active"; global_album = "no soundplayer active";</actioncontainer>
<actioncontainer id="t96" x="2310.0" y="-3832.5">Automagic State</actioncontainer>
<actioncontainer id="t97" x="2450.0" y="-3482.5">Script: notification_text = "not supported from your device"</actioncontainer>
<conditioncontainer id="t98" x="1015.0" y="157.5">Expression: global_fhemip != null or header_fhemip != null</conditioncontainer>
<actioncontainer id="t99" x="-455.0" y="682.5">Initialisiere Variable Systemeinstellung: volumeMusikBluetooth.2</actioncontainer>
<actioncontainer id="t100" x="-245.0" y="682.5">Initialisiere Variable Systemeinstellung: volumeMusikSpeaker.2</actioncontainer>
<conditioncontainer id="t101" x="-350.0" y="892.5">Bluetooth Gerät verbunden: Beliebiges Geräte (Advanced Audio Distribution)</conditioncontainer>
<actioncontainer id="t102" x="-420.0" y="1102.5">Script: volume = {volumeBT}</actioncontainer>
<actioncontainer id="t103" x="-280.0" y="1102.5">Script: volume = {volumeSP}</actioncontainer>
<actioncontainer id="t104" x="105.0" y="682.5">Initialisiere Variable Systemeinstellung: screenBrightness</actioncontainer>
<actioncontainer id="t105" x="315.0" y="682.5">Initialisiere Variable Systemeinstellung: volumeNotification</actioncontainer>
<conditioncontainer id="t106" x="805.0" y="1207.5">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}</conditioncontainer>
<actioncontainer id="t107" x="1260.0" y="1417.5">Script: androidVersion = "not supported funktion"</actioncontainer>
<actioncontainer id="t108" x="1330.0" y="1662.5">Android Version</actioncontainer>
<conditioncontainer id="t109" x="-1120.0" y="-2782.5">Expression: trigger == "Flugmodus: Aus"</conditioncontainer>
<conditioncontainer id="t110" x="2065.0" y="-1837.5">Expression: package_name == {global_activetask}</conditioncontainer>
<conditioncontainer id="t111" x="1015.0" y="-227.5">Expression: trigger == "App Task Beendet"</conditioncontainer>
<conditioncontainer id="t112" x="3220.0" y="-3132.5">Keyguard mit Sicherheit</conditioncontainer>
<actioncontainer id="t113" x="1155.0" y="-3832.5">Daydream State</actioncontainer>
<conditioncontainer id="t114" x="2310.0" y="-3027.5">Expression: getAndroidSDKVersion() &gt;= "19"</conditioncontainer>
<actioncontainer id="t115" x="1330.0" y="1207.5">Get Android Version</actioncontainer>
<conditioncontainer id="t116" x="3220.0" y="-2782.5">Expression: udef_trigger == "setLockPin"</conditioncontainer>
<actioncontainer id="t117" x="3535.0" y="-3832.5">Incoming Call</actioncontainer>
<actioncontainer id="t118" x="3220.0" y="-3832.5">KeyGuard Set</actioncontainer>
<conditioncontainer id="t119" x="1015.0" y="-1767.5">WLAN Verbunden: {global_apssid}</conditioncontainer>
<conditioncontainer id="t120" x="1015.0" y="507.5">Expression: trigger == "HTTP Request: /fhem-amad/deviceInfo/"</conditioncontainer>
<conditioncontainer id="t121" x="4270.0" y="-1592.5">Expression: trigger == "Periodischer Timer: alle 30s" or trigger == "HTTP Request: /fhem-amad/deviceInfo/"</conditioncontainer>
<actioncontainer id="t122" x="4270.0" y="-892.5">Device State</actioncontainer>
<conditioncontainer id="t123" x="525.0" y="682.5">Stromversorgung: Angeschlossen</conditioncontainer>
<conditioncontainer id="t124" x="840.0" y="-2782.5">Expression: trigger == "Akku Ladestand: grösser als 0%"</conditioncontainer>
<actioncontainer id="t125" x="840.0" y="-3832.5">Stromversorgung und Akkustand</actioncontainer>
<actioncontainer id="t126" x="805.0" y="1417.5">Prüfe und setze globale Variablen</actioncontainer>
<actioncontainer id="t127" x="1015.0" y="-1382.5">Script: amad_flowset_version = "2.1.4"</actioncontainer>
<connection from="t1" to="t111" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t5" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t34" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t77" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t113" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t113" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t6" to="t70" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t7" to="t70" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t8" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t8" to="t7" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t94" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t12" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t12" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t10" to="t63" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t11" to="t63" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t12" to="t63" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t13" to="t63" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t14" to="t68" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t15" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t16" to="t71" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t17" to="t79" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t80" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t19" to="t38" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t20" to="t64" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t21" to="t22" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t21" to="t23" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t22" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t23" to="t24" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t24" to="t29" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t24" to="t30" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t25" to="t73" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t73" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t27" to="t118" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t28" to="t118" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t29" to="t72" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t30" to="t72" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t31" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t32" to="t77" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t33" to="t32" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t33" to="t3" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t35" to="t64" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t36" to="t39" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t37" to="t38" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t38" to="t35" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t38" to="t20" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t38" to="t40" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t39" to="t19" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t39" to="t37" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t40" to="t41" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t41" to="t42" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t41" to="t42" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t43" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t42" to="t38" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t43" to="t39" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t43" to="t68" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t44" to="t69" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t44" to="t45" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t45" to="t46" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t45" to="t46" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t46" to="t47" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t46" to="t94" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t47" to="t95" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t46" to="t64" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t47" to="t65" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t47" to="t49" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t48" to="t50" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t47" to="t48" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t48" to="t49" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t48" to="t65" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t49" to="t66" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t49" to="t65" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t50" to="t66" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t50" to="t66" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t51" to="t67" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t50" to="t51" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t51" to="t52" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t51" to="t66" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t52" to="t67" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t52" to="t1" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t53" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t53" to="t116" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t54" to="t117" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t54" to="t95" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t55" to="t96" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t55" to="t54" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t56" to="t55" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t55" to="t95" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t56" to="t96" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t56" to="t58" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t57" to="t59" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t56" to="t59" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t57" to="t60" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t57" to="t73" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t58" to="t74" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t58" to="t73" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t59" to="t74" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t59" to="t57" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t60" to="t58" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t59" to="t73" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t60" to="t74" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t60" to="t74" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t61" to="t75" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t61" to="t56" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t62" to="t57" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t77" to="t35" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t78" to="t36" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t79" to="t85" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t80" to="t86" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t80" to="t81" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t81" to="t82" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t81" to="t82" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t82" to="t83" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t126" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t119" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t91" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t92" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t32" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t33" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t127" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t127" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t80" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t81" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t77" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t78" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t108" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t109" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t44" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t45" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t92" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t93" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t13" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t14" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t43" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t44" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t14" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t15" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t122" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t124" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t52" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t53" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t15" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t16" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t30" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t31" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t89" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t90" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t90" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t91" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t115" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t116" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t53" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t54" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t61" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t62" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t83" to="t60" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t84" to="t61" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t84" to="t86" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t85" to="t87" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t85" to="t86" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t86" to="t87" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t86" to="t87" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t87" to="t88" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t86" to="t16" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t87" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t87" to="t17" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t87" to="t17" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t88" to="t17" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t88" to="t24" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t88" to="t18" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t88" to="t25" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t89" to="t25" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t89" to="t113" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t89" to="t26" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t90" to="t88" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t90" to="t114" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t91" to="t12" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t91" to="t89" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t91" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t92" to="t13" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t92" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t92" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t93" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t93" to="t48" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t93" to="t10" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t94" to="t10" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t94" to="t64" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t94" to="t11" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t96" to="t95" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t95" to="t65" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t97" to="t83" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t97" to="t96" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t97" to="t118" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t98" to="t84" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t98" to="t100" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t98" to="t120" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t99" to="t100" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t99" to="t101" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t100" to="t101" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t100" to="t101" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t100" to="t102" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t101" to="t102" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t101" to="t68" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t101" to="t103" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t102" to="t68" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t102" to="t69" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t103" to="t70" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t103" to="t69" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t104" to="t67" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t104" to="t71" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t105" to="t124" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t105" to="t68" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t106" to="t107" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t106" to="t126" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t108" to="t84" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t107" to="t108" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t109" to="t91" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t109" to="t85" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t110" to="t97" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t110" to="t92" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t110" to="t108" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t111" to="t98" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t110" to="t109" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t111" to="t109" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t111" to="t26" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t111" to="t110" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t111" to="t27" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t112" to="t27" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t113" to="t55" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t112" to="t28" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t113" to="t96" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t114" to="t56" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t113" to="t96" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t114" to="t97" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t114" to="t106" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t114" to="t97" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t114" to="t107" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t115" to="t107" type="EXCEPTION" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t115" to="t111" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t115" to="t108" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t114" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t116" to="t112" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t104" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t15" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t44" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t103" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t99" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t98" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t78" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t93" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t20" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t33" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t113" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t90" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t121" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t124" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t50" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t92" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t52" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t31" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t88" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t53" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t46" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t91" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t111" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t45" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t84" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t116" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t35" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t51" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t118" to="t105" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t54" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t119" to="t120" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t127" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t121" to="t123" type="TRUE" sourcePosition="SOUTH" targetPosition="SOUTH" />
<connection from="t119" to="t62" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t121" to="t123" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t81" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t122" to="t123" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t61" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t125" to="t110" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t119" to="t121" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t115" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t43" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t105" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t15" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t104" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t77" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t100" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t92" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t99" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t32" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t48" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t89" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t122" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t114" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t91" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t123" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t30" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t51" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t52" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t53" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t90" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t89" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t44" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t115" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t112" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t50" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t85" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t53" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t36" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t127" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t120" to="t106" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t61" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t121" to="t122" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t80" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t123" to="t125" type="TRUE" sourcePosition="SOUTH" targetPosition="SOUTH" /> <connection from="t126" to="t60" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t123" to="t125" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t126" to="t119" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t124" to="t125" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t127" to="t75" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t127" to="t76" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>MultimediaControl</name> <name>MultimediaControl</name>
<group>AMAD2 Info/Control Flowset v2.1.4</group> <group>AMAD2 Info/Control Flowset v2.1.5</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>PARALLEL</executionPolicy> <executionPolicy>PARALLEL</executionPolicy>
<triggercontainer id="t1" x="0.0" y="-1032.5"> <triggercontainer id="t1" x="0.0" y="-1032.5">
@ -3110,7 +3110,7 @@ FHEMCMD: setreading</customHTTPHeaders>
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>SetCommands</name> <name>SetCommands</name>
<group>AMAD2 Info/Control Flowset v2.1.4</group> <group>AMAD2 Info/Control Flowset v2.1.5</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>QUEUE</executionPolicy> <executionPolicy>QUEUE</executionPolicy>
<emergencyStopCount>900</emergencyStopCount> <emergencyStopCount>900</emergencyStopCount>
@ -3244,7 +3244,7 @@ FHEMCMD: setreading</customHTTPHeaders>
<actioncontainer id="t122" x="3605.0" y="367.5">Nummer anrufen: {param_callnumber}</actioncontainer> <actioncontainer id="t122" x="3605.0" y="367.5">Nummer anrufen: {param_callnumber}</actioncontainer>
<conditioncontainer id="t123" x="3605.0" y="577.5">Expression: param_option</conditioncontainer> <conditioncontainer id="t123" x="3605.0" y="577.5">Expression: param_option</conditioncontainer>
<actioncontainer id="t124" x="3605.0" y="752.5">Pause: {param_hanguptime}s (Gerät wach halten)</actioncontainer> <actioncontainer id="t124" x="3605.0" y="752.5">Pause: {param_hanguptime}s (Gerät wach halten)</actioncontainer>
<actioncontainer id="t125" x="3605.0" y="892.50006">Anruf beenden</actioncontainer> <actioncontainer id="t125" x="3605.0" y="892.5">Anruf beenden</actioncontainer>
<connection from="t1" to="t88" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t1" to="t88" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t80" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t2" to="t80" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t61" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t3" to="t61" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
@ -3383,7 +3383,7 @@ FHEMCMD: setreading</customHTTPHeaders>
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>Update AMAD Flowset</name> <name>Update AMAD Flowset</name>
<group>AMAD2 Info/Control Flowset v2.1.4</group> <group>AMAD2 Info/Control Flowset v2.1.5</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>PARALLEL</executionPolicy> <executionPolicy>PARALLEL</executionPolicy>
<triggercontainer id="t1" x="420.0" y="-682.5"> <triggercontainer id="t1" x="420.0" y="-682.5">
@ -3431,7 +3431,7 @@ FHEMCMD: setreading</customHTTPHeaders>
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>VoiceControl</name> <name>VoiceControl</name>
<group>AMAD2 Info/Control Flowset v2.1.4</group> <group>AMAD2 Info/Control Flowset v2.1.5</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>QUEUE</executionPolicy> <executionPolicy>QUEUE</executionPolicy>
<emergencyStopCount>60</emergencyStopCount> <emergencyStopCount>60</emergencyStopCount>

View File

@ -12,7 +12,7 @@
<b>Wie genau verwendet man nun AMAD?</b> <b>Wie genau verwendet man nun AMAD?</b>
<ul> <ul>
<li>man installiert die App "Automagic Premium" aus dem PlayStore oder die Testversion von <a href="https://automagic4android.com/de/testversion">hier</a></li> <li>man installiert die App "Automagic Premium" aus dem PlayStore oder die Testversion von <a href="https://automagic4android.com/de/testversion">hier</a></li>
<li>dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidger&auml;t. NOCH NICHT die Flows aktivieren</li> <li>dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidger&auml;t und aktiviert die Flows</li>
</ul> </ul>
<br> <br>
Es mu&szlig; noch ein Device in FHEM anlegt werden. Es mu&szlig; noch ein Device in FHEM anlegt werden.
@ -40,7 +40,6 @@
Als zweites Reading kann <i>expertMode</i> gesetzen werden. Mit diesem Reading wird eine unmittelbare Komminikation mit FHEM erreicht ohne die Einschr&auml;nkung &uuml;ber ein Als zweites Reading kann <i>expertMode</i> gesetzen werden. Mit diesem Reading wird eine unmittelbare Komminikation mit FHEM erreicht ohne die Einschr&auml;nkung &uuml;ber ein
Notify gehen zu m&uuml;ssen und nur reine set Befehle ausf&uuml;hren zu k&ouml;nnen. Notify gehen zu m&uuml;ssen und nur reine set Befehle ausf&uuml;hren zu k&ouml;nnen.
</ul><br> </ul><br>
<b><u>NUN bitte die Flows AKTIVIEREN!!!</u></b><br>
<br> <br>
<b><u>Fertig! Nach anlegen der Ger&auml;teinstanz und dem eintragen der fhemServerIP in der CommBridge sollten nach sp&auml;testens 15 Sekunden bereits die ersten Readings reinkommen. Nun wird alle 15 Sekunden probiert einen Status Request erfolgreich ab zu schlie&szlig;en. Wenn der Status sich &uuml;ber einen l&auml;ngeren Zeitraum nicht auf "activ" &auml;ndert, sollte man im Log nach eventuellen Fehlern suchen.</u></b> <b><u>Fertig! Nach anlegen der Ger&auml;teinstanz und dem eintragen der fhemServerIP in der CommBridge sollten nach sp&auml;testens 15 Sekunden bereits die ersten Readings reinkommen. Nun wird alle 15 Sekunden probiert einen Status Request erfolgreich ab zu schlie&szlig;en. Wenn der Status sich &uuml;ber einen l&auml;ngeren Zeitraum nicht auf "activ" &auml;ndert, sollte man im Log nach eventuellen Fehlern suchen.</u></b>
<br><br><br> <br><br><br>
@ -58,7 +57,7 @@
<li>currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers</li> <li>currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers</li>
<li>currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers</li> <li>currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers</li>
<li>daydream - on/off, Daydream gestartet oder nicht</li> <li>daydream - on/off, Daydream gestartet oder nicht</li>
<li>deviceState - Status des Androidger&auml;tes. !!!Gibt nicht den tats&auml;chlichen Status des Ger&auml;tes wieder!!! deviceState muss von Hand selbst gesetzt werden. (set DEVICE deviceState) z.B. &uuml;ber die Anwesenheitskontrolle.<br> Ist Offline gesetzt, k&ouml;nnen keine set Befehle abgesetzt werden.</li> <li>deviceState - Status des Androidger&auml;tes. unknown, online, offline</li>
<li>dockingState - undocked/docked Status ob sich das Ger&auml;t in einer Dockinstation befindet.</li> <li>dockingState - undocked/docked Status ob sich das Ger&auml;t in einer Dockinstation befindet.</li>
<li>flow_SetCommands - active/inactive, Status des SetCommands Flow</li> <li>flow_SetCommands - active/inactive, Status des SetCommands Flow</li>
<li>flow_informations - active/inactive, Status des Informations Flow</li> <li>flow_informations - active/inactive, Status des Informations Flow</li>
@ -96,7 +95,6 @@
<li>bluetooth - on/off, aktiviert/deaktiviert Bluetooth</li> <li>bluetooth - on/off, aktiviert/deaktiviert Bluetooth</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>currentFlowsetUpdate - f&uuml;rt ein Flowsetupdate auf dem Device durch</li> <li>currentFlowsetUpdate - f&uuml;rt ein Flowsetupdate auf dem Device durch</li>
<li>deviceState - online/offline, setzt den Device Status . <b>mehr Info unter Readings</b></li>
<li>installFlowSource - installiert einen Flow auf dem Device, <u>das XML File muss unter /tmp/ liegen und die Endung xml haben</u>. <b>Bsp:</b> <i>set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml</i></li> <li>installFlowSource - installiert einen Flow auf dem Device, <u>das XML File muss unter /tmp/ liegen und die Endung xml haben</u>. <b>Bsp:</b> <i>set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml</i></li>
<li>mediaPlayer - play, stop, next, back ,steuert den Standard Mediaplayer</li> <li>mediaPlayer - play, stop, next, back ,steuert den Standard Mediaplayer</li>
<li>nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der n&auml;chsten 24Std.</li> <li>nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der n&auml;chsten 24Std.</li>