Добрый день, данный пост посвящен проекту — ссылка на 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, температуры и влажности.
NutsUnderline
сам прибор хороший? а то я как раз планировал перечитывать обзоры измерителей co2 и думать про прикручивание wifi, а тут - готовое решение для меня
Levon24 Автор
Сам прибор HT2000 - неплохое законченное устройство, я его много лет назад купил, работает стабильно. Однако температуру он показывает немного завешенную, видимо от тепла прибора добавляется.
Я бы предложил купить датчик и подцепить его к i2c шине, у pi на гребенку разведен этот интерфейс. Устройство будет более компактным и за меньшую цену. Возможно позже, так и сделаю и поделюсь решением.
NutsUnderline
я нашел картинку внутренностей HT2000. внутри там платка sensair похоже SenseAir S8 это хорошо, там кстати куча интерфейсов, но меня смущает тема калибровки, ну и в данном случае мне надо бы относительно красивое законченное устройство а не самоделка.
есть более красивый родич сабжа под названием HT-501, на таком же датчике, но про него что то я не понял про подключение к ПК
самоделка тоже есть "готовая" https://habr.com/ru/companies/lamptest/articles/536294/
термодатчик на HT2000 сделан относительно грамотно - небольшая доп. платка, не совсем как надо бы, но почти.
Pavel_de_pavel
Хороший, лет 10 у меня, заказывал на али. От батареек правда работает некорректно, хоть и отсек для них есть. Но про это и так все знают. Температуру тоже неточно показывает, завышает. Но для со2 он точен