In het volgende artikel leg ik uit hoe je een draadloze temperatuur sensor kunt bouwen die je in Pimatic kunt uitlezen. 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
[See image gallery at eye-vision.homeip.net] (eBay voor ongeveer Euro 1,50)ESP8266-12E – Wifi Development Board
[See image gallery at eye-vision.homeip.net] (eBay voor ongeveer Euro 8,00)DS18B20 – Temperatuur Sensor
[See image gallery at eye-vision.homeip.net] (eBay voor ongeveer Euro 1,30)of
DHT22 – Temperatuur & Vochtigheids Sensor
[See image gallery at eye-vision.homeip.net] (eBay voor ongeveer Euro 4,50)2 x max7219 LED Matrix
[See image gallery at eye-vision.homeip.net] (eBay voor ongeveer Euro 1,80)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:
[See image gallery at eye-vision.homeip.net] 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.
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.json[See image gallery at eye-vision.homeip.net] Open Boards Manager vanaf ‘Tools > Board’. Scroll naar beneden en selecteer ‘esp8266 by ESP8266 Community’. Kies vervolgens ‘install’.
[See image gallery at eye-vision.homeip.net] 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:
- 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.