set Auswahl nach Attributeinstellung

This commit is contained in:
Marko Oldenburg 2015-08-25 21:51:35 +02:00
parent 69605891f0
commit bf3b1e00e3
2 changed files with 251 additions and 223 deletions

View File

@ -33,7 +33,8 @@ use Time::HiRes qw(gettimeofday);
use HttpUtils; use HttpUtils;
my $VERSION = "0.5.0"; my $version = "0.5.1";
sub AMAD_Initialize($) { sub AMAD_Initialize($) {
@ -48,10 +49,9 @@ sub AMAD_Initialize($) {
$hash->{AttrList} = "setOpenApp ". $hash->{AttrList} = "setOpenApp ".
"setFullscreen:0,1 ". "setFullscreen:0,1 ".
"setScreenOrientation:0,1 ". "setScreenOrientation:0,1 ".
"setScreenMsg:0,1 ". "setScreenBrightness:0,1 ".
"setOpenURL:0,1 ".
"setMediaPlayer:0,1 ". "setMediaPlayer:0,1 ".
"setAlarmTime:0,1 ". "interval ".
"port ". "port ".
"disable:1 "; "disable:1 ";
$hash->{AttrList} .= $readingFnAttributes; $hash->{AttrList} .= $readingFnAttributes;
@ -79,7 +79,7 @@ sub AMAD_Define($$) {
$hash->{HOST} = $host; $hash->{HOST} = $host;
$hash->{PORT} = $port; $hash->{PORT} = $port;
$hash->{INTERVAL} = $interval; $hash->{INTERVAL} = $interval;
$hash->{VERSION} = $VERSION; $hash->{VERSION} = $version;
Log3 $name, 3, "AMAD ($name) - defined with host $hash->{HOST} and interval $hash->{INTERVAL} (sec)"; Log3 $name, 3, "AMAD ($name) - defined with host $hash->{HOST} and interval $hash->{INTERVAL} (sec)";
@ -161,22 +161,22 @@ sub AMAD_GetUpdateTimer($)
sub AMAD_Set($$@) sub AMAD_Set($$@)
{ {
my ($hash, $name, $cmd, @val) = @_; my ($hash, $name, $cmd, @val) = @_;
my $apps = AttrVal("$name","openApp","none"); my $apps = AttrVal("$name","setOpenApp","none");
my $list = ""; my $list = "";
$list .= "screenMsg " if (AttrVal("$name","setScreenMsg","0") eq "1"); $list .= "screenMsg ";
$list .= "ttsMsg "; $list .= "ttsMsg ";
$list .= "volume:slider,0,1,15 "; $list .= "volume:slider,0,1,15 ";
$list .= "deviceState:online,offline "; $list .= "deviceState:online,offline ";
$list .= "mediaPlayer:play,stop,next,back " if (AttrVal("$name","setMediaPlayer","0") eq "1"); $list .= "mediaPlayer:play,stop,next,back " if (AttrVal("$name","setMediaPlayer","0") eq "1");
$list .= "screenBrightness:slider,0,1,255 "; $list .= "screenBrightness:slider,0,1,255 " if (AttrVal("$name","setScreenBrightness","0") eq "1");
$list .= "screen:on,off "; $list .= "screen:on,off ";
$list .= "screenOrientation:landscape,portrait,default " if (AttrVal("$name","setScreenOrientation","0") eq "1"); $list .= "screenOrientation:landscape,portrait,default " if (AttrVal("$name","setScreenOrientation","0") eq "1");
$list .= "screenFullscreen:on,off " if (AttrVal("$name","setFullscreen","0") eq "1"); $list .= "screenFullscreen:on,off " if (AttrVal("$name","setFullscreen","0") eq "1");
$list .= "openURL " if (AttrVal("$name","setOpenURL","0") eq "1"); $list .= "openURL ";
$list .= "openApp:$apps " if (AttrVal("$name","setOpenApp","none") ne "none"); $list .= "openApp:$apps " if (AttrVal("$name","setOpenApp","none") ne "none");
$list .= "nextAlarmTime:time " if (AttrVal("$name","setAlarmTime","0") eq "1"); $list .= "nextAlarmTime:time ";
$list .= "statusRequest:noArg "; $list .= "statusRequest:noArg ";
@ -190,7 +190,7 @@ sub AMAD_Set($$@)
|| lc $cmd eq 'screenfullscreen' || lc $cmd eq 'screenfullscreen'
|| lc $cmd eq 'screen' || lc $cmd eq 'screen'
|| lc $cmd eq 'openurl' || lc $cmd eq 'openurl'
|| lc $cmd eq 'openApp' || lc $cmd eq 'openapp'
|| lc $cmd eq 'nextalarmtime' || lc $cmd eq 'nextalarmtime'
|| lc $cmd eq 'statusrequest') { || lc $cmd eq 'statusrequest') {
@ -213,12 +213,12 @@ sub AMAD_RetrieveAutomagicInfo($)
HttpUtils_NonblockingGet( HttpUtils_NonblockingGet(
{ {
url => $url, url => $url,
timeout => 5, timeout => 5,
hash => $hash, hash => $hash,
method => "GET", method => "GET",
doTrigger => 1, doTrigger => 1,
callback => \&AMAD_RetrieveAutomagicInfoFinished, callback => \&AMAD_RetrieveAutomagicInfoFinished,
} }
); );
Log3 $name, 4, "AMAD ($name) - NonblockingGet get URL"; Log3 $name, 4, "AMAD ($name) - NonblockingGet get URL";
@ -289,12 +289,12 @@ sub AMAD_HTTP_POST($$)
HttpUtils_NonblockingGet( HttpUtils_NonblockingGet(
{ {
url => $url, url => $url,
timeout => 5, timeout => 5,
hash => $hash, hash => $hash,
method => "POST", method => "POST",
doTrigger => 1, doTrigger => 1,
callback => \&AMAD_HTTP_POSTerrorHandling, callback => \&AMAD_HTTP_POSTerrorHandling,
} }
); );
Log3 $name, 4, "AMAD ($name) - Send HTTP POST with URL $url"; Log3 $name, 4, "AMAD ($name) - Send HTTP POST with URL $url";
@ -437,6 +437,7 @@ sub AMAD_SelectSetCmd($$@)
return AMAD_HTTP_POST ($hash,$url); return AMAD_HTTP_POST ($hash,$url);
} }
elsif (lc $cmd eq 'nextalarmtime') { elsif (lc $cmd eq 'nextalarmtime') {
my $alarmTime = join(" ", @data); my $alarmTime = join(" ", @data);
my @alarm = split(":", $alarmTime); my @alarm = split(":", $alarmTime);
@ -447,10 +448,19 @@ sub AMAD_SelectSetCmd($$@)
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
return AMAD_HTTP_POST ($hash,$url); return AMAD_HTTP_POST ($hash,$url);
} }
elsif (lc $cmd eq 'statusrequest') { elsif (lc $cmd eq 'statusrequest') {
AMAD_GetUpdateLocal($hash); AMAD_GetUpdateLocal($hash);
return undef; return undef;
} }
elsif (lc $cmd eq 'openapp') {
my $app = join(" ", @data);
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/openApp?app=$app";
return AMAD_HTTP_POST ($hash,$url);
}
return undef; return undef;
} }

View File

@ -40,8 +40,8 @@ album = getString("album");</extras>
<batteryLevelCondition>HIGHER_THAN</batteryLevelCondition> <batteryLevelCondition>HIGHER_THAN</batteryLevelCondition>
</condition> </condition>
<condition type="notification_status_bar_displayed"> <condition type="notification_status_bar_displayed">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic</name> <name>Benachrichtigung in Statusbar angezeigt: Automagic</name>
<packageNameFilter>ch.gridvision.ppam.androidautomagic</packageNameFilter> <packageNameFilter>ch.gridvision.ppam.androidautomagic</packageNameFilter>
<textMatchField>TEXT</textMatchField> <textMatchField>TEXT</textMatchField>
<textMatchType>CONTAINS_TEXT</textMatchType> <textMatchType>CONTAINS_TEXT</textMatchType>
@ -87,6 +87,21 @@ album = getString("album");</extras>
<name>Expression: App5</name> <name>Expression: App5</name>
<expression>param_app == ""</expression> <expression>param_app == ""</expression>
</condition> </condition>
<condition type="expression">
<useDefaultName>false</useDefaultName>
<name>Expression: mediaPlayer"</name>
<expression>request_path == "/fhem-amad/setCommands/mediaPlayer"</expression>
</condition>
<condition type="expression">
<useDefaultName>false</useDefaultName>
<name>Expression: openApp"</name>
<expression>request_path == "/fhem-amad/setCommands/openApp"</expression>
</condition>
<condition type="expression">
<useDefaultName>false</useDefaultName>
<name>Expression: openURL"</name>
<expression>request_path == "/fhem-amad/setCommands/openURL"</expression>
</condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Expression: param_button == "back"</name> <name>Expression: param_button == "back"</name>
@ -143,65 +158,50 @@ album = getString("album");</extras>
<expression>param_screen=="on"</expression> <expression>param_screen=="on"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/mediaPlayer"</name> <name>Expression: screenMsg"</name>
<expression>request_path == "/fhem-amad/setCommands/mediaPlayer"</expression>
</condition>
<condition type="expression">
<useDefaultName>true</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/openApp"</name>
<expression>request_path == "/fhem-amad/setCommands/openApp"</expression>
</condition>
<condition type="expression">
<useDefaultName>true</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/openURL"</name>
<expression>request_path == "/fhem-amad/setCommands/openURL"</expression>
</condition>
<condition type="expression">
<useDefaultName>true</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/screenMsg"</name>
<expression>request_path == "/fhem-amad/setCommands/screenMsg"</expression> <expression>request_path == "/fhem-amad/setCommands/screenMsg"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/setAlarm"</name> <name>Expression: setAlarm"</name>
<expression>request_path == "/fhem-amad/setCommands/setAlarm"</expression> <expression>request_path == "/fhem-amad/setCommands/setAlarm"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/setBrightness"</name> <name>Expression: setBrightness"</name>
<expression>request_path == "/fhem-amad/setCommands/setBrightness"</expression> <expression>request_path == "/fhem-amad/setCommands/setBrightness"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/setScreenFullscreen"</name> <name>Expression: setScreenFullscreen"</name>
<expression>request_path == "/fhem-amad/setCommands/setScreenFullscreen"</expression> <expression>request_path == "/fhem-amad/setCommands/setScreenFullscreen"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff"</name> <name>Expression: setScreenOnOff"</name>
<expression>request_path == "/fhem-amad/setCommands/setScreenOnOff"</expression> <expression>request_path == "/fhem-amad/setCommands/setScreenOnOff"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/setScreenOrientation"</name> <name>Expression: setScreenOrientation"</name>
<expression>request_path == "/fhem-amad/setCommands/setScreenOrientation"</expression> <expression>request_path == "/fhem-amad/setCommands/setScreenOrientation"</expression>
</condition> </condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/setVolume"</name> <name>Expression: setVolume"</name>
<expression>request_path == "/fhem-amad/setCommands/setVolume"</expression> <expression>request_path == "/fhem-amad/setCommands/setVolume"</expression>
</condition> </condition>
<condition type="expression">
<useDefaultName>true</useDefaultName>
<name>Expression: request_path == "/fhem-amad/setCommands/ttsMsg"</name>
<expression>request_path == "/fhem-amad/setCommands/ttsMsg"</expression>
</condition>
<condition type="expression"> <condition type="expression">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Expression: trigger == "com.android.music.metachanged"</name> <name>Expression: trigger == "com.android.music.metachanged"</name>
<expression>trigger == "com.android.music.metachanged"</expression> <expression>trigger == "com.android.music.metachanged"</expression>
</condition> </condition>
<condition type="expression">
<useDefaultName>false</useDefaultName>
<name>Expression: ttsMsg"</name>
<expression>request_path == "/fhem-amad/setCommands/ttsMsg"</expression>
</condition>
<condition type="wifi_connected"> <condition type="wifi_connected">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>WLAN Verbunden: TuxNet-AP01</name> <name>WLAN Verbunden: TuxNet-AP01</name>
@ -209,8 +209,26 @@ album = getString("album");</extras>
<ssidList>TuxNet-AP01</ssidList> <ssidList>TuxNet-AP01</ssidList>
</condition> </condition>
<action type="launch_app"> <action type="launch_app">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>App Starten: com.google.android.music</name> <name>App Starten: App3</name>
<packageName></packageName>
<className></className>
</action>
<action type="launch_app">
<useDefaultName>false</useDefaultName>
<name>App Starten: App4</name>
<packageName></packageName>
<className></className>
</action>
<action type="launch_app">
<useDefaultName>false</useDefaultName>
<name>App Starten: App5</name>
<packageName></packageName>
<className></className>
</action>
<action type="launch_app">
<useDefaultName>false</useDefaultName>
<name>App Starten: PlayMusic</name>
<packageName>com.google.android.music</packageName> <packageName>com.google.android.music</packageName>
<className></className> <className></className>
</action> </action>
@ -349,27 +367,27 @@ album = getString("album");</extras>
<contentType>text/plain</contentType> <contentType>text/plain</contentType>
</action> </action>
<action type="init_variable_next_alarm"> <action type="init_variable_next_alarm">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Initialisiere Variable Nächster Alarm: Variable next_alarm</name> <name>Initialisiere Variable Nächster Alarm: next_alarm</name>
<variable>next_alarm</variable> <variable>next_alarm</variable>
</action> </action>
<action type="init_variable_system_setting"> <action type="init_variable_system_setting">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</name> <name>Initialisiere Variable Systemeinstellung: screenBrightness</name>
<settingCategory>SYSTEM</settingCategory> <settingCategory>SYSTEM</settingCategory>
<settingName>screen_brightness</settingName> <settingName>screen_brightness</settingName>
<variable>screenBrightness</variable> <variable>screenBrightness</variable>
</action> </action>
<action type="init_variable_system_setting"> <action type="init_variable_system_setting">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</name> <name>Initialisiere Variable Systemeinstellung: volumeMusikBluetooth</name>
<settingCategory>SYSTEM</settingCategory> <settingCategory>SYSTEM</settingCategory>
<settingName>volume_music_bt_a2dp</settingName> <settingName>volume_music_bt_a2dp</settingName>
<variable>volumeMusikBluetooth</variable> <variable>volumeMusikBluetooth</variable>
</action> </action>
<action type="init_variable_system_setting"> <action type="init_variable_system_setting">
<useDefaultName>true</useDefaultName> <useDefaultName>false</useDefaultName>
<name>Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</name> <name>Initialisiere Variable Systemeinstellung: volumeMusikSpeaker</name>
<settingCategory>SYSTEM</settingCategory> <settingCategory>SYSTEM</settingCategory>
<settingName>volume_music_speaker</settingName> <settingName>volume_music_speaker</settingName>
<variable>volumeMusikSpeaker</variable> <variable>volumeMusikSpeaker</variable>
@ -404,9 +422,9 @@ album = getString("album");</extras>
</action> </action>
<action type="turn_screen_on"> <action type="turn_screen_on">
<useDefaultName>true</useDefaultName> <useDefaultName>true</useDefaultName>
<name>Schalte Display ein: Hell für 60s</name> <name>Schalte Display ein: Hell für 120s</name>
<bright>true</bright> <bright>true</bright>
<duration>60s</duration> <duration>120s</duration>
<resetUserActivityTimer>true</resetUserActivityTimer> <resetUserActivityTimer>true</resetUserActivityTimer>
</action> </action>
<action type="script"> <action type="script">
@ -518,57 +536,57 @@ album = getString("album");</extras>
<name>Informations</name> <name>Informations</name>
<group>FHEM Info / Steuerung über AMAD Modul</group> <group>FHEM Info / Steuerung über AMAD Modul</group>
<enabled>true</enabled> <enabled>true</enabled>
<executionPolicy>QUEUE</executionPolicy> <executionPolicy>STOP</executionPolicy>
<emergencyStopCount>120</emergencyStopCount> <emergencyStopCount>120</emergencyStopCount>
<actioncontainer id="t1" x="665.0" y="612.5">Initialisiere Variable Nächster Alarm: Variable next_alarm</actioncontainer> <actioncontainer id="t1" x="770.0" y="857.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
<actioncontainer id="t2" x="-175.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</actioncontainer> <conditioncontainer id="t2" x="1120.0" y="612.5">Display eingeschaltet</conditioncontainer>
<actioncontainer id="t3" x="70.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</actioncontainer> <actioncontainer id="t3" x="1015.0" y="857.5">Script: screen_state = "on"</actioncontainer>
<actioncontainer id="t4" x="350.0" y="612.5">Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</actioncontainer> <actioncontainer id="t4" x="1225.0" y="857.5">Script: screen_state = "off"</actioncontainer>
<actioncontainer id="t5" x="560.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer> <actioncontainer id="t5" x="1680.0" y="857.50024">Script: screen_orientation = "default"</actioncontainer>
<actioncontainer id="t6" x="770.0" y="857.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer> <actioncontainer id="t6" x="1890.0" y="857.50024">Script: screen_orientation = "portrait"</actioncontainer>
<conditioncontainer id="t7" x="1120.0" y="612.5">Display eingeschaltet</conditioncontainer> <actioncontainer id="t7" x="2099.9998" y="857.5">Script: screen_orientation = "landscape"</actioncontainer>
<actioncontainer id="t8" x="1015.0" y="857.5">Script: screen_state = "on"</actioncontainer> <conditioncontainer id="t8" x="1995.0002" y="682.4999">Display Orientierung: Portrait</conditioncontainer>
<conditioncontainer id="t9" x="1435.0" y="612.5">Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic</conditioncontainer> <actioncontainer id="t9" x="1015.0001" y="1487.5">HTTP Response</actioncontainer>
<actioncontainer id="t10" x="1225.0" y="857.5">Script: screen_state = "off"</actioncontainer> <actioncontainer id="t10" x="1014.9999" y="17.499992">Pause: 2s (Gerät wach halten)</actioncontainer>
<conditioncontainer id="t11" x="1680.0002" y="612.5001">Display automatisch drehen eingeschaltet</conditioncontainer> <conditioncontainer id="t11" x="1014.9999" y="262.49997">Akku Ladestand: grösser als 0%</conditioncontainer>
<actioncontainer id="t12" x="1680.0" y="857.50024">Script: screen_orientation = "default"</actioncontainer> <actioncontainer id="t12" x="-175.0" y="612.5">Initialisiere Variable Systemeinstellung: volumeMusikBluetooth</actioncontainer>
<actioncontainer id="t13" x="1890.0" y="857.50024">Script: screen_orientation = "portrait"</actioncontainer> <actioncontainer id="t13" x="70.0" y="612.5">Initialisiere Variable Systemeinstellung: volumeMusikSpeaker</actioncontainer>
<actioncontainer id="t14" x="2099.9998" y="857.5">Script: screen_orientation = "landscape"</actioncontainer> <actioncontainer id="t14" x="350.0" y="612.5">Initialisiere Variable Systemeinstellung: screenBrightness</actioncontainer>
<conditioncontainer id="t15" x="1995.0002" y="682.4999">Display Orientierung: Portrait</conditioncontainer> <actioncontainer id="t15" x="665.0" y="612.5">Initialisiere Variable Nächster Alarm: next_alarm</actioncontainer>
<actioncontainer id="t16" x="1015.0001" y="1487.5">HTTP Response</actioncontainer> <conditioncontainer id="t16" x="1435.0" y="612.5">Benachrichtigung in Statusbar angezeigt: Automagic</conditioncontainer>
<actioncontainer id="t17" x="1014.9999" y="17.499992">Pause: 2s (Gerät wach halten)</actioncontainer> <conditioncontainer id="t17" x="1680.0002" y="612.5001">Display automatisch drehen eingeschaltet</conditioncontainer>
<conditioncontainer id="t18" x="1014.9999" y="262.49997">Akku Ladestand: grösser als 0%</conditioncontainer> <actioncontainer id="t18" x="560.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
<triggercontainer id="t19" x="1014.9999" y="-227.50005"> <triggercontainer id="t19" x="1014.9999" y="-227.50005">
<trigger>HTTP Request: /fhem-amad/deviceInfo/, Port 8090</trigger> <trigger>HTTP Request: /fhem-amad/deviceInfo/, Port 8090</trigger>
</triggercontainer> </triggercontainer>
<connection from="t1" to="t5" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t1" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t1" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t2" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t2" to="t4" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t3" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t4" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t5" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t6" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t6" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t7" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t7" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t7" to="t10" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t8" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t8" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t8" to="t7" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t10" to="t11" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t10" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t11" to="t15" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t11" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t12" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t13" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t14" to="t16" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t15" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t15" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t15" to="t14" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t17" to="t18" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t17" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t13" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t14" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t1" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t15" to="t18" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t15" to="t1" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t16" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t11" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t17" to="t8" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t19" to="t17" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t17" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t18" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t19" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow> </flow>
<flow type="flow"> <flow type="flow">
<name>SetCommands</name> <name>SetCommands</name>
@ -582,111 +600,111 @@ album = getString("album");</extras>
</triggercontainer> </triggercontainer>
<conditioncontainer id="t2" x="-1610.0" y="367.5">Expression: param_screen=="off"</conditioncontainer> <conditioncontainer id="t2" x="-1610.0" y="367.5">Expression: param_screen=="off"</conditioncontainer>
<conditioncontainer id="t3" x="-1435.0" y="367.5">Expression: param_screen=="on"</conditioncontainer> <conditioncontainer id="t3" x="-1435.0" y="367.5">Expression: param_screen=="on"</conditioncontainer>
<conditioncontainer id="t4" x="-1820.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setVolume"</conditioncontainer> <actioncontainer id="t4" x="-175.0" y="892.5">Audio Player steuern: Medienknopf Stopp (Google Play Musik)</actioncontainer>
<conditioncontainer id="t5" x="-1610.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff"</conditioncontainer> <conditioncontainer id="t5" x="70.0" y="577.5">Expression: param_button == "play"</conditioncontainer>
<actioncontainer id="t6" x="-1435.0" y="892.5">Schalte Display ein: Hell für 60s</actioncontainer> <actioncontainer id="t6" x="70.0" y="892.5">Audio Player steuern: Medienknopf Play (Google Play Musik)</actioncontainer>
<actioncontainer id="t7" x="-1610.0" y="892.5">Gerät sperren</actioncontainer> <actioncontainer id="t7" x="315.0" y="892.5">Audio Player steuern: Medienknopf Weiter (Google Play Musik)</actioncontainer>
<actioncontainer id="t8" x="-1820.0" y="892.5">Lautstärken setzen</actioncontainer> <conditioncontainer id="t8" x="315.0" y="577.5">Expression: param_button == "next"</conditioncontainer>
<conditioncontainer id="t9" x="-1015.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setBrightness"</conditioncontainer> <actioncontainer id="t9" x="560.0" y="892.5">Audio Player steuern: Medienknopf Zurück (Google Play Musik)</actioncontainer>
<conditioncontainer id="t10" x="-805.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setAlarm"</conditioncontainer> <actioncontainer id="t10" x="-1225.0" y="892.5">Sprachausgabe: {param_message}</actioncontainer>
<actioncontainer id="t11" x="-595.0" y="892.5">Benachrichtigung auf Bildschirm: {param_message} (lange)</actioncontainer> <conditioncontainer id="t11" x="-175.0" y="577.5">Expression: param_button == "stop"</conditioncontainer>
<conditioncontainer id="t12" x="-595.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/screenMsg"</conditioncontainer> <conditioncontainer id="t12" x="-1015.0" y="-1137.5">Expression: trigger == "com.android.music.metachanged"</conditioncontainer>
<actioncontainer id="t13" x="-385.0" y="892.5">URL in Browser öffnen: {param_url} (mit Chrome)</actioncontainer> <conditioncontainer id="t13" x="560.0" y="577.5">Expression: param_button == "back"</conditioncontainer>
<conditioncontainer id="t14" x="-385.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/openURL"</conditioncontainer> <actioncontainer id="t14" x="1435.0" y="892.5">Setze Display Orientierung: Landscape</actioncontainer>
<actioncontainer id="t15" x="-175.0" y="892.5">Audio Player steuern: Medienknopf Stopp (Google Play Musik)</actioncontainer> <actioncontainer id="t15" x="1680.0" y="892.5">Setze Display Orientierung: Portrait</actioncontainer>
<conditioncontainer id="t16" x="70.0" y="577.5">Expression: param_button == "play"</conditioncontainer> <actioncontainer id="t16" x="1925.0" y="892.5">Setze Display Orientierung: Auf Default zurücksetzen</actioncontainer>
<actioncontainer id="t17" x="70.0" y="892.5">Audio Player steuern: Medienknopf Play (Google Play Musik)</actioncontainer> <conditioncontainer id="t17" x="1435.0" y="577.5">Expression: param_orientation == "landscape"</conditioncontainer>
<actioncontainer id="t18" x="315.0" y="892.5">Audio Player steuern: Medienknopf Weiter (Google Play Musik)</actioncontainer> <conditioncontainer id="t18" x="1680.0" y="577.5">Expression: param_orientation == "portrait"</conditioncontainer>
<conditioncontainer id="t19" x="315.0" y="577.5">Expression: param_button == "next"</conditioncontainer> <conditioncontainer id="t19" x="1925.0" y="577.5">Expression: param_orientation == "default"</conditioncontainer>
<actioncontainer id="t20" x="560.0" y="892.5">Audio Player steuern: Medienknopf Zurück (Google Play Musik)</actioncontainer> <conditioncontainer id="t20" x="875.0" y="577.5">Expression: param_fullscreen == "on"</conditioncontainer>
<actioncontainer id="t21" x="-1225.0" y="892.5">Sprachausgabe: {param_message}</actioncontainer> <conditioncontainer id="t21" x="1084.9999" y="577.50006">Expression: param_fullscreen == "off"</conditioncontainer>
<actioncontainer id="t22" x="-1015.0" y="892.5">Setze Systemeinstellung: System screen_brightness auf {param_brightness}</actioncontainer> <actioncontainer id="t22" x="1085.0" y="892.5">Setze Vollbild Modus: Auf Default zurücksetzen</actioncontainer>
<conditioncontainer id="t23" x="-1225.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/ttsMsg"</conditioncontainer> <conditioncontainer id="t23" x="-2590.0" y="507.50024">Expression: App3</conditioncontainer>
<conditioncontainer id="t24" x="-175.0" y="577.5">Expression: param_button == "stop"</conditioncontainer> <conditioncontainer id="t24" x="-2345.0" y="507.50024">Expression: App4</conditioncontainer>
<conditioncontainer id="t25" x="175.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/mediaPlayer"</conditioncontainer> <conditioncontainer id="t25" x="-2099.9998" y="507.50024">Expression: App5</conditioncontainer>
<conditioncontainer id="t26" x="-1015.0" y="-1137.5">Expression: trigger == "com.android.music.metachanged"</conditioncontainer> <actioncontainer id="t26" x="-2835.0" y="892.5">App Starten: tuneinradio</actioncontainer>
<conditioncontainer id="t27" x="560.0" y="577.5">Expression: param_button == "back"</conditioncontainer> <conditioncontainer id="t27" x="-3569.9995" y="-122.499985">WLAN Verbunden: TuxNet-AP01</conditioncontainer>
<actioncontainer id="t28" x="1435.0" y="892.5">Setze Display Orientierung: Landscape</actioncontainer> <actioncontainer id="t28" x="-3780.0002" y="892.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentMusicTrack%20{encodeURLForm(track)} speichern in response</actioncontainer>
<actioncontainer id="t29" x="1680.0" y="892.5">Setze Display Orientierung: Portrait</actioncontainer> <actioncontainer id="t29" x="-3569.9995" y="892.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response</actioncontainer>
<actioncontainer id="t30" x="1925.0" y="892.5">Setze Display Orientierung: Auf Default zurücksetzen</actioncontainer> <actioncontainer id="t30" x="-3360.0005" y="892.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response</actioncontainer>
<conditioncontainer id="t31" x="1435.0" y="577.5">Expression: param_orientation == "landscape"</conditioncontainer> <conditioncontainer id="t31" x="-1820.0" y="-122.5">Expression: setVolume"</conditioncontainer>
<conditioncontainer id="t32" x="1680.0" y="577.5">Expression: param_orientation == "portrait"</conditioncontainer> <conditioncontainer id="t32" x="-2590.0" y="-122.49996">Expression: openApp"</conditioncontainer>
<conditioncontainer id="t33" x="1925.0" y="577.5">Expression: param_orientation == "default"</conditioncontainer> <conditioncontainer id="t33" x="-1610.0" y="-122.5">Expression: setScreenOnOff"</conditioncontainer>
<conditioncontainer id="t34" x="875.0" y="577.5">Expression: param_fullscreen == "on"</conditioncontainer> <conditioncontainer id="t34" x="-1225.0" y="-122.5">Expression: ttsMsg"</conditioncontainer>
<conditioncontainer id="t35" x="1084.9999" y="577.50006">Expression: param_fullscreen == "off"</conditioncontainer> <conditioncontainer id="t35" x="-1015.0" y="-122.5">Expression: setBrightness"</conditioncontainer>
<actioncontainer id="t36" x="875.0" y="892.5">Setze Vollbild Modus: Navigation nicht anzeigen</actioncontainer> <conditioncontainer id="t36" x="-805.0" y="-122.5">Expression: setAlarm"</conditioncontainer>
<actioncontainer id="t37" x="1085.0" y="892.5">Setze Vollbild Modus: Auf Default zurücksetzen</actioncontainer> <conditioncontainer id="t37" x="-595.0" y="-122.5">Expression: screenMsg"</conditioncontainer>
<conditioncontainer id="t38" x="-3080.0" y="507.50024">Expression: App1</conditioncontainer> <conditioncontainer id="t38" x="-385.0" y="-122.5">Expression: openURL"</conditioncontainer>
<conditioncontainer id="t39" x="-2590.0" y="507.50024">Expression: App3</conditioncontainer> <conditioncontainer id="t39" x="175.0" y="-122.5">Expression: mediaPlayer"</conditioncontainer>
<conditioncontainer id="t40" x="-2835.0" y="507.50024">Expression: App2</conditioncontainer> <conditioncontainer id="t40" x="979.9999" y="-122.49999">Expression: setScreenFullscreen"</conditioncontainer>
<conditioncontainer id="t41" x="-2345.0" y="507.50024">Expression: App4</conditioncontainer> <conditioncontainer id="t41" x="1680.0" y="-122.499985">Expression: setScreenOrientation"</conditioncontainer>
<conditioncontainer id="t42" x="-2099.9998" y="507.50024">Expression: App5</conditioncontainer> <actioncontainer id="t42" x="-1820.0" y="892.5">Lautstärken setzen</actioncontainer>
<actioncontainer id="t43" x="-2345.0" y="892.5">App Starten: tuneinradio</actioncontainer> <actioncontainer id="t43" x="-1015.0" y="892.5">Setze Systemeinstellung: System screen_brightness auf {param_brightness}</actioncontainer>
<actioncontainer id="t44" x="-2590.0" y="892.5">App Starten: tuneinradio</actioncontainer> <actioncontainer id="t44" x="-805.0" y="892.5">Setze Alarm: um {param_hour}:{param_minute}</actioncontainer>
<actioncontainer id="t45" x="-2835.0" y="892.5">App Starten: tuneinradio</actioncontainer> <actioncontainer id="t45" x="-385.0" y="892.5">URL in Browser öffnen: {param_url} (mit Chrome)</actioncontainer>
<actioncontainer id="t46" x="-3080.0" y="892.5">App Starten: com.google.android.music</actioncontainer> <actioncontainer id="t46" x="-595.0" y="892.5">Benachrichtigung auf Bildschirm: {param_message} (lange)</actioncontainer>
<actioncontainer id="t47" x="-2099.9998" y="892.5">App Starten: tuneinradio</actioncontainer> <actioncontainer id="t47" x="875.0" y="892.5">Setze Vollbild Modus: Navigation nicht anzeigen</actioncontainer>
<conditioncontainer id="t48" x="-3569.9995" y="-122.499985">WLAN Verbunden: TuxNet-AP01</conditioncontainer> <actioncontainer id="t48" x="-1610.0" y="892.5">Gerät sperren</actioncontainer>
<actioncontainer id="t49" x="-3780.0002" y="892.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentMusicTrack%20{encodeURLForm(track)} speichern in response</actioncontainer> <actioncontainer id="t49" x="-1435.0" y="892.5">Schalte Display ein: Hell für 120s</actioncontainer>
<actioncontainer id="t50" x="-3569.9995" y="892.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response</actioncontainer> <actioncontainer id="t50" x="-2590.0" y="892.5">App Starten: App3</actioncontainer>
<actioncontainer id="t51" x="-3360.0005" y="892.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response</actioncontainer> <actioncontainer id="t51" x="-2345.0" y="892.5">App Starten: App4</actioncontainer>
<conditioncontainer id="t52" x="979.9999" y="-122.49999">Expression: request_path == "/fhem-amad/setCommands/setScreenFullscreen"</conditioncontainer> <actioncontainer id="t52" x="-2099.9998" y="892.5">App Starten: App5</actioncontainer>
<conditioncontainer id="t53" x="-2590.0" y="-122.49996">Expression: request_path == "/fhem-amad/setCommands/openApp"</conditioncontainer> <actioncontainer id="t53" x="-3080.0" y="892.5">App Starten: PlayMusic</actioncontainer>
<conditioncontainer id="t54" x="1680.0" y="-122.499985">Expression: request_path == "/fhem-amad/setCommands/setScreenOrientation"</conditioncontainer> <conditioncontainer id="t54" x="-2835.0" y="507.50024">Expression: App2</conditioncontainer>
<actioncontainer id="t55" x="-805.0" y="892.5">Setze Alarm: um {param_hour}:{param_minute}</actioncontainer> <conditioncontainer id="t55" x="-3080.0" y="507.50024">Expression: App1</conditioncontainer>
<connection from="t1" to="t26" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t1" to="t12" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t2" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t2" to="t48" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t3" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t3" to="t49" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t4" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t5" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t8" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t5" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t11" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t9" to="t22" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t31" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t10" to="t55" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t33" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t12" to="t11" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t34" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t14" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t35" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t16" to="t17" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t36" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t19" to="t18" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t37" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t23" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t38" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t24" to="t15" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t39" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t25" to="t24" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t27" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t25" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t32" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t25" to="t19" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t40" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t25" to="t27" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t12" to="t41" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t4" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t13" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t5" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t17" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t23" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t18" to="t15" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t9" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t19" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t10" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t20" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t12" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t21" to="t22" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t14" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t23" to="t50" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t25" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t24" to="t51" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t48" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t25" to="t52" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t53" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t27" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t52" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t27" to="t29" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t26" to="t54" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t27" to="t30" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t27" to="t20" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t31" to="t42" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t31" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t23" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t32" to="t29" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t55" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t33" to="t30" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t54" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t34" to="t36" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t24" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t35" to="t37" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t32" to="t25" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t38" to="t46" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t33" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t39" to="t44" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t33" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t40" to="t45" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t34" to="t10" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t41" to="t43" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t35" to="t43" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t42" to="t47" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t36" to="t44" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t48" to="t49" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t37" to="t46" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t48" to="t50" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t38" to="t45" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t48" to="t51" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t39" to="t11" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t52" to="t34" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t39" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t52" to="t35" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t39" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t53" to="t39" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t39" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t53" to="t38" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t40" to="t20" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t53" to="t40" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t40" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t53" to="t41" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t41" to="t18" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t53" to="t42" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t41" to="t17" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t54" to="t32" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t41" to="t19" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t54" to="t31" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t54" to="t26" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
<connection from="t54" to="t33" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" /> <connection from="t55" to="t53" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
</flow> </flow>
</data> </data>