HM Switch Node on change

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
sanmar
Beiträge: 142
Registriert: 29.01.2018, 11:22
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

HM Switch Node on change

Beitrag von sanmar » 20.04.2019, 18:35

Hallo,

ist es möglich die SwitchNode, auszuführen bei Änderung des States? Via Inject, würde das klappen, ich hätte jedoch gern sobald der State wechselt.

Ist der Switch ggfl. die falsche Node? Wie würde das alternativ aussehen ?

Code: Alles auswählen

[{"id":"82b38081.f515d","type":"ccu-switch","z":"86bfc13c.62e37","name":"Büro Fenster offen","ccuConfig":"38263145.35ea0e","iface":"BidCos-Wired","channel":"OEQ0863367:2 Fenster Büro Unten","sysvar":"Alarmmeldungen","sysvarProperty":"value","datapoint":"SENSOR","datapointProperty":"value","property":"payload","propertyType":"msg","rules":[{"t":"false"},{"t":"true"}],"checkall":"false","repair":false,"outputs":2,"x":1030,"y":940,"wires":[["618b8746.18c1b8"],["98560efc.f1d2f"]]},{"id":"d5c363a6.fe2","type":"ccu-switch","z":"86bfc13c.62e37","name":"Büro Fenster gekippt","ccuConfig":"38263145.35ea0e","iface":"BidCos-Wired","channel":"OEQ0863367:3 Fenster Büro Oben","sysvar":"Alarmmeldungen","sysvarProperty":"value","datapoint":"SENSOR","datapointProperty":"value","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"false","repair":false,"outputs":1,"x":820,"y":940,"wires":[["82b38081.f515d"]]},{"id":"c5d75128.99532","type":"debug","z":"86bfc13c.62e37","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1410,"y":940,"wires":[]},{"id":"836f19e5.8883b8","type":"inject","z":"86bfc13c.62e37","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":640,"y":1060,"wires":[["d5c363a6.fe2"]]},{"id":"618b8746.18c1b8","type":"change","z":"86bfc13c.62e37","name":"Zustand gekippt","rules":[{"t":"set","p":"payload","pt":"msg","to":"Fenster gekippt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1220,"y":900,"wires":[["c5d75128.99532"]]},{"id":"98560efc.f1d2f","type":"change","z":"86bfc13c.62e37","name":"Zustand offen","rules":[{"t":"set","p":"payload","pt":"msg","to":"Fenster offen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1220,"y":980,"wires":[["c5d75128.99532"]]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":true,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048","queueTimeout":"5000","queuePause":"250","contextStore":""}]

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: HM Switch Node on change

Beitrag von hobbyquaker » 20.04.2019, 19:36

Nimmst ein "RPC Event" Node, dahinter kannst mit einem "normalen" (nicht "ccu") Switch Node true/false auftrennen.

sanmar
Beiträge: 142
Registriert: 29.01.2018, 11:22
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: HM Switch Node on change

Beitrag von sanmar » 24.04.2019, 23:50

fenster.PNG
Mit dem RPC klappt das nicht so ganz zumidnest nciht wenn ich beide Kontakte auf einmal selektiert habe.

ich habe es wie oben gelöst. mich würde interessieren ob es eben perfomanter und besser geht.
da ich diesen Code ja für jedes Fenster und Türe kopieren müsste.

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: HM Switch Node on change

Beitrag von Hypnos » 25.04.2019, 12:33

Ich würde es mit einem ccu-value node und dahinter einen normalen switch node lösen:
2019-04-25_12h04_002.png
2019-04-25_12h04_002.png (5.53 KiB) 2193 mal betrachtet

sanmar
Beiträge: 142
Registriert: 29.01.2018, 11:22
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: HM Switch Node on change

Beitrag von sanmar » 25.04.2019, 16:58

Wie? Ich habe 2 Sensoren. Die sind wired.
Am Fenster oben und unten, via Schliesserkontakte.

wenn ich da das fenster öffne kommt 2 mal kurz hintereinander ein true.
deshalb prüfe ich beim kippen ob auch der untere sensor true ist, d.h. das fenster ist offen.

Aber im Grunde ist alles irgendwie "doppelt" da ja beide Sensoren ein bool senden.

Kann man das den irgendwie vereinheitlichen/kombinieren ?

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: HM Switch Node on change

Beitrag von Hypnos » 26.04.2019, 14:30

Meine Antwort war falsch.

Zu "Mit dem RPC klappt das nicht so ganz zumindest nicht wenn ich beide Kontakte auf einmal selektiert habe. "

Mit den RPC event nodes kommt so ein Konstrukt auf das selbe raus, das ist aber auch nicht einfacher:
2019-04-26_14h04_001.png
2019-04-26_14h04_001.png (18.55 KiB) 2138 mal betrachtet
2019-04-26_14h04_002.png
2019-04-26_14h04_002.png (2.07 KiB) 2138 mal betrachtet
Hier wird der event Node rein zum triggern genutzt, wenn einer der beiden Kontakte ein Event absendet.

Eine richtig schöne Idee wie man sowas vereinfachen kann habe ich leider nicht.

Am Ende bleibt noch eine function node zu nehmen und das mit Javascript zu erschlagen. Das macht das aber leider nicht transparent.

sanmar
Beiträge: 142
Registriert: 29.01.2018, 11:22
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: HM Switch Node on change

Beitrag von sanmar » 26.04.2019, 20:51

Ja so sehe ich das auch, in etwa wie bei dir habe ich das auch. Habe auch eine alternative mit JavascriptNode.

Sind ja nun einige Fenster/Türen, da müsste ich ja jeden Flow kopieren.

Ich frage mich einfach was perfomanter ist, die CCU State Nodes oder evtl doch ein JavascriptNode.

Natürlich auch evtl mit einem RPC Event alle Kontakte auf einmal und dann ein FLow , oder eben copy&paste für jedes Fenster...

Ich würd es gern von Anfang an richtig machen, nicht das ich später mal Probleme bekomme ;-)

sanmar
Beiträge: 142
Registriert: 29.01.2018, 11:22
Hat sich bedankt: 6 Mal
Danksagung erhalten: 2 Mal

Re: HM Switch Node on change

Beitrag von sanmar » 27.04.2019, 14:07

Okay, hab es nun gelöst mit javascript. Ich würde sagen in dem Fall der beste und vermutlich auch übersichtlichste weg.

Ich nehme nun ALLE Reedkontakte pack die zu einem Array (uid,room,channelName) und dann wird das ganze im javascript:

- neu geordnet
- typ bestimmt, ob fenster, tür oder eingangstür
- zustand bestimmt, ob gekippt oder offen
- icons class hinzugefügt
- sortiert

und via template ausgegeben.

Da wir noch in der Hausumbauphase sind, werden weitere Fenster und Türen folgen, somit muss ich nicht ständig den Flow anpassen bzw kopieren.
forum1.PNG
forum1.PNG
Gruss
Dateianhänge
forum2.PNG
forum2.PNG (15.06 KiB) 2088 mal betrachtet

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: HM Switch Node on change

Beitrag von Hypnos » 27.04.2019, 18:25

sanmar hat geschrieben:
26.04.2019, 20:51
Ich frage mich einfach was perfomanter ist, die CCU State Nodes oder evtl doch ein JavascriptNode.
Die "normalen Nodes" switch und change sollen bedeutend performanter sein als die function Node, weil hier der javascript code in einer Art sandbox läuft. (Gab dazu in Node-Red Forum mal eine Diskussion)

Alternativ kannst du die node-red-contrib-unsafe-function node anstelle der function node nehmen. Damit soll der eigene javascript code dann wiederum noch Performanter als die standard nodes sein.

Angeblich soll man dort aber bei einem Fehler Node-Red auch runterziehen können. - Ich selbst nutze die unsafe function node ausgiebig und kann mich nicht erinnern damit bei einem Fehler im code Node-Red zum Absturz gebracht zu haben (ich muss aber sagen das ich ein Fan von Errorhandler bin und damit komplexere Sachen sehr gerne mit try-catch umfasse).

Antworten

Zurück zu „RedMatic“