Как быстро, без особых вложений, начать выкладывать метеоданные на народный мониторинг?
Опишу одно из решений на базе ESP8266.
Алгоритм работы простой: контроллер раз в пять минут подключается к wi-fi, соединяется с брокером, замеряет температуру и шлет её брокеру. В остальное время находится в режиме сна.
Данная статья не рассматривает вопросы установки micropython на esp8266 и физического подключения датчика. Это всё легко гуглится.
Начнем реализацию с отладки режима сна и периода включения.
Далее настроим подключение к wi-fi сети:
Проверяем всё через REPL, что sta_if.isconnected() возвращает True.
Теперь предлагаю узнать мак адрес esp8266, он пригодится далее:
Далее нужно зарегистрироваться на сайте народного мониторинга
Далее датчики -> добавить моё устройство -> вводим наш MAC.
Теперь самое интересное, отправка температуры по MQTT:
Смотрим в лог через repl, если всё норм, то можно идти любоваться показаниями на народном мониторинге.

PS: Если собрать нормальную схему, без моста usb-uart, и линейного стаба с плохим кпд то от батареек такой девайс сможет показать хорошую автономность.
Опишу одно из решений на базе 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, если всё норм, то можно идти любоваться показаниями на народном мониторинге.

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