gop1
1.0.0
這是一個Golang庫,可讀取主要在荷蘭使用的所謂的智能能計的P1數據。 P1是荷蘭電力電網公司的協議,並在NetBeheernederland.nl上進行了描述。比利時部署的智能電錶實施了相同的協議,但是電網公司定義了一些其他數據類型。這些類型在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 )
}
}
}
}在示例/文件夾中,是一個示例應用程序,該應用程序收集相關指標,並通過Prometheus兼容的HTTP端點提供刮擦。
Marcel de Graaf的SmartMeter項目啟發了我寫這樣的東西。我喜歡他的作品,但正在尋找一個更可笨拙的圖書館,而不是實際的應用程序。另外,還有很多Python項目以及P1支持提供了一些見識。