rdmtc / RedMatic-HomeKit

HAP-Nodejs based Node-RED nodes to create (bridged) HomeKit Accessories
Apache License 2.0
61 stars 22 forks source link

Gerätestatus bei SecuritySystem #254

Open ghost opened 4 years ago

ghost commented 4 years ago

Hallo!

Ich habe das Problem, dass mein redmatic-homekit universal-node (SecuritySystem) ständig den Status "Aktivieren" zeigt. Außer beim Zustand "Zuhause". Dieser Zustand wird in HomeKit aktiviert.

Die Einstellungen „Abwesend“ „Nacht“ und „Aus“ stehen unbegrenzt auf „aktivieren“.

Welchen Input benötigt das SecuritySystem?

peissl-at commented 4 years ago

Hallo,

ich habe es so gelöst und es funktioniert...

Sonnige Grüße! Robert

Bildschirmfoto 2020-01-29 um 19 39 04 Bildschirmfoto 2020-01-29 um 19 39 32
klingbing commented 4 years ago

Hallo,

ich habe es so gelöst und es funktioniert...

Sonnige Grüße! Robert

Bildschirmfoto 2020-01-29 um 19 39 04 Bildschirmfoto 2020-01-29 um 19 39 32

Hallo Robert, das hört sich SEHR interessant an! Würdest du vielleicht etwas näher (und für einen Rookie nachbaubar) beschreiben, wie du das umgesetzt hast? Wenn es hier den Rahmen sprengt dann gern drüben im Homematic Forum...

peissl-at commented 4 years ago

Hallo klingbing,

hier der fertige Flow (du musst nur CCU/Alarmvariable und Homekit anpassen)...

[{"id":"97175847.61672","type":"ccu-sysvar","z":"1b7a5ce0.36e2d3","name":"Alarmzentrale","ccuConfig":"4c6a22ab.135824","topic":"ReGaHSS/${Name}","change":true,"cache":false,"x":130,"y":225,"wires":[["ab4d8ff0.1025a8"]],"outputLabels":["Werteliste aus Systemvariable"]},{"id":"ab4d8ff0.1025a8","type":"switch","z":"1b7a5ce0.36e2d3","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":175,"y":325,"wires":[["f34f5e58.f53e","91710b06.db30d8"],["929d05d5.6512e8","335e5f64.c0e1d"],["a4d05587.4c07e8","31758c80.b9997c","b4377d01.a9106"]],"outputLabels":["UNscharf","INTERNscharf","EXTERNscharf"]},{"id":"31758c80.b9997c","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemTargetState zu 1","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemTargetState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":425,"wires":[["b1b50308.7b95b"]]},{"id":"a4d05587.4c07e8","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemCurrentState zu 1","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemCurrentState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":475,"wires":[["b1b50308.7b95b"]]},{"id":"335e5f64.c0e1d","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemTargetState zu 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemTargetState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":325,"wires":[["b1b50308.7b95b"]]},{"id":"929d05d5.6512e8","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemCurrentState zu 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemCurrentState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":375,"wires":[["b1b50308.7b95b"]]},{"id":"91710b06.db30d8","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemTargetState zu 3","rules":[{"t":"set","p":"payload","pt":"msg","to":"3","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemTargetState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":225,"wires":[["b1b50308.7b95b"]]},{"id":"f34f5e58.f53e","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemCurrentState zu 3","rules":[{"t":"set","p":"payload","pt":"msg","to":"3","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemCurrentState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":275,"wires":[["b1b50308.7b95b"]]},{"id":"b1b50308.7b95b","type":"redmatic-homekit-universal","z":"1b7a5ce0.36e2d3","bridgeConfig":"2257aab2.166836","name":"HomeKit Alarmzentrale","services":[{"subtype":"0","service":"SecuritySystem","name":"Alarmzentrale"}],"x":760,"y":275,"wires":[["66c673de.ec2124"]]},{"id":"66c673de.ec2124","type":"switch","z":"1b7a5ce0.36e2d3","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"3","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":725,"y":425,"wires":[["80058c78.6fcb28"],["f62220a3.681cf"],["80058c78.6fcb28"],["c6e66b84.dc71e"]],"outputLabels":["Zuhause","Abwesend","Nacht","Aus"]},{"id":"1d770d14.6e560b","type":"comment","z":"1b7a5ce0.36e2d3","name":"Dokumentation","info":"Homematic:\n0 = unscharf\n1 = intern scharf\n2 = extern scharf\n\n\nHomekit:\n0 = Zuhause\n1 = Abwesend\n2 = Nacht\n3 = Aus\n\nchanges:\nHM -> HK -> HM\n0 -> 3 -> 0\n1 -> 0 -> 1\n2 -> 1 -> 2\n 2 -> 1","x":705,"y":225,"wires":[]},{"id":"c6e66b84.dc71e","type":"change","z":"1b7a5ce0.36e2d3","name":"zu 0 (unscharf)","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":905,"y":475,"wires":[["319a9fad.425fc8"]]},{"id":"80058c78.6fcb28","type":"change","z":"1b7a5ce0.36e2d3","name":"zu 1 (intern scharf)","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":915,"y":375,"wires":[["319a9fad.425fc8"]]},{"id":"f62220a3.681cf","type":"change","z":"1b7a5ce0.36e2d3","name":"zu 2 (extern scharf)","rules":[{"t":"set","p":"payload","pt":"msg","to":"2","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":915,"y":425,"wires":[["319a9fad.425fc8"]]},{"id":"319a9fad.425fc8","type":"ccu-sysvar","z":"1b7a5ce0.36e2d3","name":"Alarmzentrale","ccuConfig":"4c6a22ab.135824","topic":"ReGaHSS/${Name}","change":true,"cache":false,"x":1130,"y":425,"wires":[[]]},{"id":"4c6a22ab.135824","type":"ccu-connection","z":"","name":"CCU3","host":"192.168.1.8","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":true,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"10","rpcPingTimeout":"60","rpcInitAddress":"192.168.1.102","rpcServerHost":"192.168.1.102","rpcBinPort":"2083","rpcXmlPort":"2084","queueTimeout":"5000","queuePause":"250","contextStore":""},{"id":"2257aab2.166836","type":"redmatic-homekit-bridge","z":"","name":"RedMatic ZigBee Bridge","username":"CC:21:4D:3F:3E:89","pincode":"036-72-621","port":"51826"}]

Sonnige Grüße! Robert

klingbing commented 4 years ago

Vielen vielen Dank, das hat wunderbar geklappt (nachdem ich bei der "HomeKit Alarmanlage" die richtige (meine eigene;) Bridge ausgewählt habe)!

peissl-at commented 4 years ago

Hallo klingbing,

gerne! Das mit HomeKit stand aber in meiner "Doku" (1. Zeile des Posts) ;-)

Ich habe heute den Flow stark vereinfachen können. Nach ein paar Tests stelle ich ihn dir hier nochmal rein.

Sonnige Grüße! Robert

klingbing commented 4 years ago

Jaa doch, ich weiß ich weiß... ;) Ich bin gespannt auf deine Optimierung!

peissl-at commented 4 years ago

Hallo, hier meine neue übersichtlichere Version - wenn mir einer zeigt, wie ich zwei topics aus einer function rauskriege, dann wird's nochchmal aufgeräumter...

Bildschirmfoto 2020-02-12 um 10 48 33

Die beiden function-Nodes haben jetzt auch eine Statusanzeige (nur sichtbar nach Änderung des Status)

Sonnige Grüße! Robert

Hier der Code:

[{"id":"97175847.61672","type":"ccu-sysvar","z":"1b7a5ce0.36e2d3","name":"Alarmzentrale","ccuConfig":"4c6a22ab.135824","topic":"ReGaHSS/${Name}","change":true,"cache":false,"x":130,"y":275,"wires":[["5f910dcd.9a3e1c"]],"outputLabels":["Werteliste aus Systemvariable"]},{"id":"b1b50308.7b95b","type":"redmatic-homekit-universal","z":"1b7a5ce0.36e2d3","bridgeConfig":"2257aab2.166836","name":"HomeKit Alarmzentrale","services":[{"subtype":"0","service":"SecuritySystem","name":"Alarmzentrale"}],"x":910,"y":275,"wires":[["af7ae8e8.a5c7d"]]},{"id":"1d770d14.6e560b","type":"comment","z":"1b7a5ce0.36e2d3","name":"SecuritySystem","info":"Homematic:\n0 = unscharf\n1 = intern scharf\n2 = extern scharf\n\n\nHomekit:\n0 = Zuhause\n1 = Abwesend\n2 = Nacht\n3 = Aus\n\nchanges:\nHM -> HK -> HM\n0 -> 3 -> 0\n1 -> 0 -> 1\n2 -> 1 -> 2\n 2 -> 1","x":130,"y":225,"wires":[]},{"id":"319a9fad.425fc8","type":"ccu-sysvar","z":"1b7a5ce0.36e2d3","name":"Alarmzentrale","ccuConfig":"4c6a22ab.135824","topic":"ReGaHSS/${Name}","change":true,"cache":false,"x":1105,"y":325,"wires":[[]]},{"id":"a73776a3.404c7","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemTargetState","rules":[{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemTargetState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":595,"y":275,"wires":[["b1b50308.7b95b"]]},{"id":"98e17727.450b7","type":"change","z":"1b7a5ce0.36e2d3","name":"0/SecuritySystemCurrentState","rules":[{"t":"set","p":"topic","pt":"msg","to":"0/SecuritySystemCurrentState","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":605,"y":325,"wires":[["b1b50308.7b95b"]]},{"id":"5f910dcd.9a3e1c","type":"function","z":"1b7a5ce0.36e2d3","name":"convert","func":"var status = \"\";\nif (msg.payload === 0) {\n msg.payload = 3;\n status = \"0 zu 3\";\n} else if (msg.payload === 1) {\n msg.payload = 0;\n status = \"1 zu 0\";\n} else if (msg.payload === 2) {\n msg.payload = 1;\n status = \"2 zu 1\";\n}\nnode.status({text:status});\nreturn msg;","outputs":1,"noerr":0,"x":360,"y":275,"wires":[["a73776a3.404c7","98e17727.450b7"]]},{"id":"af7ae8e8.a5c7d","type":"function","z":"1b7a5ce0.36e2d3","name":"convert","func":"var status = \"\";\nif (msg.payload === 0) {\n msg.payload = 1;\n status = \"0 zu 1\";\n} else if (msg.payload === 1) {\n msg.payload = 2;\n status = \"1 zu 2\";\n} else if (msg.payload === 2) {\n msg.payload = 1;\n status = \"2 zu 1\";\n} else if (msg.payload === 3) {\n msg.payload = 0;\n status = \"3 zu 0\";\n}\nnode.status({text:status});\nreturn msg;","outputs":1,"noerr":0,"x":885,"y":325,"wires":[["319a9fad.425fc8"]]},{"id":"4c6a22ab.135824","type":"ccu-connection","z":"","name":"CCU3","host":"192.168.1.8","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":true,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"10","rpcPingTimeout":"60","rpcInitAddress":"192.168.1.102","rpcServerHost":"192.168.1.102","rpcBinPort":"2083","rpcXmlPort":"2084","queueTimeout":"5000","queuePause":"250","contextStore":""},{"id":"2257aab2.166836","type":"redmatic-homekit-bridge","z":"","name":"RedMatic ZigBee Bridge","username":"CC:10:1D:1F:1E:11","pincode":"026-32-510","port":"51826"}]

klingbing commented 4 years ago

Hi Robert, ich habe ein wenig mitverfolgt, was drüben bei HAP-Homematic passiert, in diesem Issue https://github.com/thkl/hap-homematic/issues/78 wird das Auslösen eines "Homekit Alarms" beschrieben, hast du das viellleicht auch in Redmatic umgesetzt?

peissl-at commented 4 years ago

Hallo,

gute Idee! Ich hab es mal schnell ergänzt. Ist aber ungetestet, weil die Kids schon im Bett sind. ;-)

Sonnige Grüße! Robert

Bildschirmfoto 2020-05-28 um 19 30 52

Inhalt der Function "wenn größer 0":

var status = ""; if (msg.payload > 0) { msg.payload = 4; status = "Alarm ausgelöst"; } else { status = "alles gut"; } node.status({text:status}); return msg;

Christchoper commented 3 years ago

Hallo Robert, Deine Lösung finde ich sehr interessant und gerne wollte ich deinen Code bei mir importieren. Leider bekomme ich dabei einen Fehler. Ist es allenfalls möglich, dass Du den Code nochmals posten kannst? Währe eine coole Sache. Danke Dir im Voraus.

Cheers, Chris

DavidPasch commented 2 years ago

Hallo Robert, Deine Lösung finde ich sehr interessant und gerne wollte ich deinen Code bei mir importieren. Leider bekomme ich dabei einen Fehler. Ist es allenfalls möglich, dass Du den Code nochmals posten kannst? Währe eine coole Sache. Danke Dir im Voraus.

Cheers, Chris

Probier mal bei status = "..." die beiden "" durch '' zu ersetzen. Achtung, das ist mehrmals vorhanden. Danach hat bei mir der Import geklappt, läuft.