Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров24K
Как быстро, без особых вложений, начать выкладывать метеоданные на народный мониторинг?
Опишу одно из решений на базе 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, и линейного стаба с плохим кпд то от батареек такой девайс сможет показать хорошую автономность.
Теги:
Хабы:
Всего голосов 15: ↑13 и ↓2+11
Комментарии6

Публикации

Истории

Работа

Python разработчик
145 вакансий
Data Scientist
88 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн