ESP8266

Over de problemen die ik ben tegengekomen bij het hakken/hacken van de ESP8266 en de Sonoff Basic.

2 & 3 maart 2019

In oktober 2017 bestelde ik in China een paar dingetjes. Wat ik bestelde was een gevolg van het bekijken van een tiental video’s op youtube van de ingenieur Andreas Spiess – ‘the guy with the Swiss accent’. Ik werd behoorlijk aan het schudden gebracht door Herr Spiess. Het lijkt allemaal heel makkelijk wanneer hij iets doet. Je gaat al gauw denken dat JIJ het ook kunt. Behalve dan dat ik geen ingenieur ben en helemaal geen technische opleiding heb genoten. Wel heb ik veel computerervaring.

De dingetjes die ik bestelde hadden een gemeenschappelijk thema: ESP8266. Een kleine microprocessor voorzien van WiFi. De ESP8266 en zijn modernere broertje, de esp32, zijn ongelooflijk aantrekkelijk wanneer het om het automatiseren van het huis gaat.

Om de esp8266 te programmeren (i.c. te hakken/hacken) heb je een verbinding met een computer nodig. Die verbinding loopt dan via de usb-bus van de computer en wordt dan omgevormd naar een signaal voor een seriële poort, i.c. seriële terminal. Dat dingetje, hier FTDI genoemd, kocht ik voor iets minder dan twee euro. Hier in de winkel betaal je er al gauw € 20,– voor. Eén ding had ik over het hoofd gezien. de aansluiting op de FTDI was Mini-USB-B, terwijl ik had gedacht dat het standaard micro-USB was. In de kluwen kabeltjes vond ik uiteindelijk een mini-usb-b –> naar usb 2.0.

breadboard, raspi zero, esp8266
breadboard, raspi zero, esp8266

Ik begon met de standaard ESP8266-1 en verbond die met Dupont-draadjes met een Raspberry Pi Zero. Ik had gedacht de 5V die van de Raspberry Pi’s gehaald kan worden met een voltage-deler met behulp van een paar weerstanden aan te passen aan de pakweg 3 Volt die nodig is voor de ESP. De eerste tijd zwalkte ik heen weer tussen verschillende Raspi’s omdat het allemaal niet zo soepel verliep. Uiteindelijk bleek dat het vermoedelijk niet werkte omdat er te weinig stroom geleverd kan worden door de Raspi’s in het begin, waar zich een vraagpiek voordoet. Voor de stroomvoorziening ben ik toen overgeschakeld naar 4 oplaadbare AA-accu’s. Een accu levert 1,24 Volt; 4 x 1,24 is ca. 5 Volt. Meting liet echter zien dat ik boven de 5V zat. Dat moet dan nog een beetje zakken om rond de 3 à 3,3 Volt uit te komen. Opnieuw greep ik naar de mijns inziens simpelste oplossing, de ‘voltage divider’.
En ik was overgeschakeld naar een oude Raspberry Pi B (v.1) die ik nog had liggen.

Nu ik het niet meer nodig heb kom ik een link tegen die me misschien uit de str*nt had kunnen halen, hoewel de tekst ook hier niet heel erg duidelijk is. Ik bedoel met name het stuk onder het kopje Wire RaspberryPi:

Op enig moment, terug bij de raspi zero, had ik eindelijk even succes. Terwijl ik bezig was de instelling van de esp8266 met behulp van AT-commando’s te wijzigen, was het etenstijd. Vol optimisme sloot ik alles af om morgen terug te komen en de succesvolle verkenningen voort te zetten.

Dat bleek een illusie.

Na nog veel meer gerommel besloot ik dan toch maar de FTDI in te zetten. Maar ook die stond succes in de weg.

Na veel gestoei, forums napluizen, websites bezoeken en youtube-filmpjes bestuderen, besloot ik het voorlopig maar te laten. In afwachting van nieuwe informatie die misschien op zou duiken en frisse inzichten in mijn fouten etc. Misschien was de FTDI, de usb naar serieel converter, de tussenverbinding van dingetje en computer wel ondeugdelijk. Of na al mijn gepruts de ESP8266 zelf. Je weet het toch nooit met dat Chinese spul. Vroeger jatten de Japanners alles en probeerden het te verbeteren. Maar in China lijkt het vaak op iets bekends, maar het betekenisvolle woord hierbij is lijkt. We leven steeds meer in een wereld van schijn en nep. Ik weet nog dat het woord virtueel voor het eerst tot me doordrong.

Voor de stroomvoorziening werden ook andere mij onbekende oplossingen genoemd als Schottki diodes. Dat leek me nog complexer. Samen met de FTDI had ik ook al 10 stuks ‘logic level shifters’ gekocht. Niet omdat ik wist hoe ze werkten, maar om de belofte en de schamele prijs. Ook die werden nog tevergeefs geprobeerd nog voordat de FTDI zijn kunsten mocht vertonen. Gezegd moet wel worden dat een behoorlijke handleiding ook ontbrak. De bekeken youtubers hadden nou net niet de goedkope omzetter die ik had gekocht. Mogelijke conclusie is dat ze met hun optredens toch behoorlijk verdienen en zich dat allemaal kunnen veroorloven. Als het moeilijk wordt maken we het makkelijker en kopen wat goeds.

De lente brak aan en de zoektocht ging verder.

Later, rond kerstmis begonnen de gedachten dat ik toch maar weer eens verder moest regelmatig te verschijnen. In allerlei publicaties komen pagina’s met leuke projectjes voor de donkere dagen langs. Dus waarom niet.
Maar ja, het geheugen hè. Gelukkig had ik onderweg een verzameling van links naar documenten en websites gemaakt in een tekstdocument en in Keep ook wat. Maar toch.
Voordeel is wel dat het dan een soort van verse start is. Omdat het toch de beste optie leek besloot ik verder te gaan met de FTDI. Omdat opnieuw succes uitbleef en ik twijfels kreeg over de usb-poorten aan de voorkant van mijn pc, schakelde ik voor de computer over naar een redelijk luxe laptop met Mint 18. Maar ook daar kreeg ik het niet voor elkaar.

Sonoff met pinheaders verbonden met Dupont-draadjes met de FTDI
Sonoff met pinheaders verbonden met Dupont-draadjes met de FTDI

De FTDI werd grondig bestudeerd en de meter werd erop losgelaten. Door een video van Jonathan Oxer, van https://www.superhouse.tv over het traceren van verbindingen op een bordje kreeg ik een beter idee over hoe de converter in elkaar stak. Tijdens het doormeten van de FTDI merkte ik rare spanningsschommelingen op. Gelukkig heb ik een heel technische buurman en die suggereerde uiteindelijk dat een beetje contactspray misschien uitkomst zou brengen. Contactspray?! Dat heb ik niet in mijn keukenkastje, maar hij gelukkig wel. Sprayen, wriemelen, meten en waarachtig het lampje van de ESP8266 begon ineens te branden. Dat had ik lang niet gezien. Er was hoop.

Inmiddels wilde ik wel eens iets zien met een ESP8266 dat werkte. In mijn kast lagen al een tijd een paar Sonoffs Basic stof te verzamelen. Die had ik ook gekocht omdat daarin de ESP8266 een vooraanstaande rol speelt en ze goed hakbaar zouden zijn. Deze Sonoff kan alleen maar op afstand schakelen. Ik besloot het gewoon eens direct vanuit het doosje te proberen met zo’n Sonoff. Kijk voor een ruimer aanbod op Sonoff.nl. Bijvoorbeeld naar hun afstandsbediende lampfitting of hun eigen merk lampen.
Ik bevestigde het ding in een soort tussensnoer, zodat het ‘mobiel’ inzetbaar zou zijn. In aanmerking kwam een felle stroomvretende halogeenlamp (met een lompe trafo als steker).
Voor de bediening gebruik je – standaard – de eWelink app. Die vraagt je voor de configuratie je hemd van je lijf en maakt volgens zeggen gebruik van ‘Amazon Web Servers’; ergens in de wolk dus. Maar wel interessant. De Sonoff maakt samen met je telefoon of tablet gebruik van WiFi om iets aan of uit te schakelen.

Maar ik had meer van hetzelfde. En hier komt opnieuw SuperHouse.tv om de hoek kijken. Vooral de aangenaam rustige en overwogen presentatie van Jonathan Oxer zijn voor mij een verademing vergeleken met sommige video’s van Andreas Spies.

Eerst deed ik een poging om zonder solderen een verbinding te maken met de Sonoff en de FTDI-omvormer. Dat rammelde. Gelukkig had ik in een doosje nog wat ‘pin headers’ liggen om te solderen. Dat voelde echt beter. Het lampje op de Sonoff ging aan. Maar verder dan dat kwam ik niet. Geen aanmelding te zien van een usb-verbinding in dmesg. (Oh ja, ik werk standaard met Linux) en ook geen seriële terminal. Na een paar dagen zoeken en etteren begon ik het idee te krijgen dat het ledje van de Sonoff aanging omdat er alleen voeding was. Maar geen datacommunicatie. Het usb-kabeltje zou weleens rot kunnen zijn, of alleen bedacht om wat te laden. De lokale winkelier gebeld om te vragen of die soms nog een mini-usb-kabeltje had liggen. Dat was er. Een fietstochtje later had ik een kabeltje dat zou moeten werken.
Waarachtig! Halleluja. Ik kon communiceren met de ESP8266 van de Sonoff. Oxer volgend werden de volgende stappen gezet met esptool.py en de Sonoff-Tasmota-software van arendst (naar ik meen Theo Arends).

Klakkeloos volgen is soms niet het slimste om te doen. Bij esptool.py wilde geen enkele opdracht werken omdat er geen programma zou zijn terwijl ik dat net geïnstalleerd had. ???
Ineens bedacht ik me dat ik met python aan het werken was en dat het dus weleens ./esptool.py zou kunnen zijn. En inderdaad!
Ik kreeg de beschikbare geheugengrootte in beeld en nog veel meer belangrijks, als het toekomstige mac-adres etc. Net als dhr. Oxer besloot ik de originele software eerst maar veilig te stellen. Daarna werd een upload van de inmiddels beruchte Sonoff-Tasmota verricht.
Even later zat ik met een brede grijns tegen een werkende Sonoff-Tasmota aan te kijken. Dit exemplaar wordt de vervanger van de schakelaar van de halogeenlamp. Dan heb ik de eWelink app ook niet meer nodig en weten de Chinezen niet wanneer het licht uitgaat.

De volgende stap is om een MQTT-server op een Raspberry in te richten en met behulp van Node-Red te gaan praten met de lamp. Dan wil ik me ook nog met het Zigbee-protocol bezig gaan houden omdat Philips Hue, Ikea Trädfors en ook de door Aldi geleverde Tint-producten zich via een Zigbee-gateway laten aanspreken. En daarna wordt het tijd om een beslissing te nemen over welk thuisautomatiseringssysteem (steigerwerk/framework) als eerste aan bod komt. Er zijn er inmiddels ettelijke.

esp8266
ESP8266

Wat er zoal mis kan gaan:

  • te weinig kennis
  • spreekt de taal van de techneut/ingenieur niet
  • te weinig financiën
  • te weinig stroom
  • verkeerde spanning
  • slecht contact
  • verkeerde usb-kabel