Integration von ZigBee Komponenten (Schalter/Sensoren)

Moin in die Runde,

Da mein Zigbee endlich läuft wollte ich das ganze mit den Tastern angehen, zufälligerweise hatte ich sogar die gleichen Tuya bestellt.

Gestern dann erstmal blöd vorm blöde Red gestanden wo ich überhaupt einsetzen soll.

Genau das hier hatte ich auch vor und mich sehr über die Vorarbeit gefreut :stuck_out_tongue:

Gibt es von euch noch nen aktuelleren flow?

Mittlerweile gibt’s ja das Display, die App und den Dimmy Pro, dann könnte ich darauf aufbauen :slight_smile:

Mein Plan für den Taster sind im Grund ähnlich, ein Taster soll später zusätzlich die Heizung einschalten können (nachts wenn man kalt ist, einfach blind drauf und es geht los :smiley: ).

Fand die Idee von vorne rein geil und hab deshalb auch lange dran festgehalten und gar keine Kabel gelegt. Hauste die überall dran und kannst alles steuern.

Suche auch noch einen reines zigbee Input Modul und original Taster im Armaturenbrett nutzen zu können.

Danke und Grüße

Ich habe das jetzt alles etwas umgebaut. Mit einem Taster schalte ich jetzt 2 Lampen mit lange Tasten die 2 dimmen, auf dem 4 Taster habe 1 gedimmte Lampe, und ein Relays. Also mit dem Taster kannst du echt viel machen.

Wenn du möchtest kann ich die Version auch einstellen

Kurze Frage :slight_smile:

Was genau braucht man noch

Ich habe den Tuya Smart Device bestellt und den Conbee dongle :slight_smile:

ist das Alles zum steueren von zb lampen ? Relais?

Eigentlich brauchst du nur den Zigbee usb Dongle und Schalter oder Sensoren, die du dann mit zigbee2mqtt ins System einbindest

Immer gerne her damit, danke!

@Kniwweli

Genau, du kannst darüber (erstmal unabhängig vom Vanpi) mit zigbee kompatiblen Geräten alles Steuern.

Ich hab nur Grade nen IR blaster gekauft um bspw ne klimaanlage zu steuern.

Das geht easy übers Node-Red, im Endeffekt auch alles am Relayboard/core. Ich weiß nur Grade noch nicht wo man im Node Red am besten ansetzt, da es ja viele Steuermöglichkeiten gibt und bspw das Display den Status ja korrekt übernehmen soll.

Und Kauf dir keinen Sonoff Dongle E, sonst kannst dich durch den anderen Thread kämpfen :smiley:

1 Like

Die Funktion des Taster einfach, doppel, lang. Und das 4x.

Mit einfach und doppel schalte ich je eine gedimmte Lampe. Mit lang wird die Lampe die zuletzt eingeschaltet wurde gedimmt. Abschalten des Dimmprozess die Lampe die gedimmt werden soll tasten. das heiß bei Lampe 2,4,6 Doppelklick, sonst einfach Klick.

Auf dem 4. Taster habe ich auf den Doppelklick ein Relay gelegt.

Ich dimme damit zur Zeit 6 Lampen und eine Lampe per Relay

zigbee4fachtaster.json (22,9 KB)

Ich muss allerdings dazu sagen ich habe mir auch einen anderen Dimmer gebaut, PeKaWay war damals noch nicht so weit, das mann einen Dimmer mit Schalter doder aus der Ferne betätigen konnte, da ging das nur über Slider, daher musste ich mir was eigenes bauen.

Ich lege es mal mit dabei, dann siehst du wie ich das gemacht habe, eventuell kannst du das ja auf die Original Steuerung umsetzen. hierfür musst du dier die Palette ““node-red-contrib-time-based-dimmer 0.8.2”” runterladen

Dimmer.json (76,9 KB)

Gruß Arno

edit

Ich sehe gerade das du auf der Relay Controller Seite da eventuell was anschließen kannst.

die Link out gehen zum Dimmer, und mit dem Triggermodul wird rauf und runter gedimmt.

Ich würde mir den Bereich kopieren und versuchen dort anzuschließen. Du musst halt noch überlegen wie du den Longpush von mir da vernünftig einbindest. Sollte aber gehen.

1 Like

Vielen Danke erstmal,

Ich habe auf jedenfall Fragen :smiley:
Was macht da Alexa ? wenn ja, lokal oder Online?
Habs mir einmal Rüberkopiert, vermutlich hat es da ein paar links zerballert.
Und die übergabe an den Dimmy verstehe ich noch nicht. morgen gehts weiter.
Der Taster Node ist auf jedenfall schonmal sehr hilfreich.
Auf jedenfall hast du sehr viele Möglichkeiten, machts aber schwer zu durchblicken.
Mein Ziel wäre es auf jedenfall das ganze via mqtt API zu ubergeben, dann bliebe es beim Update erhalten.

Danke und Grüße!

Edit: Leider ist die Erklärung der Api grade Down :confused: https://pekaway.de/docs/communication/#mqtt-api

Moin

Die Alexa Ist online, lokal hatte ich Probleme mit irgendwelchen Ports.

Mit den Link in, link out ist auch Update fähig. Du musst nur schauen das du vorhande link in nimmst, Ich habe lieber physikalische als virtuelle Verbindungen, die kann man nachvollziehen.

Ist schwer zu blicken, meine Dimmy Konstruktion ist schon älter, und immer wieder was dazu gestrickt, und so strukturiert wie Vincent kann ich nicht programmieren. Vermutlich würde ich jetzt versuchen auf der relayseit anzubinden, bei mir macht es keinen Sinn, ich müsste durch ganze Programm rocken um das zu ändern

Interessant,

Ich hatte Alexa damals verworfen, da sie lokal nur am Echo Hub direkt angemeldete Geräte steuern kann. Damit würden aber Taster wegfallen.

Oder sind diese dann auch via mqtt erreichbar ? Hab mich damit nicht weiter beschäftigt.

Online wäre mir glaube ich nicht stabil genug, aber alles du da was zu lesen hast, gerne her damit.

Die Idee mit den vorhandenen Links finde ich genial, hab ich garnicht dran gedacht. Werde ich erstmal so umsetzen. Notfalls müsste man nur ein paar Links neu setzen wenn da was angepackt würde.

Auf jedenfalls funktioniert die Taster Integration schon um das Relais zu schalten ohne weiteres Zutun. Dimmen werde ich gleich mal probieren.

Grüße

Für Alexa habe ich das genommnen ““node-red-contrib-virtual-smart-home””

da hat du 7 Teilnehmer umsonst, und für ich glaube bis zu 200 bezahlst du 12 € im Jahr.

[{"id":"8add05e93311ecc4","type":"tab","label":"Alexa test userflow","disabled":false,"info":"","env":[]},{"id":"582f40def799dd92","type":"debug","z":"8add05e93311ecc4","name":"debug 541","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":510,"y":360,"wires":[]},{"id":"ed325c9cc5852605","type":"debug","z":"8add05e93311ecc4","name":"debug 554","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":510,"y":200,"wires":[]},{"id":"bbd75ed5ea683536","type":"comment","z":"8add05e93311ecc4","name":"node-red-contrib-virtual-smart-home //  virtual device","info":"","x":450,"y":60,"wires":[]},{"id":"d8251d4f28be6c23","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload = msg.payload.brightness;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":480,"wires":[["3df2b6a94e262ff1","c7c95adc3ab211f1"]]},{"id":"c7c95adc3ab211f1","type":"debug","z":"8add05e93311ecc4","name":"debug 556","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":480,"wires":[]},{"id":"011b116723d8e9ea","type":"inject","z":"8add05e93311ecc4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":250,"y":1300,"wires":[["c0769b30d6ab3a33"]]},{"id":"7f9507326a34c651","type":"debug","z":"8add05e93311ecc4","name":"debug 563","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":710,"y":1320,"wires":[]},{"id":"463092df17b565c3","type":"inject","z":"8add05e93311ecc4","name":"measured temp = 220.5 °C","props":[{"p":"payload.temperature","v":"220.5","vt":"num"},{"p":"payload.scale","v":"CELSIUS","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":300,"y":1380,"wires":[[]]},{"id":"c0769b30d6ab3a33","type":"function","z":"8add05e93311ecc4","name":"Temperatur","func":"var temp = global.get(\"Dimmertemp1\");\nmsg.payload = {\n    \"temperature\":temp,\n    \"scale\":\"CELSIUS\",   \n}\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":1300,"wires":[["7f9507326a34c651"]]},{"id":"ed93b1ef9d1d4940","type":"function","z":"8add05e93311ecc4","name":"AN/AUS","func":"var check = msg.payload.powerState;\nif (check==\"ON\"){\nmsg.payload = \"on\"\n}\nif (check==\"OFF\"){\nmsg.payload = \"off\"\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":420,"wires":[["d9f01fcbd71bfa3f"]]},{"id":"fd5ce01782cf6f4e","type":"debug","z":"8add05e93311ecc4","name":"debug 565","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":420,"wires":[]},{"id":"2401d5affd83748b","type":"link out","z":"8add05e93311ecc4","name":"Alexa 2 an/aus","mode":"link","links":["a232a8162a1c1508"],"x":995,"y":420,"wires":[]},{"id":"3df2b6a94e262ff1","type":"link out","z":"8add05e93311ecc4","name":"Alexa 2 %","mode":"link","links":["09bf8b5862924eed","eaee1452fe04eadf"],"x":965,"y":480,"wires":[]},{"id":"d9f01fcbd71bfa3f","type":"rbe","z":"8add05e93311ecc4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":650,"y":420,"wires":[["2401d5affd83748b","fd5ce01782cf6f4e"]]},{"id":"2c6063b3d7ddde12","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload = msg.payload.brightness;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":320,"wires":[["923cb7e18d846381","dc8492fbac37f7fc"]]},{"id":"dc8492fbac37f7fc","type":"debug","z":"8add05e93311ecc4","name":"debug 567","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":320,"wires":[]},{"id":"8a3d53cd7482f03d","type":"function","z":"8add05e93311ecc4","name":"AN/AUS","func":"var check = msg.payload.powerState;\nif (check==\"ON\"){\nmsg.payload = \"on\"\n}\nif (check==\"OFF\"){\nmsg.payload = \"off\"\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":260,"wires":[["aed9f45198b8a946"]]},{"id":"3e64ff6f5a5cf2f6","type":"debug","z":"8add05e93311ecc4","name":"debug 568","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":260,"wires":[]},{"id":"2e8e6a386ae8d89a","type":"link out","z":"8add05e93311ecc4","name":"Alexa 1 an/aus","mode":"link","links":["4329a00a2c14a745"],"x":995,"y":260,"wires":[]},{"id":"923cb7e18d846381","type":"link out","z":"8add05e93311ecc4","name":"Alexa 1 %","mode":"link","links":["93b631b7cc09d468","a4c0fd66546e7864"],"x":965,"y":320,"wires":[]},{"id":"aed9f45198b8a946","type":"rbe","z":"8add05e93311ecc4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":650,"y":260,"wires":[["2e8e6a386ae8d89a","3e64ff6f5a5cf2f6"]]},{"id":"6ea29e608b2cf89b","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload={\n    \"brightness\": global.get(\"dimmer3\")\n};\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":420,"wires":[["a6403b3c64aa7f0c"]]},{"id":"c0b6c0952e420917","type":"inject","z":"8add05e93311ecc4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"10","topic":"","payload":"","payloadType":"date","x":150,"y":100,"wires":[["6ea29e608b2cf89b","739cd51f1495cbf2","65cdc92b9de0b7b2","5d78a40d4e79e23f","07475c20de4e5be6","1c7a901dde9904fb"]]},{"id":"739cd51f1495cbf2","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload={\n    \"brightness\": global.get(\"dimmer2\")\n};\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":260,"wires":[["7c6b91bc6adfaa91"]]},{"id":"960e4735c1d158ce","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload = msg.payload.brightness;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":640,"wires":[["a83170aae4bed7d2","8a8c9aa6f43bf1d7"]]},{"id":"8a8c9aa6f43bf1d7","type":"debug","z":"8add05e93311ecc4","name":"debug 715","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":640,"wires":[]},{"id":"44ecfe860e84d55e","type":"function","z":"8add05e93311ecc4","name":"AN/AUS","func":"var check = msg.payload.powerState;\nif (check==\"ON\"){\nmsg.payload = \"on\"\n}\nif (check==\"OFF\"){\nmsg.payload = \"off\"\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":580,"wires":[["7ba24e77a0e34e1f"]]},{"id":"c1b6f3be985ec90e","type":"debug","z":"8add05e93311ecc4","name":"debug 716","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":580,"wires":[]},{"id":"6d2bb51654ccf91a","type":"link out","z":"8add05e93311ecc4","name":"Alexa 3 an/aus","mode":"link","links":["ad9812a187daf1cb"],"x":995,"y":580,"wires":[]},{"id":"a83170aae4bed7d2","type":"link out","z":"8add05e93311ecc4","name":"Alexa 3 %","mode":"link","links":["b3f6a68c5910656e","77683cc8a2a2dd71"],"x":965,"y":640,"wires":[]},{"id":"7ba24e77a0e34e1f","type":"rbe","z":"8add05e93311ecc4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":650,"y":580,"wires":[["6d2bb51654ccf91a","c1b6f3be985ec90e"]]},{"id":"65cdc92b9de0b7b2","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload={\n    \"brightness\": global.get(\"dimmer4\")\n};\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":580,"wires":[["929dbfb322a9ecb0"]]},{"id":"26582a0c9cb70d52","type":"debug","z":"8add05e93311ecc4","name":"debug 717","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":510,"y":520,"wires":[]},{"id":"574c79dbf650e138","type":"comment","z":"8add05e93311ecc4","name":"Dinette","info":"","x":310,"y":220,"wires":[]},{"id":"9be5f4988647b461","type":"comment","z":"8add05e93311ecc4","name":"Bett","info":"","x":290,"y":380,"wires":[]},{"id":"286d87a239b50bcb","type":"comment","z":"8add05e93311ecc4","name":"Aussen","info":"","x":310,"y":540,"wires":[]},{"id":"7c6b91bc6adfaa91","type":"vsh-virtual-device","z":"8add05e93311ecc4","name":"Dinette","topic":"","metadata":"","connection":"34e2237b543b5a2b","template":"DIMMER_SWITCH","retrievable":false,"passthrough":false,"diff":false,"filter":false,"filterTopic":false,"plan":"free","x":320,"y":260,"wires":[["8a3d53cd7482f03d","ed325c9cc5852605","2c6063b3d7ddde12"]]},{"id":"a6403b3c64aa7f0c","type":"vsh-virtual-device","z":"8add05e93311ecc4","name":"Bett","topic":"","metadata":"","connection":"34e2237b543b5a2b","template":"DIMMER_SWITCH","retrievable":false,"passthrough":false,"diff":false,"filter":false,"filterTopic":false,"plan":"free","x":330,"y":420,"wires":[["582f40def799dd92","ed93b1ef9d1d4940","d8251d4f28be6c23"]]},{"id":"929dbfb322a9ecb0","type":"vsh-virtual-device","z":"8add05e93311ecc4","name":"Aussen","topic":"","metadata":"","connection":"34e2237b543b5a2b","template":"DIMMER_SWITCH","retrievable":false,"passthrough":false,"diff":false,"filter":false,"filterTopic":false,"plan":"free","x":320,"y":580,"wires":[["26582a0c9cb70d52","44ecfe860e84d55e","960e4735c1d158ce"]]},{"id":"0bd17792aa0ca66b","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload = msg.payload.brightness;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":860,"wires":[["5a1a1068adb62e22","b4d09ab17e8045d5"]]},{"id":"b4d09ab17e8045d5","type":"debug","z":"8add05e93311ecc4","name":"debug 813","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":860,"wires":[]},{"id":"8d3a8dfbdebc966a","type":"function","z":"8add05e93311ecc4","name":"AN/AUS","func":"var check = msg.payload.powerState;\nif (check==\"ON\"){\nmsg.payload = \"on\"\n}\nif (check==\"OFF\"){\nmsg.payload = \"off\"\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":800,"wires":[["6cce0837a1b1a0b9"]]},{"id":"a5a1a795448705ca","type":"debug","z":"8add05e93311ecc4","name":"debug 814","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":800,"wires":[]},{"id":"8eb6115846d93fa0","type":"link out","z":"8add05e93311ecc4","name":"Alexa 7 an/aus","mode":"link","links":["dbb53a808d34e8e0"],"x":995,"y":800,"wires":[]},{"id":"5a1a1068adb62e22","type":"link out","z":"8add05e93311ecc4","name":"Alexa 7 %","mode":"link","links":["05710d4a7fc468f6","d4e73c36b453526a"],"x":965,"y":860,"wires":[]},{"id":"6cce0837a1b1a0b9","type":"rbe","z":"8add05e93311ecc4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":650,"y":800,"wires":[["8eb6115846d93fa0","a5a1a795448705ca"]]},{"id":"5d78a40d4e79e23f","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload={\n    \"brightness\": global.get(\"dimmer4\")\n};\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":800,"wires":[["a7dcbc3cb6d02bee"]]},{"id":"6c7e4f1694381dcc","type":"debug","z":"8add05e93311ecc4","name":"debug 815","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":510,"y":740,"wires":[]},{"id":"a4410ab82fb574a0","type":"comment","z":"8add05e93311ecc4","name":"Küche","info":"","x":310,"y":760,"wires":[]},{"id":"a7dcbc3cb6d02bee","type":"vsh-virtual-device","z":"8add05e93311ecc4","name":"Küche","topic":"","metadata":"","connection":"34e2237b543b5a2b","template":"DIMMER_SWITCH","retrievable":false,"passthrough":false,"diff":false,"filter":false,"filterTopic":false,"plan":"free","x":310,"y":800,"wires":[["6c7e4f1694381dcc","8d3a8dfbdebc966a","0bd17792aa0ca66b"]]},{"id":"86a75ccc14eadecf","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload = msg.payload.brightness;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":1120,"wires":[["8896e391339c3799","76ba355cfb8ca99a"]]},{"id":"76ba355cfb8ca99a","type":"debug","z":"8add05e93311ecc4","name":"debug 816","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":1120,"wires":[]},{"id":"1a3cf10ffbc7eeb7","type":"function","z":"8add05e93311ecc4","name":"AN/AUS","func":"var check = msg.payload.powerState;\nif (check==\"ON\"){\nmsg.payload = \"on\"\n}\nif (check==\"OFF\"){\nmsg.payload = \"off\"\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":1000,"wires":[["f032e04b3139e8d7"]]},{"id":"88d34d56b115bcbd","type":"debug","z":"8add05e93311ecc4","name":"debug 817","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":1000,"wires":[]},{"id":"55047e297394e2bf","type":"link out","z":"8add05e93311ecc4","name":"Alexa Ambiente an/aus","mode":"link","links":["a232a8162a1c1508","dbb53a808d34e8e0","4329a00a2c14a745"],"x":995,"y":1000,"wires":[]},{"id":"8896e391339c3799","type":"link out","z":"8add05e93311ecc4","name":"Alexa Ambiente %","mode":"link","links":["09bf8b5862924eed","93b631b7cc09d468","05710d4a7fc468f6","eaee1452fe04eadf","a4c0fd66546e7864","d4e73c36b453526a"],"x":965,"y":1120,"wires":[]},{"id":"f032e04b3139e8d7","type":"rbe","z":"8add05e93311ecc4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":650,"y":1000,"wires":[["55047e297394e2bf","88d34d56b115bcbd"]]},{"id":"07475c20de4e5be6","type":"function","z":"8add05e93311ecc4","name":"Helligkeit","func":"msg.payload={\n    \"brightness\": global.get(\"Ambiente\")\n};\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":1000,"wires":[["586ffa2f3c122861"]]},{"id":"c6a9a99587788dc6","type":"debug","z":"8add05e93311ecc4","name":"debug 818","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":510,"y":940,"wires":[]},{"id":"e535b121a17ce5b8","type":"comment","z":"8add05e93311ecc4","name":"Ambiente heißt in der App Dämmerung, Ambinte hat Alexa nicht genommen","info":"","x":330,"y":900,"wires":[]},{"id":"586ffa2f3c122861","type":"vsh-virtual-device","z":"8add05e93311ecc4","name":"Ambiente","topic":"","metadata":"","connection":"34e2237b543b5a2b","template":"DIMMER_SWITCH","retrievable":false,"passthrough":false,"diff":false,"filter":false,"filterTopic":false,"plan":"free","x":320,"y":1000,"wires":[["c6a9a99587788dc6","1a3cf10ffbc7eeb7","86a75ccc14eadecf","912c0b4a6c6a46ca"]]},{"id":"1c7a901dde9904fb","type":"function","z":"8add05e93311ecc4","name":"set global","func":"global.set(\"Ambiente\",20); ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":100,"wires":[[]]},{"id":"912c0b4a6c6a46ca","type":"function","z":"8add05e93311ecc4","name":"true/false","func":"var check = msg.payload.powerState;\nif (check==\"ON\"){\nmsg.payload = true\n}\nif (check==\"OFF\"){\nmsg.payload = false\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":1060,"wires":[["2eb24f21eac2b69e","7f1aa9bb6d1d101f"]]},{"id":"b1d5291419d8890a","type":"debug","z":"8add05e93311ecc4","name":"debug 819","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":810,"y":1060,"wires":[]},{"id":"2eb24f21eac2b69e","type":"rbe","z":"8add05e93311ecc4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":650,"y":1060,"wires":[["b1d5291419d8890a"]]},{"id":"7f1aa9bb6d1d101f","type":"link out","z":"8add05e93311ecc4","name":"Alexa Ambiente an/aus","mode":"link","links":["43da359b09cd4dd1"],"x":995,"y":1060,"wires":[]},{"id":"34e2237b543b5a2b","type":"vsh-connection","name":"ahtdf@yahoo.de","port":"8883","accessTokenExpiry":"1744824850674","debug":false,"backendUrl":"https://kfd5m4a21f.execute-api.eu-west-1.amazonaws.com/dev","lwaClientId":"amzn1.application-oa2-client.3f1bb07133854b078261ad43f2484c18"}]

Du musst die da mit deinem Google acount anmelden, ist aber unkompliziert.

2 Likes

Das klingt auf jedenfall sehr interesant für die Zukunft. Ich bin auch noch gespannt was aus dem HA Local sprach Assistent wird, langfristig wäre das die beste Lödung.

Aber davon ab, ich versuche das ganze grade irgendwie erstmal als schalter zum Laufen zu bekommen, soweit auch kein Problem mit deiner Vorarbeit.

Mit einem Klick gehts an, mit Doppelklick aus, jedoch möchte ich gerne an und aus auf einen Klick, dafür müsste ich nur wissen welchen Staus ich vorher hatte.
Ein Globale Varialble wäre hier glaube ich Quatsch und zu viel aufwand, irgendwie muss man den Staus doch aus dem Node bekommen?
Ich hatte es mit

var dimm = flow.get(‘Dimmer Controller.slider1.msg.payload’)

probiert, irgendwie so müsste es gehen, tuts aber nicht.
Auch wird der Wert perr mqtt an die API Übergeben, mit dem MQTT explorer habe ich es aber nicht gefunden. Verbindung zum System steht, kann auch alles mögliche sehen, inkl der Zigbee2mqtt gescichte, aber nicht die Dimmer.

Eine Idee?

Edit:
Über Mqtt hab ichs doch gefunden. Sie Tauchen erst nach wert Änderung im Explorer auf .
Die Topics sind für die Helligkeit in %

pkw/stat/mosfetboard/dimmer1/bri

sowie für den PWM Wert

pkw/cmnd/PekawayMOTA/driver15

Wenn ich einen MQTT in mit dem Topic einbaue, dann bekomme ich da aber nichts raus ?

Du musst auf jeden Fall den Zustand in einen Speicher schreiben, und wieder abrufen beim nächsten schalten.

Bei meinem 4fach Taster hab ich das so gemacht

[{“id”:“a1db752f11f7f0ee”,“type”:“function”,“z”:“e641390c6765844a”,“name”:“flowVariable set true/false”,“func”:“\nif (msg.payload==“ON”) {\n var check= flow.get (“S142”)\n}\n\nif(check == true )\n{\n msg.payload=false;\n flow.set(“S142”, false);\n}\n\n if (check == false) { \n msg.payload=true;\n flow.set(“S142”, true);\n }\nelse \nflow.set(“S142”,false)\n return msg;\n”,“outputs”:1,“timeout”:“”,“noerr”:0,“initialize”:“”,“finalize”:“”,“libs”:,“x”:970,“y”:960,“wires”:[[“13d8e6e14efb140c”,“07412f670299bcc9”,“e4c26ab4bc032fea”]]}]

Flow.set S142 wäre 1.Schalter 4fach Taster Taster 2. Vielleicht hilft dir das weiter

Kannst du natürlich benennen wie du willst

Ich glaube da ist beim Kopieren irgendwie die Formatierung flöten gegangen, oder wie hätte ich das einfügen müssen?

Ich habs inzwischen aber so halb gelöst :slight_smile:
Ein/Aus funktioniert einwandfrei über einen Klick, in meinem Fall gedimmt, Doppelklick ist dann bei mir 100% pwm.

Tatsächlich ist der Dimmer als globale Variable abrufbar gewesen, soetwas hatte ich gesucht und nach studieren der Relay Controller section gefunden. Meine Lösung ist bisher folgende.

var dimm = global.get(“dimmer0”);

if (dimm > 0 && msg.payload == “ON”){

msg.payload = 0

}    

else if ( dimm == 0 && msg.payload == “ON”){

msg.payload = 50

}

else { return null }

return msg;

also ist der Slider unter global.get(“dimmer0”) abrufbar.

Das Dimmen gestaltet sich aber deutlich schwieriger, zumindest wenn man nah am vanpi bleiben will ohne etwas nachzuinstallieren. Das ganze findet soweit ich das verstanden habe bei den MCP inputs statt, dort kann ich aber nicht reingrätschen ohne nach einem Update es wieder anpassen zu müssen.
Mein Plan ist es jetzt erstmal den Teil zu verstehen und in meinen userflow zusätzlich einzubinden, dann kann ich wieder über den inject gehen, über den alles auf den slider geht. :slight_smile:
Und irgendwie fehlt mir aktuell ein sinnvoller nutzen für die Digitalen eingänge durch die Zigbee geschichte :smiley:

Ja mit dem zigbee haben sich die DI’s fast erledigt, ich hatte die damals noch selbst gebaut, davon nutze ich momentan 1 für den Türschalter um die Status Beleuchtung einzuschalten, der 2. Soll für D+ zum ausschalten Aussen Beleuchtung und Trittstufe. Dann versuche ich noch 4 für den Sensor Abwssertank zu missbrauchen.

Wenn du dir auf der Relays Seite dir einen Pfad kopierst, da kannst du mit etwas Überlegung einen dimmer für dich anpassen

1 Like

Ich hab da mal was versucht, kanns du ja mal testen.

das ist für den Dimmer 0

wenn du das für einen anderen Dimmer benötigst musst du alles was dimmer0 heißt ändern

[{"id":"02120acb8e9589d9","type":"tab","label":"Dimmer test","disabled":false,"info":"","env":[]},{"id":"4985f2ae388172d7","type":"trigger","z":"02120acb8e9589d9","name":"","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"-30","extend":false,"overrideDelay":false,"units":"ms","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":1150,"y":280,"wires":[["32b109c6334f9d24"]]},{"id":"32b109c6334f9d24","type":"function","z":"02120acb8e9589d9","name":"long push","func":"msg.label = global.get(\"Ndimmer0\")\nif (flow.get(\"timer0\") == \"stop\") {\n    return null\n}\n\nif (flow.get(\"dimDirection0\") == \"down\" && flow.get(\"dimmer0_state\") > 5) {\n    global.set(\"dimmer0\", global.get(\"dimmer0\") -1 <= 5 ? 5 : global.get(\"dimmer0\") -1)\n    msg.payload = global.get(\"dimmer0\")\n    return msg\n}\n\nif (flow.get(\"dimDirection0\") == \"up\" && flow.get(\"dimmer0_state\") < 100) {\n    global.set(\"dimmer0\", global.get(\"dimmer0\") +1 >= 100 ? 100 : global.get(\"dimmer0\") +1)\n    msg.payload = global.get(\"dimmer0\")\n    return msg\n}\n\n\n//if dimmer = 100 then dim down\nif (flow.get(\"dimmer0_state\") >= 100) {\n    if (global.get(\"dimmer0\") <= 0) {\n        //global.set(\"dimmer0\", 0)\n        msg.payload = 5 // do not dim to under 5%\n    }\n    else { \n        //global.set(\"dimmer0\", global.get(\"dimmer0\") -1) \n        msg.payload = global.get(\"dimmer0\") -1\n    }\n    flow.set(\"dimDirection0\", \"down\")\n}\n//if dimmer = 0 then dim up\nelse if (flow.get(\"dimmer0_state\") <= 5 || flow.get(\"dimDirection0\" == undefined)) {\n    if (global.get(\"dimmer0\") >= 100) {\n        //global.set(\"dimmer0\", 100)\n        msg.payload = 100\n    }\n    else {\n        //global.set(\"dimmer0\", global.get(\"dimmer0\") +1) \n        msg.payload = global.get(\"dimmer0\") +1\n    }\n    flow.set(\"dimDirection0\", \"up\")\n}\nmsg.payload = global.get(\"dimmer0\")\n\nreturn msg","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1340,"y":280,"wires":[["d859542773cf08e9"]]},{"id":"139973fdf36bd51a","type":"function","z":"02120acb8e9589d9","name":"get true/false","func":"\n\n\nif (msg.type == \"switch\") {\n    flow.set(\"dimmer0_state\", Number(global.get(\"dimmer0\")) || 0)\n    return [msg, null]\n}\nelse if (msg.type == \"button\") {\n\n    if (msg.payload == true) {\n        flow.set(\"dimmer0_state\", Number(global.get(\"dimmer0\")) || 0)\n        msg.time = Date.now()\n        msg.topic = \"start\"\n        flow.set(\"timer0\", \"start\")\n    }\n    if (msg.payload == false) {\n        msg.time = Date.now()\n        msg.topic = \"stop\"\n        flow.set(\"timer0\", \"stop\")\n    }\n    return [null, msg]\n}","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":260,"wires":[["40d0e0ce532dfdfe"],["20bcb51bd6ad4046"]]},{"id":"20bcb51bd6ad4046","type":"join","z":"02120acb8e9589d9","name":"long/short push?","mode":"custom","build":"object","property":"time","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","useparts":true,"accumulate":false,"timeout":"0.7","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":740,"y":260,"wires":[["aa2f4175fe165538"]]},{"id":"aa2f4175fe165538","type":"function","z":"02120acb8e9589d9","name":"short/long push","func":"if (msg.time.hasOwnProperty(\"start\") && msg.time.hasOwnProperty(\"stop\") && msg.topic == \"stop\") {\n    return [msg, null]\n}\nelse if (msg.topic == \"start\") { \n    return [null, msg]\n}\nelse if (msg.topic == \"stop\") { \n    msg.payload = false\n    return [null, msg]\n}","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":920,"y":260,"wires":[["40d0e0ce532dfdfe"],["4985f2ae388172d7"]]},{"id":"40d0e0ce532dfdfe","type":"function","z":"02120acb8e9589d9","name":"short push","func":"msg.label = global.get(\"Ndimmer0\")\nlet target\nlet dimmerbefore = flow.get(\"dimmer0before\");\n\nif (msg.type == \"switch\") {\n    if (msg.mcpinput_status == true) {\n        target = (dimmerbefore === null || dimmerbefore === undefined || dimmerbefore < 1) ? 50 : dimmerbefore;\n    }\n    else if (msg.mcpinput_status == false) {\n        flow.set(\"dimmer0before\", Number(flow.get(\"dimmer0_state\")))\n        target = 0\n    }\n}\nelse if (msg.type == \"button\") {\n    target = (Number(flow.get(\"dimmer0_state\")) > 0 ? 0 : (dimmerbefore === null || dimmerbefore === undefined || dimmerbefore === 0) ? 50 : dimmerbefore)\n}\nmsg.payload = Number(flow.get(\"dimmer0_state\"))\n\nif (target == 0) {\n    flow.set(\"dimDirection0\", \"down\")\n    flow.set(\"dimmer0before\", Number(flow.get(\"dimmer0_state\")))\n    while (msg.payload > 0) {\n        node.send(msg)\n        msg.payload = msg.payload - 2.5\n        msg.payload = msg.payload < 0 ? 0 : msg.payload\n        await new Promise(resolve => setTimeout(resolve, 25));\n    }\n    msg.payload = 0\n    return msg\n}\nelse {\n    flow.set(\"dimDirection0\", \"up\")\n    target = target <= 10 ? 20 : target\n    while (msg.payload < target) {\n        msg.payload = msg.payload + 2.5\n        msg.payload = msg.payload > target ? target : msg.payload\n        node.send(msg)\n        await new Promise(resolve => setTimeout(resolve, 25));\n    }\n}","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1110,"y":240,"wires":[["d859542773cf08e9"]]},{"id":"d03df808f705ac6b","type":"link out","z":"02120acb8e9589d9","name":"dimmer test mcp0","mode":"link","links":["a4c0fd66546e7864"],"x":1454,"y":238,"wires":[]},{"id":"d859542773cf08e9","type":"debug","z":"02120acb8e9589d9","name":"debug 85","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1499,"y":278,"wires":[]},{"id":"79679d8119563d8e","type":"inject","z":"02120acb8e9589d9","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":230,"y":260,"wires":[["37f71613e8fb42c7"]]},{"id":"37f71613e8fb42c7","type":"function","z":"02120acb8e9589d9","name":"function 24","func":"var zustand1 = flow.get(\"state_dimmer0\") || false;\n\nif (msg.payload === true && zustand1 === false) {\n    flow.set (\"state_dimmer0\",true)\n    msg.type = \"button\"\n    msg.payload = true\n    flow.set(\"dimDirection0\",\"up\")\n}\nelse if (msg.payload === true && zustand1 === true){\n    flow.set (\"state_dimmer0\",false)\n    msg.type = \"button\"\n    msg.payload = false\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":260,"wires":[["00ef78781f91bc34","139973fdf36bd51a"]]},{"id":"00ef78781f91bc34","type":"debug","z":"02120acb8e9589d9","name":"debug 86","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":560,"y":300,"wires":[]},{"id":"8c59cc7f9abc86db","type":"comment","z":"02120acb8e9589d9","name":"Hier komt der Zigbee Taster dran","info":"","x":310,"y":200,"wires":[]},{"id":"2e0a5548b1930602","type":"comment","z":"02120acb8e9589d9","name":"Hier gehts zum Dimmer ","info":"","x":1500,"y":200,"wires":[]},{"id":"ca8c06bfcf10a0bd","type":"comment","z":"02120acb8e9589d9","name":"Musst du noch am Long Push anschließen","info":"","x":1640,"y":240,"wires":[]}]

Die MCP Inputs pushen eine Nachricht an den lokalen MQTT Broker unter pkw/tele/input mit der Input Nummer und dem Status true/false, da könntest du sie abgreifen und in einem userflow weiterverarbeiten