gop1
1.0.0
이것은 주로 네덜란드에서 사용되는 소위 스마트 에너지 미터에서 P1 데이터를 읽는 Golang 라이브러리입니다. P1은 프로토콜 네덜란드 전력 그리드 회사가 함께 설계되었으며 Netbeheernederland.nl에 설명되어 있습니다. 벨기에에 배포되는 스마트 미터는 동일한 프로토콜을 구현하지만 일부 추가 데이터 유형은 전력망 회사에 의해 정의되었습니다. 이러한 유형은 e-mucs h 사양에 정의됩니다.
P1 데이터를 읽으려면 P1-to-USB 케이블과 같은 것이 필요합니다. P1 포트는 본질적으로 데이터 (소위 P1 Telegram)가 매 초마다 덤프되는 직렬 포트입니다.
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 )
}
}
}
}예제/ 폴더에는 관련 메트릭을 수집하고 스크래핑을위한 Prometheus 호환 HTTP 엔드 포인트를 통해 제공하는 예제 응용 프로그램이 있습니다.
Marcel de Graaf의 SmartMeter 프로젝트는 이와 같은 글을 쓰도록 영감을주었습니다. 나는 그의 작품을 좋아하지만 실제 응용 프로그램보다는 더 강력한 도서관을 찾고있었습니다. 또한 P1 지원이 포함 된 많은 Python 프로젝트가 있습니다.