Это библиотека Golang для чтения данных P1 из так называемого интеллектуального счетчика энергии, используемого в основном в Нидерландах. P1 - это протокол голландских компаний, предназначенных вместе, и описан в NetBeHeernederland.nl. Умные счетчики, которые развертываются в Бельгии, внедряют один и тот же протокол, но некоторые дополнительные типы данных были определены компаниями Power Grid. Эти типы определены в спецификации E-MUCS H.
Чтобы прочитать данные P1, вам понадобится что-то вроде кабеля P1-USB. Порт P1 по сути представляет собой последовательный порт, где данные (так называемая телеграмма P1) сбрасываются каждую секунду.
package main
import (
"fmt"
"github.com/skoef/gop1"
)
func main () {
// open a new reader to given USB serial device
p1 , err := gop1 . New (gop1. P1Config {
USBDevice : "/dev/ttyUSB0" ,
})
if err != nil {
panic ( err )
}
// start reading data
// this will send new telegrams to the channel p1.Incoming
p1 . Start ()
for telegram := range p1 . Incoming {
// loop over the objects in the telegram to find types we're interested in
for _ , obj := range telegram . Objects {
switch obj . Type {
case gop1 . OBISTypeInstantaneousPowerDeliveredL1 :
fmt . Printf ( "actual power usage: %s %s n " , obj . Values [ 0 ]. Value , obj . Values [ 0 ]. Unit )
}
}
}
}В примере/ папке является пример приложения, которое собирает соответствующие метрики и предлагает их по прометею-совместимой конечной точке HTTP для соскоба.
Проект SmartMeter от Marcel de Graaf вдохновил меня написать что -то подобное. Мне нравится его работа, но искал более подключаемую библиотеку, а не реальное приложение. Также существует множество проектов Python с поддержкой P1, которая дала некоторую информацию.