Trošku jsem si zaexperimentoval s ESP8266. Abych byl přesný, tak s kitem WeMos D1 mini, což je takové miniArduino – jen USB převodník a procesor. V roli procesoru tam je modul ESP-12E.
Nejprve jsem laboroval s microPythonem i s JavaScriptem, a nakonec jsem sáhnul k Arduino IDE, které na téhle desce funguje bez problémů.
Jako senzory jsem použil I2C moduly, které obsahují senzor a potřebnou „bižuterii“. V mém případě šlo o luxmetr (se snímačem OPT3001) a teploměr (TMP112).
Chvilku jsem řešil připojení I2C <> WeMos <> ESP8266, ale pak jsem to zvládl. I2C se totiž používá na pinech GPIO 4 a 5, které jsou mapovány na vývody D2 a D1. Udělal jsem si k tomu takovou tabulku.
Jenže pak JavaScript nehodlal z I2C číst. MicroPython totéž. Nevím proč, pravděpodobně nějaké quirks, nebo jsem k čidlům přistupoval úplně blbě… Když už jsem podléhal beznaději, zkusil jsem výše zmíněné Arduino, a vše fungovalo. Hodně pomohla knihovna pro OPT3001. O pár momentů později už mi lezly po sériové lince údaje z měření…
Pak jsem přihodil i ten teploměr, taky přes knihovnu.
No a protože je tam ESP, tedy wifina „zdarma“, tak logický další krok bylo připojit se a data někam posílat. Použil jsem skvělý WiFi Manager, aby to bylo přenositelné a aby v kódu nestrašilo heslo k mojí wifi. No a k tomu už jen MQTT client library.
Na serveru jsem spustil Mosquitto. V Debianích repozitářích byla zas nějaká stará verze, takže jsem na to šel takto:
- wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
- sudo apt-key add mosquitto-repo.gpg.key
- cd /etc/apt/sources.list.d/
- sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
- apt-get updateapt-get install mosquitto mosquitto-clients
Přidal jsem acl (Access Control List) podle tohoto vzoru a pustil jsem i MQTT over Websockets.
A bylo.
Jako poslední jsem udělal drobnou úpravu, při které modul změří, pošle data, a pak se uvede do deep sleep módu. Aby fungovalo probuzení, musel jsem propojit vstup RESET a GPIO16 (na WeMos D1 Mini je to pin D0). Na tomto výstupu totiž po uplynutí zadané doby přijde „budíček“. Chci použít Li-Ion baterii a zkusit, jak dlouho to bude takto fungovat. Zatím to napájím z powerbanky, a tam zatím úbytek napětí nepozoruju.
<figcaption id="caption-attachment-873" class="wp-caption-text">Ten žlutý vodič je zmiňované propojení RESETu, dokud tam nezapájím propojku 🙂</figcaption></figure>
<figcaption id="caption-attachment-877" class="wp-caption-text">Ještě jsem dobastlil Li-Ion baterii 3.7V a modul na dobíjení přes MikroUSB</figcaption>
PS – poznámka víceméně pro mne…
MQTT a LetsEncrypt:
- Instalace LetsEncrypt
- Přidání Backports
- Vytvoření certifikátů pro Mosquitto
- Nastavení bezpečné komunikace
- Přidat do CRONu /etc/cron.d/certbot aktualizaci certifikátů pro MQTT