Ausführliches HowTo für einen ersten einfachen Flow

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

Moderator: Co-Administratoren

Hypnos
Beiträge: 270
Registriert: 06.01.2018, 12:48
Hat sich bedankt: 19 Mal
Danksagung erhalten: 3 Mal

Re: Ausführliches HowTo für einen ersten einfachen Flow

Beitrag von Hypnos » 24.01.2019, 21:57

spiegelmarkus hat geschrieben:
24.01.2019, 20:32
Hypnos hat geschrieben:
24.01.2019, 13:22
Dafür braucht man keine Function Node. Das geht auch mit Change und Switch Nodes.
Dies setzt aber voraus, dass ich den aktuellen Status (An/Aus) kenne. Ich wüsste auf Anhieb nicht, wie ich den Status von der Lampe abfragen kann.
Wenn man ein Gerät schaltet, was nicht den aktuellen Status ausgiebt, ist das theoretisch schon richtig.

Praktisch geht es auch, sofern man die Lampe aber durch keinen anderen Weg schaltet, kann man einfach den letzten Schaltstatus merken und davon abhängig schalten. Damit stimmt der Status spätestens nach dem ersten Schalten.

Mal ein Beispiel:
2019-01-24_21h55_00.png

Code: Alles auswählen

[{"id":"3e125210.2b6f1e","type":"inject","z":"80f1f74f.3896a8","name":"ein Button","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":180,"wires":[["8da5285f.88cb48"]]},{"id":"8da5285f.88cb48","type":"switch","z":"80f1f74f.3896a8","name":"","property":"lampenStatus","propertyType":"flow","rules":[{"t":"false"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":340,"y":180,"wires":[["b1f2d404.d9fc78"],["1b3f604f.b5c4c"]]},{"id":"b1f2d404.d9fc78","type":"change","z":"80f1f74f.3896a8","name":"true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":170,"wires":[["a8c03204.72e62"]]},{"id":"1b3f604f.b5c4c","type":"change","z":"80f1f74f.3896a8","name":"false","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":220,"wires":[["a8c03204.72e62"]]},{"id":"a8c03204.72e62","type":"change","z":"80f1f74f.3896a8","name":"","rules":[{"t":"set","p":"lampenStatus","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":720,"y":190,"wires":[["2db2bb3d.6dae84"]]},{"id":"2db2bb3d.6dae84","type":"debug","z":"80f1f74f.3896a8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":940,"y":190,"wires":[]}]
Anstelle des Inject und des Debug Node nimmt man dann halt die entsprechende Nodes für Taster/Lampe (z.B. CCU value).

Das speichert den letzten Status und schaltet davon abhängig.
Wenn man die Lampe zwischendurch anders geschalten hat, muss man den Taster halt maximal 2-mal drücken und dann stimmt es wieder. Wenn man damit leben kann, kann man es so auch machen.

Wenn man hingegen den Aktuellen Status geliefert bekommt, geht es einfacher:
Bild 920.png
Bild 920.png (16.15 KiB) 2105 mal betrachtet

Code: Alles auswählen

[{"id":"a41ff615.47d898","type":"inject","z":"57a37a0d.6fcd54","name":"ein Button","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":320,"wires":[["550caa5b.760694"]]},{"id":"550caa5b.760694","type":"switch","z":"57a37a0d.6fcd54","name":"","property":"lampenStatus","propertyType":"flow","rules":[{"t":"false"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":340,"y":320,"wires":[["94e370cc.4bc4c"],["49e49910.cc6208"]]},{"id":"94e370cc.4bc4c","type":"change","z":"57a37a0d.6fcd54","name":"true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":300,"wires":[["5657830e.98156c"]]},{"id":"49e49910.cc6208","type":"change","z":"57a37a0d.6fcd54","name":"false","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":340,"wires":[["5657830e.98156c"]]},{"id":"5c9f1b2.9723fe4","type":"change","z":"57a37a0d.6fcd54","name":"","rules":[{"t":"set","p":"lampenStatus","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":320,"wires":[["13ee88c0.739d87"]]},{"id":"13ee88c0.739d87","type":"debug","z":"57a37a0d.6fcd54","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1120,"y":320,"wires":[]},{"id":"5657830e.98156c","type":"ccu-value","z":"57a37a0d.6fcd54","name":"","iface":"","channel":"","datapoint":"","mode":"","start":true,"change":true,"cache":false,"on":"","onType":"undefined","ramp":"","rampType":"undefined","working":false,"ccuConfig":"localhost","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":670,"y":320,"wires":[["5c9f1b2.9723fe4"]]}]
Hier muss man anstelle der value Node dann die entsprechende Node nehmen. Der letzte Schalt-Status wird hier dann von dem Ausgang genommen und das Betätigen des Tasters ist damit auch dann richtig, wenn man die Lampe von woanders schaltet.

Gruß
Zuletzt geändert von Hypnos am 25.01.2019, 10:54, insgesamt 3-mal geändert.

Heinz71
Beiträge: 19
Registriert: 18.11.2012, 14:40

Re: Ausführliches HowTo für einen ersten einfachen Flow

Beitrag von Heinz71 » 24.01.2019, 22:31

Vielen Dank,
Habs gerade importiert und musste nur den change node „false“ ändern, der schaltete auch „true“.
Das funktioniert erstmal, auch sehr schnell.
Unschön ist es halt mit dem zweimal drücken, wenn mal wieder mit Siri oder sonstigem geschaltet wurde.
Besuch ist es halt ein bisschen schwer zu erklären, dass man eventuell zweimal drücken muss.
Schönen Abend
Heinz

d3h56r
Beiträge: 158
Registriert: 29.10.2017, 10:23

Re: Ausführliches HowTo für einen ersten einfachen Flow

Beitrag von d3h56r » 25.01.2019, 07:26

Hey,

Deine Lampe hat doch auch einen Output, oder nicht? Den könntest Du doch wieder mit dem Input Deines Tasters verbinden. Dann musst Du im ersten Switch noch zwischen den beiden Inputs unterscheiden (bzw. eine Puffervariable beschreiben) und schon sollte sich auch das Doppel-Drück-Problem lösen, da sich der Lampenstatus ja auch ändern sollte, wenn Du anders als über den Flow schaltest.
166 Kanäle in 50 Geräten:
1x HM-LC-Sw1-FM, 9x HM-CC-RT-DN, 1x HM-OU-LED16, 2x HM-LC-Sw1-Pl-DN-R1, 15x HM-Sec-SCo, 1x HM-Sec-TiS, 1x HM-LC-Sw1-Pl-CT-R1, 5x HM-LC-Bl1PBU-FM, 1x HM-LC-Sw1PBU-FM, 11x HM-RC-2-PBU-FM, 1x HM-WDS100-C6-O, 1x HmIP-RCV-50, 1x HM-LC-Sw2-FM

Hypnos
Beiträge: 270
Registriert: 06.01.2018, 12:48
Hat sich bedankt: 19 Mal
Danksagung erhalten: 3 Mal

Re: Ausführliches HowTo für einen ersten einfachen Flow

Beitrag von Hypnos » 25.01.2019, 10:53

Heinz71 hat geschrieben:
24.01.2019, 22:31
Habs gerade importiert und musste nur den change node „false“ ändern, der schaltete auch „true“.
Danke, hab ich oben korrigiert.
d3h56r hat geschrieben:
25.01.2019, 07:26
Deine Lampe hat doch auch einen Output, oder nicht? Den könntest Du doch wieder mit dem Input Deines Tasters verbinden.
Bin davon ausgegangen das es keinen Output hat. (Kenne die Hue Nodes nicht.) Ich hab den Post oben ebenfalls mit einem Beispiel erweitert mit der Möglichkeit, wenn man eine Node hat, welche den aktuellen Status liefert. Damit geht das einfacher und die Probleme mit dem 2-mal schalten entfallen.

Heinz71
Beiträge: 19
Registriert: 18.11.2012, 14:40

Re: Ausführliches HowTo für einen ersten einfachen Flow

Beitrag von Heinz71 » 25.01.2019, 20:36

N'abend,
habs mal wieder getestet, aber Hue ist zickig.
Kommt folgendes:

Error: Philips Hue: 201, parameter, ct, is not modifiable. Device is set to off.

Aber naja, ist Hobby, probiere ich halt weiter, ob ich das hinbekomme.

Heinz71
Beiträge: 19
Registriert: 18.11.2012, 14:40

Re: Ausführliches HowTo für einen ersten einfachen Flow

Beitrag von Heinz71 » 26.01.2019, 22:18

Hi,
ich noch mal. Habe erstmal eine Lösung gefunden. Vielleicht nicht die eleganteste, aber hat erste Tests überstanden.
test.JPG

Code: Alles auswählen

[{"id":"38455fd4.4b273","type":"tab","label":"Test","disabled":false,"info":""},{"id":"53a350d9.eb789","type":"ccu-value","z":"38455fd4.4b273","name":"","iface":"BidCos-RF","channel":"KEQ0180572:6 HM-PB-6-WM55 KEQ0180572:6","datapoint":"PRESS_SHORT","mode":"","start":true,"change":true,"cache":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":210,"y":100,"wires":[["deb41ff5.566d7"]]},{"id":"deb41ff5.566d7","type":"http request","z":"38455fd4.4b273","name":"","method":"GET","ret":"txt","url":"http://192.168.178.6/api/newdeveloper/lights/14","tls":"","x":310,"y":240,"wires":[["b0626345.16e33","5c44b783.08faa8"]]},{"id":"35acffbe.37bb6","type":"hue-light","z":"38455fd4.4b273","name":"Esszimmertür","bridge":"52d2f409.3bd44c","lightid":"14","colornamer":true,"x":860,"y":240,"wires":[[]]},{"id":"aa1cdb81.3c6d8","type":"inject","z":"38455fd4.4b273","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":240,"wires":[["deb41ff5.566d7"]]},{"id":"5c44b783.08faa8","type":"debug","z":"38455fd4.4b273","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":890,"y":120,"wires":[]},{"id":"b0626345.16e33","type":"switch","z":"38455fd4.4b273","name":"","property":"payload","propertyType":"msg","rules":[{"t":"regex","v":"true","vt":"str","case":false},{"t":"regex","v":"false","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":2,"x":520,"y":240,"wires":[["48304430.49727c"],["27449158.ac40ae"]]},{"id":"48304430.49727c","type":"change","z":"38455fd4.4b273","name":"false","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":200,"wires":[["35acffbe.37bb6"]]},{"id":"27449158.ac40ae","type":"change","z":"38455fd4.4b273","name":"true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":260,"wires":[["35acffbe.37bb6"]]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"},{"id":"52d2f409.3bd44c","type":"hue-bridge","z":"","name":"Philips hue","bridge":"192.168.178.6","key":"zK0MK2IaPhUBQK5ImOC3jrWAqFLnavjpErQrNrmQ","interval":"3000"}]
Schönen Abend
Heinz

Bastelgeselle
Beiträge: 14
Registriert: 11.12.2018, 18:45
Wohnort: St.Gallen

Re: Ausführliches HowTo für einen ersten mqtt Flow

Beitrag von Bastelgeselle » 04.04.2019, 17:25

Hypnos hat geschrieben:
01.11.2018, 14:06
Wenn noch Wünsche/Ideen für andere einfache Beispiele da sind, einfach melden. Dann werde ich versuchen das im Wiki aufzuschreiben.
edit 01.05.2019 => präzisiert
Ausgangslage:
RedMatic und Mosquitto auf Raspberymatic laufen, SonOff mit Tasmota geflasht.
Ziel:
Sonoff ist schaltbar (Pocketcontrol / Alexa via Cloudmatic),
Aktueller Status des SonOff ist sichtbar (in Homematic / Pocketcontrol),
unabhängig, ob direkt am SonOff die Taste gedrückt wird,
oder am virtuellen Taster oder physischem (HmIP-) Taster.
Problem:
Als Anfänger finde ich nur virtuelle Taster (short/long) und keinen Switch mit sichtbarem Status
Auch das einschleifen einer Systemvariable (die den Status enthält) fällt mir schwer.
Das Beispiel mit dem "Lampenflow" im Switch funktioniert nur, wenn nicht am SonOff direkt geschaltet wird.

Christian
CCU Charlie - Raspberrymatic - Firmware 3.47.15.20190831
HMIP-Sensoren: SMO / SMI / SMI55 / SWDO / SWDO-I / SRH / SWDM / SWD / STHD / STHO
HMIP-Aktoren: BDT / BSM / BSL / eTRV-B / PSM / RC8
HM-SEC-SD / HM-CC-RT-DN
RedMatic 4.7.1

Antworten

Zurück zu „RedMatic“