Steeds meer mensen hebben slimme apparaten in huis. Soms moet je veel geld uitgeven om ze nog slimmer te maken, maar het kan ook met een handig stopcontact met ESP8266 van maar tien euro.
Door: Adri Wischmann
Als je naar een sciencefictionfilm zit te kijken, denk je bij menig futuristisch huis wellicht: “DAT wil ik ook!” Een huis dat moeite doet om het je zoveel mogelijk naar je zin te maken en waar heel veel dingen automatisch gaan, zonder dat je er over na hoef te denken. Bijvoorbeeld dat de lampen automatisch in het hele huis uitgeschakeld worden zodra je naar bed gaat en de verse koffie klaar is wanneer je weer opstaat. Gelukkig is de laatste jaren de wens van een ‘zelfdenkend’ huis een stuk gemakkelijker te realiseren. Daar waar je vroeger een gigantisch systeem in je meterkast moest laten bouwen, kun je nu met behulp van een Raspberry Pi en wat software (Domoticz, OpenHab, etc.) je huis een paar erg leuke trucjes leren.
Tussenstekker
In plaats van de complete bedrading van je huis aan te passen, is het veel praktischer om met een soort tussenstekker te werken die je eenvoudigweg in een stopcontact steekt en waar je vervolgens een apparaat (lamp, koffiezetapparaat, etc.) mee kunt schakelen. Dit soort apparaatjes zijn er natuurlijk al langer, meestal met een afstandbediening zodat je vanaf de bank de schemerlamp kunt schakelen, maar veel verder komen dit soort gadgets niet. Wil je meer, dan moet je een stuk dieper in de buidel tasten (tussen de € 60,- en € 100,-) en kun je via je smartphone het betreffende stopcontact schakelen. Het probleem met dit soort apparaten is dat ze niet door de ‘oma-proef’ komen. Je kent het wel: je moeder of oma komt een nachtje logeren en opeens wordt je je er pijnlijk van bewust dat al die mooie lampen en het koffiezetapparaat alleen nog maar via een app op jouw telefoon geschakeld kunnen worden. Oma heeft geen smartphone en als ze die wel heeft, moet je eerst nog de app installeren en alles uitleggen.. niet erg handig. Speciaal daarvoor is er een ‘oma-proef’-oplossing: een super-smart stopcontact met een aan-uitknop!
ESP8266
Niet alleen bij iTead te koop, maar ook via Banggood al voor € 8,52 te verkrijgen |
Iets meer dan een jaar geleden bracht de firma Itead een klein blokje op de markt met daarin een ESP8266-micro-controller en een 220V-relais genaamd Sonoff (de naam zegt het al: Switch-On-Off). De firma had zijn eigen appje waarvoor je eerst een account op een server ergens in Azië moest aanmaken en dan kon je via je wifinetwerk het relais schakelen. Rond de ESP8266 van Espressif is de laatste jaren een gigantische developer-community opgestaan die ervoor gezorgd heeft dat je dit chipje gewoon met een Arduino-IDE en een beetje C, Lua of Micro-Python kunt laten doen wat je maar zou willen. Toen er een maand of zes geleden een versie van de Sonoff (de S20) op de markt kwam met de vormfactor van een opsteekstekker met een knopje en een lampje (beide erg belangrijk) voor de prijs van net iets meer dan € 10,- [1] wist ik het dan ook zeker:
hier gaan we veel plezier mee beleven!
Met een kleine truc kun je de Sonoff S20 van nieuwe software voorzien die van dit apparaat een intelligent stopcontact maakt, waar je in de winkel makkelijk de tienvoudige prijs voor zou moeten betalen. We maken een via je webbrowser aan te sturen stopcontact (met een aan-uitknop voor oma), waar een kleine webserver inzit en waarop je zelfs een klein eigen programma kunt laten draaien.
Eerst een waarschuwing: de handelingen die we hier gaan uitvoeren op de S20 zijn altijd uit de buurt van een stopcontact. Werk NOOIT met een geopend apparaat dat in het stopcontact zit. Voor je weet kom je in contact met 220 Volt en dat kan ernstige gevolgen voor je gezondheid hebben!
Aan de slag
Er moet nog wel wat nieuwe software op de S20 worden gezet.
Voor deze truc heb je nodig: een Sonoff-S20 (Europees model anders past hij niet in het stopcontact), een FTDI (usb-serieel-converter), een usb-kabel, wat draadjes, een schroevendraaier, misschien een soldeerboutje en natuurlijk een computer. Afhankelijk van welke versie van de S20 je hebt gekocht, zitten er één of drie schroefjes aan de achterkant (één zit er verstopt onder het kleine, Chinese garantiestickertje). Schroef hem open en trek voorzichtig de twee helften los, zodat je de printplaat kunt zien. Naast het drukknopje en het ledlampje zitten vier gaatjes op een rij die je gebruikt om een nieuw programma op de ESP8266 te zetten. Op onderstaandede foto zie je dat we er vier pinnetjes opgezet hebben (even het printplaatje losschroeven, solderen en klaar), maar met vier losse pinnetjes en even tijdens het herprogrammeren 30 seconden stevig vasthouden lukt ook.
Vervolgens moet er nieuwe software [2] op de S20 worden gezet. Pak het zip-bestand uit naar de map c:\s20.
Je kunt ook zelf de ESPEasy-software ophalen bij de mannen van Letscontrolit [3]. Kies daar voor de zip-file met de laatste release. Je ontvangt dan een zip-bestand met alle versies. Kies de versie met ‘normal’ en ‘ESP8266_1024’ in de naam. Maak een mapje aan op je computer (bijvoorbeeld met de naam S20) en zet het opgehaalde bestand hierin.
Stel de jumper van de FTDI in op 3,3 Volt en prik hem in de usb-poort van je computer. Waarschijnlijk zal je computer even de driversoftware voor deze serieel-converter van internet ophalen en dan is hij klaar voor gebruik. Vervolgens verbreek je de verbinding tussen de FTDI en je computer (trek de micro-usb uit de FTDI) en maak met draadjes de verbinding tussen de S20 en de FTDI zoals op de foto hieronder (GND aan GND, Vcc aan Vcc, Tx aan Rx en Rx aan Tx).
Truc
Nu komt de truc: om de ESP8266 die in de S20 zit in de programmeerstand te krijgen, moet je zijn drukknopje indrukken terwíjl je de FTDI weer via de usb met je computer verbindt. Dan ziet de ESP8266 zodra hij spanning krijgt namelijk, dat de knop tijdens het opstarten is ingedrukt en gaat hij wachten op nieuwe software. Start het flash-programma in de s20-map op je computer en kies bovenin voor het ESPEasy-bestand dat we eerder hebben opgehaald. Zet op dezelfde regel achteraan het adres: 0x00000. Kies bij instellingen voor 40MHz, DOUT, 8Mbit en zet SPIAutoset uit.
Druk op de startknop en kijk hoe de percentages op je scherm richting 100% gaan, terwijl de nieuwe firmware je nieuwe intelligente stopcontact in schiet. Als alles goed is, verandert je startknop op je scherm in de tekst Finished en kun je de FTDI loskoppelen en de S20 weer netjes in elkaar schroeven. Een (Engelstalig) voorbeeldfilmpje vind je op Youtube [4].
Instellen
Je hebt nu een intelligent stopcontact met ESPEasy-firmware erop, maar dat moet je nog wel even instellen zodat hij functioneert zoals jij dat wil. Zodra je S20 voor de eerste keer in een stopcontact steekt, zal die een eigen wifipunt de lucht in slingeren. Dus pak je smartphone, tablet of computer en stel je wifi in op het netwerk ‘ESPEasy’ en gebruik als wachtwoord ‘configesp (zonder de aanhalingstekens). Open je browser en je ziet een overzicht van de wifinetwerken die de S20 heeft gevonden. Kies je eigen netwerk, geef het wachtwoord in en druk op connect. De S20 zal herstarten, maar zichzelf nu verbinden met je eigen wifinetwerk. Op het scherm van je telefoon, tablet of computer verschijnt het IP-adres waaronder de S20 op je netwerk te vinden zal zijn (even opschrijven). Verbind je computer weer met je eigen wifinetwerk, open je webbrowser en typ het ip-adres in dat je zojuist hebt opgeschreven. Nu zal de S20 een mooie webpagina tevoorschijn toveren waar je van alles kunt instellen om dit apparaatje zo slim mogelijk te maken.
Allereerst kun je ervoor zorgen dat de S20 zijn klok gaat synchroniseren. Kies tools en daarna advanced en vink use NTP aan, vul bij NTP Hostnaam in: nl.pool.ntp.org en bij Timezone offset: 60, vink Rules aan en druk op [submit].
Ga nu naar hardware, kies bij GPIO-LED voor GPIO13(D7), vink Inverse aan en druk op submit (zie afbeelding hieronder). Nu zal op de S20 het groene lampje in de drukknop gaan branden en een soort hartslag laten zien zodra hij met wifi communiceert.
Gevorderd
Dit gedeelte is bedoeld voor de gevorderde computergebruiker, want we gaan nu wat dieper in het apparaat. We willen dat hij via wifi te schakelen is, maar hij moet ook reageren op de drukknop: ga naar devices en druk op Edit1. Geef de waarden in zoals op onderstaande foto:
Device: Switch Input, Name: SWITCH, Enabled: aan, Inverse Logic: aan, 1st GPIO: GPIO-0 (D3), Value: SWITCH en druk op submit en close.
Doe dit nog een keertje voor Edit2. Geef de waarden in zoals op de foto, maar dan nu:
Device: Switch Input, Name: GPIO12, Enabled: aan, 1st GPIO: GPIO-12 (D6), Value: SW12 en druk op submit en close.
We zijn er bijna. Ga nu naar rules en typ de volgende regels (die zorgen ervoor dat als de knop wordt ingedrukt en het stopcontact aan is, hij uit zal gaan en andersom):
Rules |
KLAAR!
Dat wil zeggen: je kunt nu met de knop op de S20 het stopcontact schakelen, maar ook via je webbrowser en het commando: http://192.168.4.1/control?cmd=gpio,12,1 inschakelen en via http://192.168.4.1/control?cmd=gpio,12,0 uitschakelen (voor 192.168.4.1 even je eigen ip-adres intypen dat je eerder had opgeschreven).
Het begin van…
Maar dat is eigenlijk nog maar het begin… Kijk op de wiki van ESPEasy [5] hoe je dit intelligente stopcontact kunt programmeren. Bijvoorbeeld als een timer voor het opladen van je telefoon die iedere keer wanneer je de knop indrukt, drie uur de stroom inschakelt in plaats van hem de hele nacht laten opladen.
In je stopcontact zit nu ook MQTT-protocol en kun je via Node-red of IFTTT allerlei commando’s sturen. Koppel je S20 aan Domoticz en laat iedere dag je lampen aangaan wanneer de zon in jouw woonplaats ondergaat (dus nooit meer je tijdklokje aanpassen op herfst en winter). Laat je lampen op willekeurige tijd in- en uitschakelen wanneer je niet thuis bent of laat Alexa op jouw stemcommando de lampen schakelen. Met dit handige stopcontact voor een tientje kun je heel erg veel leuke dingen doen!
Infolinks
[1] www.itead.cc/smart-home/smart-socket.html
[2] www.iotnederland.nl/ESP8266flashtool.zip
[3] https://github.com/letscontrolit/ESPEasy/releases
[4] www.youtube.com/watch?v=GbaMF6zfQZU
[5] www.letscontrolit.com/wiki/index.php/ESPEasy