ESP8266 + MQTT

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:

  1. wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
  2. sudo apt-key add mosquitto-repo.gpg.key
  3. cd /etc/apt/sources.list.d/
  4. sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
  5. 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.

20160822_135317_HDR
Ten žlutý vodič je zmiňované propojení RESETu, dokud tam nezapájím propojku 🙂
Ještě jsem dobastlil Li-Ion baterii 3.7V a modul na dobíjení přes MikroUSB
Ještě jsem dobastlil Li-Ion baterii 3.7V a modul na dobíjení přes MikroUSB

PS – poznámka víceméně pro mne…

MQTT a LetsEncrypt:

Líbil se vám článek? Podpořte autora na Patreonu
banner