Merge branch 'devel'
Vorbereitung für die Stable Version 0.4.0
This commit is contained in:
commit
6d2c6ff3b8
417
74_AMAD.pm
417
74_AMAD.pm
@ -22,7 +22,7 @@
|
||||
#
|
||||
################################################################
|
||||
|
||||
###### Version 0.2.1 ############
|
||||
###### Version 0.3.6 ############
|
||||
|
||||
|
||||
|
||||
@ -154,51 +154,28 @@ sub AMAD_Set($$@)
|
||||
|
||||
my $list = "screenMsg"
|
||||
. " ttsMsg"
|
||||
. " Volume:slider,0,1,15"
|
||||
. " DeviceState:online,offline"
|
||||
. " MediaPlayer:play,stop,next,back"
|
||||
. " Brightness:slider,0,1,255"
|
||||
. " Screen:on,off"
|
||||
. " openURL";
|
||||
|
||||
|
||||
if (lc $cmd eq 'screenmsg') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val);
|
||||
return AMAD_SetScreenMsg ($hash, @val) if (defined(@val));
|
||||
}
|
||||
elsif (lc $cmd eq 'ttsmsg') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
return AMAD_SetTtsMsg ($hash, @val);
|
||||
}
|
||||
elsif (lc $cmd eq 'volume') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
return AMAD_SetVolume ($hash, @val);
|
||||
}
|
||||
elsif (lc $cmd eq 'mediaplayer') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
return AMAD_SetMediaplayer ($hash, @val);
|
||||
}
|
||||
elsif (lc $cmd eq 'devicestate') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
my $v = join(" ", @val);
|
||||
. " defaultVolume:slider,0,1,15"
|
||||
. " deviceState:online,offline"
|
||||
. " mediaPlayer:play,stop,next,back"
|
||||
. " screenBrightness:slider,0,1,255"
|
||||
. " screen:on,off"
|
||||
. " openURL"
|
||||
. " nextAlarmTime:time";
|
||||
|
||||
readingsSingleUpdate ($hash,$cmd,$v,1);
|
||||
|
||||
if (lc $cmd eq 'screenmsg'
|
||||
|| lc $cmd eq 'ttsmsg'
|
||||
|| lc $cmd eq 'defaultvolume'
|
||||
|| lc $cmd eq 'mediaplayer'
|
||||
|| lc $cmd eq 'devicestate'
|
||||
|| lc $cmd eq 'screenbrightness'
|
||||
|| lc $cmd eq 'screen'
|
||||
|| lc $cmd eq 'openurl'
|
||||
|| lc $cmd eq 'nextalarmtime') {
|
||||
|
||||
return undef;
|
||||
}
|
||||
elsif (lc $cmd eq 'brightness') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
return AMAD_SetBrightness ($hash, @val);
|
||||
}
|
||||
elsif (lc $cmd eq 'screen') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
return AMAD_SetScreen ($hash, @val);
|
||||
}
|
||||
elsif (lc $cmd eq 'openurl') {
|
||||
Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val));
|
||||
return AMAD_SetOpenURL ($hash, @val);
|
||||
}
|
||||
|
||||
Log3 $name, 5, "AMAD ($name) - set $name $cmd ".join(" ", @val);
|
||||
return AMAD_SelectSetCmd ($hash, $cmd, @val) if (@val);
|
||||
}
|
||||
|
||||
return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list";
|
||||
}
|
||||
@ -210,7 +187,7 @@ sub AMAD_RetrieveAutomagicInfo($)
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/deviceInfo";
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/deviceInfo/";
|
||||
|
||||
HttpUtils_NonblockingGet(
|
||||
{
|
||||
@ -234,13 +211,13 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$)
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
|
||||
Log3 $name, 3, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: calling Host: $host";
|
||||
Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: calling Host: $host";
|
||||
|
||||
if (defined($err)) {
|
||||
if ($err ne "")
|
||||
{
|
||||
$hash->{STATE} = "error" if ($hash->{STATE} ne "initialized");
|
||||
Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: error while requesting AutomagicInfo: $err";
|
||||
Log3 $name, 5, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: error while requesting AutomagicInfo: $err";
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -248,16 +225,16 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$)
|
||||
if($data eq "" and exists($param->{code}))
|
||||
{
|
||||
$hash->{STATE} = "error" if ($hash->{STATE} ne "initialized");
|
||||
Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: received http code ".$param->{code}." without any data after requesting AMAD AutomagicInfo";
|
||||
Log3 $name, 5, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: received http code ".$param->{code}." without any data after requesting AMAD AutomagicInfo";
|
||||
return;
|
||||
}
|
||||
|
||||
# $hash->{RETRIEVECACHE} = $data; # zu Testzwecken
|
||||
|
||||
my @valuestring = split('@@', $data);
|
||||
my @valuestring = split('@@@@', $data);
|
||||
my %buffer;
|
||||
foreach (@valuestring) {
|
||||
my @values = split(' ', $_);
|
||||
my @values = split('@@', $_);
|
||||
$buffer{$values[0]} = $values[1];
|
||||
}
|
||||
|
||||
@ -283,13 +260,13 @@ sub AMAD_HTTP_POST($$)
|
||||
|
||||
if ($hash->{STATE} eq "initialized")
|
||||
{
|
||||
Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait next interval run";
|
||||
return;
|
||||
Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait for next interval run";
|
||||
return "set command only works if STATE active, please wait for next interval run";
|
||||
}
|
||||
if ($hash->{STATE} eq "error")
|
||||
{
|
||||
Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP or PORT";
|
||||
return;
|
||||
Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP, PORT or wait for next interval run.";
|
||||
return "error while send Set command. Please check IP, PORT or wait for next interval run.";
|
||||
}
|
||||
|
||||
$hash->{STATE} = "Send HTTP POST";
|
||||
@ -310,135 +287,257 @@ sub AMAD_HTTP_POST($$)
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub AMAD_SetScreenMsg($@)
|
||||
sub AMAD_SelectSetCmd($$@)
|
||||
{
|
||||
my ($hash, @data) = @_;
|
||||
my ($hash, $cmd, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $msg = join(" ", @data);
|
||||
$msg =~ s/\s/%20/g;
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/screenMsg?message=$msg";
|
||||
Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg";
|
||||
if (lc $cmd eq 'screenmsg') {
|
||||
my $msg = join(" ", @data);
|
||||
$msg =~ s/\s/%20/g;
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/screenMsg?message=$msg";
|
||||
Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'ttsmsg') {
|
||||
my $msg = join(" ", @data);
|
||||
$msg =~ s/\s/%20/g;
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/ttsMsg?message=$msg";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'defaultvolume') {
|
||||
my $vol = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setVolume?volume=$vol";
|
||||
|
||||
readingsSingleUpdate ($hash,$cmd,$vol,1);
|
||||
|
||||
AMAD_GetUpdateLocal($hash);
|
||||
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'mediaplayer') {
|
||||
my $btn = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/mediaPlayer?button=$btn";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'devicestate') {
|
||||
my $v = join(" ", @data);
|
||||
|
||||
readingsSingleUpdate ($hash,$cmd,$v,1);
|
||||
|
||||
return undef;
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'screenbrightness') {
|
||||
my $bri = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setBrightness?brightness=$bri";
|
||||
|
||||
AMAD_GetUpdateLocal($hash);
|
||||
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'screen') {
|
||||
my $mod = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setScreenOnOff?screen=$mod";
|
||||
|
||||
AMAD_GetUpdateLocal($hash);
|
||||
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
elsif (lc $cmd eq 'openurl') {
|
||||
my $openurl = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/openURL?url=$openurl";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
elsif (lc $cmd eq 'nextalarmtime') {
|
||||
my $alarmTime = join(" ", @data);
|
||||
my @alarm = split(":", $alarmTime);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1];
|
||||
|
||||
AMAD_GetUpdateLocal($hash);
|
||||
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub AMAD_SetTtsMsg($@) {
|
||||
my ($hash, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $msg = join(" ", @data);
|
||||
$msg =~ s/\s/%20/g;
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/ttsMsg?message=$msg";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
sub AMAD_SetVolume($@) {
|
||||
my ($hash, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $vol = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol";
|
||||
|
||||
AMAD_GetUpdateLocal($hash);
|
||||
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
sub AMAD_SetBrightness($@) {
|
||||
my ($hash, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $bri = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri";
|
||||
|
||||
AMAD_GetUpdateLocal($hash);
|
||||
Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal";
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
sub AMAD_SetScreen($@) {
|
||||
my ($hash, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $mod = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/setScreenOnOff?screen=$mod";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
sub AMAD_SetOpenURL($@) {
|
||||
my ($hash, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $openurl = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/openURL?url=$openurl";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
sub AMAD_SetMediaplayer($@) {
|
||||
my ($hash, @data) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $host = $hash->{HOST};
|
||||
my $port = $hash->{PORT};
|
||||
|
||||
my $btn = join(" ", @data);
|
||||
|
||||
my $url = "http://" . $host . ":" . $port . "/automagic/mediaPlayer?button=$btn";
|
||||
|
||||
return AMAD_HTTP_POST ($hash,$url);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
=pod
|
||||
=begin html
|
||||
<a name="AMAD"></a>
|
||||
<h3>AMAD - Automagic Android Device</h3>
|
||||
<ul>
|
||||
At the moment no english documentation is available
|
||||
</ul>
|
||||
=end html
|
||||
=begin html_DE
|
||||
<a name="AMAD"></a>
|
||||
<h3>AMAD - Automagic Android Device</h3>
|
||||
<ul>
|
||||
Dieses Modul liefert, <b><u>in Verbindung mit der Android APP Automagic</u></b>, diverse Informationen von Android Geräten.
|
||||
Weiterhin gibt es Dir die Möglichkeit diese zu steuern. Bis jetzt ist das ändern der Medialautstärke möglich,
|
||||
sowie Play, Stop, Titel-Next, Titel-Back eines im Automagic-Flow ausgesuchten Players.<br>
|
||||
An Informationen können alle wiedergegeben werden, welche von Automagic als Action in Form einer Variable gesammelt und als
|
||||
HTTP Respons Text zurück gegeben werden.
|
||||
Für all diese Informationen/Aktionen ist ein sogenannter Flow in Automagic auf dem entsprechenden Android Gerät nöt.
|
||||
Als Trigger im Flow wird immer ein HTTP Request mit einem selbst vergebenen Port und einer angepassten URL verwendet. Dieser Port
|
||||
muß der selbe sein welcher beim anölegen des Devices vergeben wurde!!
|
||||
Dieses Modul liefert, <b><u>in Verbindung mit der Android APP Automagic</u></b>, diverse Informationen von Android Geräten.
|
||||
Die AndroidAPP Automagic (welche nicht von mir stammt und 2.90Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher.
|
||||
Im Auslieferiungszustand werden folgende Zustände dargestellt:
|
||||
<ul>
|
||||
<br>
|
||||
<li>Standardlautstärke</li>
|
||||
<li>Status des Androidgerätes - Online/Offline</li>
|
||||
<li>nächste Alarmzeit</li>
|
||||
<li>nächster Alarmtag</li>
|
||||
<li>Ladestatus - Netztei angeschlossen / nicht angeschlossen</li>
|
||||
<li>Batteriestatus in %</li>
|
||||
<li>Bildschirmhelligkeit</li>
|
||||
<li>Bildschirnstatus An/Aus</li>
|
||||
<li>Media Lautstärke des Lautsprechers am Gerät</li>
|
||||
<li>Media Lautstärke des Bluetooth Lautsprechers</li>
|
||||
<li>Zustand von Automagic auf dem Gerät</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
Als Extra können noch aktueller Titel, Interpret und Album des verwendeten Mediaplayers angezeigt werden.
|
||||
<br>
|
||||
Mit etwas Einarbeitung können jegliche Informationen welche Automagic bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich
|
||||
einer kleinen Anpassung des "Information" Flows
|
||||
<br>
|
||||
<br>
|
||||
Das Modul gibt Dir auch die Möglichkeit Deine Androidgeräte zu steuern. So können folgende Aktionen durchgeführt werden.
|
||||
<ul>
|
||||
<br>
|
||||
<li>Medienlautstärke regeln</li>
|
||||
<li>nächste Alarmzeit setzen</li>
|
||||
<li>Bildschirmhelligkeit einstellen</li>
|
||||
<li>Bildschirm An/Aus machen</li>
|
||||
<li>Mediaplayer steuern (Play, Stop, nächster Titel, vorheriger Titel)</li>
|
||||
<li>eine URL im Browser öffnen</li>
|
||||
<li>eine Nachricht senden welche am Bildschirm angezeigt wird</li>
|
||||
<li>eine Nachricht senden welche <b>angesagt</b> wird (TTS)</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
Für all diese Aktionen und Informationen wird auf dem Androidgerät Automagic und ein so genannter Flow benötigt. Die App müßt
|
||||
Ihr Euch besorgen, die Flows bekommt Ihr von mir zusammen mit dem AMAD Modul.
|
||||
<br><br>
|
||||
<b>Wie genau verwendet man nun AMAD?</b>
|
||||
<ul>
|
||||
<br>
|
||||
<li>Installiert Euch die App "Automagic Premium" aus dem App Store oder die Testversion von <a href="https://automagic4android.com/de/testversion">hier</a></li>
|
||||
<li>ladet Euch das AMAD Modul und die Flowfiles von <a href="https://github.com/LeonGaultier/fhem-AMAD">GitHub</a> runter</li>
|
||||
<li>installiert die zwei Flows und aktiviert erstmal nur den "Information" Flow, eventuell bei den <a href="https://github.com/LeonGaultier/fhem-AMAD/tree/master/Flow_Updates">
|
||||
FlowUpdates</a> mal schauen ob es was neueres gibt und den entsprechenden Flow auf dem Gerät löschen und den neuen Flow von GitHub installieren</li>
|
||||
<li>kopiert die Moduldatei 74_AMAD.pm nach $FHEMPATH/FHEM. Geht auf die FHEM Frontendseite und gebt dort in der Kommandozeile <i>reload 74_AMAD.pm</i> ein</li>
|
||||
</ul>
|
||||
<br><br>
|
||||
Nun müsst Ihr nur noch ein Device in FHEM anlegen.
|
||||
<br><br>
|
||||
<a name="AMADdefine"></a>
|
||||
<b>Define</b>
|
||||
<ul>
|
||||
<code>define <name> AMAD <IP-ADRESSE> <PORT> <interval></code>
|
||||
<ul><br>
|
||||
<code>define <name> AMAD <IP-ADRESSE> <PORT> <INTERVAL></code>
|
||||
<br><br>
|
||||
Beispiel:
|
||||
<ul>
|
||||
<code>define Nexus10Wohnzimmer AMAD 192.168.0.23 8080 180</code><br>
|
||||
<ul><br>
|
||||
<code>define WandTabletWohnzimmer AMAD 192.168.0.23 8090 180</code><br>
|
||||
</ul>
|
||||
<br>
|
||||
Diese Anweisung erstellt ein neues AMAD-Device. Die Parameter IP-ADRESSE und PORT legen die IP Adresse des Android Ger&aaml;tes
|
||||
sowie den unter Automagic im Trigger HTTP Request angegebenen Port fest.<br>
|
||||
Diese Anweisung erstellt ein neues AMAD-Device. Die Parameter IP-ADRESSE und PORT legen die IP Adresse des Android Gerätes
|
||||
sowie den, in den Flows des Trigger HTTP Request, angegebenen Port fest.<br>INTERVAL ist der Zeitabstand in dem ein erneuter Informationsabruf stattfinden soll. Alle x Sekunden.
|
||||
Bei mir hat sich 180 gut bewährt, also alle 3 Minuten<br>
|
||||
<u><b>Bitte gebt für sofortige Erfolge als Port 8090 ein, das ist der Port der in den mitgelieferten Automagic Flows als Trigger Port eingetragen ist.<br>
|
||||
Dieser kann später mit Erfahrung auch geändert werden</b></u>
|
||||
</ul>
|
||||
<br><br>
|
||||
Fertig! Nach anlegen des Devices sollten bereits die ersten Readings reinkommen.
|
||||
<br><br>
|
||||
<a name="AMADreadings"></a>
|
||||
<b>Readings</b>
|
||||
<ul><br>
|
||||
<li>defaultVolume - Lautstärkewert welcher über "set defaultVolume" gesetzt wurde.</li>
|
||||
<li>deviceState - Status des Androidgerätes, muss selbst mit setreading gesetzt werden z.B. über die Anwesenheitskontrolle.<br>
|
||||
Ist Offline gesetzt, wird der Intervall zum Informationsabruf aus gesetzt.</li>
|
||||
<li>nextAlarmDay - aktiver Alarmtag</li>
|
||||
<li>nextAlarmTime - aktive Alarmzeit</li>
|
||||
<li>powerLevel - Status der Batterie in %</li>
|
||||
<li>powerPlugged - Netzteil angeschlossen? 0=NEIN, 2=JA</li>
|
||||
<li>screenBrightness - Bildschirmhelligkeit von 0-255</li>
|
||||
<li>volumeMusikBluetooth - Media Lautstärke von angeschlossenden Bluetooth Lautsprechern</li>
|
||||
<li>volumeMusikSpeaker - Media Lautstärke der internen Lautsprecher</li>
|
||||
<li>screen - Bildschirm An oderAus</li>
|
||||
<li>automagicState - Statusmeldungen von der AutomagicApp</li>
|
||||
<br>
|
||||
Die Readings volumeMusikBluetooth und volumeMusikSpeaker spiegeln die jeweilige Medialautstärke der angeschlossenden Bluetoothlautsprechern oder der internen Lautsprecher wieder.<br>
|
||||
Sofern man die jeweiligen Lautstärken ausschließlich über den Set Befehl setzt, wird eine der beiden immer mit dem defaultVolume Reading über ein stimmen.<br><br>
|
||||
Die Readings "currentMusicAlbum", "currentMusicArtist", "currentMusicTrack" werden nicht vom Modul AMAD gesteuert, sondern ausschließlich vom Automagic Flow. Hierfür ist es notwendig
|
||||
das der Flow entsprechend Deiner Netzwerkumgebung und Deines Androidgerätes angepasst wird.<br>
|
||||
Öffne den Flow SetCommands und folge dem Strang welcher ganz ganz links aussen lang geht. Dieser trifft auf eine Raute. Die Raute symbolisiert eine Bedingung. Es wird gefragt,
|
||||
ob ein bestimmtes WLan Netz vorhanden ist. Tragt bitte hier Euren Router oder Access Point ein. Als nächstes folgt Ihr dem Strang weiter und trifft auf 3 Rechtecke.<br>
|
||||
In jedem der 3 Rechtecke ist ein Befehl zum setzen eines der drei Readings eingetragen. Ihr müsst lediglich in allen drein die IP Eures FHEM Servers eintragen, sowie den korrekte
|
||||
DeviceNamen welchen Ihr in FHEM für dieses Androidgerät angegeben habt.<br><br>
|
||||
Das Reading automagicState muss explizit aktiviert werden. Hierfür geht Ihr in den Flow Information und dann ganz nach rechts. Dort steht eine einsame Raute (Bedingung) ohne Anbuindung
|
||||
an das Rechteck mit der Pause. Drückt auf das Rechteck mit der Pause und zieht das Plus bis runter auf die Raute. Nun habt Ihr eine Verbindung. Ab der Android 5.x Version setzt Ihr
|
||||
unter Einstellungen:Ton&Benachrichtigungen:Benachrichtigungszugriff ein Haken bei Automagic. Leider kann ich nicht sagen wie es sich bei Versionen der 4.xer Reihe verhält.
|
||||
</ul>
|
||||
<br><br>
|
||||
<a name="AMADset"></a>
|
||||
<b>Set</b>
|
||||
<ul><br>
|
||||
<li>defaultVolume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher</li>
|
||||
<li>deviceState - setzt den Device Status Online/Offline. Siehe Readings</li>
|
||||
<li>mediaPlayer - steuert den Standard Mediaplayer. play, stop, Titel zürück, Titel vor.</li>
|
||||
<li>nextAlarmTime - setzt die Alarmzeit. Geht aber nur innerhalb der nächsten 24Std.</li>
|
||||
<li>openURL - öffnet eine URL im Standardbrowser</li>
|
||||
<li>screen - setzt den Bildschirm auf AN oder AUS mit Sperre</li>
|
||||
<li>screenBrightness - setzt die Bildschirmhelligkeit, von 0-255</li>
|
||||
<li>screenMsg - versendet eine Bildschirmnachricht</li>
|
||||
<li>ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird</li>
|
||||
<br>
|
||||
Wenn Ihr das "set screenBrightness" verwenden wollt, muss eine kleine Anpassung im Flow SetCommand vorgenommen werden. Öffnet die Aktion (eines der Vierecke ganz ganz unten)
|
||||
SetzeSystemeinstellung:System und macht einen Haken bei "Ich habe die Einstellungen überprüft, ich weiss was ich tue".
|
||||
</ul>
|
||||
<br><br>
|
||||
<a name="AMADstate"></a>
|
||||
<b>STATE</b>
|
||||
<ul><br>
|
||||
Es gibt drei STATE Zustände.
|
||||
<li>initialized - Ist der Status kurz nach einem define, ein Set Befehl ist hier noch nicht möglich.</li>
|
||||
<li>error - beim letzten "get Information" gab es eine Fehlermeldung daher werden die Set Befehle ausgesetzt bis der nächsten "get Information" Durchlauf ohne Fehler beendet wird.</li>
|
||||
<li>activ - das Modul ist im aktiven Status und "Set Befehle" können gesetzt werden.</li>
|
||||
</ul>
|
||||
<br><br><br>
|
||||
<u><b>Anwendungsbeispiele:</b></u>
|
||||
<ul><br>
|
||||
Ich habe die Ladegeräte für meine Androidgeräte an Funkschaltsteckdosen. ein DOIF schaltet bei unter 30% die Steckdose ein und bei über 90% wieder aus. Morgens lasse ich mich
|
||||
über mein Tablet im Schlafzimmer mit Musik wecken. Verwendet wird hierzu der wakeuptimer des RESIDENTS Modules. Das abspielen stoppe ich dann von Hand. Danach erfolgt noch eine
|
||||
Ansage wie das Wetter gerade ist und wird.<br>
|
||||
Mein 10" Tablet im Wohnzimmer ist Mediaplayer für das Wohnzimmer mit Bluetoothlautsprechern. Die Lautstärke wird automatisch runter gesetzt wenn die Fritzbox einen Anruf auf das
|
||||
Wohnzimmer Handgerät signalisiert.
|
||||
</ul>
|
||||
<br><br><br>
|
||||
<b><u>Und zu guter letzt möchte ich mich noch bedanken.</u><br>
|
||||
Der größte Dank geht an meinen Mentor Andre (justme1968), er hat mir mit hilfreichen Tips geholfen Perlcode zu verstehen und Spaß am programmieren zu haben.<br>
|
||||
Auch möchte ich mich bei Jens bedanken (jensb) welcher mir ebenfalls mit hilfreichen Tips bei meinen aller ersten Gehversuchen beim Perlcode schreiben unterstützt hat.<br>
|
||||
So und nun noch ein besonderer Dank an pah (Prof. Dr. Peter Henning ), ohne seine Aussage "Keine Ahnung hatten wir alle mal, das ist keine Ausrede" hätte ich bestimmt nicht angefangen Interesse an
|
||||
Modulentwicklung zu zeigen :-)</b>
|
||||
</ul>
|
||||
=end html_DE
|
||||
=cut
|
||||
=cut
|
501
Automagic_FHEM-AMAD_Flows_v0.3.7.xml
Normal file
501
Automagic_FHEM-AMAD_Flows_v0.3.7.xml
Normal file
@ -0,0 +1,501 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<data version="1.28.0">
|
||||
<trigger type="general_broadcast">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>com.android.music.metachanged</name>
|
||||
<enabled>true</enabled>
|
||||
<action>com.android.music.metachanged</action>
|
||||
<categoryList></categoryList>
|
||||
<dataSchemeList></dataSchemeList>
|
||||
<dataAuthorityList></dataAuthorityList>
|
||||
<dataPathLiteralList></dataPathLiteralList>
|
||||
<dataPathPrefixList></dataPathPrefixList>
|
||||
<dataPathGlobList></dataPathGlobList>
|
||||
<dataTypeList></dataTypeList>
|
||||
<extras>artist = getString("artist");
|
||||
track = getString("track");
|
||||
album = getString("album");</extras>
|
||||
<receiveInitialStickyBroadcast>false</receiveInitialStickyBroadcast>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /fhem-amad/deviceInfo/, Port 8090</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/fhem-amad/deviceInfo/</path>
|
||||
<port>8090</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /fhem-amad/setCommands/*, Port 8090</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/fhem-amad/setCommands/*</path>
|
||||
<port>8090</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<condition type="battery_level">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Akku Ladestand: grösser als 0%</name>
|
||||
<levelPercentage>0</levelPercentage>
|
||||
<batteryLevelCondition>HIGHER_THAN</batteryLevelCondition>
|
||||
</condition>
|
||||
<condition type="notification_status_bar_displayed">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic</name>
|
||||
<packageNameFilter>ch.gridvision.ppam.androidautomagic</packageNameFilter>
|
||||
<textMatchField>TEXT</textMatchField>
|
||||
<textMatchType>CONTAINS_TEXT</textMatchType>
|
||||
<textFilter></textFilter>
|
||||
<ignoreRegular>false</ignoreRegular>
|
||||
<ignoreOngoing>false</ignoreOngoing>
|
||||
</condition>
|
||||
<condition type="screen_on">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Display eingeschaltet</name>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "back"</name>
|
||||
<expression>param_button == "back"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "next"</name>
|
||||
<expression>param_button == "next"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "play"</name>
|
||||
<expression>param_button == "play"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "stop"</name>
|
||||
<expression>param_button == "stop"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_screen=="off"</name>
|
||||
<expression>param_screen=="off"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_screen=="on"</name>
|
||||
<expression>param_screen=="on"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: request_path == "/fhem-amad/setCommands/mediaPlayer"</name>
|
||||
<expression>request_path == "/fhem-amad/setCommands/mediaPlayer"</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>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: request_path == "/fhem-amad/setCommands/setAlarm"</name>
|
||||
<expression>request_path == "/fhem-amad/setCommands/setAlarm"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: request_path == "/fhem-amad/setCommands/setBrightness"</name>
|
||||
<expression>request_path == "/fhem-amad/setCommands/setBrightness"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff"</name>
|
||||
<expression>request_path == "/fhem-amad/setCommands/setScreenOnOff"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: request_path == "/fhem-amad/setCommands/setVolume"</name>
|
||||
<expression>request_path == "/fhem-amad/setCommands/setVolume"</expression>
|
||||
</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">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: trigger == "com.android.music.metachanged"</name>
|
||||
<expression>trigger == "com.android.music.metachanged"</expression>
|
||||
</condition>
|
||||
<condition type="wifi_connected">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>WLAN Verbunden: </name>
|
||||
<all>false</all>
|
||||
<ssidList></ssidList>
|
||||
</condition>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Play (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_PLAY</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Stopp (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_STOP</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Weiter (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_NEXT</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Zurück (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_PREVIOUS</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="notification_screen">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Benachrichtigung auf Bildschirm: {param_message} (lange)</name>
|
||||
<showText>true</showText>
|
||||
<text>{param_message}</text>
|
||||
<widgetName></widgetName>
|
||||
<width>200</width>
|
||||
<height>250</height>
|
||||
<stretchToFillArea>false</stretchToFillArea>
|
||||
<opacity>1.0</opacity>
|
||||
<durationLong>true</durationLong>
|
||||
<customPosition>false</customPosition>
|
||||
<gravityType>TOP_LEFT</gravityType>
|
||||
<xOffset>0</xOffset>
|
||||
<yOffset>0</yOffset>
|
||||
</action>
|
||||
<action type="lock_device">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Gerät sperren</name>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response</name>
|
||||
<url>http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response</name>
|
||||
<url>http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response</name>
|
||||
<url>http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="write_http_response_text">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>HTTP Response</name>
|
||||
<text>powerLevel@@{battery_percentage}@@@@powerPlugged@@{battery_plugged}@@@@volumeMusikBluetooth@@{volumeMusikBluetooth}@@@@volumeMusikSpeaker@@{volumeMusikSpeaker}@@@@screenBrightness@@{screenBrightness}@@@@nextAlarmTime@@{next_alarmtime}@@@@nextAlarmDay@@{next_alarmday}@@@@screen@@{screen_state}@@@@automagicState@@{notification_text}</text>
|
||||
<replaceVariables>true</replaceVariables>
|
||||
<contentType>text/plain</contentType>
|
||||
</action>
|
||||
<action type="init_variable_next_alarm">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Nächster Alarm: Variable next_alarm</name>
|
||||
<variable>next_alarm</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<variable>screenBrightness</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_bt_a2dp</settingName>
|
||||
<variable>volumeMusikBluetooth</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_speaker</settingName>
|
||||
<variable>volumeMusikSpeaker</variable>
|
||||
</action>
|
||||
<action type="restore_audio_stream_volume">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>Lautstärken setzen</name>
|
||||
<restoreVolumeAlarm>false</restoreVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<restoreVolumeDTMF>false</restoreVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<restoreVolumeMusic>true</restoreVolumeMusic>
|
||||
<variableVolumeMusic>param_volume</variableVolumeMusic>
|
||||
<restoreVolumeNotification>false</restoreVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<restoreVolumeRing>false</restoreVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<restoreVolumeSystem>false</restoreVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<restoreVolumeVoiceCall>false</restoreVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<restoreRingerMode>false</restoreRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<restoreInterruptionsMode>false</restoreInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="sleep">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Pause: 2s (Gerät wach halten)</name>
|
||||
<duration>2s</duration>
|
||||
<keepDeviceAwake>true</keepDeviceAwake>
|
||||
</action>
|
||||
<action type="turn_screen_on">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Schalte Display ein: Hell für 60s</name>
|
||||
<bright>true</bright>
|
||||
<duration>60s</duration>
|
||||
<resetUserActivityTimer>true</resetUserActivityTimer>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmday = "{next_alarm,dateformat,c}"</name>
|
||||
<script>next_alarmday = "{next_alarm,dateformat,c}"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</name>
|
||||
<script>next_alarmtime = "{next_alarm,dateformat,HH:mm}"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: screen_state = "off"</name>
|
||||
<script>screen_state = "off"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: screen_state = "on"</name>
|
||||
<script>screen_state = "on"</script>
|
||||
</action>
|
||||
<action type="set_alarm">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Setze Alarm: um {param_hour}:{param_minute}</name>
|
||||
<label></label>
|
||||
<hour>{param_hour}</hour>
|
||||
<minutes>{param_minute}</minutes>
|
||||
</action>
|
||||
<action type="set_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Setze Systemeinstellung: System screen_brightness auf {param_brightness}</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<value>{param_brightness}</value>
|
||||
<verified>true</verified>
|
||||
</action>
|
||||
<action type="speech_output">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Sprachausgabe: {param_message}</name>
|
||||
<audioStreamType>MUSIC</audioStreamType>
|
||||
<text>{param_message}</text>
|
||||
<locale>de_DE</locale>
|
||||
<usePitch>true</usePitch>
|
||||
<pitch>1.0</pitch>
|
||||
<useSpeechRate>true</useSpeechRate>
|
||||
<speechRate>1.0</speechRate>
|
||||
<embeddedSynthesis>false</embeddedSynthesis>
|
||||
<networkSynthesis>false</networkSynthesis>
|
||||
<showStopSpeechNotification>false</showStopSpeechNotification>
|
||||
<requestAudioFocus>false</requestAudioFocus>
|
||||
<audioFocusType>TRANSIENT</audioFocusType>
|
||||
</action>
|
||||
<action type="open_browser_url">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>URL in Browser öffnen: {param_url} (mit Chrome)</name>
|
||||
<url>{param_url}</url>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.android.chrome</packageName>
|
||||
<className>com.google.android.apps.chrome.Main</className>
|
||||
<appName>Chrome</appName>
|
||||
</action>
|
||||
<flow type="flow">
|
||||
<name>Informations</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>QUEUE</executionPolicy>
|
||||
<emergencyStopCount>120</emergencyStopCount>
|
||||
<triggercontainer id="t1" x="560.0" y="-297.5">
|
||||
<trigger>HTTP Request: /fhem-amad/deviceInfo/, Port 8090</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="665.0" y="612.5">Initialisiere Variable Nächster Alarm: Variable next_alarm</actioncontainer>
|
||||
<actioncontainer id="t3" x="-175.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</actioncontainer>
|
||||
<actioncontainer id="t4" x="70.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</actioncontainer>
|
||||
<actioncontainer id="t5" x="350.0" y="612.5">Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</actioncontainer>
|
||||
<actioncontainer id="t6" x="560.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
|
||||
<actioncontainer id="t7" x="770.0" y="857.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
|
||||
<conditioncontainer id="t8" x="1120.0" y="612.5">Display eingeschaltet</conditioncontainer>
|
||||
<actioncontainer id="t9" x="1015.0" y="857.5">Script: screen_state = "on"</actioncontainer>
|
||||
<actioncontainer id="t10" x="1225.0" y="857.5">Script: screen_state = "off"</actioncontainer>
|
||||
<actioncontainer id="t11" x="560.0" y="-52.5">Pause: 2s (Gerät wach halten)</actioncontainer>
|
||||
<conditioncontainer id="t12" x="560.0" y="192.5">Akku Ladestand: grösser als 0%</conditioncontainer>
|
||||
<conditioncontainer id="t13" x="1435.0" y="612.5">Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic</conditioncontainer>
|
||||
<actioncontainer id="t14" x="560.0" y="1347.5">HTTP Response</actioncontainer>
|
||||
<connection from="t1" to="t11" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t7" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t10" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t14" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t11" to="t12" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t12" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t12" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t12" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t12" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t12" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t13" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>SetCommands</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>QUEUE</executionPolicy>
|
||||
<emergencyStopCount>120</emergencyStopCount>
|
||||
<triggercontainer id="t1" x="-1015.0" y="-1522.5">
|
||||
<trigger>com.android.music.metachanged</trigger>
|
||||
<trigger>HTTP Request: /fhem-amad/setCommands/*, Port 8090</trigger>
|
||||
</triggercontainer>
|
||||
<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="t4" x="-1820.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setVolume"</conditioncontainer>
|
||||
<conditioncontainer id="t5" x="-1610.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff"</conditioncontainer>
|
||||
<actioncontainer id="t6" x="-1435.0" y="892.5">Schalte Display ein: Hell für 60s</actioncontainer>
|
||||
<actioncontainer id="t7" x="-1610.0" y="892.5">Gerät sperren</actioncontainer>
|
||||
<actioncontainer id="t8" x="-1820.0" y="892.5">Lautstärken setzen</actioncontainer>
|
||||
<conditioncontainer id="t9" x="-1015.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setBrightness"</conditioncontainer>
|
||||
<actioncontainer id="t10" x="-805.0" y="892.5">Setze Alarm: um {param_hour}:{param_minute}</actioncontainer>
|
||||
<conditioncontainer id="t11" x="-805.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/setAlarm"</conditioncontainer>
|
||||
<actioncontainer id="t12" x="-595.0" y="892.5">Benachrichtigung auf Bildschirm: {param_message} (lange)</actioncontainer>
|
||||
<conditioncontainer id="t13" x="-595.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/screenMsg"</conditioncontainer>
|
||||
<actioncontainer id="t14" x="-385.0" y="892.5">URL in Browser öffnen: {param_url} (mit Chrome)</actioncontainer>
|
||||
<conditioncontainer id="t15" x="-385.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/openURL"</conditioncontainer>
|
||||
<actioncontainer id="t16" x="-175.0" y="892.5">Audio Player steuern: Medienknopf Stopp (Google Play Musik)</actioncontainer>
|
||||
<conditioncontainer id="t17" x="-175.0" y="577.5">Expression: param_button == "stop"</conditioncontainer>
|
||||
<conditioncontainer id="t18" x="70.0" y="577.5">Expression: param_button == "play"</conditioncontainer>
|
||||
<actioncontainer id="t19" x="70.0" y="892.5">Audio Player steuern: Medienknopf Play (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t20" x="315.0" y="892.5">Audio Player steuern: Medienknopf Weiter (Google Play Musik)</actioncontainer>
|
||||
<conditioncontainer id="t21" x="315.0" y="577.5">Expression: param_button == "next"</conditioncontainer>
|
||||
<actioncontainer id="t22" x="560.0" y="892.5">Audio Player steuern: Medienknopf Zurück (Google Play Musik)</actioncontainer>
|
||||
<conditioncontainer id="t23" x="560.0" y="577.5">Expression: param_button == "back"</conditioncontainer>
|
||||
<conditioncontainer id="t24" x="175.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/mediaPlayer"</conditioncontainer>
|
||||
<conditioncontainer id="t25" x="-1015.0" y="-1067.5">Expression: trigger == "com.android.music.metachanged"</conditioncontainer>
|
||||
<actioncontainer id="t26" x="-1225.0" y="892.5">Sprachausgabe: {param_message}</actioncontainer>
|
||||
<conditioncontainer id="t27" x="-1225.0" y="-122.5">Expression: request_path == "/fhem-amad/setCommands/ttsMsg"</conditioncontainer>
|
||||
<actioncontainer id="t28" x="-1015.0" y="892.5">Setze Systemeinstellung: System screen_brightness auf {param_brightness}</actioncontainer>
|
||||
<conditioncontainer id="t29" x="-2240.0" y="-122.5">WLAN Verbunden: </conditioncontainer>
|
||||
<actioncontainer id="t30" x="-2450.0" y="892.5">HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response</actioncontainer>
|
||||
<actioncontainer id="t31" x="-2240.0" y="892.5">HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response</actioncontainer>
|
||||
<actioncontainer id="t32" x="-2030.0" y="892.5">HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response</actioncontainer>
|
||||
<connection from="t1" to="t25" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t28" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t11" to="t10" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t13" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t15" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t17" to="t16" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t18" to="t19" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t21" to="t20" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t23" to="t22" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t24" to="t17" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t24" to="t18" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t24" to="t21" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t24" to="t23" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t4" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t5" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t27" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t9" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t11" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t13" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t15" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t24" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t25" to="t29" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t27" to="t26" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t29" to="t30" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t29" to="t31" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t29" to="t32" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
</data>
|
@ -1,98 +0,0 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<data version="1.28.0">
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/deviceInfo, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/deviceInfo</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<condition type="battery_level">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Akku Ladestand: grösser als 0%</name>
|
||||
<levelPercentage>0</levelPercentage>
|
||||
<batteryLevelCondition>HIGHER_THAN</batteryLevelCondition>
|
||||
</condition>
|
||||
<action type="write_http_response_text">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>HTTP Response</name>
|
||||
<text>powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikSpeaker {volumeMusikSpeaker}@@networkCountryIso {network_country_iso}@@voiceMailNumber {voice_mail_number}@@screenBrightness {screenBrightness}@@nextAlarmDay {next_alarmday}@@nextAlarmTime {next_alarmtime}</text>
|
||||
<replaceVariables>true</replaceVariables>
|
||||
<contentType>text/html</contentType>
|
||||
</action>
|
||||
<action type="init_variable_next_alarm">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Nächster Alarm: Variable next_alarm</name>
|
||||
<variable>next_alarm</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<variable>screenBrightness</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_speaker</settingName>
|
||||
<variable>volumeMusikSpeaker</variable>
|
||||
</action>
|
||||
<action type="init_variables_phone_info">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variablen Telefoninfo: network_country_iso, voice_mail_number</name>
|
||||
<isVariableNetworkCountryIso>true</isVariableNetworkCountryIso>
|
||||
<variableNetworkCountryIso>network_country_iso</variableNetworkCountryIso>
|
||||
<isVariableVoiceMailNumber>true</isVariableVoiceMailNumber>
|
||||
<variableVoiceMailNumber>voice_mail_number</variableVoiceMailNumber>
|
||||
</action>
|
||||
<action type="sleep">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Pause: 2s (Gerät wach halten)</name>
|
||||
<duration>2s</duration>
|
||||
<keepDeviceAwake>true</keepDeviceAwake>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmday = "{next_alarm,dateformat,c}"</name>
|
||||
<script>next_alarmday = "{next_alarm,dateformat,c}"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</name>
|
||||
<script>next_alarmtime = "{next_alarm,dateformat,HH:mm}"</script>
|
||||
</action>
|
||||
<flow type="flow">
|
||||
<name>Informationen</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<conditioncontainer id="t1" x="70.0" y="402.5">Akku Ladestand: grösser als 0%</conditioncontainer>
|
||||
<actioncontainer id="t2" x="525.0" y="647.5">Initialisiere Variable Nächster Alarm: Variable next_alarm</actioncontainer>
|
||||
<actioncontainer id="t3" x="70.0" y="1172.5">HTTP Response</actioncontainer>
|
||||
<actioncontainer id="t4" x="-140.0" y="647.5">Initialisiere Variablen Telefoninfo: network_country_iso, voice_mail_number</actioncontainer>
|
||||
<actioncontainer id="t5" x="70.0" y="647.5">Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</actioncontainer>
|
||||
<actioncontainer id="t6" x="280.0" y="647.5">Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</actioncontainer>
|
||||
<actioncontainer id="t7" x="420.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
|
||||
<actioncontainer id="t8" x="630.0" y="857.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
|
||||
<actioncontainer id="t9" x="69.999954" y="157.5001">Pause: 2s (Gerät wach halten)</actioncontainer>
|
||||
<triggercontainer id="t10" x="70.00001" y="-87.5">
|
||||
<trigger>HTTP Request: /automagic/deviceInfo, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<connection from="t1" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t6" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t7" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t8" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t1" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
</data>
|
@ -1,97 +0,0 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<data version="1.28.0">
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/deviceInfo, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/deviceInfo</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<condition type="battery_level">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Akku Ladestand: grösser als 0%</name>
|
||||
<levelPercentage>0</levelPercentage>
|
||||
<batteryLevelCondition>HIGHER_THAN</batteryLevelCondition>
|
||||
</condition>
|
||||
<action type="write_http_response_text">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>HTTP Response</name>
|
||||
<text>powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikBluetooth {volumeMusikBluetooth}@@volumeMusikSpeaker {volumeMusikSpeaker}@@screenBrightness {screenBrightness}@@nextAlarmTime {next_alarmtime}@@nextAlarmDay {next_alarmday}</text>
|
||||
<replaceVariables>true</replaceVariables>
|
||||
<contentType>text/html</contentType>
|
||||
</action>
|
||||
<action type="init_variable_next_alarm">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Nächster Alarm: Variable next_alarm</name>
|
||||
<variable>next_alarm</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<variable>screenBrightness</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_bt_a2dp</settingName>
|
||||
<variable>volumeMusikBluetooth</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_speaker</settingName>
|
||||
<variable>volumeMusikSpeaker</variable>
|
||||
</action>
|
||||
<action type="sleep">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Pause: 2s (Gerät wach halten)</name>
|
||||
<duration>2s</duration>
|
||||
<keepDeviceAwake>true</keepDeviceAwake>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmday = "{next_alarm,dateformat,c}"</name>
|
||||
<script>next_alarmday = "{next_alarm,dateformat,c}"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</name>
|
||||
<script>next_alarmtime = "{next_alarm,dateformat,HH:mm}"</script>
|
||||
</action>
|
||||
<flow type="flow">
|
||||
<name>Informationen</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<conditioncontainer id="t1" x="70.0" y="437.5">Akku Ladestand: grösser als 0%</conditioncontainer>
|
||||
<actioncontainer id="t2" x="665.0" y="612.5">Initialisiere Variable Nächster Alarm: Variable next_alarm</actioncontainer>
|
||||
<actioncontainer id="t3" x="-175.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</actioncontainer>
|
||||
<actioncontainer id="t4" x="70.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</actioncontainer>
|
||||
<actioncontainer id="t5" x="350.0" y="612.5">Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</actioncontainer>
|
||||
<actioncontainer id="t6" x="560.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
|
||||
<actioncontainer id="t7" x="770.0" y="857.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
|
||||
<actioncontainer id="t8" x="69.99997" y="192.5">Pause: 2s (Gerät wach halten)</actioncontainer>
|
||||
<triggercontainer id="t9" x="70.0" y="-52.5">
|
||||
<trigger>HTTP Request: /automagic/deviceInfo, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t10" x="70.0" y="1207.5">HTTP Response</actioncontainer>
|
||||
<connection from="t1" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t7" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t1" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t8" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
</data>
|
123
README.md
123
README.md
@ -1,12 +1,115 @@
|
||||
# fhem-AMAD
|
||||
#AMADD - Automagic Android Device
|
||||
|
||||
AMAD (Automagic Android Device) ist ein Perl Modul für FHEM. Das Modul stellt eine HTTP Request Anfrage an ein, mit der AutomagicAPP installierten, Android Gerät und verarbeitet die per HTTP Response Text erhaltenen Daten.
|
||||
Ausserdem ist es möglich Androidgeräte damit zu steuern. Implementiert sind zur Zeit
|
||||
Dieses Modul liefert, in Verbindung mit der Android APP Automagic, diverse Informationen von Android Geräten. Die AndroidAPP Automagic (welche nicht von mir stammt und 2.90Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher. Im Auslieferiungszustand werden folgende Zustände dargestellt:
|
||||
|
||||
- Medienlautstärke ändern
|
||||
- Display an/aus
|
||||
- Display Brightness einstellen
|
||||
- Mediaplayer steuern (play,stop,forward,backward
|
||||
- Displaxmessage senden
|
||||
- TTS Message senden
|
||||
- URL öffnen
|
||||
- Standardlautstärke
|
||||
- Status des Androidgerätes - Online/Offline
|
||||
- nächste Alarmzeit
|
||||
- nächster Alarmtag
|
||||
- Ladestatus - Netztei angeschlossen / nicht angeschlossen
|
||||
- Batteriestatus in %
|
||||
- Bildschirmhelligkeit
|
||||
- Bildschirnstatus An/Aus
|
||||
- Media Lautstärke des Lautsprechers am Gerät
|
||||
- Media Lautstärke des Bluetooth Lautsprechers
|
||||
- Zustand von Automagic auf dem Gerät
|
||||
|
||||
|
||||
Als Extra können noch aktueller Titel, Interpret und Album des verwendeten Mediaplayers angezeigt werden.
|
||||
Mit etwas Einarbeitung können jegliche Informationen welche Automagic bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich einer kleinen Anpassung des "Information" Flows
|
||||
|
||||
Das Modul gibt Dir auch die Möglichkeit Deine Androidgeräte zu steuern. So können folgende Aktionen durchgeführt werden.
|
||||
|
||||
- Medienlautstärke regeln
|
||||
- nächste Alarmzeit setzen
|
||||
- Bildschirmhelligkeit einstellen
|
||||
- Bildschirm An/Aus machen
|
||||
- Mediaplayer steuern (Play, Stop, nächster Titel, vorheriger Titel)
|
||||
- eine URL im Browser öffnen
|
||||
- eine Nachricht senden welche am Bildschirm angezeigt wird
|
||||
- eine Nachricht senden welche angesagt wird (TTS)
|
||||
|
||||
|
||||
Für all diese Aktionen und Informationen wird auf dem Androidgerät Automagic und ein so genannter Flow benötigt. Die App müßt Ihr Euch besorgen, die Flows bekommt Ihr von mir zusammen mit dem AMAD Modul.
|
||||
|
||||
Wie genau verwendet man nun AMAD?
|
||||
|
||||
Installiert Euch die App "Automagic Premium" aus dem App Store oder die Testversion von hier
|
||||
ladet Euch das AMAD Modul und die Flowfiles von GitHub runter
|
||||
installiert die zwei Flows und aktiviert erstmal nur den "Information" Flow, eventuell bei den FlowUpdates mal schauen ob es was neueres gibt und den entsprechenden Flow auf dem Gerät löschen und den neuen Flow von GitHub installieren
|
||||
kopiert die Moduldatei 74_AMAD.pm nach $FHEMPATH/FHEM. Geht auf die FHEM Frontendseite und gebt dort in der Kommandozeile reload 74_AMAD.pm ein
|
||||
|
||||
|
||||
Nun müsst Ihr nur noch ein Device in FHEM anlegen.
|
||||
|
||||
Define
|
||||
|
||||
define name AMAD ip-adresse port interval
|
||||
|
||||
Beispiel:
|
||||
|
||||
define WandTabletWohnzimmer AMAD 192.168.0.23 8090 180
|
||||
|
||||
Diese Anweisung erstellt ein neues AMAD-Device. Die Parameter IP-ADRESSE und PORT legen die IP Adresse des Android Gerätes sowie den, in den Flows des Trigger HTTP Request, angegebenen Port fest.
|
||||
INTERVAL ist der Zeitabstand in dem ein erneuter Informationsabruf stattfinden soll. Alle x Sekunden. Bei mir hat sich 180 gut bewährt, also alle 3 Minuten
|
||||
Bitte gebt für sofortige Erfolge als Port 8090 ein, das ist der Port der in den mitgelieferten Automagic Flows als Trigger Port eingetragen ist.
|
||||
Dieser kann später mit Erfahrung auch geändert werden
|
||||
|
||||
|
||||
Fertig! Nach anlegen des Devices sollten bereits die ersten Readings reinkommen.
|
||||
|
||||
Readings:
|
||||
|
||||
- defaultVolume - Lautstärkewert welcher über "set defaultVolume" gesetzt wurde.
|
||||
- deviceState - Status des Androidgerätes, muss selbst mit setreading gesetzt werden z.B. über die Anwesenheitskontrolle.
|
||||
Ist Offline gesetzt, wird der Intervall zum Informationsabruf aus gesetzt.
|
||||
- nextAlarmDay - aktiver Alarmtag
|
||||
- nextAlarmTime - aktive Alarmzeit
|
||||
- powerLevel - Status der Batterie in %
|
||||
- powerPlugged - Netzteil angeschlossen? 0=NEIN, 2=JA
|
||||
- screenBrightness - Bildschirmhelligkeit von 0-255
|
||||
- volumeMusikBluetooth - Media Lautstärke von angeschlossenden Bluetooth Lautsprechern
|
||||
- volumeMusikSpeaker - Media Lautstärke der internen Lautsprecher
|
||||
- screen - Bildschirm An oderAus
|
||||
- automagicState - Statusmeldungen von der AutomagicApp
|
||||
|
||||
Die Readings volumeMusikBluetooth und volumeMusikSpeaker spiegeln die jeweilige Medialautstärke der angeschlossenden Bluetoothlautsprechern oder der internen Lautsprecher wieder.
|
||||
Sofern man die jeweiligen Lautstärken ausschließlich über den Set Befehl setzt, wird eine der beiden immer mit dem defaultVolume Reading über ein stimmen.
|
||||
|
||||
Die Readings "currentMusicAlbum", "currentMusicArtist", "currentMusicTrack" werden nicht vom Modul AMAD gesteuert, sondern ausschließlich vom Automagic Flow. Hierfür ist es notwendig das der Flow entsprechend Deiner Netzwerkumgebung und Deines Androidgerätes angepasst wird.
|
||||
Öffne den Flow SetCommands und folge dem Strang welcher ganz ganz links aussen lang geht. Dieser trifft auf eine Raute. Die Raute symbolisiert eine Bedingung. Es wird gefragt, ob ein bestimmtes WLan Netz vorhanden ist. Tragt bitte hier Euren Router oder Access Point ein. Als nächstes folgt Ihr dem Strang weiter und trifft auf 3 Rechtecke.
|
||||
In jedem der 3 Rechtecke ist ein Befehl zum setzen eines der drei Readings eingetragen. Ihr müsst lediglich in allen drein die IP Eures FHEM Servers eintragen, sowie den korrekte DeviceNamen welchen Ihr in FHEM für dieses Androidgerät angegeben habt.
|
||||
|
||||
Das Reading automagicState muss explizit aktiviert werden. Hierfür geht Ihr in den Flow Information und dann ganz nach rechts. Dort steht eine einsame Raute (Bedingung) ohne Anbuindung an das Rechteck mit der Pause. Drückt auf das Rechteck mit der Pause und zieht das Plus bis runter auf die Raute. Nun habt Ihr eine Verbindung. Ab der Android 5.x Version setzt Ihr unter Einstellungen:Ton&Benachrichtigungen:Benachrichtigungszugriff ein Haken bei Automagic. Leider kann ich nicht sagen wie es sich bei Versionen der 4.xer Reihe verhält.
|
||||
|
||||
|
||||
Set:
|
||||
|
||||
- defaultVolume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher
|
||||
- deviceState - setzt den Device Status Online/Offline. Siehe Readings
|
||||
- mediaPlayer - steuert den Standard Mediaplayer. play, stop, Titel zürück, Titel vor.
|
||||
- nextAlarmTime - setzt die Alarmzeit. Geht aber nur innerhalb der nächsten 24Std.
|
||||
- openURL - öffnet eine URL im Standardbrowser
|
||||
- screen - setzt den Bildschirm auf AN oder AUS mit Sperre
|
||||
- screenBrightness - setzt die Bildschirmhelligkeit, von 0-255
|
||||
- screenMsg - versendet eine Bildschirmnachricht
|
||||
- ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird
|
||||
|
||||
Wenn Ihr das "set screenBrightness" verwenden wollt, muss eine kleine Anpassung im Flow SetCommand vorgenommen werden. Öffnet die Aktion (eines der Vierecke ganz ganz unten) SetzeSystemeinstellung:System und macht einen Haken bei "Ich habe die Einstellungen überprüft, ich weiss was ich tue".
|
||||
|
||||
|
||||
|
||||
Anwendungsbeispiele:
|
||||
|
||||
Ich habe die Ladegeräte für meine Androidgeräte an Funkschaltsteckdosen. ein DOIF schaltet bei unter 30% die Steckdose ein und bei über 90% wieder aus. Morgens lasse ich mich über mein Tablet im Schlafzimmer mit Musik wecken. Verwendet wird hierzu der wakeuptimer des RESIDENTS Modules. Das abspielen stoppe ich dann von Hand. Danach erfolgt noch eine Ansage wie das Wetter gerade ist und wird.
|
||||
Mein 10" Tablet im Wohnzimmer ist Mediaplayer für das Wohnzimmer mit Bluetoothlautsprechern. Die Lautstärke wird automatisch runter gesetzt wenn die Fritzbox einen Anruf auf das Wohnzimmer Handgerät signalisiert.
|
||||
|
||||
|
||||
|
||||
Und zu guter letzt möchte ich mich noch bedanken.
|
||||
|
||||
Der größte Dank geht an meinen Mentor Andre (justme1968), er hat mir mit hilfreichen Tips geholfen Perlcode zu verstehen und Spaß am programmieren zu haben.
|
||||
|
||||
Auch möchte ich mich bei Jens bedanken (jensb) welcher mir ebenfalls mit hilfreichen Tips bei meinen aller ersten Gehversuchen beim Perlcode schreiben unterstützt hat.
|
||||
|
||||
So und nun noch ein besonderer Dank an pah (Prof. Dr. Peter Henning ), ohne seine Aussage "Keine Ahnung hatten wir alle mal, das ist keine Ausrede" hätte ich bestimmt nicht angefangen Interesse an Modulentwicklung zu zeigen :-)
|
||||
|
@ -1,555 +0,0 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<data version="1.28.0">
|
||||
<trigger type="general_broadcast">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>com.android.music.metachanged</name>
|
||||
<enabled>true</enabled>
|
||||
<action>com.android.music.metachanged</action>
|
||||
<categoryList></categoryList>
|
||||
<dataSchemeList></dataSchemeList>
|
||||
<dataAuthorityList></dataAuthorityList>
|
||||
<dataPathLiteralList></dataPathLiteralList>
|
||||
<dataPathPrefixList></dataPathPrefixList>
|
||||
<dataPathGlobList></dataPathGlobList>
|
||||
<dataTypeList></dataTypeList>
|
||||
<extras>artist = getString("artist");
|
||||
track = getString("track");
|
||||
album = getString("album");</extras>
|
||||
<receiveInitialStickyBroadcast>false</receiveInitialStickyBroadcast>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/deviceInfo, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/deviceInfo</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/mediaPlayer, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/mediaPlayer</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/openURL, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/openURL</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/screenMsg, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/screenMsg</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/setBrightness, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/setBrightness</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/setScreenOnOff, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/setScreenOnOff</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/setVolume, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/setVolume</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/ttsMsg, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/ttsMsg</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<condition type="battery_level">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Akku Ladestand: grösser als 0%</name>
|
||||
<levelPercentage>0</levelPercentage>
|
||||
<batteryLevelCondition>HIGHER_THAN</batteryLevelCondition>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "back"</name>
|
||||
<expression>param_button == "back"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "next"</name>
|
||||
<expression>param_button == "next"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "play"</name>
|
||||
<expression>param_button == "play"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "stop"</name>
|
||||
<expression>param_button == "stop"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_screen=="off"</name>
|
||||
<expression>param_screen=="off"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_screen=="on"</name>
|
||||
<expression>param_screen=="on"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: trigger == "com.android.music.metachanged"</name>
|
||||
<expression>trigger == "com.android.music.metachanged"</expression>
|
||||
</condition>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Play (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_PLAY</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Stopp (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_STOP</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Weiter (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_NEXT</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Zurück (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_PREVIOUS</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="notification_screen">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Benachrichtigung auf Bildschirm: {param_message} (lange)</name>
|
||||
<showText>true</showText>
|
||||
<text>{param_message}</text>
|
||||
<widgetName></widgetName>
|
||||
<width>200</width>
|
||||
<height>250</height>
|
||||
<stretchToFillArea>false</stretchToFillArea>
|
||||
<opacity>1.0</opacity>
|
||||
<durationLong>true</durationLong>
|
||||
<customPosition>false</customPosition>
|
||||
<gravityType>TOP_LEFT</gravityType>
|
||||
<xOffset>0</xOffset>
|
||||
<yOffset>0</yOffset>
|
||||
</action>
|
||||
<action type="lock_device">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Gerät sperren</name>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response</name>
|
||||
<url>http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response</name>
|
||||
<url>http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response</name>
|
||||
<url>http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="write_http_response_text">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>HTTP Response</name>
|
||||
<text>powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikSpeaker {volumeMusikSpeaker}@@networkCountryIso {network_country_iso}@@voiceMailNumber {voice_mail_number}@@screenBrightness {screenBrightness}@@nextAlarmDay {next_alarmday}@@nextAlarmTime {next_alarmtime}</text>
|
||||
<replaceVariables>true</replaceVariables>
|
||||
<contentType>text/html</contentType>
|
||||
</action>
|
||||
<action type="init_variable_next_alarm">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Nächster Alarm: Variable next_alarm</name>
|
||||
<variable>next_alarm</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<variable>screenBrightness</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_speaker</settingName>
|
||||
<variable>volumeMusikSpeaker</variable>
|
||||
</action>
|
||||
<action type="init_variables_phone_info">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variablen Telefoninfo: network_country_iso, voice_mail_number</name>
|
||||
<isVariableNetworkCountryIso>true</isVariableNetworkCountryIso>
|
||||
<variableNetworkCountryIso>network_country_iso</variableNetworkCountryIso>
|
||||
<isVariableVoiceMailNumber>true</isVariableVoiceMailNumber>
|
||||
<variableVoiceMailNumber>voice_mail_number</variableVoiceMailNumber>
|
||||
</action>
|
||||
<action type="set_audio_stream_volume">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Lautstärke einstellen: Medien auf Level 10</name>
|
||||
<audioStreamType>MUSIC</audioStreamType>
|
||||
<volumeIndex>10</volumeIndex>
|
||||
<playSound>true</playSound>
|
||||
<showUI>false</showUI>
|
||||
</action>
|
||||
<action type="restore_audio_stream_volume">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>Lautstärken setzen</name>
|
||||
<restoreVolumeAlarm>false</restoreVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<restoreVolumeDTMF>false</restoreVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<restoreVolumeMusic>true</restoreVolumeMusic>
|
||||
<variableVolumeMusic>param_volume</variableVolumeMusic>
|
||||
<restoreVolumeNotification>false</restoreVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<restoreVolumeRing>false</restoreVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<restoreVolumeSystem>false</restoreVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<restoreVolumeVoiceCall>false</restoreVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<restoreRingerMode>false</restoreRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<restoreInterruptionsMode>false</restoreInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="store_audio_stream_volume">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Lautstärken Speichern</name>
|
||||
<storeVolumeAlarm>true</storeVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<storeVolumeDTMF>true</storeVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<storeVolumeMusic>true</storeVolumeMusic>
|
||||
<variableVolumeMusic>global_volume_music</variableVolumeMusic>
|
||||
<storeVolumeNotification>true</storeVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<storeVolumeRing>true</storeVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<storeVolumeSystem>true</storeVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<storeVolumeVoiceCall>true</storeVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<storeRingerMode>false</storeRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<storeInterruptionsMode>false</storeInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="restore_audio_stream_volume">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Lautstärken Wiederherstellen</name>
|
||||
<restoreVolumeAlarm>true</restoreVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<restoreVolumeDTMF>true</restoreVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<restoreVolumeMusic>true</restoreVolumeMusic>
|
||||
<variableVolumeMusic>global_volume_music</variableVolumeMusic>
|
||||
<restoreVolumeNotification>true</restoreVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<restoreVolumeRing>true</restoreVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<restoreVolumeSystem>true</restoreVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<restoreVolumeVoiceCall>true</restoreVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<restoreRingerMode>false</restoreRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<restoreInterruptionsMode>false</restoreInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="sleep">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Pause: 2s (Gerät wach halten)</name>
|
||||
<duration>2s</duration>
|
||||
<keepDeviceAwake>true</keepDeviceAwake>
|
||||
</action>
|
||||
<action type="turn_screen_on">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Schalte Display ein: Hell für 60s</name>
|
||||
<bright>true</bright>
|
||||
<duration>60s</duration>
|
||||
<resetUserActivityTimer>true</resetUserActivityTimer>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmday = "{next_alarm,dateformat,c}"</name>
|
||||
<script>next_alarmday = "{next_alarm,dateformat,c}"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</name>
|
||||
<script>next_alarmtime = "{next_alarm,dateformat,HH:mm}"</script>
|
||||
</action>
|
||||
<action type="set_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Setze Systemeinstellung: System screen_brightness auf {param_brightness}</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<value>{param_brightness}</value>
|
||||
<verified>true</verified>
|
||||
</action>
|
||||
<action type="speech_output">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Sprachausgabe: {param_message}</name>
|
||||
<audioStreamType>MUSIC</audioStreamType>
|
||||
<text>{param_message}</text>
|
||||
<locale>de_DE</locale>
|
||||
<usePitch>true</usePitch>
|
||||
<pitch>1.0</pitch>
|
||||
<useSpeechRate>true</useSpeechRate>
|
||||
<speechRate>1.0</speechRate>
|
||||
<embeddedSynthesis>false</embeddedSynthesis>
|
||||
<networkSynthesis>false</networkSynthesis>
|
||||
<showStopSpeechNotification>false</showStopSpeechNotification>
|
||||
<requestAudioFocus>false</requestAudioFocus>
|
||||
<audioFocusType>TRANSIENT</audioFocusType>
|
||||
</action>
|
||||
<action type="open_browser_url">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>URL in Browser öffnen: {param_url} (mit Chrome)</name>
|
||||
<url>{param_url}</url>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.android.chrome</packageName>
|
||||
<className>com.google.android.apps.chrome.Main</className>
|
||||
<appName>Chrome</appName>
|
||||
</action>
|
||||
<flow type="flow">
|
||||
<name>Displaymessage</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="-192.5">
|
||||
<trigger>HTTP Request: /automagic/screenMsg, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="157.5">Benachrichtigung auf Bildschirm: {param_message} (lange)</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Informationen</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<actioncontainer id="t1" x="-140.00002" y="647.5">Initialisiere Variablen Telefoninfo: network_country_iso, voice_mail_number</actioncontainer>
|
||||
<actioncontainer id="t2" x="69.99999" y="647.5">Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</actioncontainer>
|
||||
<conditioncontainer id="t3" x="70.0" y="402.5">Akku Ladestand: grösser als 0%</conditioncontainer>
|
||||
<actioncontainer id="t4" x="279.99988" y="647.5">Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</actioncontainer>
|
||||
<triggercontainer id="t5" x="70.0" y="192.5">
|
||||
<trigger>HTTP Request: /automagic/deviceInfo, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t6" x="69.99997" y="1137.5">Pause: 2s (Gerät wach halten)</actioncontainer>
|
||||
<actioncontainer id="t7" x="420.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
|
||||
<actioncontainer id="t8" x="525.00006" y="647.5">Initialisiere Variable Nächster Alarm: Variable next_alarm</actioncontainer>
|
||||
<actioncontainer id="t9" x="69.99996" y="1417.5">HTTP Response</actioncontainer>
|
||||
<actioncontainer id="t10" x="630.0" y="857.50006">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
|
||||
<connection from="t1" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t1" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t8" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t7" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Mediaplayer</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<actioncontainer id="t1" x="455.0" y="437.5">Audio Player steuern: Medienknopf Zurück (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t2" x="210.0" y="437.5">Audio Player steuern: Medienknopf Weiter (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t3" x="-385.0" y="437.5">Audio Player steuern: Medienknopf Stopp (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t4" x="-70.0" y="437.5">Audio Player steuern: Medienknopf Play (Google Play Musik)</actioncontainer>
|
||||
<conditioncontainer id="t5" x="210.0" y="122.5">Expression: param_button == "next"</conditioncontainer>
|
||||
<conditioncontainer id="t6" x="455.0" y="122.5">Expression: param_button == "back"</conditioncontainer>
|
||||
<conditioncontainer id="t7" x="-385.0" y="122.5">Expression: param_button == "stop"</conditioncontainer>
|
||||
<conditioncontainer id="t8" x="-70.0" y="122.5">Expression: param_button == "play"</conditioncontainer>
|
||||
<conditioncontainer id="t9" x="980.0" y="122.5">WLAN Verbunden: TuxNet-AP01</conditioncontainer>
|
||||
<conditioncontainer id="t10" x="455.00024" y="-227.50009">Expression: trigger == "com.android.music.metachanged"</conditioncontainer>
|
||||
<triggercontainer id="t11" x="455.00003" y="-472.4999">
|
||||
<trigger>HTTP Request: /automagic/mediaPlayer, Port 8089</trigger>
|
||||
<trigger>com.android.music.metachanged</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t12" x="770.0" y="437.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus5Marko%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response</actioncontainer>
|
||||
<actioncontainer id="t13" x="980.0" y="437.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus5Marko%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response</actioncontainer>
|
||||
<actioncontainer id="t14" x="1190.0" y="437.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus5Marko%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response</actioncontainer>
|
||||
<connection from="t5" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t1" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t9" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t7" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t8" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t5" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t6" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t11" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>openURL</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/openURL, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="262.5">URL in Browser öffnen: {param_url} (mit Chrome)</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Set Brightness</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<actioncontainer id="t1" x="70.00001" y="332.50006">Setze Systemeinstellung: System screen_brightness auf {param_brightness}</actioncontainer>
|
||||
<triggercontainer id="t2" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/setBrightness, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<connection from="t2" to="t1" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Set Screen On Off</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<actioncontainer id="t1" x="-35.0" y="542.49994">Gerät sperren</actioncontainer>
|
||||
<actioncontainer id="t2" x="174.99994" y="542.50006">Schalte Display ein: Hell für 60s</actioncontainer>
|
||||
<triggercontainer id="t3" x="69.99999" y="52.499996">
|
||||
<trigger>HTTP Request: /automagic/setScreenOnOff, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<conditioncontainer id="t4" x="-34.999985" y="297.49988">Expression: param_screen=="off"</conditioncontainer>
|
||||
<conditioncontainer id="t5" x="175.00005" y="297.5">Expression: param_screen=="on"</conditioncontainer>
|
||||
<connection from="t3" to="t5" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t4" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t1" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Text to Speech</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/ttsMsg, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="332.5">Lautstärken Speichern</actioncontainer>
|
||||
<actioncontainer id="t3" x="70.0" y="892.5">Sprachausgabe: {param_message}</actioncontainer>
|
||||
<actioncontainer id="t4" x="70.0" y="1172.5">Lautstärken Wiederherstellen</actioncontainer>
|
||||
<actioncontainer id="t5" x="70.0" y="612.5">Lautstärke einstellen: Medien auf Level 10</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t5" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t4" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Volume</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="-665.0" y="227.5">
|
||||
<trigger>HTTP Request: /automagic/setVolume, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="-665.0" y="472.49994">Lautstärken setzen</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
</data>
|
@ -1,555 +0,0 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
||||
<data version="1.28.0">
|
||||
<trigger type="general_broadcast">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>com.android.music.metachanged</name>
|
||||
<enabled>true</enabled>
|
||||
<action>com.android.music.metachanged</action>
|
||||
<categoryList></categoryList>
|
||||
<dataSchemeList></dataSchemeList>
|
||||
<dataAuthorityList></dataAuthorityList>
|
||||
<dataPathLiteralList></dataPathLiteralList>
|
||||
<dataPathPrefixList></dataPathPrefixList>
|
||||
<dataPathGlobList></dataPathGlobList>
|
||||
<dataTypeList></dataTypeList>
|
||||
<extras>artist = getString("artist");
|
||||
track = getString("track");
|
||||
album = getString("album");</extras>
|
||||
<receiveInitialStickyBroadcast>false</receiveInitialStickyBroadcast>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/deviceInfo, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/deviceInfo</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/mediaPlayer, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/mediaPlayer</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/openURL, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/openURL</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/screenMsg, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/screenMsg</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/setBrightness, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/setBrightness</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/setScreenOnOff, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/setScreenOnOff</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/setVolume, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/setVolume</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<trigger type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: /automagic/ttsMsg, Port 8089</name>
|
||||
<enabled>true</enabled>
|
||||
<path>/automagic/ttsMsg</path>
|
||||
<port>8089</port>
|
||||
<acquireWifiLock>true</acquireWifiLock>
|
||||
</trigger>
|
||||
<condition type="battery_level">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Akku Ladestand: grösser als 0%</name>
|
||||
<levelPercentage>0</levelPercentage>
|
||||
<batteryLevelCondition>HIGHER_THAN</batteryLevelCondition>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "back"</name>
|
||||
<expression>param_button == "back"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "next"</name>
|
||||
<expression>param_button == "next"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "play"</name>
|
||||
<expression>param_button == "play"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_button == "stop"</name>
|
||||
<expression>param_button == "stop"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_screen=="off"</name>
|
||||
<expression>param_screen=="off"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: param_screen=="on"</name>
|
||||
<expression>param_screen=="on"</expression>
|
||||
</condition>
|
||||
<condition type="expression">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Expression: trigger == "com.android.music.metachanged"</name>
|
||||
<expression>trigger == "com.android.music.metachanged"</expression>
|
||||
</condition>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Play (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_PLAY</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Stopp (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_STOP</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Weiter (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_NEXT</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="control_audio_player">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Audio Player steuern: Medienknopf Zurück (Google Play Musik)</name>
|
||||
<simulateMediaButton>true</simulateMediaButton>
|
||||
<broadcastAction>LAUNCH</broadcastAction>
|
||||
<mediaButton>KEYCODE_MEDIA_PREVIOUS</mediaButton>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.google.android.music</packageName>
|
||||
<className>com.google.android.music.playback.MediaButtonIntentReceiver</className>
|
||||
<appName>Google Play Musik</appName>
|
||||
</action>
|
||||
<action type="notification_screen">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Benachrichtigung auf Bildschirm: {param_message} (lange)</name>
|
||||
<showText>true</showText>
|
||||
<text>{param_message}</text>
|
||||
<widgetName></widgetName>
|
||||
<width>200</width>
|
||||
<height>250</height>
|
||||
<stretchToFillArea>false</stretchToFillArea>
|
||||
<opacity>1.0</opacity>
|
||||
<durationLong>true</durationLong>
|
||||
<customPosition>false</customPosition>
|
||||
<gravityType>TOP_LEFT</gravityType>
|
||||
<xOffset>0</xOffset>
|
||||
<yOffset>0</yOffset>
|
||||
</action>
|
||||
<action type="lock_device">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Gerät sperren</name>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response</name>
|
||||
<url>http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response</name>
|
||||
<url>http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="http_request">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response</name>
|
||||
<url>http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)}</url>
|
||||
<verifyCertificates>true</verifyCertificates>
|
||||
<basicAuthentication>false</basicAuthentication>
|
||||
<username></username>
|
||||
<httpMethod>GET</httpMethod>
|
||||
<httpContentType>X_WWW_FORM_URLENCODED</httpContentType>
|
||||
<contentType>text/plain</contentType>
|
||||
<generalTextData></generalTextData>
|
||||
<formFieldList>Lastname=XYZ,Firstname=ABC</formFieldList>
|
||||
<timeout>60000</timeout>
|
||||
<setCustomHTTPHeaders>false</setCustomHTTPHeaders>
|
||||
<customHTTPHeaders></customHTTPHeaders>
|
||||
<storeInVariable>true</storeInVariable>
|
||||
<variable>response</variable>
|
||||
<path>/storage/emulated/0/Download/file.bin</path>
|
||||
</action>
|
||||
<action type="write_http_response_text">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>HTTP Response</name>
|
||||
<text>powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikBluetooth {volumeMusikBluetooth}@@volumeMusikSpeaker {volumeMusikSpeaker}@@screenBrightness {screenBrightness}@@nextAlarmTime {next_alarmtime}@@nextAlarmDay {next_alarmday}</text>
|
||||
<replaceVariables>true</replaceVariables>
|
||||
<contentType>text/html</contentType>
|
||||
</action>
|
||||
<action type="init_variable_next_alarm">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Nächster Alarm: Variable next_alarm</name>
|
||||
<variable>next_alarm</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<variable>screenBrightness</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_bt_a2dp</settingName>
|
||||
<variable>volumeMusikBluetooth</variable>
|
||||
</action>
|
||||
<action type="init_variable_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>volume_music_speaker</settingName>
|
||||
<variable>volumeMusikSpeaker</variable>
|
||||
</action>
|
||||
<action type="set_audio_stream_volume">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Lautstärke einstellen: Medien auf Level 10</name>
|
||||
<audioStreamType>MUSIC</audioStreamType>
|
||||
<volumeIndex>10</volumeIndex>
|
||||
<playSound>true</playSound>
|
||||
<showUI>false</showUI>
|
||||
</action>
|
||||
<action type="restore_audio_stream_volume">
|
||||
<useDefaultName>false</useDefaultName>
|
||||
<name>Lautstärken setzen</name>
|
||||
<restoreVolumeAlarm>false</restoreVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<restoreVolumeDTMF>false</restoreVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<restoreVolumeMusic>true</restoreVolumeMusic>
|
||||
<variableVolumeMusic>param_volume</variableVolumeMusic>
|
||||
<restoreVolumeNotification>false</restoreVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<restoreVolumeRing>false</restoreVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<restoreVolumeSystem>false</restoreVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<restoreVolumeVoiceCall>false</restoreVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<restoreRingerMode>false</restoreRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<restoreInterruptionsMode>false</restoreInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="store_audio_stream_volume">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Lautstärken Speichern</name>
|
||||
<storeVolumeAlarm>true</storeVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<storeVolumeDTMF>true</storeVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<storeVolumeMusic>true</storeVolumeMusic>
|
||||
<variableVolumeMusic>global_volume_music</variableVolumeMusic>
|
||||
<storeVolumeNotification>true</storeVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<storeVolumeRing>true</storeVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<storeVolumeSystem>true</storeVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<storeVolumeVoiceCall>true</storeVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<storeRingerMode>false</storeRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<storeInterruptionsMode>false</storeInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="restore_audio_stream_volume">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Lautstärken Wiederherstellen</name>
|
||||
<restoreVolumeAlarm>true</restoreVolumeAlarm>
|
||||
<variableVolumeAlarm>global_volume_alarm</variableVolumeAlarm>
|
||||
<restoreVolumeDTMF>true</restoreVolumeDTMF>
|
||||
<variableVolumeDTMF>global_volume_dtmf</variableVolumeDTMF>
|
||||
<restoreVolumeMusic>true</restoreVolumeMusic>
|
||||
<variableVolumeMusic>global_volume_music</variableVolumeMusic>
|
||||
<restoreVolumeNotification>true</restoreVolumeNotification>
|
||||
<variableVolumeNotification>global_volume_notification</variableVolumeNotification>
|
||||
<restoreVolumeRing>true</restoreVolumeRing>
|
||||
<variableVolumeRing>global_volume_ring</variableVolumeRing>
|
||||
<restoreVolumeSystem>true</restoreVolumeSystem>
|
||||
<variableVolumeSystem>global_volume_system</variableVolumeSystem>
|
||||
<restoreVolumeVoiceCall>true</restoreVolumeVoiceCall>
|
||||
<variableVolumeVoiceCall>global_volume_voice_call</variableVolumeVoiceCall>
|
||||
<restoreRingerMode>false</restoreRingerMode>
|
||||
<variableRingerMode>global_ringer_mode</variableRingerMode>
|
||||
<restoreInterruptionsMode>false</restoreInterruptionsMode>
|
||||
<variableInterruptionsMode>global_interruptions_mode</variableInterruptionsMode>
|
||||
</action>
|
||||
<action type="sleep">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Pause: 2s (Gerät wach halten)</name>
|
||||
<duration>2s</duration>
|
||||
<keepDeviceAwake>true</keepDeviceAwake>
|
||||
</action>
|
||||
<action type="turn_screen_on">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Schalte Display ein: Hell für 60s</name>
|
||||
<bright>true</bright>
|
||||
<duration>60s</duration>
|
||||
<resetUserActivityTimer>true</resetUserActivityTimer>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmday = "{next_alarm,dateformat,c}"</name>
|
||||
<script>next_alarmday = "{next_alarm,dateformat,c}"</script>
|
||||
</action>
|
||||
<action type="script">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</name>
|
||||
<script>next_alarmtime = "{next_alarm,dateformat,HH:mm}"</script>
|
||||
</action>
|
||||
<action type="set_system_setting">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Setze Systemeinstellung: System screen_brightness auf {param_brightness}</name>
|
||||
<settingCategory>SYSTEM</settingCategory>
|
||||
<settingName>screen_brightness</settingName>
|
||||
<value>{param_brightness}</value>
|
||||
<verified>true</verified>
|
||||
</action>
|
||||
<action type="speech_output">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>Sprachausgabe: {param_message}</name>
|
||||
<audioStreamType>MUSIC</audioStreamType>
|
||||
<text>{param_message}</text>
|
||||
<locale>de_DE</locale>
|
||||
<usePitch>true</usePitch>
|
||||
<pitch>1.0</pitch>
|
||||
<useSpeechRate>true</useSpeechRate>
|
||||
<speechRate>1.0</speechRate>
|
||||
<embeddedSynthesis>false</embeddedSynthesis>
|
||||
<networkSynthesis>false</networkSynthesis>
|
||||
<showStopSpeechNotification>false</showStopSpeechNotification>
|
||||
<requestAudioFocus>false</requestAudioFocus>
|
||||
<audioFocusType>TRANSIENT</audioFocusType>
|
||||
</action>
|
||||
<action type="open_browser_url">
|
||||
<useDefaultName>true</useDefaultName>
|
||||
<name>URL in Browser öffnen: {param_url} (mit Chrome)</name>
|
||||
<url>{param_url}</url>
|
||||
<explicitComponent>true</explicitComponent>
|
||||
<packageName>com.android.chrome</packageName>
|
||||
<className>com.google.android.apps.chrome.Main</className>
|
||||
<appName>Chrome</appName>
|
||||
</action>
|
||||
<flow type="flow">
|
||||
<name>Displaymessage</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="-192.5">
|
||||
<trigger>HTTP Request: /automagic/screenMsg, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="157.5">Benachrichtigung auf Bildschirm: {param_message} (lange)</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Informationen</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="192.5">
|
||||
<trigger>HTTP Request: /automagic/deviceInfo, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<conditioncontainer id="t2" x="70.0" y="437.5">Akku Ladestand: grösser als 0%</conditioncontainer>
|
||||
<actioncontainer id="t3" x="350.0" y="612.5">Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness</actioncontainer>
|
||||
<actioncontainer id="t4" x="70.00003" y="612.5001">Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker</actioncontainer>
|
||||
<actioncontainer id="t5" x="-175.0" y="612.5">Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth</actioncontainer>
|
||||
<actioncontainer id="t6" x="70.0" y="1102.5">Pause: 2s (Gerät wach halten)</actioncontainer>
|
||||
<actioncontainer id="t7" x="665.0" y="612.5">Initialisiere Variable Nächster Alarm: Variable next_alarm</actioncontainer>
|
||||
<actioncontainer id="t8" x="560.0" y="857.5">Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}"</actioncontainer>
|
||||
<actioncontainer id="t9" x="770.0" y="857.5">Script: next_alarmday = "{next_alarm,dateformat,c}"</actioncontainer>
|
||||
<actioncontainer id="t10" x="70.0" y="1382.5004">HTTP Response</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t7" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t8" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t9" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t6" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Mediaplayer</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="455.0" y="-577.49994">
|
||||
<trigger>HTTP Request: /automagic/mediaPlayer, Port 8089</trigger>
|
||||
<trigger>com.android.music.metachanged</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="455.0" y="437.5">Audio Player steuern: Medienknopf Zurück (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t3" x="209.99997" y="437.5">Audio Player steuern: Medienknopf Weiter (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t4" x="-385.0001" y="437.5">Audio Player steuern: Medienknopf Stopp (Google Play Musik)</actioncontainer>
|
||||
<actioncontainer id="t5" x="-70.00003" y="437.5">Audio Player steuern: Medienknopf Play (Google Play Musik)</actioncontainer>
|
||||
<conditioncontainer id="t6" x="-70.0" y="122.5">Expression: param_button == "play"</conditioncontainer>
|
||||
<conditioncontainer id="t7" x="210.0" y="122.5">Expression: param_button == "next"</conditioncontainer>
|
||||
<conditioncontainer id="t8" x="455.0" y="122.5">Expression: param_button == "back"</conditioncontainer>
|
||||
<conditioncontainer id="t9" x="-385.00006" y="122.5">Expression: param_button == "stop"</conditioncontainer>
|
||||
<conditioncontainer id="t10" x="455.0" y="-332.5">Expression: trigger == "com.android.music.metachanged"</conditioncontainer>
|
||||
<actioncontainer id="t11" x="980.0001" y="437.5001">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response</actioncontainer>
|
||||
<actioncontainer id="t12" x="1190.0" y="437.50006">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response</actioncontainer>
|
||||
<actioncontainer id="t13" x="770.0" y="437.50012">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response</actioncontainer>
|
||||
<conditioncontainer id="t14" x="980.0" y="122.5">WLAN Verbunden: TuxNet-AP01</conditioncontainer>
|
||||
<actioncontainer id="t15" x="944.99994" y="857.5">HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8090/Nexus10Wohnzimmer@@currentPlayMusicAlbum@@{encodeURLForm(album)} speichern in response</actioncontainer>
|
||||
<connection from="t1" to="t10" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t6" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t7" to="t3" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t8" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t9" to="t4" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t14" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t9" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t6" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t7" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t10" to="t8" type="FALSE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t14" to="t13" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t14" to="t11" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t14" to="t12" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>openURL</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/openURL, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="262.5">URL in Browser öffnen: {param_url} (mit Chrome)</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Set Brightness</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/setBrightness, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="332.5">Setze Systemeinstellung: System screen_brightness auf {param_brightness}</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Set Screen On Off</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/setScreenOnOff, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="175.0" y="542.5">Schalte Display ein: Hell für 60s</actioncontainer>
|
||||
<conditioncontainer id="t3" x="-35.0" y="297.5">Expression: param_screen=="off"</conditioncontainer>
|
||||
<conditioncontainer id="t4" x="175.0" y="297.5">Expression: param_screen=="on"</conditioncontainer>
|
||||
<actioncontainer id="t5" x="-35.0" y="542.5">Gerät sperren</actioncontainer>
|
||||
<connection from="t1" to="t4" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t1" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t5" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t4" to="t2" type="TRUE" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Text to Speech</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="70.0" y="52.5">
|
||||
<trigger>HTTP Request: /automagic/ttsMsg, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="70.0" y="332.5">Lautstärken Speichern</actioncontainer>
|
||||
<actioncontainer id="t3" x="70.0" y="892.50006">Sprachausgabe: {param_message}</actioncontainer>
|
||||
<actioncontainer id="t4" x="70.0" y="1172.5">Lautstärken Wiederherstellen</actioncontainer>
|
||||
<actioncontainer id="t5" x="70.0" y="612.5">Lautstärke einstellen: Medien auf Level 10</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t2" to="t5" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t3" to="t4" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
<connection from="t5" to="t3" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
<flow type="flow">
|
||||
<name>Volume</name>
|
||||
<group>FHEM Info / Steuerung über AMAD Modul</group>
|
||||
<enabled>true</enabled>
|
||||
<executionPolicy>PARALLEL</executionPolicy>
|
||||
<triggercontainer id="t1" x="-665.0" y="227.5">
|
||||
<trigger>HTTP Request: /automagic/setVolume, Port 8089</trigger>
|
||||
</triggercontainer>
|
||||
<actioncontainer id="t2" x="-665.0" y="647.5">Lautstärken setzen</actioncontainer>
|
||||
<connection from="t1" to="t2" type="NORMAL" sourcePosition="SOUTH" targetPosition="NORTH" />
|
||||
</flow>
|
||||
</data>
|
Loading…
x
Reference in New Issue
Block a user