Zwei winzige Programme, mit denen Systemvariablen geändert und per Telegram gemeldet werden
Auf dieser Seite
Das Klima in meinem Haus wird durch eine wilde Kombination aus Raumthermostaten, Stellantrieben, Fensterantrieben und Rolläden geregelt. Alles wird von einer einzelnen Systemvariable zusammengehalten: Wenn ich Wohnraumtemperatur auf 19 °C setze, dann wird automatisch tagsüber das Wohnzimmer auf 19 °C gehalten – durch heizen oder lüften –, das Bad auf 20 °C zu bestimmten Zeiten, das Schlafzimmer nachts auf 18 °C usw.
Zwei Fernbedienungen in Wohn- und Schlafzimmer dienen der Einstellung: langer Tastendruck auf eine Taste erhöht Wohnraumtemperatur um 0,5 °C, langer Tastendruck auf eine andere Taste verringert sie um 0,5 °C.
Funktioniert gut, aber lange Zeit hatte ich keine direkte Rückmeldung, welche Temperatur ich gerade eingestellt hatte. Eine Lösung wäre die große 19-Tasten-Fernbedienung mit Display gewesen, doch die ist teuer und braucht eine Ladestation. Irgendeinen Telegram-Empfänger dagegen habe ich fast immer in Sichtweite.
Was liegt also näher, als den geänderten Wert als Push-Nachricht zu senden?
Strings in HomeMatic-Scripten
Durch String-Verwendung in HomeMatic-Scripten kann die CCU fehlerhaft arbeiten, instabil werden oder sogar abstürzen. Grundsätzlich gilt: Je öfter mit Strings hantiert wird, desto eher führt dies zu Problemen.
Ich empfehle daher, nach Umsetzung dieser Anleitung die CCU unter Beobachtung zu halten.
Benennung von Systemvariablen
Prinzipiell kann man Systemvariablen – so wie allen Objekten in der CCU – beliebige Namen geben, also z. B. auch Umlaute und Sonderzeichen verwenden. Ich empfehle jedoch, sich auf reguläre Buchstaben (a-z, A-Z) zu beschränken: Bei Umlauten und Sonderzeichen besteht die Gefahr, dass Systemvariablen in Scripten nicht überall gefunden werden.
Mein Programm, das aus einem Wert in einer Systemvariable ein passendes Klima im ganzen Haus zaubert, werde ich hier nicht veröffentlichen – das ist im Laufe der Jahre etwas zu bizarr geworden, um es verständlich zu erläutern. Das Programm zur Einstellung der Systemvariable dagegen ist ein schönes Beispiel für ein ganz einfaches WebUI-Programm mit Scripten.
Der erste Programmteil ist für Temperaturerhöhungen da. Das WebUI-Programm ist entsprechend einfach: Bei Tastendruck Script ausführen.
Auch das Script ist nicht viel mehr als ein Zweizeiler.
gesamtes Script markieren / kopieren
! HomeMatic-Script ! GEäNDERTE SYSTEMVARIABLE MELDEN ! http://www.christian-luetgens.de/homematic/telegram/wertmeldung/Werte_melden.htm object o_temp = dom.GetObject("Wohnraumtemperatur"); o_temp.State (o_temp.Value() + 0.5); ! Ende des Scripts
Zeile 1: Systemvariable suchen.
Zeile 2: Temperatur aus Systemvariable auslesen, 0,5 addieren und wieder in der Systemvariable speichern.
Fertig.
Der zweite Programmteil kümmert sich um das Absenken der Temperatur:
Frage mich bitte niemand, warum ich beim einen Handsender die Tasten extra-oben und extra-unten genannt habe, wärend sie beim anderen nur a und b heißen. Es gibt bestimmt einen sehr guten Grund dafür, aber welcher das ist, darüber können in 500 Jahren religiöse Fanatiker bittere Kriege führen oder in 2000 Jahren Digital-Archäologen ihre Doktorarbeiten schreiben.
Das zugehörige Script ist bis auf das Vorzeichen identisch mit dem vorherigen.
gesamtes Script markieren / kopieren
! HomeMatic-Script ! GEäNDERTE SYSTEMVARIABLE MELDEN ! http://www.christian-luetgens.de/homematic/telegram/wertmeldung/Werte_melden.htm object o_temp = dom.GetObject("Wohnraumtemperatur"); o_temp.State (o_temp.Value() - 0.5); ! Ende des Scripts
Ich verzichte auf Begrenzungen der Temperatur – wenn ich mag, kann ich sie bis unter den Nullpunkt reduzieren oder für meine religiösen Fanatiker schon mal das Haus auf Höllentemperatur vorglühen. Nicht, dass ich das tun würde. Höchstens, wenn es sein muss oder der Backofen kaputt ist.
Zugegeben: Die Begrenzung der Systemvariable auf einen sinnvollen Temperaturbereich schiebt dem Höllenfeuer einen Riegel vor.
Das Programm zur Telegram-Benachrichtigung ist ebenfalls sehr einfach gestrickt.
Bei Aktualisierung von Wohnraumtemperatur wird ein Script ausgelöst. Entsprechend der Logik von WebUI-Programmen ist es wichtig, dass bei Aktualisierung auslösen gewählt wird, damit wirklich bei jedem Tastendruck eine Nachricht rausgeht.
Der Mindestwert von 15.00 entspricht dem Mindestwert, den ich bei Erstellung der Systemvariable vorgegeben habe. Weniger kann ich nicht auswählen.
Das Script ist ein Einzeiler:
gesamtes Script markieren / kopieren
! HomeMatic-Script ! GEäNDERTE SYSTEMVARIABLE MELDEN ! http://www.christian-luetgens.de/homematic/telegram/wertmeldung/Werte_melden.htm dom.GetObject ("Telegram").State ("Wohnraumtemperatur: " # dom.GetObject ("Wohnraumtemperatur").Value().ToString().Substr(0,4)); ! Ende des Scripts
Was macht das Ding? Also:
Warum nur die ersten vier Zeichen? .ToString() liefert den Wert mit sehr vielen Nachkommastellen; 19.00000000000 sieht bei der Benachrichtigung aber doof aus. Also nehme ich nur vier Zeichen und bekomme 19.0 (auch der Punkt als Dezimaltrennzeichen ist eine Stelle).
Schon beim Abspeichern des Programms bekomme ich die passende Meldung. Mit jedem langen Tastendruck dann natürlich auch.
Endlich muss ich nicht mehr auf mein Gefühl achten, um zu wissen, ob es zu warm oder zu kalt im Haus ist. Stattdessen bekomme ich jetzt bequem eine Nachricht auf mein Smartphone, wenn meine ganz persönliche Hölle zufriert.
Also im Bereich zwischen 15 °C und 25 °C.