Last Updated on 2 augustus 2021 by Syds
Dit slimme scenario heeft tot doel om een Shelly dimmer 2 aan te sturen met een andere Shelly dimmer.

In mijn woning hangen meerdere groepen met ledspots, zo hangen er in mijn woonkamer zo’n 12 ledspots aan de balken op 3 meter hoogte, en nogmaals 12 ledspots aan de balken op 6 meter hoogte. Beide groepen ledspots zitten aangesloten op een andere groep in de meterkast. Het aan- en uitzetten of dimmen van deze ledspots wordt geregeld met één impulsschakelaar. Normaliter zou dat niet kunnen, omdat je anders de groepen met elkaar gaat vermengen en als deze groepen dan ook nog vanuit verschillende fasen vanuit je meterkast wordt gevoed, dan wordt het helemaal spannend 😉

Ik heb dit opgelost door de groepen met ledspots in de meterkast aan te sluiten op hun eigen Shelly dimmer 2 die middels een DIN-rail mount in de groepenkast zijn bevestigd. Achter de impulsschakelaar in de woonkamer heb ik een derde Shelly dimmer 2 aangesloten. Deze stuurt zijn aan- uit- en dim commando’s naar de MQTT server. In Node red heb ik vervolgens een flow aangemaakt die naar die MQTT-berichten luistert en deze doorgeeft aan de Shelly dimmers in de meterkast.
Benodigdheden:
- 2 (of meer) Shelly dimmer 2’s
- Optioneel: Shelly dimmer 2 DIN rail mount voor inbouw in de groepenkast
- stukje Bruin 2.5mm² VD-draad
- stukje Blauw 2.5mm² VD-draad
- stukje Zwart 1.5mm² VD-draad
- Paar Wago klemmen
- Schroevendraaier
- Kniptang
- Afstriptang
Reeds geïnstalleerd en up-and-running:
- Domoticz
- MQTT
- MQTT plugin voor Domoticz
- Node Red
Pinout:
Shelly dimmer 2 #1 (bijv. in meterkast)
Connector |
Draad |
Kleur |
SW1 |
|
|
SW2 |
|
|
L |
|
|
L |
Fase |
Bruin |
L |
|
|
N |
Neutraal |
Blauw |
O |
Lamp |
Zwart |
Shelly dimmer 2 #2 (bijv. in de woonkamer achter een schakelaar)
Connector |
Draad |
Kleur |
SW1 |
Schakelaar uit |
Blauw |
SW2 |
|
|
L |
|
|
L |
Fase |
Bruin |
L |
|
|
N |
Neutraal |
Blauw |
O |
|
|
De ingang van de schakelaar zit middels een WAGO klem ook aangesloten op de neutraaldraad in je wandcontactdoos, zie ook onderstaand schema

Montage:
De Shelly dimmer 2 #1 heb ik middels een DIN-rail mount bevestigd in de groepenkast. Vervolgens heb ik de module voorzien van fase (L) en neutraal (N) en de uitgaande draad naar de lamp bevestigd op de output (O)
De Shelly dimmer 2 #2 heb ik aangesloten op de fase (L) en neutraal (N) draden in de wandcontactdoos. Op de neutraal heb ik een Wago klem gemonteerd, en vandaar een aftakking gemaakt naar de Ingang van de Impulsschakelaar. De uitgang van de Impulsschakelaar heb ik aangesloten op de SW1 connect van de Shelly dimmer 2.
Stappenplan:
Stap 1. Shelly’s geconfigureerd conform de beschrijving elders op deze website
Stap 2. De shelly’s een zinvolle naam gegeven binnen Domoticz
- Shelly dimmer 2 #1: Basisverlichting
- Shelly dimmer 2 #2: Basisverlichting schakelaar
Stap 3. Button type van shelly dimmer 2 #1 Basisverlichting aangepast

Stap 3. Een Node red flow aangemaakt
- Deze Node red flow zorgt ervoor dat de aan-, uit- en dim commando’s die de Shelly dimmer 2 #2 Basisverlichting schakelaar naar MQTT verstuurd, omgezet wordt naar MQTT commando’s voor Shelly dimmer 2 #1 Basisverlichting.
Node |
Actie |
MQTT in |
Leest MQTT berichten van shellydimmer2-E8DB84D6A91F (Basisverlichting schakelaar) topic shellies/shellydimmer2-E8DB84D6A91F/light/0/status |
Payload to http request |
Deze functie zet de MQTT commando’s On (true), Off (false) en Set Level (Brightness) om naar http query parameter |
Basisverlichting |
Doet http request naar shellydimmer2-E8DB84D6A986 (Basisverlichting) met query parameters uit ‘Payload to http request’ |
Keuken |
Doet http request naar shellydimmer2-E8DB84D2E117 (Keuken) met query parameters uit ‘Payload to http request’ |
Plafondverlichting |
Doet http request naar shellydimmer2-shellydimmer2-D8BFC019EDE7 (Plafondverlichting) met query parameters uit ‘Payload to http request’ |
Export:
[{“id”:”c55937e6.9d3e88″,”type”:”tab”,”label”:”Basisverlichting”,”disabled”:false,”info”:””},{“id”:”996aa6da.a999d8″,”type”:”mqtt in”,”z”:”c55937e6.9d3e88″,”name”:”MQTT in”,”topic”:”shellies/shellydimmer2-E8DB84D6A91F/light/0/status”,”qos”:”2″,”datatype”:”auto”,”broker”:”ede154bd.f75f38″,”x”:110,”y”:60,”wires”:[[“1522a293.0d187d”]]},{“id”:”1522a293.0d187d”,”type”:”function”,”z”:”c55937e6.9d3e88″,”name”:”Payload to http request”,”func”:”// {\”ison\”:false,\”has_timer\”:false,\”timer_started\”:0,\”timer_duration\”:0,\”timer_remaining\”:0,\”mode\”:\”white\”,\”brightness\”:49}\”\n\nvar on_off = msg.payload.split(‘:’)[1].substr(0,5).replace(‘,’,”);\nvar brightness = msg.payload.split(‘:’)[7].substr(0,2);\n\nif (on_off == ’true’)\n{\n on_off = ‘on’;\n} else {\n on_off = ‘off’;\n}\n\nmsg.payload = ‘?turn=’ + on_off + ‘&brightness=’ + brightness;\n\nreturn msg;”,”outputs”:1,”noerr”:0,”initialize”:””,”finalize”:””,”x”:370,”y”:60,”wires”:[[“590213ab.3ba16c”,”cf092c72.dc5f2″,”2b94118a.fa81ee”]]},{“id”:”590213ab.3ba16c”,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Basisverlichting”,”method”:”GET”,”ret”:”txt”,”paytoqs”:”ignore”,”url”:”http://shellydimmer2-E8DB84D6A986.sydspost.nl/light/0{{{payload}}}”,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:660,”y”:60,”wires”:[[]]},{“id”:”cf092c72.dc5f2″,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Keuken”,”method”:”GET”,”ret”:”txt”,”paytoqs”:”ignore”,”url”:”http://shellydimmer2-E8DB84D2E117.sydspost.nl/light/0{{{payload}}}”,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:640,”y”:140,”wires”:[[]]},{“id”:”2b94118a.fa81ee”,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Plafondverlichting”,”method”:”GET”,”ret”:”txt”,”paytoqs”:”ignore”,”url”:”http://shellydimmer2-D8BFC019EDE7.sydspost.nl/light/0{{{payload}}}”,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:670,”y”:220,”wires”:[[]]},{“id”:”ede154bd.f75f38″,”type”:”mqtt-broker”,”z”:””,”name”:”pi”,”broker”:”192.168.2.29″,”port”:”1883″,”clientid”:””,”usetls”:false,”compatmode”:false,”keepalive”:”60″,”cleansession”:true,”birthTopic”:””,”birthQos”:”0″,”birthPayload”:””,”closeTopic”:””,”closeQos”:”0″,”closePayload”:””,”willTopic”:””,”willQos”:”0″,”willPayload”:””}]
1-8-2021: Na gisteren de firmware te hebben geupdated naar versie 20210723-153500/v1.11.0-Dimmer-g1d5998d, werkte de Node red flow niet meer. Analyse leverde op dat het bericht wat via MQTT wordt verstuurd inhoudelijk was gewijzigd:
Oud: {“ison”:false,”has_timer”:false,”timer_started”:0,”timer_duration”:0,”timer_remaining”:0,”mode”:”white”,”brightness”:49}”
Nieuw: {“ison”:false,”source”:”http”,”has_timer”:false,”timer_started”:0,”timer_duration”:0,”timer_remaining”:0,”mode”:”white”,”brightness”:51,”transition”:0}”
Verschillen:
“source”:”http” is toegevoegd
“transition”:0 is toegevoegd
Door de toevoeging van het veld source werkte de flow niet meer, hieronder de flow voor firmware versie 20210723-153500/v1.11.0-Dimmer-g1d5998d en hoger:
[{“id”:”c55937e6.9d3e88″,”type”:”tab”,”label”:”Basisverlichting”,”disabled”:false,”info”:””},{“id”:”996aa6da.a999d8″,”type”:”mqtt in”,”z”:”c55937e6.9d3e88″,”name”:”MQTT in Basisverlichting”,”topic”:”shellies/shellydimmer2-E8DB84D6A91F/light/0/status”,”qos”:”2″,”datatype”:”auto”,”broker”:”ede154bd.f75f38″,”x”:150,”y”:200,”wires”:[[“4bb6f964.e1aea8”]]},{“id”:”1522a293.0d187d”,”type”:”function”,”z”:”c55937e6.9d3e88″,”name”:”Payload to http request”,”func”:”// {\”ison\”:false,\”has_timer\”:false,\”timer_started\”:0,\”timer_duration\”:0,\”timer_remaining\”:0,\”mode\”:\”white\”,\”brightness\”:49}\”\n// {\”ison\”:false,\”source\”:\”http\”,\”has_timer\”:false,\”timer_started\”:0,\”timer_duration\”:0,\”timer_remaining\”:0,\”mode\”:\”white\”,\”brightness\”:51,\”transition\”:0}\”\n\nvar on_off = msg.payload.split(‘:’)[1].substr(0,5).replace(‘,’,”);\nvar brightness = msg.payload.split(‘:’)[8].substr(0,2);\n\n// node.warn(\”Brightness: \”+brightness);\n\nif (on_off == ’true’)\n{\n msg.payload = ‘?turn=on’ + ‘&brightness=’ + brightness;\n flow.set(\”initStatus\”,’On’);\n flow.set(\”initLevel\”,brightness);\n// node.warn(\”initStatus=On:\”+msg.payload);\n} else {\n msg.payload = ‘?turn=off’;\n flow.set(\”initStatus\”,’Off’);\n flow.set(\”initLevel\”,brightness);\n// node.warn(\”initStatus=Off:\”+msg.payload);\n}\n\n// node.warn(\”parameter=\”+msg.payload);\n\nreturn msg;”,”outputs”:1,”noerr”:0,”initialize”:””,”finalize”:””,”x”:1190,”y”:200,”wires”:[[“590213ab.3ba16c”,”cf092c72.dc5f2″,”2b94118a.fa81ee”]]},{“id”:”590213ab.3ba16c”,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Basisverlichting”,”method”:”GET”,”ret”:”txt”,”paytoqs”:”ignore”,”url”:”http://shellydimmer2-E8DB84D6A986.sydspost.nl/light/0{{{payload}}}”,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:1460,”y”:140,”wires”:[[“48832255.954dac”]]},{“id”:”cf092c72.dc5f2″,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Keuken”,”method”:”GET”,”ret”:”txt”,”paytoqs”:”ignore”,”url”:”http://shellydimmer2-E8DB84D2E117.sydspost.nl/light/0{{{payload}}}”,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:1440,”y”:200,”wires”:[[“48832255.954dac”]]},{“id”:”2b94118a.fa81ee”,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Plafondverlichting”,”method”:”GET”,”ret”:”txt”,”paytoqs”:”ignore”,”url”:”http://shellydimmer2-D8BFC019EDE7.sydspost.nl/light/0{{{payload}}}”,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:1470,”y”:260,”wires”:[[“48832255.954dac”]]},{“id”:”dd87464a.d91c78″,”type”:”http request”,”z”:”c55937e6.9d3e88″,”name”:”Get current status”,”method”:”GET”,”ret”:”obj”,”paytoqs”:”ignore”,”url”:”http://192.168.2.29:8080/json.htm?type=devices&rid=193″,”tls”:””,”persist”:false,”proxy”:””,”authType”:””,”x”:410,”y”:60,”wires”:[[“1928ab8f.b99034”]]},{“id”:”4bb6f964.e1aea8″,”type”:”function”,”z”:”c55937e6.9d3e88″,”name”:”Get message status”,”func”:”// {\”ison\”:false,\”has_timer\”:false,\”timer_started\”:0,\”timer_duration\”:0,\”timer_remaining\”:0,\”mode\”:\”white\”,\”brightness\”:49}\”\n// {\”ison\”:false,\”source\”:\”http\”,\”has_timer\”:false,\”timer_started\”:0,\”timer_duration\”:0,\”timer_remaining\”:0,\”mode\”:\”white\”,\”brightness\”:51,\”transition\”:0}\”\n\n\nvar on_off = msg.payload.split(‘,’)[0].split(‘:’)[1];\nvar level = msg.payload.split(‘,’)[7].split(‘:’)[1].replace(‘}’,”);\n\n// node.warn(\”on_off=\”+on_off);\n// node.warn(\”level=\”+level);\n\nif (on_off == ’true’)\n{\n on_off = ‘On’;\n} else {\n on_off = ‘Off’;\n}\n\nflow.set(‘msgStatus’,on_off);\nflow.set(‘msgLevel’,level);\n\n// node.warn(\”initStatus: \”+flow.get(‘initStatus’));\n// node.warn(\”initLevel: :\”+flow.get(‘initLevel’));\n// node.warn(\”msgStatus=\”+on_off);\n// node.warn(\”msgLevel=\”+level);\n\nreturn msg;”,”outputs”:1,”noerr”:0,”initialize”:””,”finalize”:””,”x”:620,”y”:200,”wires”:[[“9d6d9b50.cb79f8″,”6c51e1e4.ff0dd”]]},{“id”:”9d6d9b50.cb79f8″,”type”:”switch”,”z”:”c55937e6.9d3e88″,”name”:”StatusChanged”,”property”:”initStatus”,”propertyType”:”flow”,”rules”:[{“t”:”neq”,”v”:”msgStatus”,”vt”:”flow”},{“t”:”eq”,”v”:”msgStatus”,”vt”:”flow”}],”checkall”:”true”,”repair”:false,”outputs”:2,”x”:900,”y”:200,”wires”:[[“1522a293.0d187d”],[]]},{“id”:”94b5871c.aeba78″,”type”:”inject”,”z”:”c55937e6.9d3e88″,”name”:”Run Once at Startup”,”props”:[],”repeat”:””,”crontab”:””,”once”:true,”onceDelay”:0.1,”topic”:””,”x”:160,”y”:60,”wires”:[[“dd87464a.d91c78”]]},{“id”:”1928ab8f.b99034″,”type”:”function”,”z”:”c55937e6.9d3e88″,”name”:”Store in Context”,”func”:”var status=msg.payload.result[0].Status;\nvar level=msg.payload.result[0].Level;\n\n// node.warn(\”initStatus=\”+status);\n// node.warn(\”initLevel=\”+level);\n\nflow.set(\”initStatus\”,status);\nflow.set(\”initLevel\”,level);\n\nreturn msg;”,”outputs”:1,”noerr”:0,”initialize”:””,”finalize”:””,”x”:640,”y”:60,”wires”:[[]]},{“id”:”6c51e1e4.ff0dd”,”type”:”switch”,”z”:”c55937e6.9d3e88″,”name”:”LevelChanged”,”property”:”initLevel”,”propertyType”:”flow”,”rules”:[{“t”:”neq”,”v”:”msgLevel”,”vt”:”flow”},{“t”:”eq”,”v”:”msgLevel”,”vt”:”flow”}],”checkall”:”false”,”repair”:false,”outputs”:2,”x”:900,”y”:260,”wires”:[[“1522a293.0d187d”],[]]},{“id”:”48832255.954dac”,”type”:”debug”,”z”:”c55937e6.9d3e88″,”name”:””,”active”:true,”tosidebar”:true,”console”:false,”tostatus”:false,”complete”:”false”,”statusVal”:””,”statusType”:”auto”,”x”:1730,”y”:200,”wires”:[]},{“id”:”ede154bd.f75f38″,”type”:”mqtt-broker”,”z”:””,”name”:”pi”,”broker”:”192.168.2.29″,”port”:”1883″,”clientid”:””,”usetls”:false,”compatmode”:false,”keepalive”:”60″,”cleansession”:true,”birthTopic”:””,”birthQos”:”0″,”birthPayload”:””,”closeTopic”:””,”closeQos”:”0″,”closePayload”:””,”willTopic”:””,”willQos”:”0″,”willPayload”:””}]
Nabeschouwingen:
Hoewel dit scenario technisch gezien werkt zitten er wel een paar onhebbelijkheden is, namelijk:
- Als je de Basisverlichting via de app, domoticz of google assistant uitzet, dan gaat hij automatisch na een paar seconden weer aan. Immers er is geen communicatie terug van Basisverlichting naar de schakelaar. Dus bij de eerstvolgende MQTT statusupdate van de schakelaar wordt de instelling van de Basisverlichting weer overruled.
- Het dim-commando wordt pas verstuurd nadat je de schakelaar hebt losgelaten, dus het is een beetje gokken hoe welke dim-stand de Basisverlichting aanneemt.
- Je moet de schakelaar vrij lang ingedrukt houden om de Basisverlichting terug te dimmen.