Last Updated on 8 februari 2022 by Syds
In deze tutorial gaan we een STYRBAR Afstandsbediening m.b.v. een Wemos D1 mini ombouwen tot een WIFI gateway zodat we de gekoppelde Trådfri lamp(en) kunnen aansturen met Domoticz middels MQTT.
Onderdelen:
- STYRBAR Afstandsbediening
- Trådfri lamp
- Wemos D1 mini
- Jumperkabeltjes
- PLA wit
- 2 kleine schroefjes
Benodigdheden
- E27 Fitting + snoer + stekker
- Soldeerbout + tin
- Boormachine + 2, 3 en 4mm boortjes
- 3D printer
- 2 AAA-batterijen
- Optioneel: Breadboard
Up-and-running
- Domoticz
- MQTT
- Domoticz MQTT client gateway plugin
- Node-red
Links
https://github.com/basilfx/TRADFRI-Hacking/issues/46
Node-red flows en ESPEasy rule-files zijn ook te downloaden op github: https://github.com/sydspost/styrbar-wifi
Stap 1. Lamp aanmelden op afstandsbediening
Eerste stap is het aanmelden van de lamp(en) op de afstandsbediening conform de beschrijving van IKEA. De installatiehandleiding vindt je hier: https://manuals.plus/m/7091affd1c18c18c8c45b14926fabebe46d78e92c5e82876d3e189c3fa6707b7_optim.pdf

Dus open de afstandsbediening middels de schroef aan de achterzijde met een muntje of schroevendraaier. Plaats twee AAA-batterijen. Schroef de Trådfri lamp in een E27 fitting en steek de stekker in een stopcontact. Hoe de afstandsbediening op maximaal 5 centimeter van de lamp en druk gedurende 10 seconden op het pairingknopje aan de achterzijde van de afstandsbediening.

De lamp begint nu te dimmen en feller te worden, wacht de 10 seconden af en de twee devices zijn gepaird. Herhaal dit als je meer lampen wilt koppelen aan dezelfde afstandsbediening. Let op, de gekoppelde lampen kun je niet separaat bedienen, ze gedragen zich als een groep. Je kunt maximaal 10 apparaten koppelen aan dezelfde afstandsbediening.
Stap 2. Afstandsbediening demonteren
Haal de batterijen uit het batterijen-compartiment. In dit batterijen-compartiment zie je twee kleine uitsparingen, met een klein schroevendraaiertje kun je de twee nokjes die in die uitsparing inhaken indrukken. Daarmee komt het boven deksel van de afstandsbediening los. Dit vergt wel enige kracht, forceer echter niet want we willen het deksel kunnen hergebruiken.
Draai daarna de 3 schroefjes los en haal de printplaat uit de behuizing
Stap 3. Proefopstelling maken
Als de printplaat omdraait zie je even onder de + van de batterijhouder 7 soldeerpuntjes met TX, RX, CLK, DIO, RST, GND en VDD.

Deze soldeerpuntjes gaan we o.a. gebruiken om aan te sluiten op een Wemos D1 mini. De GPIO’s van de MGM210L zijn helaas niet op deze wijze aan te sluiten, hiervoor moeten we jumperkabeltjes rechtstreeks op de pootjes van de chip solderen. Dit volgens onderstaande tabel
Wemos D1 Mini | Styrbar remote |
3v3 | VCC (Pin 13) |
GND | GND (Pin 14) |
D1 (GPIO5) | PA01 (CLK, PIN 1) |
D6 (GPIO12) | PA02 (Pin 2) |
D2 (GPIO4) | PA03 (Pin 3) |
D5 (GPIO14) | PA04 (Pin 4) |
Links uit de datasheet van de MGM210L de pin-beschrijving en rechts een close-up van de chip (excuses voor de wazige foto, maar kon met mijn telefoon geen scherpere foto maken)
Hieronder het wiring-schema

Eerst maak ik een proefopstelling met behulp van een breadboard (jij kan natuurlijk ook gelijk voor het echie gaan en deze stap overslaan). Ik knip één zijde van mail-mail jumperkabeltjes af, strip ze en vertin ze. Daarna soldeer ik ze voorzichtig op de printplaat en chip van de afstandsbediening. Daarna verbindt ik de afstandsbediening conform bovenstaande pinout beschrijving met de Wemos D1 mini middels het breadboard. De Wemos D1 mini heb ik (al eerder) voorzien van header pins.

Stap 4. Wemos D1 mini voorzien van ESPEasy mega
Download de ESPEasy Mega software voor ESP8266 van Github: https://github.com/letscontrolit/ESPEasy/releases en unzip de file. In de root van de directory staat het programma “ESP.Easy.Flasher.exe”, start deze op
Toelichting op non-default waarden
Label | Waarde | Toelichting |
COM port | (COM3) | Kies de com-poort waar jij je Wemos D1 mini aan gekoppeld hebt |
Firmware | ESP_Easy_mega_20210503_normal_ESP8266_4M1M.bin | Als jij de laatste versie hebt gedownload dan is de datum in de firmware naam waarschijnlijk afwijkend |
Post-flash action | Aangevinkt | Zorgt ervoor dat je hostnaam en WiFi instellingen automatisch ingesteld worden op de Wemos (werkt bij mij niet altijd) |
Unit-Name | ikea | Zinvolle naam |
Number | 99 | Uniek nummer voor al je ESP-devices |
WiFi SSID | H369ABF8AF9 | SSID van jou WiFi netwerk |
WiFi password | Wachtwoord van jou WiFi netwerk |
Klik op “Flash ESP Easy FW” en ESPEasy Mega wordt naar je Wemos geflashed, tijdens het flashen knippert de blauwe led van de Wemos. Na het flashen wordt de Wemos automatisch gereset. Je kunt nu ESP Easy flasher afsluiten. En als de Post-flash actions correct worden uitgevoerd dan is je Wemos daarna bereikbaar via de hostname “ikea”. Bij mij werkte dat niet, en schoot de Wemos in AP-mode. Maak in dat geval met je laptop of telefoon verbinding met dit AccessPoint, te herkennen aan de naam ESP-Easy. En klik op “Tik hier om in te loggen bij het netwerk”. Je browser opent nu automatisch de website van de Wemos. Kies je 2.4Ghz WiFi netwerk, vul je WiFi password in en klik op “Connect”. De Wemos D1 mini maakt nu verbinding met je WiFi netwerk.
Maak nu met de browser op je laptop verbinding met de Wemos D1 mini via de url http://esp-easy.<domeinnaam>, in mijn geval is de hostname http://esp-easy.sydspost.nl/

Stap 5. ESPEasy configureren
Klik op het tabblad “Config” en configureer de Wemos als volgt

En klik op Submit.
Toelichting op non-default waarden
Label | Waarde | Toelichting |
Unit Name | ikea | Zinvolle naam |
Unit Number | 99 | Unieke waarde voor al je ESPEasy devices |
SSID | H369ABF8AF9 | SSID van je WiFi netwerk, heb je in de vorige stap al geconfigureerd |
WPA Key | ***** | Password van je WiFi netwerk, heb je in de vorige stap al geconfigureerd. |
We gaan nu de MQTT-settings configureren, klik op het tabblad “Controllers”, en klik op “Add” en configureer MQTT als volgt
En klik op “Submit”
Toelichting op non-default waarden
Label | Waarde | Toelichting |
Protocol | Domoticz MQTT | |
Controller IP | 192.168.2.29 | IP-address van mijn MQTT server, vul hier het IP-address van jou MQTT server in |
Enabled | Aangevinkt |
Nu gaan we de hardware configureren, klik op het tabblad “Hardware” en configureer de hardware als volgt

En klik op “Submit”
Toelichting op non-default waarden
Label | Waarde | Toelichting |
GPIO-SDA | – None – | Maakt D2 (GPIO-4) vrij voor gebruik als input |
GPIO-SCL | – None – | Maakt D1 (GPIO-5) vrij voor gebruik als input |
Nu gaan we drie dummy devices aanmaken welke als variabelen worden gebruikt, klik op het tabblad “Devices” en op “Add”, configureer de dummy devices als volgt
Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Generic – Dummy device | |
Name | On_off | Variable om aan-uit status device op te slaan |
Output Data Type | Switch | Gedraagt zich als een schakelaar |
Values 1 | On_off | Zinvolle naam waarde |
Klik op “Submit” en daarna op “Add” om volgende dummy device aan te maken

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Generic – Dummy device | |
Name | Dim | Variable om dim-waarde device op te slaan |
Output Data Type | Dimmer | Gedraagt zich als een dimmer |
Values 1 | Dim | Zinvolle naam waarde |
Klik op “Submit” en daarna op “Add” om volgende dummy device aan te maken

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Generic – Dummy device | |
Name | WarmWhite | Variable om warmwhite waarde device op te slaan |
Output Data Type | Dimmer | Gedraagt zich als een dimmer |
Values 1 | WarmWhite | Zinvolle naam waarde |
Klik op “Submit”, de onderstaande dummy devices zijn nu aangemaakt

Vervolgens gaan we vier switches aanmaken die het indrukken van de knoppen van het device synchroniseren naar Domoticz. Dit met de volgende beperking. Er is in EspEasy geen mogelijkheid om de lengte van een “Longpress”, dus het langdurig indrukken van een knop, te meten in milliseconden. Als je dus de brightness (grote zonnetje) op de Styrbar langdurig indrukt, dan zal bijv. de brightness van de lamp tot maximaal gaan. Echter in mijn code heb ik dit vertaald naar 1 graad op 5 graden brightness binnen Domoticz. Dus Domoticz zal hierdoor 20% brightness registreren. Door de bediening van de lampen middels de knoppen kan er dus een synchronisatie issue ontstaan tussen de werkelijkheid en hetgeen wat in Domoticz aan waardes geregistreerd zijn. Dit is in software niet op te lossen. Mocht je hier problemen door ondervinden, er is een workarround: Maximaliseer brightness en/of warmwhite in Domoticz, en automatisch wordt het device gesynchroniseerd.
Maar eerst de vier switches

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Switch input – Switch | Waarden 1-op-1 overnemen, wordt in de code naar verwezen |
Name | Sync_on_off | |
Enabled | aangevinkt | |
GPIO | GPIO-5 (D1) | |
Longpress event | Active on LOW & HIGH (Event= 10 or 11) | |
Values #1 | on_off |
Klik op “Submit”, vervolgens op “Close” en daarna op “Add” om de volgende switch aan te maken

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Switch input – Switch | Waarden 1-op-1 overnemen, wordt in de code naar verwezen |
Name | Sync_dim | |
Enabled | aangevinkt | |
GPIO | GPIO-14 (D5) | |
Longpress event | Active on LOW & HIGH (Event= 10 or 11) | |
Values #1 | Dim |
Klik op “Submit”, vervolgens op “Close” en daarna op “Add” om de volgende switch aan te maken

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Switch input – Switch | Waarden 1-op-1 overnemen, wordt in de code naar verwezen |
Name | Sync_Warm | |
Enabled | aangevinkt | |
GPIO | GPIO-4 (D2) | |
Longpress event | Active on LOW & HIGH (Event= 10 or 11) | |
Values #1 | WarmWhite |
Klik op “Submit”, vervolgens op “Close” en daarna op “Add” om de volgende switch aan te maken

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Device | Switch input – Switch | Waarden 1-op-1 overnemen, wordt in de code naar verwezen |
Name | Sync_cold | |
Enabled | aangevinkt | |
GPIO | GPIO-12 (D6) | |
Longpress event | Active on LOW & HIGH (Event= 10 or 11) | |
Values #1 | WarmWhite |
Klik op “Submit”, vervolgens op “Close”, de volgende 4 switch-devices zijn nu aangemaakt

Voor het ontvangen van MQTT-berichten vanuit Node-red voegen we nog een Generic – MQTT import device toe. Klik op “Add”

Toelichting op non-default waarden
Label | Waarde | Toelichting |
Name | MQTTin | Waarden 1-op-1 overnemen, wordt in de code naar verwezen |
Enabled | aangevinkt | |
MQTT Topic 1 | ikea/on_off | |
MQTT Topic 2 | ikea/dim | |
MQTT Topic 3 | ikea/warmwhite | |
Values 1 | on_off | |
Values 2 | dim | |
Values 3 | warmwhite |
Klik op “Submit”, vervolgens op “Close”, de MQTT import helder is aangemaakt

We gaan nu het tabblad “Rules” aanzetten en nog wat randzaken configureren, klik op het tabblad “Tools” en op “Advanced”
Toelichting op non-default waarden
Label | Waarde | Toelichting |
Rules | Aangevinkt | Stelt het tabblad Rules beschikbaar |
Use NTP | Aangevinkt | Enable tijdsynchronisatie |
NTP hostname | 192.168.2.29 | IP-address van je NTP-server, in mijn geval 192.168.2.29 mijn lokale NTP server. Alternatief is time.google.com |
Syslog IP | 192.168.2.29 | Optioneel: IP-address van je syslog-server (zie ook mijn tutorial over het inrichten van een syslog-server). In mijn geval 192.168.2.29, vervang dit door het ip-address van jou syslog server. |
Syslog log level | Info | Alleen informatieve berichten worden naar je syslog server gestuurd, pas dit naar behoefte aan om meer logging te krijgen. |
Tussen je tabbladen verschijnt nu het tabblad “Rules”, klik deze aan en kies voor Rules Set 1. Kopieer hierin onderstaande code:
on System#Boot do Let,4,0 // If 0 perform On WiFi#Connected longpulse_ms,5,0,6500 // Max brigthness TaskValueSet 1,1,0 // Update dummy device with defaults TaskValueSet 2,1,5 TaskValueSet 3,1,5 TimerSet,5,10 // After 10sec device off endon on on_off do // http event on_off if %eventvalue%=0 pulse,14,0,50 // Device off else pulse,5,0,50 // Device on endif TaskValueSet 1,1,%eventvalue% endon on dim do // http event dim if %eventvalue%-[Dim#Dim]>0 looptimerset_ms,1,1300,%eventvalue%-[Dim#Dim] // Brighter TaskValueSet 2,1,%eventvalue% endif if [Dim#Dim]-%eventvalue%>=1 looptimerset_ms,2,1300,[Dim#Dim]-%eventvalue% // Dim TaskValueSet 2,1,%eventvalue% endif endon on warmwhite do // http event warmwhite if %eventvalue%-[WarmWhite#WarmWhite]>0 looptimerset_ms,3,1000,%eventvalue%-[WarmWhite#WarmWhite] // Warmer TaskValueSet 3,1,%eventvalue% endif if [WarmWhite#WarmWhite]-%eventvalue%>=1 looptimerset_ms,4,1000,[WarmWhite#WarmWhite]-%eventvalue% // Colder TaskValueSet 3,1,%eventvalue% endif endon on Rules#Timer=1 do // Brighter Longpulse_ms,5,0,1300 endon on Rules#Timer=2 do // Dim Longpulse_ms,14,0,1300 endon on Rules#Timer=3 do // Warmer Longpulse_ms,4,0,1000 endon on Rules#Timer=4 do // Colder Longpulse_ms,12,0,1000 endon on Rules#Timer=5 do // Device off pulse,14,0,50 endon

Klik op “Save” en kies vervolgens voor “Rules Set 2”. Kopieer hierin onderstaande code (let op, eerste regel dient nog aangepast te worden, zie hieronder):
Let,3,277 // Change this to your Domoticz IDX on Sync_on_off#on_off=0 do // Brighter button pressed on device timerSet,6,1 endon on Sync_dim#Dim=0 do // Dim button pressed on device timerSet,7,1 endon on Sync_warm#WarmWhite=0 do // Warm button pressed on device if [WarmWhite#WarmWhite]<5 Let,2,[WarmWhite#WarmWhite]*51+51 Publish domoticz/in,'{"idx": [Var#3], "command": "setcolbrightnessvalue", "color": {"b":0,"cw":0,"g":0,"m":2,"r":0,"t":[Var#2],"ww":0}, "parse": false}' Let,2,[WarmWhite#WarmWhite]+1 TaskValueSet,3,1,[Var#2] endif endon on Sync_cold#WarmWhite=0 do // Cold button pressed on device if [WarmWhite#WarmWhite]>1 Let,2,[WarmWhite#WarmWhite]*51-51 Publish domoticz/in,'{"idx": [Var#3], "command": "setcolbrightnessvalue", "color": {"b":0,"cw":0,"g":0,"m":2,"r":0,"t":[Var#2],"ww":0}, "parse": false}' Let,2,[WarmWhite#WarmWhite]-1 TaskValueSet,3,1,[Var#2] endif endon on rules#timer=6 do // Shortpress:Switch on, longpress:Brighter if [Sync_on_off#on_off]=1 // Check if longpress or not Publish domoticz/in,'{"idx": [Var#3], "command": "switchlight", "switchcmd": "On", "parse": false}' TaskValueSet,1,1,1 else if [Dim#Dim]<5 Let,1,[Dim#Dim]*20+20 Publish domoticz/in,'{"idx": [Var#3], "command": "switchlight", "switchcmd": "Set Level", "level": [Var#1] }' Let,1,[Dim#Dim]+1 TaskValueSet,2,1,[Var#1] endif endif endon on rules#timer=7 do // Shortpress:Switch off, longpress:Dim if [Sync_dim#Dim]=1 // Check if longpress or not Publish domoticz/in,'{"idx": [Var#3], "command": "switchlight", "switchcmd": "Off", "parse": false}' TaskValueSet,1,1,0 else if [Dim#Dim]>1 Let,1,[Dim#Dim]*20-20 Publish domoticz/in,'{"idx": [Var#3], "command": "switchlight", "switchcmd": "Set Level", "level": [Var#1] }' Let,1,[Dim#Dim]-1 TaskValueSet,2,1,[Var#1] endif endif endon
Verander in de bovenste regel de Domoticz IDX, en mijn geval is die 277, zie ook volgende stap. Vul hier de IDX in van jou Domoticz device. Klik op “Save” en kies vervolgens voor “Rules Set 3”. Kopieer hierin onderstaande code:
on WiFi#Connected do if [Var#4]=0 // Calibrate Domoticz Publish domoticz/in,'{"idx": [Var#3], "command": "setcolbrightnessvalue", "color": {"b":0,"cw":0,"g":0,"m":2,"r":0,"t":255,"ww":0}, "parse": false}' Publish domoticz/in,'{"idx": [Var#3], "command": "switchlight", "switchcmd": "Set Level", "level": 100 }' Publish domoticz/in,'{"idx": [Var#3], "command": "switchlight", "switchcmd": "Off", "parse": false}' Let,4,1 endif endon // MQTT Event handling on MQTTin#on_off do event,on_off=[MQTTin#on_off] endon on MQTTin#dim do event,dim=[MQTTin#dim] endon on MQTTin#warmwhite do event,warmwhite=[MQTTin#warmwhite] endon
Klik op “Save”. Je Wemos D1 mini is nu volledig geconfigureerd.
Stap 6. Domoticz device aanmaken
Kies binnen Domoticz voor Instellingen -> Hardware

Als je het hardware-item “Virtuele devices” nog niet aangemaakt hebt, vul dan onderstaande gegevens in, en klik op “Toevoegen”

Klik daarna bij hardware-item “Virtuele devices” op “Maak virtuele sensoren” en geen de lamp(en) een zinvolle naam, kies voor Sensor Type “RGBWW Switch” en klik op “OK”

Kies nu voor Instellingen, Apparaten en sorteer op IDX aflopend, de nieuwe virtuele sensor staat nu bovenaan. Noteer de IDX, die heb je straks nodig voor de Node-red flow in de volgende stap. In mijn geval is dat IDX 277.

Stap 7. Node-red flow aanmaken
Open Node-red en klik op het + teken om een nieuwe flow aan te maken, klik vervolgens op het menu-icoontje en kies voor Flows -> Rename en geef de flow een zinvolle naam, in mijn geval “IKEA Tradfri”.

Kies weder om voor het menu-icoontje en kies voor Import, knip daarin onderstaand json-file en plak deze in het import venster en klik op “Import”
[ { "id": "20495f2c.32411", "type": "tab", "label": "IKEA Styrbar", "disabled": false, "info": "" }, { "id": "64034f48.6d64a", "type": "mqtt in", "z": "20495f2c.32411", "name": "MQTT in", "topic": "domoticz/out", "qos": "2", "datatype": "json", "broker": "b8897d4f.7ebdc", "x": 120, "y": 220, "wires": [ [ "589ee6c2.745e18" ] ] }, { "id": "589ee6c2.745e18", "type": "switch", "z": "20495f2c.32411", "name": "Select device", "property": "payload.idx", "propertyType": "msg", "rules": [ { "t": "eq", "v": "277", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 360, "y": 220, "wires": [ [ "b7cb6a7a.6fab58" ] ] }, { "id": "d13fa6e7.157bf8", "type": "change", "z": "20495f2c.32411", "name": "Dim level", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$ceil(payload.Level/20)", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 720, "y": 340, "wires": [ [ "d4420c37.421be" ] ] }, { "id": "b7cb6a7a.6fab58", "type": "switch", "z": "20495f2c.32411", "name": "On/Off", "property": "payload.nvalue", "propertyType": "msg", "rules": [ { "t": "eq", "v": "0", "vt": "str" }, { "t": "btwn", "v": "1", "vt": "num", "v2": "15", "v2t": "num" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 570, "y": 220, "wires": [ [ "9253da2e.a10a48" ], [ "d13fa6e7.157bf8", "1e6cc1b0.214a2e", "6b12f107.4119b" ] ] }, { "id": "1e6cc1b0.214a2e", "type": "change", "z": "20495f2c.32411", "name": "WarmWhite", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$ceil(payload.Color.ww/51)", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 420, "wires": [ [ "3a73fbe6.4b9d54" ] ] }, { "id": "74c3c37b.dbf49c", "type": "mqtt out", "z": "20495f2c.32411", "name": "MQTTout", "topic": "ikea/on_off", "qos": "", "retain": "", "broker": "b8897d4f.7ebdc", "x": 1200, "y": 220, "wires": [] }, { "id": "9253da2e.a10a48", "type": "function", "z": "20495f2c.32411", "name": "Off", "func": "msg.payload=\"0\";\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 910, "y": 200, "wires": [ [ "74c3c37b.dbf49c" ] ] }, { "id": "6b12f107.4119b", "type": "function", "z": "20495f2c.32411", "name": "On", "func": "msg.payload=\"1\";\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 910, "y": 260, "wires": [ [ "74c3c37b.dbf49c" ] ] }, { "id": "d4420c37.421be", "type": "mqtt out", "z": "20495f2c.32411", "name": "MQTTout", "topic": "ikea/dim", "qos": "", "retain": "", "broker": "b8897d4f.7ebdc", "x": 1200, "y": 340, "wires": [] }, { "id": "3a73fbe6.4b9d54", "type": "mqtt out", "z": "20495f2c.32411", "name": "MQTTout", "topic": "ikea/warmwhite", "qos": "", "retain": "", "broker": "b8897d4f.7ebdc", "x": 1200, "y": 420, "wires": [] }, { "id": "b8897d4f.7ebdc", "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": "" } ]

De flow ziet er dan als volgt uit

Toelichting per node
Node | Toelichting |
MQTT in | Connectie naar je MQTT-broker. Voeg eventueel je MQTT-server toe middels het “Pennetje” of hergebruik een bestaande server door uit het pull-down te kiezen. En klik op “Done” |
Select device | Filtert de MQTT-berichten voor jou ikea device uit. Voer hier het IDX nummer uit de vorige stap in, in mijn geval was dit 277. Vervang dit door jou IDX. En klik op “Done” |
On/Off | Routeert de flow op basis van aan- en uit commando van het device |
Dim Level | Haalt het gewenste Dim level uit het Domoticz json-bericht en rekent dit om naar een waarde tussen de 1 en 5 |
WarmWhite | Haalt het gewenste WarmWhite niveau uit het Domoticz json-bericht en rekent dit om naar een waarde tussen de 1 en 5 |
Off – MQTTout | Stuurt MQTT-bericht met payload waarde 0 (uit) naar ikea/on_off topic van ESPEasy. Vervang in de MQTTout node in de Server settings de FQDN hostname van jou ESPEasy device, in mijn geval ikea.sydspost.nl. |
On – MQTTout | Stuurt MQTT-bericht met payload waarde 1 (aan) naar ikea/on_off topic van ESPEasy. Vervang in de MQTTout node in de Server settings de FQDN hostname van jou ESPEasy device, in mijn geval ikea.sydspost.nl. |
Dim Level – MQTTout | Stuurt MQTT-bericht met payload waarde tussen 1 en 5 naar ikea/dim topic van ESPEasy. Vervang in de MQTTout node in de Server settings de FQDN hostname van jou ESPEasy device, in mijn geval ikea.sydspost.nl. . |
Warmwhite – MQTTout | Stuurt MQTT-bericht met payload waarde tussen 1 en 5 naar ikea/warmwhite topic van ESPEasy. Vervang in de MQTTout node in de Server settings de FQDN hostname van jou ESPEasy device, in mijn geval ikea.sydspost.nl. |
Deploy de flow door op de “Deploy” knop te klikken, de flow is nu actief.
Stap 8. Test werking
Voer binnen Domoticz de volgende testen uit:
- Zet lamp aan
- Zet lamp uit
- Laat lamp feller branden, lamp zou automatisch aan moeten gaan
- Dim lamp
- Stel warmere kleur in
- Stel koudere kleur in
Voer op de Styrbar afstandsbediening de volgende testen uit
- Druk kort (korter dan 500ms) op de “Brighter” (groot zonnetje) button, de lamp gaat nu aan en de status in Domoticz veranderd in “Aan”
- Druk langer dan 500ms op “Brighter” (groot zonnetje) button, de lamp gaat nu feller branden en in Domoticz stijgt de Dim waarde met 20%
- Druk langer dan 500ms op “Dim” (klein zonnetje) button, de lamp gaat nu minder fel branden en in Domoticz daalt de Dim waarde met 20%
- Druk langer dan 500ms op “<” button, de lamp gaat nu minder warm branden en in Domoticz daalt de WarmWhite waarde met 20%
- Druk langer dan 500ms op “>” button, de lamp gaat nu warmer branden en in Domoticz stijgt de WarmWhite waarde met 20%
- Druk kort (korter dan 500ms) op de “Dim” (klein zonnetje) button, de lamp gaat nu uit en de status in Domoticz veranderd in “Uit”
- Reboot Wemos, na reboot kalibreert Wemos de dim- en warmwhite stand zowel op het device als in Domoticz op maximaal en zet daarna de lampen uit
Stap 9. 3D-print behuizing voor Wemos D1 mini
De huidige behuizing van de afstandsbediening biedt niet genoeg ruimte voor de Wemos D1 mini. Op zich zou het batterijhouder hiervoor ruimte bieden, maar de bevestigingsnokjes van de bovenkant van de afstandsbediening lopen helaas doorheen.
Heb een 3D ontwerp gemaakt van een sokkel die achter de meegeleverde metalen bevestigingsmal valt en ruimte biedt voor de Wemos D1 mini. Op deze wijze blijft de afstandsbediening grotendeels intact. De jumperkabeltjes kunnen via een gaatje in de batterijenhouder, en een extra gaatje in de metalen bevestigingsmal doorgevoerd worden naar de Wemos. De Wemos klemt tussen twee geleiders.

Het ontwerp en de STL file vind je hier
File | Download |
Sokkel Styrbar afstandsbediening-Body.stl | https://drive.google.com/file/d/1TTW2Fftz0ttolTXOHRdb6pTMyL6ocyY-/view?usp=sharing |
Sokkel Styrbar afstandsbediening.FCStd | https://drive.google.com/file/d/1TTW2Fftz0ttolTXOHRdb6pTMyL6ocyY-/view?usp=sharing |
Stap 10. Montage
Haal de 6 jumperkabeltjes van de Styrbar los van het breadboard en knip van de andere zijde van het jumperkabeltje ook het stekkertje. Strip en vertin de afgeknipte zijde van de jumperkabeltjes met uitzondering van de zwarte GND draad. De metalen wandhouder van de Styrbar gaan we hergebruiken. Boor hierin met een 3mm staalboor twee kleine gaatjes op 10mm van de randen links boven en rechts beneden.

Pak de basis van de Styrbar (met de batterijhouder) erbij, en boor met een 4mm staalboortje een 3 tal gaatjes voor doorvoer van de jumperkabels in de batterijhouder (boor ze nog iets dichter tegen de aanzet dan op bijgaande foto te zien is (die van mij ziet er intussen uit als een gatenkaas ;-), want anders past de printplaat niet meer goed). Steek vervolgens de vcc (rood) en gnd (zwart) kabeltjes door het linker gaatje, en de overige 4 kabeltjes door de rechter gaatjes.
Schroef vervolgens de printplaat vast op de basis met de drie schroefjes.

Steek vervolgens alle kabeltjes door het grootste gat in de metalen wandplaat, en laat de metalen printplaat vastklikken op de basis.
Note: De klep van de batterijhouder gebruiken we niet, de batterijhouder gebruiken we voor de kabeldoorvoer naar de sokkel. Plaats geen batterijen in de batterijhouder, de Styrbar wordt gevoed vanuit de 3v3 aansluiting van de Wemos. Zowel batterijen plaatsen als voeding vanuit de Wemos kan brandgevaar opleveren !

Knip van een USB-kabel de stekker die je normaal in een apparaat stopt, maar behoud de USB-A stekker. Strip de kabel, en de draadjes in de kabel. Knip de shielding, witte en groen draden af. Vertin de rode draad, de zwarte niet, die wordt straks samengevoegd met de zwarte GND draad van de Styrbar printplaat.

Voer de USB kabel door het gaatje in de 3D print basis van de Wemos D1 mini.

Soldeer nu de draadjes op de Wemos D1 mini volgens onderstaande pinout
Wemos D1 Mini | Styrbar afstandsbediening | USB kabel |
5v | Rode draad (5v) | |
3v3 | VCC (Pin 13) | |
GND | GND (Pin 14) | Zwarte draad (GND) |
D1 (GPIO5) | PA01 (CLK, PIN 1) | |
D6 (GPIO12) | PA02 (Pin 2) | |
D2 (GPIO4) | PA03 (Pin 3) | |
D5 (GPIO14) | PA04 (Pin 4) |
En druk de Wemos D1 mini tussen de houders van de 3D sokkel die je in de vorige stap hebt geprint. Maak m.b.v. een tie-wrap een trek-beveiliging op de USB kabel
Note: Als je van plan bent de sokkel op een wand oid te monteren, dan is het nu de tijd om de sokkel op de wand vast te schroeven m.b.v. de twee gaatjes in de sokkel. Zelf heb ik met behulp van de meegeleverde dubbelzijdige sticker de sokkel op de kabelgoot bij mijn werkplek gemonteerd.
Schroef nu de metalen plaat vast op de sokkel met twee kleine schroefjes, druk de bovenkant van de Styrbar afstandsbediening terug op de onderkant. Hiervoor moet je behoorlijke druk uitoefenen, forceer dit niet waardoor de weerhaakjes afbreken. En laat als kers op de taart de onderkant vastklikken op de metalen plaat waarbij de kabeltjes in de ruimte van de batterijhouder vallen.

Noot: Mocht je in de toekomst vervangende of nieuwe lampen op de afstandsbediening willen aansluiten, klik dan de afstandsbediening los van de metalen plaat. Je kunt nu bij het pairingsknopje komen.
Sluit nu de Styrbar afstandsbediening aan op een vrije USB poort of oude telefoonoplader. En klaar is je project.