Dies ist eine Golang -Bibliothek, in der P1 -Daten aus einem sogenannten Smart Energy -Messgerät gelesen werden, das hauptsächlich in den Niederlanden verwendet wird. P1 ist die zusammengesetzten Protokoll -Unternehmensnetzunternehmen, die zusammen entworfen wurden, und wird auf NetBeheheernederland.nl beschrieben. Die in Belgien eingesetzten Smart -Messgeräte implementieren das gleiche Protokoll, einige zusätzliche Datentypen wurden jedoch von den Unternehmensnetzunternehmen definiert. Diese Typen sind in der Spezifikation von E-MUCs H definiert.
Um P1-Daten zu lesen, benötigen Sie so etwas wie ein P1-zu-USB-Kabel. Der P1 -Port ist im Wesentlichen ein serieller Anschluss, in dem Daten (ein so genanntes P1 -Telegramm) jede Sekunde abgeladen werden.
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 )
}
}
}
}Im Beispiel/ Ordner befindet sich eine Beispielanwendung, die relevante Metriken sammelt und sie über einen Prometheus-kompatiblen HTTP-Endpunkt für das Kratzen bietet.
Das SmartMeter -Projekt von Marcel de Graaf hat mich dazu inspiriert, so etwas zu schreiben. Ich mag seine Arbeit, suchte aber eher nach einer steckbaren Bibliothek als nach einer tatsächlichen Anwendung. Außerdem gibt es eine Menge Python -Projekte mit P1 -Unterstützung, die einige Einblicke gaben.