CCU Datenpunkte in Systemvariablen speichern

Wenn man sich in einer CCU unter Geräte die verfügbaren Kanäle und deren Werte anschaut stellt man nach einiger Zeit fest, dass dort nicht alle Werte, die ein Kanal zur Verfügung stellt angezeigt werden oder abgefragt werden können. In der Objektsprache der CCU-Objekte redet man dabei von Datenpunkten.

Aufgabenstellung

Um den Batterieladezustand eines Fensterkontaktes prüfen zu können benötige ich den Spannungswert der Batterie. Wer diesen aktuellen Ladezustand der Batterie eines Fensterkontaktes abfragen möchte findet in der CCU unter Status/Geräte hierzu gar nichts und unter Einstellungen / Geräte zum dem Fensterkontakt nur eine "Low-Bat.-Schwelle", ab der eine Servicemeldung generiert werden soll.

Ich möchte  als erstes feststellen, ob es einen Wert wie Batteriespannung für einen Fensterkontakt überhaupt gibt und wenn ja, möchte ich diesen für eine weitere Verwendung verfügbar machen.

XML-API nutzen, um Datenpunkte zu entdecken

Wenn Ihr nicht Software wie openHAB, IP-Symcon oder ioBroker benutzt, in denene alle Datenpunkte zu einem Kanal angezeigt werden, gibt es eine hilfreiche kleine Zusatz-API, die auf die CCU geladen werden kann. Mit dieser Software lassen sich alle internen Objekte und deren Details transparent machen.

Installiert hierzu die Software XML-API und ruft diese über "Einstellen" im Menüpunkt "CCU-Zusatzsoftware" auf.

Über den Link statelist.cgi kann nun die komplette Liste aller verfügbaren Geräte, deren Kanäle und Datenpunkte sowie der dazugehörigen Adressen abgerufen werden. Sucht dazu einfach in eurem Explorer nach dem Namen eures Gerätes und schaut Euch anschließend die nächsten Zeilen an, die so ähnlich wie in dem folgenden Beispiel aussehem sollten:

Copy to Clipboard

Zuerst folgt der Geräte (Device) Name. Anschließend wird der erste Kanal und dann die darin enthaltenen Datenpunkte aufgeführt, anschließend folgen alle weiteren Kanäle.

Und in Kanal 0 gibt es tatsächlich einen Datenpunkt "OPERATING_VOLTAGE", der die Batteriespannung wiedergibt und in der CCU3 so nicht angezeigt wird.

Systemvariable erzeugen

Um mit diesem Datenpunkt arbeiten zu können ist der einfachste Weg, eine Systemvariable zu erzeugen und den Wert dieses Datenpunktes in dieser Systemvariablen abzulegen.

Ich lege daher eine neue Systemvariable vom Typ Integer (die Spannung muss ein Zahlenwert sein) unter Einstellungen /Systemvaraiblen an. Meine Variable nenne ich SWDMZAVOLTAGE.

Anschließend  legen wir über ein kleines Programm fest, zu welchem Zeitpunkt der Wert dieses Datenpunktes in diese Systemvariable gespeichert wird.

Programm erstellen

Dazu erzeugen wir unter Programme ein neues Programm. Ich definiere in diesem Fall, dass die Systemvariable ein Mal am Tag um 7:00 Uhr morgens mit dem aktuellen Wert aus dem Datenpunkt durch ein Script überschrieben wird.

Nun kann das folgende kleine Programm erstellt werden:

Copy to Clipboard

Da mir der zuletzt gespeicherte Wert Batterieladezustand des Fensterkontaktes in der CCU3 ausreicht, frage ich nur diesen über die Eigenschaft .Value() ab. Alternativ könnte ich auch den Fensterkontakt direkt fragen, indem ich die Funktion .Status() aufrufe. In diesem Fall würde erst eine RÜcm´kmeldung vom Fensterkontakt den Wert liefern, wobei dabei wieder Funklast erzeugt würde.

Damit habe ich die Aufgabenstellung gelöst und kann nun mit der Systemveriablen beispielsweise den aktuellen Ladezustand des Gerätes ausgeben.