Mittwoch, 6. Februar 2013

Tasker und das XS1

Ich habe mir gerade ein LED-"Glühlampen"-Set von Philips gekauft, und auch schon zur Zusammenarbeit mit Tasker überredet. Aber dazu später mehr - erstmal will ich noch die alten Tasker-Sachen nachholen:

Allgemeingültiges

Nachdem ich die ersten Tests 'einfach so' angefangen hatte, habe ich mir dann eine Variable (%EZC) angelegt, die Hostnamen/IP, Benutzername und Passwort speichert. So muss ich nicht durch alle Tasks gehen, wenn ich mal etwas ändern möchte, sondern habe eine zentrale Anlaufstelle.

Steckdosensteuerung

Alles was man wirklich braucht ist ein HTTP Get (zu finden in der Kategory Net). Bei Server:Port trägt man die oben genannte Variable %EZC ein. Path enthält preset?switch=<x>&value=<on/off>.

<x> ersetzt man durch die Nummer des Aktors - zu finden in der ersten Spalte auf der Seite Actuators vom XS1

<on/off> gibt an, ob die Steckdose an oder aus geschaltet werden soll - man entscheide sich für eins, und lasse die Klammern weg. :-)

Da mein WLAN ab und an unzuverlässig ist, habe ich noch eine Abfrage der Variablen %HTTPR angefügt. Wenn sie 204 enthält, wird der Task beendet. Andernfalls wird das HTTP Get nach 3 Sekunden erneut versucht.

Heizkörpersteuerung

Der eigentliche Vorgang funktioniert analog zur Steckdosensteuerung. Hinter value gibt man die gewünschte Zieltemeratur an. Also z.B. preset?switch=4&value=19. Antrieb Nummer 4 ist bei mir die Heizung im Bad.

Zusätzlich zu der Sicherheitsabfrage von %HTTPR habe ich noch eine Abfrage eingefügt, ob das jeweilige Fenster offen ist - ich will ja nicht für draußen heizen. Wie das geht folgt im nächsten Abschnitt.

Sensor "Fenster offen"

Nach den Actuators kommen wir nun zu den Sensors auf dem XS1. Der gravierenste Unterschied ist, dass diese nicht unverzüglich arbeiten, sondern durchaus Verzögerungen von mehreren Minuten haben. Der Grund liegt im Bestreben, die Batterien in den Sensoren zu schonen. Für meinen Bedarf ist das auch vollkommen ausreichend und funktioniert gut.

Wir kommen nun nicht mehr nur mit einem HTTP Get aus, sondern müssen auch noch das Ergebnis auswerten. Außerdem sieht der Path etwas anders aus: control?callback=mycallback&cmd=get_state_sensor&number=<x>.

<x> enthält wieder die Nummer aus der Übersichtsseite des XS1, diesmal natürlich derjenigen unter Sensors.

Außerdem muss man noch Output File auf eine Datei seiner Wahl legen, z.B. Tasker/Fenster_Bad. Diese Datei kann man dann mit Read Line (Kategorie File) auslesen. Dazu trägt man bei Line eine 8 ein und wählt eine To Var, z.B. %FENSTER_BAD_TEMP. File ist natürlich auf die selbe Datei zu setzen, die man auch beim HTTP Get angegeben hat. Dann noch die folgenden Schritte, um den richtigen Wert herauszufischen:

Variable Split mit der gerade gewählten Variablen als Name.

Variable Set mit z.B. %FENSTER_BAD als Name und %FENSTER_BAD_TEMP2 bei To (die Variable von oben, mit einer angehängten 2).

Im Grunde reicht das, um den 'aktuellen' (im Rahmen der oben erwähten Verzögerungen) Stand des Fensters auszulesen. Ich speichere mir noch den alten Stand des Fensters um so einen Vergleich zu haben und mir nur dann eine Benachrichtigung anzeigen zu lassen, wenn das Fenster gerade geöffnet wurde - und nicht jedes mal wieder, wenn er feststellt, dass das Fenster immer noch offen ist.

Bewegungsmelder als "Klingel" für die Katze

Da Heidi einen festen Platz hat(te), an dem sie gewartet hat, wenn sie wieder rein wollte, ist es einfach, diesen mit einem mobilen Bewegungsmelder zu überwachen. Zum Starten der Überwachung startet man den entsprechenden Task über einen Shortcut auf dem Homescreen.

Dieser Task fragt dann analog zum "Fenster offen"-Sensor den Bewegungsmelder ab. Allerdings steht die gewünschte Information hier in Zeile 11 statt in Zeile 8.

1 Kommentar: