Unter der Rubrik Code Schnipsel möchten wir hier zukünftig eigene, sowie nützliche Skripte anderer Autoren vorstellen und beschreiben. Dies soll allen HomeMatic Anwendern helfen bestimmte Funktionen oder Lösungen, welche über WebUI Konsolen Programme nicht möglich sind, mit Scripten umzusetzen. Das Ganze soll keine Unterweisung in der HomeMatic Skript Sprache darstellen, sondern vielmehr euch anhand von Fallbeispielen, Lösungen an die Hand zu geben und diese detailiert zu beschreiben. Natürlich werde ich in den Artikeln die Autoren nennen und auf die entsprechenden Seiten verlinken. Damit ist dann sichergestellt, das jeweils die aktuellste Version geladen werden kann. Außerdem wollen wir uns hier nicht mit fremden Federn schmücken. Ehre wem Ehre gebührt. Wenn ihr selbst Projekte über Skripte realisiert habt, welche ihr gerne anderen Usern zur Verfügung stellen möchtet, schreibt mich an und wir werden nach entsprechender Abstimmung gerne darüber berichten.

Use Cases

In diesem ersten Artikel möchte ich euch ein Skript vorstellen, mit dem ihr Systemvariablen anlegen könnt und wenn erforderlich, auch wieder über Skript löschen könnt. Dieses Skript habe ich in Teilen an diversen Stellen im Netz gefunden. Daher ist kein eindeutiger Urheber feststellbar und wir informieren euch ohne diese Angabe über das Skript. Es kann ich vielen Fällen sehr hilfreich sein, die in einem Skript benötigten Systemvariablen auch über Skript zu definieren und wenn sie nicht mehr benötigt werden, auch wieder über ein Skript zu löschen. Im Artikel zeige ich euch, wie ihr Systemvariablen mit unterschiedlichen Variablentypen via Skript erstellen könnt und mit einem initialen Wert füllen könnt. In Summe sind es dann doch fünf Skripte geworden. Vier zum Anlegen von Systemvariablen verschiedener Typen und eines zum Löschen von Systemvariablen.

Allgemeines zu Systemvariablen

Systemvariablen sind die Zustandsspeicher (Merker) des Homematic Systems, die z. B. für die Unterscheidung von Zuständen (z. B. Automatik/Manuell) benötigt werden. Es gibt unterschiedliche Variablentypen, die folgendermaßen verwendet werden können:

  • Logikwert: Dieser Variablentyp kann 2 Werte annehmen (true/false), wobei der Text frei vergeben werden kann (z. B. Automatik/Manuell).
  • Werteliste: Dieser Variablentyp kann eine Liste von Werten annehmen, die durch ein Semikolon getrennt werden. Die Variable kann dann auf einen der Werte in dieser Liste gesetzt werden (z. B. Frühling; Sommer; Herbst; Winter).
  • Zahl: Dieser Variablentyp kann positive und negative Zahlenwerte annehmen (z. B. Temperaturwerte werden in diesen Variablentyp geschrieben).
  • Zeichenkette: Dieser Variablentyp kann einen beliebigen Text (String) annehmen.
  • Alarm: Dieser Variablentyp kann 2 Werte annehmen (true/false), wobei der Text frei vergeben werden kann (z. B. ausgelöst/nicht ausgelöst). Wenn der Wert auf true (ausgelöst) gesetzt wird, erfolgt in der Kopfzeile der WebUI unter Alarmmeldungen eine Anzeige.

Variable mit/ohne Kanalzuordnung

Wird eine Systemvariable einem Kanal zugeordnet, taucht sie nicht mehr unter den allgemeinen Systemvariablen auf, sondern wird nur in Verbindung mit dem Kanal angezeigt und kann auch nur dort abgefragt und gesetzt werden. D. h., um diese Systemvariable abzufragen, muss innerhalb eines Programms unter „Bedingung“ der Kanal gewählt werden. Die Variable taucht dann in der nachfolgenden Optionsliste als Option auf. Entsprechendes gilt beim Setzen dieser Variablen unter Aktivität. Wählt man unter „Status und Bedienung“ ein Gerät aus, bei dem eine Systemvariable einem Kanal zugeordnet ist, wird die Variable dann auch beim entsprechenden Kanal mit angezeigt. Ein Anwendungsbeispiel hierzu wäre, den Temperaturwert eines Homematic Heizkörperthermostaten in eine Variable zu schreiben, um die Ist-Temperatur einzusehen, da eine Anzeige der Ist-Temperatur sonst nur über den Homematic Funk-Wandthermostaten möglich ist.

Beschreibung der Skripte

Skript zum Anlegen einer Systemvariable vom Typ Logikwert

Mit dem obigen Skript wird eine Systemvariable vom Typ Logikwert angelegt und auf den Wert „true“ gesetzt. Die Variable erhält den Namen „SYSVAR Test Logikwert“ und im Dokumentationsfeld den Eintrag „SYSVAR Test Variablentyp Logikwert“. Die Variable wir nach der Definition auf „true“, also „aktiv“ gesetzt. Durch den Parameter „DPArchive(true)“ werden alle Veränderungen der Systemvariable ins Systemprotokoll geschrieben. Wenn ihr das nicht möchtet, einfach von „true“ auf „false“ ändern.

Skript zum Anlegen einer Systemvariable vom Typ Werteliste

Mit dem obigen Skript wird eine Systemvariable vom Typ Werteliste angelegt und auf den Wert „0“ gesetzt. Die Variable erhält den Namen „SYSVAR Test Werteliste“ und im Dokumentationsfeld den Eintrag „SYSVAR Test Variablentyp Werteliste“. Die Variable wir nach der Definition auf „0“, also „Wert1“ gesetzt. Die möglichen Werte werden unter „Valuelist“ angegeben. Durch den Parameter „DPArchive(true)“ werden alle Veränderungen der Systemvariable ins Systemprotokoll geschrieben. Wenn ihr das nicht möchtet, einfach von „true“ auf „false“ ändern.

Skript zum Anlegen einer Systemvariable vom Typ Zahl

Mit dem obigen Skript wird eine Systemvariable vom Typ Zahl angelegt und auf den Wert „15“ gesetzt. Die Variable erhält den Namen „SYSVAR Test Zahl“ und im Dokumentationsfeld den Eintrag „SYSVAR Test Variablentyp Zahl“. Die Variable wir nach der Definition auf „15“ gesetzt. Im Feld „ValueUnit“ kann ebenfalls ein Wert, beispielsweise wie hier „°C“angegeben werden. In den Feldern „ValueMin“ bzw. „ValueMax“ kann die Spanne der Zahlen von/bis angegeben werden. Durch den Parameter „DPArchive(false)“ werden Veränderungen der Systemvariable nicht ins Systemprotokoll geschrieben. Wenn ihr das ändern möchtet, einfach von „false“ auf „true“ ändern.

Skript zum Anlegen einer Systemvariable vom Typ Zeichenkette

Mit dem obigen Skript wird eine Systemvariable vom Typ Zeichenkette angelegt und es wird ein Text eingetragen. Die Variable erhält den Namen „SYSVAR Test Zeichenkette“ und im Dokumentationsfeld den Eintrag „SYSVAR Test Variablentyp Zeichenkette“. Die Variable erhält nach der Definition über „State“ den Eintrag „Systemvariable neu erstellt – 1. Eintrag „. Durch den Parameter „DPArchive(true)“ werden alle Veränderungen der Systemvariable ins Systemprotokoll geschrieben. Wenn ihr das nicht möchtet, einfach von „true“ auf „false“ ändern.

Systemvariablen löschen

Mit Hilfe des obigen Skiptes werden die zuvor angelegten Systemvariablen wieder gelöscht. Wenn ihr nur eine Löschen wollt, ist natürlich nur ein Block des Skriptes zu verwenden.

Screenshots zu den Systemvariablen

Ich habe zum Testen die oben beschriebenen Skripte unter Startseite>Programme und Verknüpfungen>Programme ausgeführt. Dort auf den Button „Skipt testen“ klicken und es öffnen sich ein Editor, in den ihr den Code reinkopieren und bearbeiten könnt. Ich habe den Code in das obere Fenster kopiert und dann auf „Ausführen“ geklickt habe. Danach sollte die entsprechende Variable definiert sein. Das Ganze habe ich mit allen vier Skripten durchgeführt, um Systemvariablen mit verschiedenen Typen anzulegen.

Wenn ihr euch dann nach der Durchführung der Skripte unter Startseite>Einstellungen>Systemvariable die erstellten Systemvariablen anschaut, erhaltet ihr die folgende Anzeige:

Hier seht ihr die vier verschiedenen Variablen und könnt sehen, das beim Typ Zahl das Protokollieren nicht aktiv ist.
Unter Startseite>Status und Bedienung>Systemvariable könnt ihr auch den Inhalt der Variablen sehen.
Im Systemprotokoll findet ihr natürlich nur die drei Variablen, für die das Protokollieren eingeschaltet ist.

Abschließend

Wie schon beschrieben habe ich die Skripte zum Anlegen der Systemvariablen über die WebUI Funktion „Skript testen“ ausgeführt. Genauso ist es natürlich möglich die Skripte über ein WebUI Programm ausführen zu lassen, wenn die Bedingungen dafür erfüllt sind, beispielsweise eine bestimmte Uhrzeit. Dieser Code zum Anlagen ist in zukünftigen Skripten, in denen Systemvariablen benötigt werden Bestandteil dieser Skripte. Als reines Skript zum Erstellen von Systemvariablen ist aus meiner Sicht ein Einbinden in eine WebUI Programm nicht erforderlich. Es sei denn ihr wollte dies bewusst von dem eigentlichen Skript zum Füllen der Systemvariablen trennen. Im nächsten Artikel zum Thema Code Schnipsel zeige ich euch, wie ihr in einem Skript Prüfen könnt, ob eine Systemvariable bereits existiert. Abhängig vom Ergebnis dieser Prüfung wird dann die Systemvariable entweder definiert und gefüllt, oder aber nur mit Werten gefüllt, wenn sie bereits existiert. Hört sich jetzt komplizierter an als es ist. Lasst euch überraschen und lest den nächsten Artikel.

Viel Spass beim Ausprobieren und wie gesagt, wenn ihr eigene Projekte habt, die ihr über Skripte realisiert habt, schreibt mir einfach eine Mail.

Das könnte Dich auch interessieren

DIY-Homematic LCD Statusdisplay – Script Programmierung
Aufrufe 1550
Sebastian hat euch in seinem Artikel "DIY-Homematic LCD Statusdisplay" ein sehr interessantes DIY-Projekt vorgestellt. Wenn ihr das LCD Statusdispla...
Raspberrymatic LAN Gateway funktioniert NUR mit dem „alten“ Funkmodu...
Aufrufe 1384
In der letzten Zeit häufen sich die Nachfragen, warum das mit dem Raspberry LAN-Gateway nicht funktioniert, wenn das neue Funk Modul RPI-RF-MOD verw...
Homematic – CCU2 als LAN Gateway verwenden
Aufrufe 2789
Wie viele von euch bin auch ich irgendwann mal von der CCU2 auf eine andere Plattform (Raspberry Pi und Asus Tinker Board) umgestiegen. Die Anzahl d...
NEUHEIT – Homematic IP Funk-Klingeltaster HmIP-DBB, ARR-Bausatz
Aufrufe 3844
Bereits am 25.07.2018 habe ich euch in dem Artikel "Vorschau - Neuigkeiten 09.2018" über diesen Aktor informiert. Nun ist er verfügbar und ich möchte...
Homematic IP Multitalent – HmIP FCI1 Kontakt-Schnittstellen – Unterputz
Aufrufe 1485
Mit den beiden angekündigten Kontakt-Schnittstellen HmIP-FCI1 bzw. HmIP-FCI6 kommen zwei wahre Multitalente auf den Markt. Damit wird es möglich, her...
Raspberrymatic – neue Firmware Version 3.41.11.20181126 verfügbar – ...
Aufrufe 1580
Wie in meinem Artikel zur RaspberryMatic Version 3.41.11.20181124 beschrieben gab es, abhängig von den eingesetzten Features bzw. Hardware (HomeMatic...
0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

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

Ich akzeptiere die Speicherung der Daten.