в своей теме PDU - power distribution unit - умные розетки для шкафа я писал про мониторинг, но если кому не нужны розетки, а чисто мониторинг и кто не хочет ничего паять, то есть готовые девайсы + специальная прошивка
суть такова
есть такой дешевый контроллер есп8266 с поддержкой влан, на котором уже сделано 100500 девайсов всяких и вот решили кодеры сделать такую прошивку, чтобы к этому контроллеру можно было подключить всяких датчиков, кнопочек и индикаторов и чтобы не кодить ничего и запилили такую прошивку Tasmota Documentation - Tasmota
в прошивке есть вебморда, где можно настроить определенные выводы для работы с определенными внешними микросхемами или модулями
одним из таких модулей является модуль энергомониторинга
к нему еще можно взять адаптер усб-рс485, данные передаются по модбас и под виндовс есть софт и есть описание регистров модбас, так что по сути все уже готово
есть еще такой модуль https://en.peacefair.cn/product/769.html
только он не подходит, потому что в нем подключается трансформатор тока, а они сделаны для измерения больших токов и стартовый ток это от 0.1а, что составляет 23вт примерно, что по сути на уровне погрешности измерения
боле менее приемлемый ток 10-70а, что хорошо уже для целого шкафа серверов, поэтому был создан вариант 014, там внутри стоит резистор, правда не специальный, от чего при нагрева будут плавать показания (надо будет проверить мультиметром еще)
вот сам экспортер GitHub - Willena/PZEM-004T-exporter: A prometheus exporter for PZEM-004T power meter written in Golang
по сути это все
пояснения для тех, кто еще не знаком с мониторингом всяких метрик
вобщем система мониторинга состоит из 4х частей
1 хранилище
2 поставщики метрик
3 отображение
4 оповещение
1 хранилищем является база данных
думаю всем известны Sql базы, где есть таблицы и они связаны между собой, а есть nosql, где есть ветки деревьев как в проводнике папки с файлами и там хранятся наборы данных
примером nosql является реестр виндовса, где есть папки и в них ключ и параметр или база данных контроллера домена виндовса, к которой даже по сети можно делать запросы или ldap, где можно хранить просто данные
еще есть mongodb, но это для веб приложений уже
а есть другой тип баз данных, где данные хранятся определенное время и потом стираются сами, когда приходит новая порция данных
например можно сделать таблицу и выставить время хранения 365 дней
такие бд называются time based data base
примерами таких бд являются prometheus и influxdb
2 поставщики данных это программы-интерфейсы, которые собирают какие-то данные и потом в специальном формате отправляют их в базы данных
существуют 2 типа отправки метрик
- база сама опрашивает клиентов через определенное время (prometheus)
- клиенты сами шлют данные в базу с настроенной периодичностью (telegraf + influxdb)
прометеус является хттп клиентом, который знает адреса и конечные точки экспортеров метрик и просто дергает гет запросом с каждого экспортера обычный текстовой файл, где содержатся метрики в виде ключа и значения, которые и сохраняются в базе с привязкой ко времени
telegraf же является таким местом сборки метрик, который потом в специальном формате отправляет их в базу influxdb
в данном случае телеграф сам отправляет метрики с нужной периодичностью
в качестве экспортеров метрик он использует плагины
конкретную реализацию сборки метрик через модбас можно тут почитать
поставщик метрик для прометеуса это отдельная прога небольшая под разные системы и софты или же библиотека, если вы пишете свой софт, который должен еще поставлять метрики для мониторинга
вобщем прога является обычным хттп сервером, который отправляет обычный текстовой файл, как я уже написал
например я на виндовсе запустил экспортер, который имеет вид http://192.168.178.100:9182/metrics
и выдает такой текст
# HELP windows_cpu_core_frequency_mhz Core frequency in megahertz
# TYPE windows_cpu_core_frequency_mhz gauge
windows_cpu_core_frequency_mhz{core="0,0"} 2367
windows_cpu_core_frequency_mhz{core="0,1"} 2367
windows_cpu_core_frequency_mhz{core="0,10"} 2367
windows_cpu_core_frequency_mhz{core="0,11"} 2367
windows_cpu_core_frequency_mhz{core="0,2"} 2367
windows_cpu_core_frequency_mhz{core="0,3"} 2367
windows_cpu_core_frequency_mhz{core="0,4"} 2367
windows_cpu_core_frequency_mhz{core="0,5"} 2367
windows_cpu_core_frequency_mhz{core="0,6"} 2367
windows_cpu_core_frequency_mhz{core="0,7"} 2367
windows_cpu_core_frequency_mhz{core="0,8"} 2367
windows_cpu_core_frequency_mhz{core="0,9"} 2367
или
# HELP windows_cs_logical_processors ComputerSystem.NumberOfLogicalProcessors
# TYPE windows_cs_logical_processors gauge
windows_cs_logical_processors 12
тут есть каменты, которые никак не обрабатываются и служат только как подсказка и видно слово gauge, что означает тип индикатора в графане
ну и сам параметр и значение windows_cs_logical_processors 12
# HELP windows_net_bytes_received_total (Network.BytesReceivedPerSec)
# TYPE windows_net_bytes_received_total counter
windows_net_bytes_received_total{nic="Realtek_PCIe_GbE_Family_Controller"} 0
windows_net_bytes_received_total{nic="Realtek_PCIe_GbE_Family_Controller__2"} 0
windows_net_bytes_received_total{nic="Realtek_PCIe_GbE_Family_Controller__3"} 5.5114786923e+10
windows_net_bytes_received_total{nic="Realtek_PCIe_GbE_Family_Controller__4"} 0
windows_net_bytes_received_total{nic="Realtek_PCIe_GbE_Family_Controller__5"} 0
# HELP windows_net_bytes_sent_total (Network.BytesSentPerSec)
# TYPE windows_net_bytes_sent_total counter
windows_net_bytes_sent_total{nic="Realtek_PCIe_GbE_Family_Controller"} 0
windows_net_bytes_sent_total{nic="Realtek_PCIe_GbE_Family_Controller__2"} 0
windows_net_bytes_sent_total{nic="Realtek_PCIe_GbE_Family_Controller__3"} 1.795156684e+09
windows_net_bytes_sent_total{nic="Realtek_PCIe_GbE_Family_Controller__4"} 0
windows_net_bytes_sent_total{nic="Realtek_PCIe_GbE_Family_Controller__5"} 0
у баз данных есть языки запросов query language
в прометеусе есть promQL, который позволяет выбрать часть данных и обработать математически
язык довольно замудренный и некоторые простые вещи довольно непонятны интуитивно, поэтому придется попотеть
3 отображение
для отображения графиков была придумана графана и вообще графана и прометеус были написаны для нужд конторы спотифай, лет 15 назад и с тех пор эта штука оказалась настолько крутой, что ее допилили и выложили для всех
так что прометеус по дефолту идет в связке с графаной, но графана так же имеет разные шлюзы для получения данных
графана не хранит никаких данных, а только делает запросы к базам данных, выбирая конкретный набор данных для сиюминутного отображения
однако там есть возможность делать выборки за произвольные периоды времени
графана содержит дашборды, которые можно выводить на монитор и автоматически или по кнопкам менять их
есть целая база готовых дашбордов по разным темам
можно постить свои дашборды или скачать готовые, они имеют уникальные номера, так же можно выложить их в виде json текста или файла
если у вас есть современный счетчик, то с него тоже можно считывать данные через рс485 например или через инфракрасную головку
например у нас такие счетчики поставили и вверху справа есть дырка и металлическая пластина, на которую при помощи магнита лепится головка
вот тут цифрой 6 обозначено, что идет обмен данными через модуль или модем (если он есть), внизу потребленное количество за определенный период (настраивается при помощи фонарика и фотодиода )
обычно там выводят просто текущую мощность
стрелка вправо и +а означает, что потребление идет от сети, а если влево и -а, то значит ты поставляеш в сеть избыток энергии от своей солнечной электростанции (правда за это никто не платит тебе, да и счетчик обратно не сматывает)
1.8.0 это общий тариф без деления на день\ночь
буквы л показывают наличие напряжения на 3х фазах
головка довольно проста и представляет из себя юарт на фото и светодиодах
все это легко подключается к какому нибудь контроллеру
- оповещение (alert manager)
так же является компонентом системы прометеус-графана в виде отдельного приложения со своим конфигом и правилами, когда возникает какой-то алерт
может слать сообщения в телегу, но есть целое приложение для телефона
есть еще альтернатива
в графане тоже есть механизм оповещения и условий их возникновения, но лучше так не делать
вот вроде бы и все по софту
после такого введения теперь вам будет понятно, что делать дальше с прошивкой тасмота
так вот, как я уже написал выше - есть такие модули есп8266, тысячи их
это достаточно мощный контроллер с памятью на 8 или даже 16 мегабайт, куда можно вкрячить вебморду и стоит это копейки
т.к. ресурсов там много, то придумали сделать универсальную прошивку, чтобы через влан подключать всякие датчики и модули
в прошивке есть вебморда, где тупо выбираеш из выпадающего меню функцию конкретного вывода - будь то кнопка, светодиод, интерфейс и2ц, спи, юарт + конкретный протокол передачи данных от какого-то датчика или модуля
так же есть возможность писать скрипты небольшие
есть поддержка mqtt, так что у кого есть home assistent или подобное, то можете сделать себе всяких датчиков и приводов
есть еще такая альтернатива - конструктор прошивок, компилит на сервере только нужные модули
тасмота же есть со всеми модулями или лайт версия (без энергомониторов)
либо ты можеш сам собрать ее, там надо свой хедер сделать и раскомментировать нужные модули
чем меньше модулей - тем стабильней она работает и меньше весит
вот наши модули
|1472 |PZEM0XX Tx |PZEM Serial Modbus interface|
|1504 |PZEM004 Rx |PZEM Serial Modbus interface|
|1536 |PZEM016 Rx |PZEM Serial Modbus interface| (версия 14)
|1568 |PZEM017 Rx |PZEM Serial Modbus interface|
с прошитым модулем можно взаимодействовать через хттп запросы типа
http://<ip>/cm?user=<username>&password=<password>&cmnd=Power%20On
в новой версии появилась поддержка экспорта в прометеус
т.к. модуль pzem имеет выход рс485, а контроллер имеет интерфейс юарт 3.3в, то напрямую их нельзя соединить и для этого надо сделать модификацию на плате
етсь у меня подозрение, что этот трансик на модуле слишком дохлый и не вытягивает потребление есп, напряжение падает и модуль глючит, по крайней мере есп-01 глючил, либо же из-за помех от трансформатора, т.к. я его приклеил на трансформатор
поэтому я купил модуль с защитным экраном, но еще не тестировал
есть 100500 готовых девайсов, где надо только прошить их, но если изначально там стояли есп8266, то потом китайцы сделали еще более дешевые модули, которые производители умных розеток стали юзать и теперь залить прошивку не выйдет
тут список готовых устройств разных типов, где был использован такой модуль, часть из них уже использует другой
на али уже есть готовые прошитые розетки, так что можете попробовать их купить
там даже реле есть и можно удаленно отключать все
вот тут описана калибровка
вот вроде бы все