NEWS
Systemvariablen vom Homegear beschreiben und auslesen?
-
…damit es eine Systemvariableariable auf dem Homegear beschreiben kann? `
Was soll eine SV auf dem Homegear ? Meiner Meinung nach ist Homegear die Schnittstelle zwischen BidCos (HomeMatic-Geräte) und XML-RPC.@Perador:Habe ein Objekt im hm-rpc.0 hinzugefügt `
hm-rpc.0 ist die Schnittstelle zwischen XML-RPC (Homegear) und ioBroker-Objekten.Eine "SV" (virtueller Datenpunkt) legt man unter der Instanz an, unter der Programme (in ioBroker meist Javascript) auf den Datenpunkt zugreifen. Genau wie auf der CCU unter der ReGa muss der Wert eines virtuellen Datenpunktes durch ein Programm (JS) oder manuell (VIS oder Admin-Reiter "Zustände") gesetzt werden.
-
> Eine "SV" (virtueller Datenpunkt) legt man unter der Instanz an, unter der Programme (in ioBroker meist Javascript) auf den Datenpunkt zugreifen. Genau wie auf der CCU unter der ReGa muss der Wert eines virtuellen Datenpunktes durch ein Programm (JS) oder manuell (VIS oder Admin-Reiter "Zustände") gesetzt werden.
Irgendwie weiß ich nicht so recht wie du das meinst. Magst du mir vielleicht verraten wie das ganze dann konkret gemacht wird? Habe schon alles möglich ausprobiert, aber irgendwie funktioniert das nicht…..
Gruß
Jörg
-
Wenn ein virtueller Datenpunkt benötigt wird, braucht es immer ein Programm, das die Beziehung dieses DP zu physikalischen DP herstellt; bei ioBroker also eine Instanz des Javascript-Adapters (oder node-red, ScriptGUI, …). Unter der Javascript-Instanz kann im Reiter "Objekte" der virtuelle DP erzeugt werden, indem man die Instanz (javascript.0) selektiert, unter der der Datenpunkt erstellt werden soll und anschließend das "+" links oben anklickt.
Mit einem Javascript-Programm stellt man dann die logische / mathematische Beziehung zu physikalischen Datenpunkten her. -
Mit einem Javascript-Programm stellt man dann die logische / mathematische Beziehung zu physikalischen Datenpunkten her. `
Wie würde das dann im Bezug auf einer Homegear Systemvariable funktionieren?Unter den Menüpunkt "Typ" habe ich leider auch nur die Auswahl Zustand,Kanal und Gerät. Die Option "Datenpunkt" ist dabei leider nicht enthalten.
http://postimage.org/ ~~Da meine Systemvariablen des Homegears alles Strings sind gehe ich mal davon aus das ich als Type Zustand und als Datenpunkttyp Zeichenkette auswählen muss.
Jetzt wird automatisch folgendes Script erstellt:
http://postimage.org/ ~~Mir ist nicht ganz klar wie jetzt eine Variable beschrieben werden soll. Wenn ich beispielsweise über Vis mein Licht im Büro einschalten will muss ich als ID nur "hm-rpc.0.LEQ1014200.1.STATE" eintagen. Um eine Systemvariable zu beschreiben müsste doch jetzt als ID "system.adapter.javascript.0.TestVar" eingetragen werden und in dem entsprechenden Script muss dann sowas wie
"setValue hm-rpc.0.TestVar.1.STATE" stehen?~~~~
-
Unter den Menüpunkt "Typ" habe ich leider auch nur die Auswahl Zustand,Kanal und Gerät. Die Option "Datenpunkt" ist dabei leider nicht enthalten. `
Zustand = Datenpunkt. Sorry, habe ich bei mir in "Datenpunkt" geändert, da "State" (Zustand) in ioBroker etwas inflationär verwendet wird.
@Perador:Jetzt wird automatisch folgendes Script erstellt: `
Das ist kein Script, sondern ein Objekt (in JS Notation). Das Objekt sollte unter "javascript.0" und nicht unter "system.adapter.javascript.0" erstellt werden.
@Perador:Wenn ich beispielsweise über Vis mein Licht im Büro einschalten will muss ich als ID nur "hm-rpc.0.LEQ1014200.1.STATE" eintagen. `
Ja. Dieser Datenpunkt ist allerdings kein String, sondern vom Typ "Boolean" (Logikwert).
@Perador:Um eine Systemvariable zu beschreiben müsste doch jetzt als ID "system.adapter.javascript.0.TestVar" eingetragen werden `
Ja. Wenn damit ein- und ausgeschaltet werden soll, aber eine SV vom Typ "Logikwert".
@Perador:in dem entsprechenden Script muss dann sowas wie "setValue hm-rpc.0.TestVar.1.STATE" stehen? `
In einem zu erstellenden JS-Programm lautet dann der Befehl zum Einschalten der "SV" javascript.0.TestVarsetState("javascript.0.TestVar", true);
Bitte die https://github.com/ioBroker/ioBroker.javascript/blob/master/README.md lesen.
Soll das Licht geschaltet werden, wenn die "SV" schaltet, sieht das JS-Programm so aus:
on("javascript.0.TestVar", function(dp) { setState("hm-rpc.0.LEQ1014200.1.STATE", dp.newState.val); });
Das Programm macht nichts anderes, als dass bei einer Änderung des Wertes der "SV" javascript.0.TestVar der Wert der SV (true/false) an den Aktor-Datenpunkt "hm-rpc.0.LEQ1014200.1.STATE" übertragen wird.
-
Das ist kein Script, sondern ein Objekt (in JS Notation). Das Objekt sollte unter "javascript.0" und nicht unter "system.adapter.javascript.0" erstellt werden. `
javascript.0 gibt es in meiner Objekt-Liste leider nicht. Habe nur system.adapter.javascript.0 in der List.
Das Programm macht nichts anderes, als dass bei einer Änderung des Wertes der "SV" javascript.0.TestVar der Wert der SV (true/false) an den Aktor-Datenpunkt "hm-rpc.0.LEQ1014200.1.STATE" übertragen wird. `
Genau, ich möchte nur keinen Aktor steuern sonder den Zusand einer Systemvariable. Also z.B. Zustand "Hallo" in "tschüss".
In dem Beispiel ist beschrieben wie ein Aktor angesprochen wird (setState("hm-rpc.0.LEQ1014200.1.STATE", dp.newState.val). Wie schaut das ganze jetzt bei einer String Systemvariable, (welche keine Geräte ID besitzt) im Homegear aus? setState("hm-rpc.0.TestVar.1.Hallo", dp.newState.val ?
on("javascript.0.TestVar", function(dp) { setState("hm-rpc.0.LEQ1014200.1.STATE", dp.newState.val); });
Wenn ich die Variable TestVar mit "Hallo und tschüss" beschreibe bekomme ich die Änderung sofort im ioBroker unter Ereignisse mit der ID hm-rpc.0..TestVar angezeigt. Jetzt muss es doch möglich sein hm-rpc.0..TestVar auch von ioBroker aus zu beschreiben. Ich verstehe auch nicht ganz wieso in der Ereignisliste die ID so dargestellt wird "hm-rpc.0..TestVar" müsste dies nicht eigentlich so aussehen "hm-rpc.0.TestVar.Hallo und tschüss"
-
javascript.0 gibt es in meiner Objekt-Liste leider nicht. Habe nur system.adapter.javascript.0 in der List. `
Wenn der Javascript-Adapter installiert wurde und eine Javascript-Instanz aktiviert wurde, gibt es das Objekt "javascript.0".
@Perador:… keinen Aktor steuern sonder den Zusand einer Systemvariable. Also z.B. Zustand "Hallo" in "tschüss". `
Du meinst SV vom Typ "Logikwert" mit Zustandstexten "Hallo" und Tschüss" ?
Das ist ein Datenpunkt (Zustand) vom Typ "Schalter".
@Perador:Wie schaut das ganze jetzt bei einer String Systemvariable, (welche keine Geräte ID besitzt) im Homegear aus? `
Eine String-SV ist dafür ungeeignet (s.o.).
@Perador:Ich verstehe auch nicht ganz wieso in der Ereignisliste die ID so dargestellt wird "hm-rpc.0..TestVar" `
Das mit den 2 Punkten kann ich nicht nachvollziehen (s. Bilder). -
Du meinst SV vom Typ "Logikwert" mit Zustandstexten "Hallo" und Tschüss" ? `
Nein ich meine ein reinen String… "Das ist ein Text von mir": Beschrieben in der SPS
http://postimage.org/ ~~Und so kommt es im ioBroker an:
http://postimage.org/
Anders rum wäre es toll, wenn die Variable jetzt auch von ioBroker aus beschrieben werden könnte wie z.B, "Das ist jetzt wieder ein anderer Text".~~ -
Homegear und ioBroker sind zwei verschiedene Baustellen. Als Schnittstelle zwischen Homegear und ioBroker-Objekten dient der hm-rpc-Adapter, der aus den XML-RPC-Parametern von Homegear Datenpunkte (ioBroker-Objekte) macht (und umgekehrt).
Homegear kennt keine ioBroker-Objekte und folglich auch keine virtuellen Datenpunkte ("SV") !!
EDIT: In der https://www.homegear.eu/index.php/XML_RPC_Method_Reference#System_variable_functions existiert keine Beschreibung zu möglichen SV-Funktionen.
-
Ok, verstehe. Vielen dank aber für die ausdauernd nette Hilfe
Ich hätte gedacht ich könnte den Homegear auch als Schnittstelle zwischen meiner SPS-Steuerung und ioBroker (vis) missbrauchen ähnlich wie das auch mit Rega und der CCU funktioniert hat. Im Prinzip möchte ioBroker (vis) nur für die Visualisierung nutzen, da der VIS Adapter genau wie das ehemalige Dashui eine wirklich gelungene Sache ist. Die ganze logische Programmierung von jeglichen Abläufen und Kommunikation mit den Geräten soll die SPS übernehmen. Daher bräuchte ich eigentlich nur ein gemeinsamen Zugriff auf Variablen zwischen meiner SPS und ioBroker.
Eine Möglichkeit das zu Realisieren wäre vielleicht noch eine SQL Datenbank. Da ich mit meiner SPS via PHP Scripts die Möglichkeit hätte auf einer MSSQL Datenbank zuzugreifen. Somit könnte man Variablen in der Datenbank von der SPS aus abrufen und neu beschreiben. Wäre dies evtl. auch von IoBroker aus möglich?