Skip to content

Курсовая работа по диспилине "Микропроцессорные системы"

Notifications You must be signed in to change notification settings

proooooogiba/plant_monitoring

Repository files navigation

Система мониторинга состояния комнатного растением

workplace.png

Тулчейн

Для разработки проекта использовался фреймворк idf-esp в IDE CLion. Настройка проекта и среды для разработки в CLion:

process_of_developmnet

Прошивка и отладка

При разработке в CLion общий конфиг в дереве проект - sdkconfig, кастомные переменные(например настройка Wi-Fi) туда нужно переносить самостоятельно. Локальные конфиги Kconfig.projbuild - в проекте не импортируются автоматически.

Для прошивки платы используется конфигурация - flash с заданным elf файлом:

img.png

Команда для запуска отладки - мониторинга:

cd ~/esp/esp-idf && . ./export.sh && cd ~/esp/plant_monitoring_project && idf.py monitor

Примечания

Фреймворк esp-idf установлен в пути: ~/esp

Проект расположен в пути: ~/esp/plant_monitoring_project

Выйти из режима отладки можно с помощью комбинации CTRL + ]

Без IDE с плагином esp-idf можно попробовать выполнить следующие команды:

idf.py -p 1220 flash monitor # загрузка + отладка, номер порта можно увидеть подлючив плату esp и написав команду  ls /dev/tty.*.

Библиотеки для работы с перефирией

В проекте использовалась Библиотеки esp-idf включающая в себя драйверы дял работы с периферией.

  • Настройка dht-драйвера (!Важно - подключать необходимо имена на порт GPIO-4, иначе может вылететь ошибка драйвера)

Структура проекта

В проекте использовались следующие датчики:

Алгоритм работы:

  1. Микроконтроллер снимает показания с датчиков по соответствующим портам GPIO
  2. Микроконтроллер с помощью встроенного Wi-Fi модуля отправляет эти метрики в формате JSON по протоколу mqtt на сервер
  3. На сервере с помощью утилиты mqtt-exporter метрики экспортируются в prometheus
  4. Prometheus используется в качестве источника данных в grafana и таким образом метрики появляются на борде

img.png

STA

Station mode(STA) - режим работы, при котором устройство ESP32 подключается к существующей сети Wi-Fi, функционируя как клиент. В этом режиме ESP32 не создает свою собственную сеть, а вместо этого использует доступ к уже имеющейся точке доступа (например, роутеру) для обмена данными с другими устройствами в сети.

Mqtt-Broker

Пример отправки метрик mqtt-брокеру

Пример отправки метрик температуры и влажности mqtt-брокеру без авторизации в формате JSON:

host = vm4481772.25ssd.had.wf:1883 mqtt_topic = esp32/plant_monitoring/metrics

# Задаем переменную хоста
HOST="vm4481772.25ssd.had.wf:1883"

# Определяем JSON данные
DATA='{\"temperature\":90.25,\"humidity\":46.37, \"crit_debug\":0.0}'

# Определяем топик
TOPIC="esp32/plant_monitoring/metrics"

# Формируем команду mosquitto_pub
COMMAND="mosquitto_pub -L mqtt://$HOST/$TOPIC -m \"$DATA\""

# Выполняем команду
eval "$COMMAND"

Для удобства скрипт выделен в отдельный файл. Для валидирования доставки отправки метрик можно воспользоваться MQTT-Explorer.

Настройки MQTT-explorer:

img.png

Во вкладке advanced подпишитесь на топик /esp32/plant_monitoring/metrics и удалите топик SYS.

Деплой

Для деплоя сервиса был арендован виртуальный сервер. ПО протоколу ssh c помощью утилиты scp была рекурсивна перенесена директория deploy c помощью команды

shell scp -r deploy root@ip-address:~/esp

Деплой включает в себя следующие сервисы:

  • mosquitto-exporter - экспортирует метрики
  • prometheus - бд для хранения метрик
  • grafana - сервис отображения метрик
  • alertmanager - сервис настройки алертов

Мониторинг

Дэшборд графаны выглядит следующим образом:

grafana_dashboard.png

Доступ к системе мониторинга датчиков:

РПЗ

sudo iptables -A INPUT -p tcp --dport 1883 -j ACCEPT
sudo iptables -L -n | grep 1883

About

Курсовая работа по диспилине "Микропроцессорные системы"

Resources

Stars

Watchers

Forks

Packages

No packages published