هذه مكتبة Golang لقراءة بيانات P1 من ما يسمى Meter Smart Energy ، وتستخدم بشكل أساسي في هولندا. 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 )
}
}
}
}في المثال/ المجلد هو تطبيق مثال يجمع المقاييس ذات الصلة ويقدمها عبر نقطة نهاية HTTP المتوافقة مع Prometheus للتجريف.
ألهمني مشروع مقياس SmartMeter من Marcel de Graaf لكتابة شيء من هذا القبيل. أحب عمله ، لكنني كنت أبحث عن مكتبة أكثر قابلية للتوصيل بدلاً من تطبيق فعلي. أيضا هناك الكثير من مشاريع بيثون هناك مع دعم P1 الذي أعطى بعض البصيرة.