Het (voorlopig) laatste deel
Dit is het derde en (voor alsnog) laatste deel in deze blog-serie m.b.t. het flashen van de Woox slimme stekkerdoos naar Tasmota om deze te kunnen gebruiken met Domoticz. Na deel 1 en deel 2 geef ik in dit deel inzicht in de configuratie zoals ik die gemaakt hebt. En hoe ik de koppeling tussen de slimme stekkerdoos en Domoticz heb gerealiseerd.
Beoogde doel
Zoals ik in de vorige blog al beschreef, heeft de standaard configuratie als belangrijkste nadeel dat de drukknop niet langer alle stekkerinsteken schakelt, maar slechts 1 ervan. Mijn doel was nadrukkelijk om met de drukknop alle stekkerinsteken + de USB-poorten in- en uit te kunnen schakelen.
De blauwe led naast de schakelaar schakelde ook niet langer mee en had daarmee ook geen duidelijke functie meer. Deze wilde ik weer als generieke indicator laten fungeren. Wordt alles aangezet, dan staat deze led ook aan, wordt alles uitgezet, dan gaat deze led ook uit.
Tot slot natuurljk de koppeling met Domoticz. In Domoticz wilde ik alle stekkerinsteken + de USB-poorten individueel maar ook als geheel kunnen schakelen. En om dat goed te kunnen ook de status van allemaal terug gevoerd krijgen naar Domoticz toe. Ongeacht hoe deze geschakeld worden (kan naast Domoticz ten slotte ook via de drukknop en via de Tasmota interface zelf).
Tasmota template configuratie
Na het nodige uitproberen ben ik uiteindelijk op deze configuratie uitgekomen (in te stellen in Tasmota onder Configuration en dan Configure Template);
GPIO0 Relay5 (25)
GPIO1 None (0)
GPIO2 None (0)
GPIO3 None (0)
GPIO4 None (0)
GPIO5 Relay3 (23)
GPIO9 None (0)
GPIO10 None (0)
GPIO12 Relay1 (21)
GPIO13 Button1 (17)
GPIO14 Relay2 (22)
GPIO15 Relay4 (24)
GPIO16 None (0)
ADC0 None (0)
Belangrijkste wijziging t.o.v. de origile configuratie is het wijzigen van GPIO0 van LedLinki naar Relay5. Daarmee krijg je de mogelijkheid om deze (als ware het een relay) aan of uit te zetten. Verder heb ik alle niet gebruikte GPIO-poorten ingesteld op None.
Domoticz voorbereiden
In Domoticz dienen vier virtuele schakelaar aangemaakt te worden. Deze zullen we later configureren om mee te schakelen met de diverse onderdelen van de slimme stekkerdoos. Daarnaast kan de stekkerdoos hiermee uiteindelijk vanuit Domoticz worden bediend.
Ga in Domoticz naar Instellingen en vervolgens naar Hardware. Maak onder aan de pagina een nieuw item aan met de naam Woox stekkerdoos (of een naam die toepasselijker is natuurlijk) van het type Dummy.
Als je deze hebt aangemaakt kan je in hetzelfde scherm vervolgens op de knop Maak virtuele sensoren klikken. Doe dit 5 keer en maak sensoren aan van het type “Schakelaar”. Geef deze de namen Alles, Insteek 1, Insteek 2, Insteek 3 en USB-poorten.
Ga nu naar Instellingen en vervolgens naar Apparaten en zoek in dit scherm de zojuist aangemaakte schakelaars op. Deze hebben alle vijf een eigen IDX-nummer (eerste kolom in de tabel). Deze IDX-nummers heb je later nodig om in te vullen bij de configuratie van Domoticz.
Tasmota configureren via de console
Waar Tasmota via de webinterface al het nodige eenvoudig laat configuren, laat het je pas echt mooie dingen doen via de zogenaamde console. Deze is via het hoofdmenu te vinden onder de knop Console.
Drukknop loskoppelen
Om de functionaliteit van de drukknop zelf te bepalen dien je deze los te koppelen van z’n standaard functionaliteit. Om dit te doen geef je het volgende commando;
SetOption73 1
Drukknop programmeren
De drukknop is nu te programmeren op basis van het aantal kliks dat ermee gegeven wordt. Ik heb hierbij gekozen om de knop zo te programmeren dat deze bij 1 keer klikken (state = 10) alles aanzet (Power0 = 1) en bij twee keer klikken (state = 11) alles weer uitzet (Power0 = 0).
Dit gedrag programmeren kan binnen zogenaamde rules en deze zijn genummerd. Onder Rule 1 heb ik het gewenste gedrag van de knop geplaatst middels de volgende 2 regels;
ON Button1#state=10 DO Power0 1 ENDON
ON Button1#state=11 DO Power0 0 ENDON
Naar aanleiding van dit schakelen willen we dat in Domoticz de virtuele schakelaar met de naam Alles meeschakelt. Dit doen we door een zogenaamde WebSend te doen naar de API van Domoticz;
ON button1#state=10 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON
ON button1#state=11 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON
Belangrijk hierin is om x.x.x.x:yy te vervangen voor het IP adres en het poortnummer van de server waarop Domoticz draait. En je dient idx=123 te vervangen voor het IDX-nummer van de virtuele schakelaar met de naam Alles.
Om Rule1 te programmeren dien je alle regels uiteindelijk achter elkaar te zetten. Je komt dan uit op het commando;
Rule1 ON button1#state=10 DO cmnd/topicSINGLEPRESS/Power0 1 ENDON ON button1#state=10 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON ON button1#state=11 DO cmnd/topicDOUBLEPRESS/Power0 0 ENDON ON button1#state=11 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON
Hierna is het belangrijk om Rule 1 ook daadwerkelijk te activeren. Doe je dit niet, dan doet de drukknop nog steeds niet. Het commando hiervoor is;
Rule1 1
Aan- en uitzetten van losse onderdelen
Via de drukknop kunnen we nu alle stekkerinsteken en de USB-poorten in een keer aan- of uitschakelen. Maar via de interface van Tasmota zijn deze ook apart te bedienen. Wanneer dit gebeurt, wil je dit ook terug zien in Domoticz.
Onder Rule2 heb ik om die reden voor alle drie de stekkerinsteken en de USB-poorten de API-calls gezet om dit te bereiken;
ON Power1#state=1 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON
ON Power1#state=0 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON
Deze twee regels (één voor aanzetten, en eentje voor uitzetten) herhalen zich uiteraard voor iedere stekkerinsteek en voor de USB-poorten. Hierbij is het belangrijk om helder te hebben dat Power1 wordt doorgenummerd (Power2 en Power3 zijn uiteraard stekkerinsteek 2 en 3, Power 4 zijn de USB-poorten). Verder dient x.x.x.x:yy opnieuw vervangen te worden voor het IP-adres en poort-nummer van Domoticz, en idx=123 dient vervangen te worden voor het IDX-nummer van de verschillende virtuele schakelaars.
Ook hier dient alles weer achter elkaar gezet te worden om te kunnen invoeren in de console. Je komt dan uit op het volgende commando;
Rule2 ON Power0#state=1 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON ON Power0#state=0 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON ON Power1#state=1 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON ON Power1#state=0 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON ON Power2#state=1 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON ON Power2#state=0 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON ON Power3#state=1 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON ON Power3#state=0 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON ON Power4#state=1 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=On ENDON ON Power4#state=0 DO WebSend [x.x.x.x:yy] /json.htm?type=command¶m=switchlight&idx=123&switchcmd=Off ENDON
Vast IP-adres
Om twee redenen is het handig om een vast IP-adres in te stellen. Om te beginnen weet je ten minste waar de stekkerdoos uithangt in je netwerk (vind ik zelf in ieder geval erg handig). Maar daarnaast is dit nodig om vanuit Domoticz api-call te kunnen doen naar Tasmota.
In Tasmota kan een vast IP-adres via de console worden ingesteld met het volgende commando (uiteraard x.x.x.x vervangen voor het beoogde IP-adres);
IPAddress1 x.x.x.x
Domoticz configureren
Om de stekkerdoos vanuit Domoticz te kunnen bedienen (en dan niet alleen handmatig, maar bijvoorbeeld ook in je geprogrammeerde gebeurtenissen), is er een laatste stukje configuratie nodig. De aangemaakte virtuele schakelaars doen effectief nog niets. Ze veranderen mee met de status van de slimme stekkerdoos. Maar wanneer je erop klikt in Domoticz schakelt er niets aan of uit in de stekkerdoos.
Om dit te bereiken is het nodig om voor iedere virtuele schakelaar de juiste API-call naar Tasmota in te stellen. Dit kan door in Domoticz onder de tab Schakelaars de nieuw aangemaakte schakelaars op te zoeken. Bij iedere schakelaar kan je kiezen voor Aanpassen. In de velden Aan actie en Uit actie vul je vervolgens de juiste API-calls in. Vergeet daarna niet om af te ronden door op de knop Opslaan te klikken.
De benodigde actie om in te vullen per schakelaar zijn de volgende;
- Schakelaar: Alles
Aan actie: http://x.x.x.x/cm?cmnd=Power0%201
Uit actie: http://x.x.x.x/cm?cmnd=Power0%200 - Schakelaar: Insteek 1
Aan actie: http://x.x.x.x/cm?cmnd=Power1%201
Uit actie: http://x.x.x.x/cm?cmnd=Power1%200 - Schakelaar: Insteek 2
Aan actie: http://x.x.x.x/cm?cmnd=Power2%201
Uit actie: http://x.x.x.x/cm?cmnd=Power2%200 - Schakelaar: Insteek 3
Aan actie: http://x.x.x.x/cm?cmnd=Power3%201
Uit actie: http://x.x.x.x/cm?cmnd=Power3%200 - Schakelaar: USB-poorten
Aan actie: http://x.x.x.x/cm?cmnd=Power4%201
Uit actie: http://x.x.x.x/cm?cmnd=Power4%200
Tot slot
Na het uitvoeren van alle stappen is het zaak om e.e.a. te testen. Door één maal te klikken op de drukknop, zou de volledige stekkerdoos aan moeten gaan (eenvoudig te controleren door te kijken of alle vijf de blauwe ledlampje aan gaan). Werkt dit goed, controleer dan of in Domoticz ook alle virtuele schakelaars zijn aangezet. Dezelfde controle doe je door dubbel te klikken op de drukknop. Alles zou uit moeten gaan, zowel bij de slimme stekkerdoos als in Domoticz. Controleer daarna ook of je alle onderdelen (en alles tegelijk) kan schakelen vanuit Domoticz.
Werkt alles? Dan is het tijd om af te sluiten met een drie-werf Hoera! 😉
Veel plezier ermee.