Skip to content

pistonov/weather_balloon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Метеозонд

Проект решает задачу мониторинга температуры и влажности на удаленной площадке, в моем случае на даче. Для этого был собран метеозонд, который достаточно подключить к питанию.

Alt text

Для проекта были использованы:

  1. Контроллер ESP8266 NodeMCU
  2. Датчик температуры и влажности DHT22
  3. Резистор на 10кОм
  4. Одноплатный компьютер Raspberry Pi
  5. Кроссплатформенный мессенджер Telegram

Сценарии применения:

Telegram Grafana
Alt text Alt text

Схема взаимодействия компонентов:

Alt text

ESP8266 NodeMCU + DHT22:

Alt text

Передача данных происходит через однопроводный протокол, требующий точной синхронизации.
Для получения данных используется библиотека DHTesp.
Для подключения к WiFi - библиотека ESP8266WiFi.
Для Web сервера - библиотека ESP8266WebServer.
Скетч для NodeMCU в файле https://github.com/shrainer/weather_balloon/blob/main/nodemcu.ino

Raspberry Pi + Python + Grafana:

На одноплатном компьютере запущен скрипт bot.py, демонизированный с помощью Supervisor.
Скрипт выполняет следующие функции:

Слушает команды в Telegram. В случае получения команды /meteo получает данные с NodeMCU и отправляет их в чат.

if command == '/meteo':
    TelegramBot.send_message(cid, "Запрашиваю данные, жди")
    try:
        resp = requests.get(node_mcu)
        resp = resp.text
        resp = resp.split(',')
        MSG = "Температура: " + resp[0] + "°С\nВлажность: " + resp[1] + "%"
    except Exception as e:
        MSG = "Получить данные не удалось"
    TelegramBot.send_message(cid, MSG)

Раз в 30 минут получает данные с NodeMCU и отправляет их в базу данных InfluxDB, откуда они визуализируются с помощью Grafana.

try:
    grafana_req = requests.get(node_mcu)
    grafana_req = grafana_req.text
    grafana_req = grafana_req.split(',')
    data_field="METEO,host=DACHA temperature=" + grafana_req[0] + ",humidity=" + grafana_req[1]
    grafana_curl = 'curl -i -XPOST "http://localhost:8086/write?db=TVSHOW" --data-binary "' + data_field + '"'
    os.system(grafana_curl)
time.sleep(1800)

Весь скрипт для Raspberry в файле https://github.com/shrainer/weather_balloon/blob/main/bot.py

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 68.9%
  • C++ 31.1%