Pull to refresh

Народный мониторинг ESP8266 MQTT Micropython

Reading time2 min
Views24K
Как быстро, без особых вложений, начать выкладывать метеоданные на народный мониторинг?
Опишу одно из решений на базе ESP8266.

Алгоритм работы простой: контроллер раз в пять минут подключается к wi-fi, соединяется с брокером, замеряет температуру и шлет её брокеру. В остальное время находится в режиме сна.
Данная статья не рассматривает вопросы установки micropython на esp8266 и физического подключения датчика. Это всё легко гуглится.

Начнем реализацию с отладки режима сна и периода включения.

import machine
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
rtc.alarm(rtc.ALARM0, 5*60*1000)
#теперь при вызове deepsleep контроллер уснёт на 5 минут и загрузится заново, аналогично нажатию reset
#не забудьте припаять wake на reset, на плате LoLin: D0 и RST
machine.deepsleep()

Далее настроим подключение к wi-fi сети:

import network
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('SSID', 'password')
while not sta_if.isconnected():
	pass

Проверяем всё через REPL, что sta_if.isconnected() возвращает True.

Теперь предлагаю узнать мак адрес esp8266, он пригодится далее:

import network
import ubinascii
ubinascii.hexlify(network.WLAN().config('mac'),':').decode()

Далее нужно зарегистрироваться на сайте народного мониторинга
Далее датчики -> добавить моё устройство -> вводим наш MAC.

Теперь самое интересное, отправка температуры по MQTT:

#подключение к брокеру
from umqtt.simple import MQTTClient
client=MQTTClient(client_id='01:02:03:04:05:06', server='narodmon.ru', port=1883, user='login', password='12345')
client.connect()

#замер температуры
import onewire
ow=onewire.OneWire(machine.Pin(0))
import ds18x20
ds=ds18x20.DS18X20(ow)
roms=ds.scan()
ds.convert_temp()
time.sleep_ms(750)
temperature=ds.read_temp(roms[0])

#отправка
client.publish('dinartal/esp8266/temperature', str(temperature))
#ожидание отправки
time.sleep(3)

Смотрим в лог через repl, если всё норм, то можно идти любоваться показаниями на народном мониторинге.

image

PS: Если собрать нормальную схему, без моста usb-uart, и линейного стаба с плохим кпд то от батареек такой девайс сможет показать хорошую автономность.
Tags:
Hubs:
+11
Comments6

Articles