Homegear Systemvariablen

Hallo,
Verwende Homegear und Openhab um die bestehende CCU1 abzuschaffen.
Im Moment werden in der CCU noch Stromzähler und Wasserverbrauch als Systemvariablen gespeichert.
Auch Stati wie Alarm: scharf werden in einer Systemvariablen gespeichert.

Konnte im Wiki nichts finden:
Welches ist die beste Möglichkeit, diese Werte zu speichern? Auch so, dass sie nach einem Stromausfall noch vorhanden sind?
Kann man in Homegear Systemvariablen anlegen (wie?)?
Oder muss das in Openhab (Number Wert?)

Danke für Hilfe
wbuh

Du kannst hg_set_system(“MyVar”, 127.5) zum Setzen verwenden und hg_get_system(“MyVar”) zum Auslesen der Variable. Das ist netzausfallsicher, also nach einem Neustart ist der letzte Wert noch vorhanden. Siehe auch: https://www.homegear.eu/index.php/Homegear_Reference#Homegear_0.5
Es ist darauf zu achten, dass die aktuellen Versionen (0.6) eine Exception vom Typ HomegearException werfen, wenn die Variable in hg_get_system( ) nicht existiert.

Hallo DasKleingerdruckte,

legt hg_set_system die Variable auch an?
Wie lege ich String, Integer, Dezimalvariablen an?

Ja, natürlich werden sie auch angelegt. Wieder Löschen kannst Du sie bei Bedarf zB mit hg_invoke(‘deleteSystemVariable’, ‘MyVar’)
Die Typbestimmung erfolgt automatisch anhand des übergebenen Datentyps. Wenn Du gezielt einen Datentyp verwenden willst, macht es Sinn, diesen explizit zu übergeben. Also zB hg_set_value(‘MyVer’, floatval($MyValue)), um einen boolschen Wert zu setzen. Wenn $MyValue === 12.7 ist, wird es wohl auch so funktionieren, bei 12.0 wird aber vermutlich ein INT Wert gesetzt. Das liegt aber weniger an homegear, als an PHP selbst.

Hallo,

Da wird auch ein Float-Wert gesetzt. In der aktuellen Version sollten aber Typen auch von Homegear automatisch konvertiert werden (habs allerdings noch nicht intensiv getestet).

Zur Sicherheit kann das hier beschriebene Type-casting verwendet werden: php.net/manual/de/language.types … ggling.php

Das ist vermutlich die einfachste Lösung, wenn der Datentyp einer Variablen unklar ist.

Also wenn z. B. ein Float gebraucht wird:

Liebe Grüße

Sathya

Hallo,

wie kann man sich im Homegear alle vorhanden Systemvariablen anzeigen lassen?

Grüße

Jörg

Hallo Jörg,

das geht aktuell nur über RPC und zwar mit der Funktion “getAllSystemVariables” (ohne Parameter).

Also in 0.6 als PHP-Skript (z. B. “/var/lib/homegear/scripts/SV.php”):

<?php
$hg = new \Homegear\Homegear();
print_r($hg->getAllSystemVariables());
?>

Ausführen mit:

Viele Grüße

Sathya

Oh danke für die ausführliche Beschreibung.

Hat Prima geklappt :wink: