HT2000 Сбор и хранение данные по CO2
Добрый день, данный пост посвящен проекту — ссылка на Github.
Основная идея, получать данные из прибора HT2000 через USB кабель и сохранять в базу данных, далее графически отобразить данные.
Внешне это выглядит как‑то так.
Собранный проект
В качестве базы данных можно использовать любую доступную базу данных, как mysql или postgresql, так и prometeus (тогда потребуется проект немного доработать).
В качестве отображения показателей используем Grafana как наиболее доступное решение.
Отображение показателей
В качестве MCU будем использовать Orange Pi Zero 2W c ram 4gb, однако и 2gb должно быть достаточно для работы проекта. Подробнее о платке можно почитать тут.
Итак, раз я java разработчик, то возьму доступный jetty9 из репозитория debian и соберем небольшой backend у себя на машинке, для этого нам понадобится база данных. В качестве базы данных используем mariadb. Ставим либо локально, либо в докере. Я ставил локально.
Database
Установка базы данных на ubuntu/debian дело не хитрое, выполняем заклинание apt install mariadb-server.
Далее создаем схему базы данных.
Собственно все, у вас должна получится схему ht2000 и единственная таблица events. Так как ничего сверх тяжелого происходить не будет, таблицу можно преобразовать в формат MyISAM на ваше усмотрение.
Заранее создаем схему для grafana.
Далее, можно выставить настройки базы данных. Они хранятся в файле /etc/mysql/mariadb.conf.d/50-server.cnf
на машинке. У меня используются следующие настройки для уменьшения пытки sdcard системы.
innodb_buffer_pool_size = 1G
innodb_flush_log_at_trx_commit = 2
innodb_doublewrite = 0
USB
Для того чтобы наш пользователь backend имел доступ к чтению данных из прибора нужно добавить прав в udev каталог. Берем файлик https://github.com/Levon24/HT2000/blob/master/udev/55-ht2000.rules и закидываем в каталог /etc/udev/rules.d/
и ребутаем машинку. На этом вроде как все.
Jetty
Установка сервиса выглядит как заклинание apt install jetty9
. После этого можно убавить аппетиты backend настройкой в файле /etc/jetty9/start.ini
параметров.
jetty.threadPool.minThreads=2
jetty.threadPool.maxThreads=32
Так же можно поджать параметры java в файле /etc/default/jetty9
JAVA_OPTIONS=»-Djava.awt.headless=true -XX:+UseG1GC -server -Xms128m -Xmx256m -Dnetworkaddress.cache.ttl=300 -Xlog: gc:/var/log/jetty9/gc.log»
Далее собираем war файл (mvn clean package) и файл ht2000.war
подкладываем в каталог /var/lib/jetty9/webapps/
на машинку. Если включен автодеплой по приложение должно подхватится сразу, найти прибор ht2000 и по таймеру начать писать данные в базу данных.
Grafana
Установка для пользователей из России не напоминает стандартную инструкцию. Так как не мы одни попали в такую историю, можно использовать зеркало из поднебесной таким образом у нас получается файлик /etc/apt/sources.list.d/grafana.list
со следующим содержимым.
deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://mirrors.cloud.tencent.com/grafana/apt/ stable main
Процесс установки описан в инструкции более чем подробно. Ранее мы создали схему для grafana и лучше её использовать, по умолчанию используется sqlite.
Следующий шаг — настраиваем в grafana наш datasource, куда пишет наше backend приложение. Написано подробно тут и все параметры можно взять из шага Database.
Сам дашборд можно импортнуть отсюда.
По результату вы должны увидеть графики показателей СО2, температуры и влажности.