Homematic
Homematic Script für „DUMMIES“ Teil 4 – „Auslöser“ in Variable schreiben

Homematic Script für „DUMMIES“ Teil 4 – „Auslöser“ in Variable schreiben

in den letzten drei Beiträge haben wir gelernt:

  1. Rechnen mit Variablen und Aktoren
  2. Variablen typisieren
  3. Wenn dann sonst

Nachdem das Thema nun in letzter Zeit öfter vorgekommen ist, wollte ich mich nun mit einem weiteren Script-thema beschäftigen.

Die beiden typischen Fälle, in denen dieses Script benötigt werden könnte, sind

Das Smarthome auf „offene Fenster“ oder „offene Türen“ prüfen.

oder

Den ausgelösten Bewegungsmelder melden

In beiden Fällen ist es hilfreich, den auslösenden Sensor zu bestimmten und in eine Variable zu schreiben. Wenn wir bei den Beispielvariablen der letzten drei Lektionen bleiben wollen, ist das Grundscript dafür, das Folgende.

var a = dom.GetObject(dom.GetObject("$src$").Device());
dom.GetObject("SYSTEMVARIABLE").State(a);

In diesem Script wird auch hier wieder die interne Variable „a“ verwendet, um ein Gerät ausfindig zu machen. Allerdings wird hierbei nicht der direkte Kanal angesprochen, sondern die Quelle bzw. der Auslöser, der das Programm startet.

Im folgenden Programmbeispiel habe ich mehrere Bewegungsmelder, von denen jeder einzelne auslösen kann. Sobald einer auslöst, startet genau dieser „Auslöser“ das Script. Das Script erkennt mit der ersten Zeile, um welches Gerät es sich handelt, und schreibt den Gerätenamen in die Sytemvariable aus der zweiten Zeile.

Wer in den letzten drei Lektionen daran gewöhnt ist, das Programm mit „WriteLine()“ zu testen, wird hier sich hier wundern, dass das nicht funktioniert. Das Script benötigt einen Auslöser. Ohne diesen wird keine Variable befüllt.


Fertige Scripte:

  • Nach dem selben Prinzip funktioniert auch das Script von Christian Lütgens, welches die erkannte Bewegung als Email meldet.
  • Ebenso gibts im Homematic-Forum auch schon ein fertiges Script, um offene Fenster bzw. Türen zu prüfen.

In Facebook hat Bastian Kochsiek ein Script erarbeitet, welches die TFK auf Sabotage und Zustand prüft

object o_dp = dom.GetObject ("$src$");
if (o_dp) {
string s_status = "geschlossen;offen;Sabotage".StrValueByIndex (";", o_dp.Value());
object o_channel = dom.GetObject (o_dp.Device());
string s_channel = o_channel.Name();
string s_subject = s_channel # " " # s_status;
string s_body = "ALARM!!! " # s_channel # " hat Alarm ausgelöst. Der TFK ist jetzt " # s_status # ".";

dom.GetObject (SYSTEMVARIABLE").State (s_body);
}

Und diese oder andere Systemvariablen, können dann in die Variable „Telegram“ geschrieben und sofort versendet werden. Wie das geht, hat Christian Lütgens schön erklärt.

https://www.christian-luetgens.de/homematic/telegram/telegramframework/T-Framework.htm

1

1 thought on “Homematic Script für „DUMMIES“ Teil 4 – „Auslöser“ in Variable schreiben

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.