Ini adalah perpustakaan Golang untuk membaca data P1 dari yang disebut Smart Energy Meter, yang digunakan terutama di Belanda. P1 adalah Protokol Dutch Power Grid Companies yang dirancang bersama dan dijelaskan di Netbeheernederland.nl. Meter pintar yang digunakan di Belgia menerapkan protokol yang sama, tetapi beberapa tipe data tambahan ditentukan oleh perusahaan jaringan listrik. Jenis-jenis ini didefinisikan dalam spesifikasi E-MUCS H.
Untuk membaca data P1, Anda akan membutuhkan sesuatu seperti kabel P1-ke-USB. Port P1 pada dasarnya adalah port serial di mana data (yang disebut telegram P1) dibuang setiap detik.
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 )
}
}
}
}Dalam contoh/ folder adalah contoh aplikasi yang mengumpulkan metrik yang relevan dan menawarkannya atas titik akhir HTTP yang kompatibel dengan Prometheus untuk mengikis.
Proyek SmartMeter dari Marcel de Graaf menginspirasi saya untuk menulis sesuatu seperti ini. Saya suka pekerjaannya, tetapi sedang mencari perpustakaan yang lebih mudah dicolokkan daripada aplikasi yang sebenarnya. Juga ada banyak proyek Python di luar sana dengan dukungan P1 yang memberikan wawasan.