Zo maak je je eigen slimme verlichting
Er bestaan heel wat modules waarmee je je verlichting op afstand kunt aansturen, maar meestal zijn die vrij duur of gebruiken ze verouderde technologie. In dit artikel nemen we een goedkope wifi-module, vervangen de firmware en herprogrammeren we deze tot een volwaardige schakelaar voor je eigen slimme verlichting.
Boodschappenlijstje
Sonoff Basic WiFi Switch; ca. € 5,-
- 3,3 volt usb-naar-ttl break-outbordje (of seriële kabel); € 2,
- 5-pins mannelijke pinheader
- 4 vrouwelijk-naar-vrouwelijk jumperwires
- Soldeerbout en soldeertin Totale kosten: ca. € 7,-
Veel modules voor slimme verlichting zijn duur of gekoppeld aan een specifieke app. De goedkopere systemen hebben dat laatste nadeel vaak niet, maar maken dan bijvoorbeeld gebruik van de 433MHz-frequentieband. Die signalen zijn niet beveiligd, waardoor iedereen in je buurt in staat is om je verlichting in en uit te schakelen. Bovendien zijn die signalen ook nogal storingsgevoelig.
Er zijn wel andere goedkope modules om je verlichting te schakelen die niet aan een app gebonden zijn, maar dan moet je zelf de handen uit de mouwen steken. De Sonoff Basic van het Chinese bedrijf iTead is zo’n goedkope module: op Chinese websites als www.banggood.com en www.aliexpress.com vind je ze voor rond de vijf euro. Standaard gebruik je ze met een app van iTead, maar door nieuwe firmware op de microcontroller te installeren, maak je het apparaatje open voor je eigen systemen. Dat is wat we in deze masterclass gaan doen. Het apparaatje is op een ESP8266-microcontroller gebaseerd en die kunnen we programmeren.
©PXimport
De Sonoff Basic is op een ESP8266-micro-controller gebaseerd en die kunnen we prima programmeren.
-
Arduino IDE klaarmaken
Om de firmware op de Sonoff Basic te flashen, werken we met de Arduino IDE, die naast de Arduino-microcontrollers ook de ESP8266 ondersteunt. Om met de ESP8266 aan de slag te gaan in de Arduino IDE, dien je eerst de ondersteuning ervoor in te schakelen. Open daarvoor het menu Bestand / Voorkeuren en voer bij Additionele Board Beheer URLs de url http://arduino.esp8266.com/stable/package_esp8266com_index.json in. Bevestig met OK onderaan en herstart de Arduino IDE. Open daarna in het menu Hulpmiddelen / Board: het Board Beheer. Zoek daar op esp en installeer esp8266.
Kies in het menu Hulpmiddelen / Board: voor Generic ESP8266 Module, zet (ook via het menu Hulpmiddelen) de Flash Mode op DOUT en de Flash Size op 1M (64 K SPIFFS).
Download dan het zip-bestand van GitHub met de broncode van de Tasmota-firmware en pak het uit. Kopieer de directory sonoff naar de directory Arduino in je home-directory en de inhoud van de directory lib naar de directory Arduino\libraries. Open het bestand sonoff.io in de directory Arduino\sonoff in de Arduino IDE en klik linksboven op het vinkje om te controleren of de code correct compileert. Zo ja, dan is het tijd om de hardware klaar te maken!
©PXimport
Sonoff-module openmaken
Open de behuizing van de Sonoff-module door met een schroevendraaier in het spleetje naast de groene schroefterminal te duwen tot het plaatje aan de onderkant loskomt. Daarmee verbreek je overigens het garantielabel (althans, we vermoeden dat dat het is, er staat iets Chinees op gedrukt).
In het midden, vlak naast de 470 µF-condensator, zie je vijf gaatjes in het printplaatje (zie afbeelding #plaats-op-pagina#). Het gaatje dat het verst van de knop staat, gebruik je niet. De vier andere zijn (van dichtst bij de knop tot verder van de knop) achtereenvolgens 3,3 V, RX, TX en GND.
Verzeker je ervan dat je usb-naar-ttl-kabel (zie boodschappenlijstje) 3,3 volt op de pinnen zet, niet alleen voor de I/O-pinnen, maar ook voor de spanningspin.
Op sommige usb-naar-ttl break-outbordjes kun je dit met een jumper op de juiste pinnetjes instellen. Sommige kabels hebben vier gekleurde draadjes: rood = 3,3 V, zwart = GND, wit = RX en groen = TX. Bij een break-outbordje kijk je naar de aanduidingen bij de pinnen. Sluit nu de pinnen aan zoals in de tabel ‘Aansluiten’
©PXimport
Solderen
Om de pinnen betrouwbaar aan te sluiten, moet je een header op de gaatjes in het printplaatje van de Sonoff Basic wifi-schakelaar solderen. Wil je die moeite niet doen, probeer dan om de jumperwires van de usb-naar-ttl-kabel een beetje schuin in de gaatjes van de Sonoff Basic te drukken zodat ze contact maken. Dat bleek bij ons niet betrouwbaar genoeg te werken, dus we hebben toch de moeite genomen om een header op de Sonoff Basic te solderen.
Firmware flashen
Open eerst in de Arduino IDE het bestand user_config.h van de Sonoff-code voor wat instellingen. Haal de twee commentaartekens (//) weg voor de regel #define MY_LANGUAGE nl-NL om de interface in het Nederlands in te stellen. In de regel #define PROJECT "sonoff" vervang je sonoff door de naam van je project (en de quotes blijven dus staan). Geef elke Sonoff-module in je huis een unieke naam. Je wifi-netwerk definieer je in STA_SSID1 en je wifi-wachtwoord in STA_PASS1. Je kunt ook een tweede wifi-netwerk definiëren. Dat zijn de belangrijkste instellingen. De andere kun je later nog altijd veranderen.
Sla je wijzigingen op, druk op het knopje op het Sonoff-printplaatje (en houd deze ingedrukt) en druk de draadjes op het printplaatje goed aan. Sluit dan de usb-naar-ttl-kabel op je computer aan en laat het ingedrukte knopje na enkele seconden los. Het Sonoff-bordje staat nu in flashmodus.
Kijk in de Arduino IDE na of de juiste seriële poort is ingesteld. Dat zie je onderaan rechts of in het menu Hulpmiddelen / Poort. Verander indien nodig de poort in dat menu. Klik tot slot op het pijltje naast het vinkje links bovenaan om het flashen te beginnen. Als je geen pinheader hebt gesoldeerd, houd dan de hele tijd de draadjes op het Sonoff-printplaatje goed vast. Als de firmware correct geflasht is, krijg je onderaan de console van de Arduino IDE 100% te zien en knippert het groene ledje op de Sonoff-module één keer. Je kunt de usb-naar-ttl-kabel nu verwijderen.
©PXimport
Apparaten schakelen
De Sonoff Basic wordt in de markt gezet als slimme schakelaar voor verlichting, zoals een bureaulamp, staande lamp, sfeerverlichting of elke andere verlichting die je normaal in het stopcontact steekt. Je kunt er echter willekeurige apparaten mee in- en uitschakelen. Denk maar aan je koffiezetapparaat, waterkoker of ventilator. Zolang het maar om een tweedraadssysteem gaat met een fase- en een nuldraad en er niet meer dan 10 ampère door gaat. Denk er wel aan dat je altijd zelf nog de stroomkabel van het apparaat moet doorsnijden en de Sonoff-module tussen beide delen van de kabel dient aan te sluiten. De Sonoff-module neemt dan immers de taak van schakelaar over. Overigens kun je de bestaande schakelaar van bijvoorbeeld je bureaulamp altijd nog hergebruiken. Herinner je je het eerdergenoemde vijfde gaatje/pinnetje op het printplaatje van de Sonoff-module? Dat is door de ESP8266 te adresseren als GPIO14. Door de schakelaar met GND en GPIO14 te verbinden, kun je ook met de schakelaar nog je lamp in- en uitschakelen, zelfs als je wifi niet werkt. Maar met het knopje in de Sonoff-behuizing bereik je hetzelfde effect.
De Sonoff-module werkt niet alleen met verlichting, maar ook met andere apparaten.
-
Sonoff-module aansluiten
Nu je Sonoff-module is geflasht met nieuwe firmware, kun je deze aansluiten op de verlichting die je ermee wilt schakelen. Dat werkt overigens niet alleen met verlichting, maar ook met andere apparaten (zie kader ‘Apparaten schakelen’). Wij probeerden dit uit met sfeerverlichting.
Voor je met het aansluiten begint, verzeker je je ervan dat de usb-naar-ttl-kabel niet meer is aangesloten. Zorg ook dat je de stekker van de verlichting eruit hebt getrokken.
Knip de kabel van je sfeerverlichting door vóór en achter de schakelaar. Die schakelaar hebben we niet meer nodig, want we gaan de verlichting schakelen met de Sonoff-module. Dat is niet alleen op afstand via wifi mogelijk, maar ook via het knopje dat uit de uitsparing van de behuizing van de Sonoff-module komt.
Strip beide kanten van de kabel van je verlichtingskabel, zodat je twee keer twee draden hebt met aan het uiteinde over enkele millimeters de isolatie verwijderd. Aan elke kant van de Sonoff-module heb je twee schroefverbindingen. Aan de kant die met INPUT is aangeduid, steek je de draden die naar de stekker gaan, fase naar L en nul naar N. Aan de kant die met OUTPUT is aangeduid, steek je de draden die naar de verlichting gaan. Schroef de draden telkens goed vast, zet het deksel van de behuizing erop en schroef het deksel stevig op de onderkant van de behuizing met de meegeleverde schroeven. Doe dit alles aandachtig zodat je geen fouten maakt!
Andere interessante Sonoff-producten
Het bedrijf iTead heeft nog allerlei andere vergelijkbare producten op de markt, alle gebaseerd op een ESP8266-microcontroller. De Tasmota-firmware ondersteunt deze allemaal en heeft op zijn wiki uitgebreide informatie met foto’s staan over hoe je de firmware erop installeert en welke hardware-aanpassingen nodig zijn om een seriële verbinding op te zetten. Zo schakelt de Sonoff Pow niet alleen een apparaat, maar meet het ook het stroomverbruik. De Sonoff Dual kan twee apparaten tegelijk schakelen en de Sonoff 4CH vier apparaten. Wil je eenvoudig een slimme stekker in het stopcontact steken, kies dan de Sonoff S20. En de Sonoff Touch is een wandschakelaar in de vorm van een glazen paneel dat op aanrakingen reageert, met de Sonoff T1 als variant die één of twee knoppen op het paneel toont. Er zijn ook producten die naast wifi ook de 433MHz-frequentieband ondersteunen en daardoor compatibel zijn met KlikAanKlikUit (KaKu). Zo is het mogelijk je Sonoff-modules met een KaKu-afstandsbediening te besturen.
©PXimport
Steek de stekker nu in het stopcontact. De Sonoff-module wordt nu door de stekker gevoed en functioneert als schakelaar tussen het stopcontact en je verlichting. Druk je op het knopje dat uit de behuizing steekt, dan gaat niet alleen het ledje in de behuizing aan, maar ook de verlichting. En druk je er nog eens op, dan gaan zowel het ledje als de verlichting uit.
Maar daarvoor heb je de Sonoff Basic natuurlijk niet gekocht. De ESP8266-microcontroller heeft ondertussen een wifi-verbinding opgezet, zodat je ze ook op afstand kunt schakelen via het netwerk. Zoek in de dhcp-leases van je router het ip-adres van je Sonoff-module op en ga ernaar toe via je browser. Je krijgt een pagina te zien met in het groot de status van de schakelaar ON of OFF. Als je eronder op het knopje Toggle klikt, schakel je de module in en uit. Dat gebeurt bijna realtime. En als je op het knopje op de behuizing van de module klikt, wordt de status ook in de webinterface aangepast, zij het iets trager. Ga daarna naar Configuratie / Configureer Overige, stel een wachtwoord voor de webinterface in en klik op Opslaan.
Waterdichte behuizing
De Sonoff Basic is in principe ook buiten in te zetten als je bijvoorbeeld de buitenverlichting, de verlichting in je tuinhuis of het bewateringssysteem van je tuin wilt schakelen. Maar dan moet je wel maatregelen nemen om vocht in de Sonoff-module te vermijden. Nu verkoopt iTead ook een waterdichte IP66-behuizing met de afmetingen van de Sonoff Basic. Je plaatst daarin de Sonoff-module en laat de bekabeling van het stopcontact en naar de verlichting door twee waterdichte PG7-connectoren gaan. Dit is overigens niet alleen buiten handig, maar ook op risicovolle plaatsen zoals in de kinderkamer of in de keuken (als je bijvoorbeeld je koffiezetapparaat wilt schakelen).
©PXimport
Mosquitto installeren op je domoticacontroller
Uiteraard wil je je slimme verlichting ook via je domoticasysteem besturen. Gelukkig ondersteunt de Tasmota-firmware allerlei opensource-domoticasystemen (zie ook het kader ‘Integratie met domoticacontrollers’). We tonen je hier hoe je de Sonoff-modules met Domoticz integreert.
De integratie met Domoticz verloopt via het protocol mqtt (Message Queuing Telemetry Transport), een lichtgewicht protocol voor IoT-toepassingen. We installeren dus eerst een mqtt-broker op de Raspberry Pi waarop Domoticz draait:
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install mosquitto mosquitto-clients
Maak nu een gebruiker mqtt en een bijbehorend wachtwoord aan voor Mosquitto:
sudo mosquitto_passwd -c /etc/mosquitto/pwfile mqtt
Open het configuratiebestand van Mosquitto met de teksteditor nano:
sudo nano /etc/mosquitto/mosquitto.conf
En voeg daaraan de volgende twee regels toe:
allow_anonymous false
password_file /etc/mosquitto/pwfile
Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X.
Open dan het opstartbestand met:
sudo nano /etc/rc.local
En zet helemaal achteraan, vlak voor de regel met exit 0, de volgende regel:
/usr/sbin/mosquitto -d
Herstart nu je Pi met sudo reboot.
Integratie met domoticacontrollers
De Tasmota-firmware heeft uitgebreide ondersteuning voor diverse (opensource) domoticacontrollers. Lees op de wiki hoe je de Sonoff-module met je favoriete domoticasysteem integreert. Meestal gebeurt dat via het protocol mqtt (Message Queuing Telemetry Transport), een lichtgewicht protocol voor IoT-toepassingen. Je hebt dan ook een mqtt-broker nodig. Op deze manier integreer je je Sonoff-module met openHAB, Home Assistant, Domoticz, HomeBridge en HomeSeer. De Sonoff-module is ook via eenvoudige http-aanvragen aan te sturen. Dus in principe kun je de module met ieder domoticasysteem of computerprogramma integreren dat http-aanvragen kan doen. Maar zonder mqtt heb je niet de terugkoppeling naar het domoticasysteem als je op de knop op de behuizing van de Sonoff-module klikt of de Sonoff-module via de ingebouwde webinterface schakelt. Dus in de meeste gevallen loont het de moeite om een mqtt-broker te installeren.
Met Domoticz kun je je slimme verlichting ook via je domotica-systeem besturen.
-
Virtuele schakelaar in Domoticz
Klik in het menu Instellingen van Domoticz op Hardware en voeg een apparaat toe van het type MQTT Client Gateway with LAN interface. Geef het apparaat een naam, voer het adres en de poort van je mqtt-broker in (localhost en 1883), de gebruikersnaam mqtt en het wachtwoord dat je ervoor hebt ingesteld. Klik op Toevoegen om het apparaat aan te maken.
Test nu op de Raspberry Pi of je de sensorgegevens van je Domoticz-installatie via mqtt te zien krijgt:
mosquitto_sub -h localhost -u mqtt -P WACHTWOORD -v -t "#"
Als je domoticasysteem heel wat sensoren heeft, zie je bijna onmiddellijk waardes voorbijkomen. Met Ctrl+C breek je de uitvoer af.
Als je nog geen hardware van het type Dummy hebt aangemaakt in Domoticz, doe dat dan. Selecteer daarna de dummy hardware en klik op Maak virtuele sensoren. Geef de virtuele sensor een naam en kies als type Schakelaar.
Ga daarna naar Instellingen / Apparaten en zoek op de naam die je aan je virtuele schakelaar hebt gegeven. Kijk daar in de kolom Idx en onthoud dit getal.
©PXimport
Mqtt configureren in Tasmota
Dan rest ons nu nog als enige taak om mqtt en Domoticz in de webinterface van onze Sonoff-module te configureren. Klik op Configuratie en dan op Configureer MQTT. Vul bij Host het ip-adres in van je mqtt-broker (in ons geval de Raspberry Pi waarop ook Domoticz draait). Poort laat je op 1883 staan. Vul ook de gebruiker en het wachtwoord in die je voor Mosquitto hebt ingesteld. De rest van de instellingen zijn in orde. Klik op Opslaan. De Sonoff-module herstart nu na enkele seconden en past de configuratiewijzigingen toe.
Om nu te controleren of je Sonoff-module correct met je mqtt-broker communiceert, voer je op je Raspberry Pi de volgende opdracht uit:
mosquitto_sub -h localhost -u mqtt -P WACHTWOORD -v -t stat/sonoff1/POWER
Als je nu op het knopje van de Sonoff-module of op de knop Toggle in de webinterface klikt, zie je in de uitvoer van mosquitto_sub de meldingen stat/sonoff1/POWER ON en stat/sonoff1/POWER OFF voorbijkomen.
Zowel Domoticz als de Sonoff-module communiceren nu met de mqtt-broker. Als laatste leggen we nu nog de link tussen Domoticz en de Sonoff-module. Klik daarvoor in de webinterface van de Sonoff-module op Configuratie en dan Configureer Domoticz. Vul bij Idx 1 het id in van je virtuele schakelaar in Domoticz en klik op Opslaan. Nadat je Sonoff-module is herstart, is de koppeling in orde.
Kijk in het tabblad Schakelaars van Domoticz naar het icoontje van je Sonoff-schakelaar. Als je op de knop van je Sonoff-module of in de webinterface op de knop Toggle klikt om je verlichting in te schakelen, gaat het icoontje van de lamp in de Domoticz-interface aan. Maar het werkt ook andersom: klik je daarna in Domoticz op het icoontje van de lamp, dan gaat je Sonoff-module en dus de daaraan hangende sfeerverlichting weer uit.
En verder
Je hebt nu een slimme verlichting gemaakt, maar de Tasmota-firmware maakt nog veel meer mogelijk. Zo kun je niet alleen een extra schakelaar op GPIO14 aansluiten (het vijfde pinnetje dat we niet gebruikten voor de seriële verbinding), maar ook een sensor of andere componenten. De firmware ondersteunt onder andere temperatuursensoren, lichtsensoren, bewegingsdetectoren, luchtkwaliteitssensoren en zelfs infraroodzenders en -ontvangers en NeoPixel rgb-leds. Bovendien is de broncode van de firmware volledig open en heb je de toegang tot de veelzijdige ESP8266-microcontroller, dus je kunt hier heel wat leuke projecten mee maken! Bekijk voor meer inspiratie ook eens de discussiegroep SonoffUsers.
Updates
De Tasmota-firmware heeft een knap systeem opgezet om de firmware van je Sonoff-modules altijd up-to-date te houden zonder dat je telkens je seriële kabel weer moet bovenhalen en de behuizing moet openmaken. Na de eerste installatie van de firmware kun je via het netwerk upgraden. Klik daarvoor in de webinterface op Opwaarderen. Daar kun je het firmware-image ofwel van een webserver downloaden (je eigen webserver of een publieke server van het Tasmota-project), ofwel het bestand van je lokale computer uploaden. Meer informatie vind je op de wiki van Tasmota. Voor wie heel wat Sonoff-modules in huis heeft, is SonWEB interessant: een beheerdersinterface die je op je eigen webserver installeert en waarmee je al je modules configureert en upgradet.
©PXimport
De Tasmota-firmware ondersteunt allerlei sensoren, knoppen en zelfs NeoPixel rgb-leds.
-