Voor weinig geld kun je eenvoudig een draadloze temperatuur sensor bouwen die je met Pimatic kunt uitlezen. Tevens kun je diverse andere modules aansturen.
Dit artikel is tot stand gekomen via de informatie die ik gevonden heb in de blog van Koffie. Alle credits gaan dan ook naar hem uit voor dit fantastisch stukje software en aanwijzingen. Zie verder ook de Wiki van ESPimatic voor meer informatie.
Als eerste moet je de volgende hardware aanschaffen:
Breadboard
(Breadbord 400)ESP8266-12E – Wifi Development Board
(NodeMcu ESP8266 (CH340/CP2102))DS18B20 – Temperatuur Sensor
(DS18B20 Temperature Measurement Module) ofDHT22 – Temperatuur & Vochtigheids Sensor
(DHT22 Temperature and Humidity Temperature Sensor)2 x max7219 LED Matrix
(Max7219 Dot Matrix Module) Op de volgende links kun je nog wat meer informatie vinden over dit ESP8266-12E Wifi Development Board: Verder is onderstaande overzicht van de pin-indeling van de NodeMCU wel handig: We gaan nu eerst de ESP8266-12E prepareren. Zorg dat je de benodigde software hebt om een Arduino sketchfile te kunnen compileren en uploaden. Ik probeerde dit eerst op een Windows 10 machine waarvoor ik Arduino 1.6.7 had gedownload (laatste versie van dit moment). Hiermee ging het echter mis en kreeg ik allerlei compiler errors. Dezelfde problemen had ik met Arduino 1.6.7 op mijn Debian Server.Vervolgens heb ik maar de aangeraden Arduino 1.6.5 versie gebruikt op mijn Debian server.
Aangezien dit dus een oude Arduino versie is moet je even zoeken om deze te kunnen downloaden. Ik heb deze zelf op de volgende server gevonden. Download hier het bestand ‘arduino-1.6.5-r5-linux64.tar.xz’ en voer vervolgens de volgende acties uit:tar -xvf arduino-1.6.5-r5-linux64.tar.xz mv arduino-1.6.5-r5 /opt
Start nu de Arduino software
cd /opt/arduino-1.6.5-r5/ ./arduino
Open preferences menu en voeg de volgende regel toe aan ‘Additional Board Manager URLs’
http://arduino.esp8266.com/stable/package_esp8266com_index.jsonOpen Boards Manager vanaf ‘Tools > Board’. Scroll naar beneden en selecteer ‘esp8266 by ESP8266 Community’. Kies vervolgens ‘install’. Selecteer ‘NodeMCU 1.0 (ESP-12E Module)’ vanaf ‘Tools > Board’
Hierna moet je de sketch-file ESPimatic downloaden:
git clone --recursive https://github.com/koffienl/ESPimaticWe gaan nu de ESPimatic code compileren en uploaden:
- In Arduino kies je in ‘File > Open’ menu de file ‘ESPimatic.ino’ in de directory waar je de ESPimatic hebt gedownload
- Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ESPimatic hebt gedownload
- Kies nu ‘Sketch > Verify/Compile’
- Sluit je ESP8266-12E board via USB aan op je computer
- Stel je upload poort in bij ‘Tools > Port’ (vaak /dev/ttyUSB0)
- Kies ‘Sketch > Upload’
Initiëel zal je ESP8266-12E nu opstarten als een Access Point (wacht totdat je ESPimatic ziet verschijnen bij je draadloze netwerken). Maak verbinding met je SSID ESPimatic en vul voor wachtwoord ‘espimatic’ in. Ga vervolgens met je browser naar 192.168.4.1 en vul je gebruikelijke Wifi gegevens in en druk op [Submit]. Als het goed is gegaan verschijnt er OK op het browser-scherm. Hierna moet je de ESP8266-12E herstarten en verbinding maken je Wifi Netwerk.
Controleer nu welk IP adres je ESP8266-12E heeft gekregen van je DHCP server en ga met je browser naar dit IP-adres. Je krijgt een simpele pagina te zien waarin je nu alle HTML bestanden die je via GIT hebt gedownload moet uploaden. Je krijgt weer OK te zien in je browser scherm als dit goed is gegaan. Je moet tenslotte de ESP8266-12E nog eenmaal herstarten voordat je de uiteindelijke ESPimatic interface te zien krijgt:
Nu moeten we ESPimatic zelf nog gaan configureren:- Sluit de DS18B20 sensor als volgt aan op je ESP8266-12E:
VCC op 3V3 GND op GND D0 op gewenste GPIO (b.v. GPIO3)
- Indien je DHT22 sensor gebruikt sluit je deze als volgt aan op je ESP8266-12E:
VCC op 3V3 GND op GND DAT op gewenste GPIO (b.v. GPIO3)
- Ga naar ‘Configure > Hardware > DS18B20’ (of ‘DHT’) en stel je temperatuur-sensor gegevens in. De variabel naam die je hier invult moet je ook zelf toevoegen in Pimatic zodat de temperatuur naar Pimatic verstuurd kan worden.
- Ga naar ‘Configure > System > Pimatic’ en stel je Pimatic gegevens in
Nu moeten we in Pimatic nog wat aanpassingen maken:
- Voeg de variable die je bij ESPimatic hebt toegevoegd nu ook toe aan Pimatic zelf.
- Om deze variable te kunnen afbeelden in je frontend moet je deze ook toevoegen als een device:
{ "id": "TemperatuurBuitenDevice", "name": "Temperatuur Buiten", "class": "VariablesDevice", "variables": [ { "name": "TemperatuurBuiten", "expression": "$TemperatuurBuiten", "type": "number", "unit": "°C" } ] }
Je kunt nu de temperatuur uitlezen in de User-Interface van Pimatic. Als je ook visueel je temperatuur wilt zien op de LED matrixes moet je de 2 max7119 LED Matrixes als volgt aansluiten:
Daisy Chain (onder en boven aansluitingen) van 2 LEDs VCC naar 3.3V GND naar GND CLK naar GPIO14 DIN naar GPIO13 CS naar GPIO die je instelt in configuratie van ESPimatic (ik heb GPIO5) gekozen
Selecteer ook wat je wil zien op je matrixes (ik heb temperatuur DHT22 gekozen)
Uiteindelijk ziet het er dan als volgt uit.
Ik heb nu dus een draadloze temperatuur-sensor met LED aanduiding die je met Pimatic kunt uitlezen. Nu moet ik nog gaan nadenken om dit netjes in een doosje te stoppen zodat ik deze mooi kan wegzetten/weghangen. Wellicht dat ik hier in een volgende blog op terug kom.
Hoi Henri, weer een gave leerzame blog, dank daarvoor. Ik heb wel heel wat problemen gehad om de ESP8266-12E werkend te krijgen. Als ik een DS18 temp sensor aansluit op de 3.3v naast de flash button starten alle drie de ESP8266-12E niet meer op. Na de sensors aangesloten te hebben op een andere 3.3v aansluiting werkte ze wel. Daarna schoot de ESP8266-12E in een rebootloop na het aansluiten van de DHT22 sensor op gpio 9. Ik moest vervolgens met een esptool het commando erase_flash uitvoeren en opnieuw beginnen. Hierna maar gekozen voor gpio 5 en uiteindelijk werkt alles en kan ik de temp en luchtvochtigheid zien in de gui van Pimatic. Ben jij ook tegen deze problemen aangelopen of heb ik gewoon pech gehad en de verkeerde aansluitingen gekozen 😉
Ik heb deze problemen niet ondervonden Dennis. Wat voor voeding gebruik je? Wellicht heeft het daar mee te maken? Ik heb dit zowel met een DS18B20 als een DHT22 werkend gekregen zonder de jouw beschreven problemen. Verder weet ik dat er wat issues in vorige versies van ESPimatic zaten en Koffie is nu druk bezig met versie 0.200. Natuurlijk kan het ook nog zijn dat je ESP8266-12E een hardware probleem heeft en in dat geval heb je dus gewoon brute pech.
Ik had meerdere voedingen getest. Van de standaard USB poort van de laptop tot een 2,5A losse voeding. Waarschijnlijk inderdaad brute pech met de hardware. Uiteindelijk werkte alles met de losse voeding maar ook vanaf de laptop. Nu opzoek naar een leuke box waar ik alles in kan bouwen.
Hoi Henri, leuke leerzame posts! Heb je inmiddels een beetje inzicht in hoelang dit op de powerbank blijft draaien voordat ie leeg is?
Hangt van capaciteit van je Powerbank af natuurlijk. Met een 10400 mAh powerbank en als je deep-sleep enabled moet je gemakkelijk 1 week halen. Ik zelf gebruik echter zelf een simpele USB stekker (eBay) en plaats mijn draadloze temperatuur sensor in de buurt van een stopcontact.
Hallo Henri,
Ik heb de ESPimatic aan het draaien en de LED Matrix geeft ooo kde temperatuur aan, maar ik krijg de temperatuur niet zichtbaar in Pimatic.
dit is de code die ik in Pimatic heb staan
Met vriendelijke groet,
Dennis
Code ziet er wat mij betreft goed uit. Dingen die je nog zou kunnen controleren is:
– Heb je alle draden goed aangesloten (dubbel check dat even)
– Wordt in het dashboard van ESPimatic de temperatuur wel goed getoond?
– Heb je in ESPimatic je Pimatic Server goed ingesteld?
– Heb je in ESPimatic je variable-naam hetzelfde ingesteld zoals je deze in PImatic gebruikt (bij DHT Configuration)?
Heb alles gecheckt wat je aangaf, dit alles is goed. Ook wordt in het dashboard van ESPimatic de temperatuur wel goed getoond, dus dat werkt allemaal wel goed.
In Pimatic krijg ik elke minuut de onderstaande foutmelding:
error [pimatic]: No variable with the name “tempbinnenDevice” found.
Er is dus wel een connectie tussen de ESPimatic en de Pimatic.
ik heb ook de variable in de ESP ook een $ gezet dan krijg ik in Pimatic de onderstaande melding:
error [pimatic]: No variable with the name “$tempbinnenDevice” found.
Het lijkt er op dat je de variable niet hebt aangemaakt in Pimatic. Voeg het volgende eens toe aan je config.json file:
Hij werkt, onderaan in mijn config file stond wel variables, maar niet de juiste. Maar bedankt voor de hulp.
Met vriendelijke groet, Dennis
Hoi Henri,
Ik ben bezig met de ESP Pimatic. Ik ben op de goede weg, alleen wanneer ik een Sketch > Upload maak. Krijg ik de error: esp_comm_open failed.
De ESP8266 heeft nu alleen voeding via USB en verder heb ik niks aan de GPIO hangen. Heb jij enig idee wat ik verkeerd doe?
Heb je de upload poort goed ingesteld bij ‘Tools > Port’ (vaak /dev/ttyUSB0)? Verder kun je ook nog proberen om met de esptool het commando erase_flash uit te voeren en dan opnieuw te proberen.
Ik had de verkeerde versie van IDE gedownload. Nu heb ik wel de goede versie alleen en de “tar” functie werkt goed. Vervolgens krijg ik deze foutmelding:
pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# mv arduino-1.6.5-r5 /opt
mv: cannot move ‘arduino-1.6.5-r5’ to ‘/opt/arduino-1.6.5-r5’: Directory not empty
Als ik dit negeer en de software probeer op te starten krijg ik deze foutmelding..
pi@raspberrypi:~ $ cd /opt/arduino-1.6.5-r5/
pi@raspberrypi:/opt/arduino-1.6.5-r5 $ ./arduino
./arduino: line 36: ./java/bin/java: cannot execute binary file: Exec format error
Heb al vanalles geprobeerd maar ik kom er niet uit. Enig idee?
Zorg er eerst voor dat je geen “arduino-1.6.5-r5” directory hebt in je /opt directory voordat je het ‘mv’ commando uitvoert op je uitgepakte tar file. Ik heb het vermoeden dat je nog een overblijfsel van je vorige versie had.
ESPimatic heeft een simpele ‘API’waarmee je via een HTTP opdracht commando’s kunt versturen.
Syntax van de URL is:
‘http://esp-ip/api?action=[action]&value=[value]’
De volgende opdrachten zijn mogelijk:
action = ir , value = 3420,1592,500,1128, …… hiermee laat je een IR code versturen
action = reboot , value = true Herstart de ESP
action = matrix_brightness value=[0-8] wijzig de helderheid van deLED Matrix
action = matrix_display , value = [on-off[ Zet de LED Matrix uit
action = relay[1-4] , value = [on-off[ Zet relay x aan of uit
action = clearerror , value =[wifi,ds18b20,eeprom,upgrade] Hiermee verwijder je bepaalde errors, dat wordt echter ook al gedaan door de webpagina die de foutmelding ontvangt.
action = reset , value=true Hiermee verwijder je alle opgeslagen gegevens, inclusief wifi
Voorbeeld:
http://192.168.1.196/api?action=relay1&value=on
http://192.168.1.196/api?action=relay1&value=off
Kies als relay een ‘1-Channel 5V Relay Module Optocoupler High Level Trigger Expansion Board’ die je goedkoop op eBay kunt vinden.
Goedemiddag,
Ik kan sinds kort mijn ESPimatic niet meer uploaden naar de ESP8266-12E, ik krijg nu elke keer meldingen dat hij de LedcontrolSPIESp8266.h bestand niet kan vinden als ik probeer te uploaden of te Verify/Compile. ik krijg onderstaande fout melding:
ESPimatic.ino:5:34: fatal error: LedControlSPIESP8266.h: No such file or directory
compilation terminated.
Fout bij compileren.
kan jij of iemand anders mij vertellen wat ik moet doen?
Met vriendelijke groet,
Dennis
Ik heb het ooit ook een keer gehad. Ik heb het toen opgelost door alle stappen nog een keer te doorlopen. Dus zorg ervoor dat Additional Board Manager URL aanwezig is en selecteer bij ‘Tools>Board’ specificiek ‘esp8266 by ESP8266 Community’ weer en kies ‘install’. Selecteer vervolgens ‘NodeMCU 1.0 (ESP-12E Module)’ vanaf ‘Tools > Board’.
Ja dat heb ik ik al paar keer geprobeerd, heb het zelfs al een paar keer op een ander systeem geprobeerd.
Dus dan weet ik het ook niet meer.
Met vriendelijke groet Dennis
Ik zat hier nog eens over na te denken en mogelijke andere verklaring kan zijn dat je ‘Sketchbook location’ niet goed staat:
Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ESPimatic hebt gedownload
Had ik ook al nagelopen, was het ook niet. Heb ook nog even gekeken op de pagina van Koffie, wat daar staat heb ik ook gedaan. Maar helaas ook nog geen succes☹.
Bedankt voor het mee denken.
Jammer Dennis. Laat je het in deze thread nog even weten mocht je de oplossing vinden?
Probleem is verholpen, wat het precies was weet ik niet. maar waarschijnlijk was het pad te lang geworden. kreeg van S-Knop (https://github.com/koffienl/ESPimatic/issues/12) de volgende tip:
“bij mij staan de libraries ook in C:\Users%username%\Documents\Arduino\libraries
kan proberen om ze daar te plaatsen weet niet of dat nodig is.
gebruik je Arduino IDE 1.6.5 en ESP8266 boardmanager 2.0.0 ?”
Hij werkt in iedergeval weer.
Iedereen nog bedankt voor het mee denken.