Skip to content
This repository has been archived by the owner on Nov 22, 2023. It is now read-only.

Auslesen eines Status #14

Open
resper opened this issue Mar 28, 2018 · 3 comments
Open

Auslesen eines Status #14

resper opened this issue Mar 28, 2018 · 3 comments

Comments

@resper
Copy link

resper commented Mar 28, 2018

Hallo,
dies ist mein erstes arbeiten mit Node-Red. Bei meinem aktuellen Flow, funktioniert alles soweit. Ein Dashboard Switch schaltet eine Aktor ein und aus.

Um zu überprüfen ob der Aktor manuell betätigt wurde, habe ich jetzt einen relativ komplizierten weg gewählt. Geht dieses evtl einfacher?

Inject (Interval 1 Second) -> Homematic node (getValue) STATE -> http request -> Funktion zum Auslesen des Status Ergbniss an -> Switch (übernimmt Ergebniss von Prüfung) -> Homematic node (setValue) -> http request

Bei diesem Prinzip fragt er jede Sekunde nach dem Status bei der CCU, aber sendet ihn auch gleichzeitig erneut. Ist ein bischen viel Datenverkehr oder?

[{"id":"2a6da219.7a529e","type":"homematic","z":"fec71670.e31df8","ccu":"e53b2470.99bcf8","device":"8ddf0d60.2efdd","function":"setValue","attribute":"STATE","value":"{{msg.payload}}","nodeName":"Licht Arbeitszimmer An","x":1150,"y":40,"wires":[["91a1de8c.d67cb"]]},{"id":"91a1de8c.d67cb","type":"http request","z":"fec71670.e31df8","name":"","method":"use","ret":"txt","url":"","tls":"","x":1350,"y":40,"wires":[["d202787c.8e4ca8"]]},{"id":"d202787c.8e4ca8","type":"debug","z":"fec71670.e31df8","name":"Debug","active":false,"console":"false","complete":"true","x":1490,"y":40,"wires":[]},{"id":"7a354974.cb1fb8","type":"ui_switch","z":"fec71670.e31df8","name":"Arbeitszimmer Lichtschalter","label":"Arbeitszimmer Lichtschalter","group":"d13961ea.cf288","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"1","onvalueType":"str","onicon":"","oncolor":"","offvalue":"0","offvalueType":"str","officon":"","offcolor":"","x":900,"y":40,"wires":[["2a6da219.7a529e"]]},{"id":"66497081.7f46f","type":"inject","z":"fec71670.e31df8","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"1","crontab":"","once":false,"x":90,"y":40,"wires":[["61b5d1ea.1fad6"]]},{"id":"61b5d1ea.1fad6","type":"homematic","z":"fec71670.e31df8","ccu":"e53b2470.99bcf8","device":"8ddf0d60.2efdd","function":"getValue","attribute":"STATE","value":"","nodeName":"Licht Arbeitszimmer Abfrage","x":280,"y":40,"wires":[["535e4f2c.2d346"]]},{"id":"535e4f2c.2d346","type":"http request","z":"fec71670.e31df8","name":"","method":"use","ret":"txt","url":"","tls":"","x":490,"y":40,"wires":[["8e79575.f4254a8"]]},{"id":"8e79575.f4254a8","type":"function","z":"fec71670.e31df8","name":"Prüfung AN / AUS","func":"if( msg.payload.indexOf('true') >= 0){\n msg.payload = \"1\";\n}else{\n msg.payload = \"0\";\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":670,"y":40,"wires":[["7a354974.cb1fb8"]]},{"id":"e53b2470.99bcf8","type":"ccu-address","z":"fec71670.e31df8","host":"192.168.178.20","interfaceName":"BidCos-RF.","name":"CCU2 Funk"},{"id":"8ddf0d60.2efdd","type":"homematic-device","z":"fec71670.e31df8","channel":"OEQ0358189:1","name":"Licht Arbeitszimmer"},{"id":"d13961ea.cf288","type":"ui_group","z":"fec71670.e31df8","name":"Name New UI Group","tab":"64d36ba6.f9e264","disp":true,"width":"6","collapse":false},{"id":"64d36ba6.f9e264","type":"ui_tab","z":"fec71670.e31df8","name":"Name New UI TAB","icon":"dashboard"}]

@firsttris
Copy link
Owner

Hallo,

also ich habe das selbst noch nicht gemacht aber - habe mal gelesen man kann sich mit init(String url, String interface_id) als consumer in der ccu registrieren und bekommt dann alle events gepushed.

XML-RPC Doku: http:https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HM_XmlRpc_API.pdf

@firsttris
Copy link
Owner

d.h. du könntest auf eine bestimmtes Event reagieren anstatt mit setInterval() zu arbeiten.

@resper
Copy link
Author

resper commented Mar 29, 2018

Um Ereignisbenachrichtigungen zu erhalten, kann sich eine Logikschicht bei den
Schnittstellenprozessen anmelden. Dies geschieht über die Methode init. In diesem Fall muss
die Logikschicht selbst einen XML-RPC-Server und diverse Methoden bereitstellen (siehe
Abschitt 4: Methoden der Logikschicht). Des Weiteren muss der von der Logikschicht
bereitgestellte XML-RPC-Server die Standardmethode system.multicall unterstützen.

@resper resper closed this as completed Mar 29, 2018
@resper resper reopened this Mar 29, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants