gop1
1.0.0
これは、主にオランダで使用されるいわゆるスマートエネルギーメーターのP1データを読むためのGolangライブラリです。 P1は、Protocol Dutch Power Grid Companiesであり、Netbeheernederland.nlで説明されています。ベルギーで展開されているスマートメーターは同じプロトコルを実装していますが、一部の追加データ型はPower Grid Companiesによって定義されました。これらのタイプは、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プロジェクトは、私にこのようなものを書くように促しました。私は彼の作品が好きですが、実際のアプリケーションではなく、よりプラグ可能なライブラリを探していました。また、P1サポートを備えた多くのPythonプロジェクトがあり、洞察が得られます。