Enegietachometerdeluxe

Seit einigen Jahren, verwende ich zur Visualisierung meines Stromverbrauchs ein GEO Ensemble, welches einfach die Blinksignale am Zähler umrechnet und als Verbrauch visualisiert. Da aber im letzten Jahr eine Klimaanlage und ein Balkonkraftwerk installiert wurde, möchte ich nicht nur Verbräuche sehen, sondern auch  Einspeiseleistung (man möchte ja wissen wieviel Strom man dem Netzbetreiber schenkt) und Ertragsdaten der PV Anlage und da ich sowieso den Zähler anzapfen werde kommt auch noch der Zählerstand hinzu. Dumm ist nur die PV Anlage ist auf dem Balkon in der 2 Etage und der Zähler im Keller. Also wie beides zusammenführen?

Hierzu habe ich mir einen Kleinen Schaltkasten gegönnt der einen Raspberri Pi 3b mit Hutschienengehäuse, ein Hutschienennetzteil, eine Hutschinen Steckdose, einen Powerlineadapter und eine Festplatte beherbergt. Dieser Schaltschrank wurde vom Elektriker an Klemmschrankmeinen Zähler im Keller angeschlossen. Außerdem ist noch ein Optischer Lesekopf der Firma Weidmann Elektronik am Zähler befestigt der die Zählerdaten via USB an den Raspberri im Schaltkasten sendet. Das Elegante daran ist, der Schaltkasten mit samt dem Miniserver, ist aus den Augen und verrichtet brav seinen Dienst. So spielt der FAF (Female Acceptance Factor) auch keine Rolle. Hiermit ist in Sachen Hardware für den Zähler erstmal Schluß.

Nun müssen wir noch die Leistungsdaten der PV Anlage erfassen. Und dies geschiet mit dem Sonoff POW2 der natürlich mit der alternativen Firmware Tasmota ausgestattet wird (Flashanleitungen dafür gibt es im Netz, oder man kauft den direkt fertig geflasht) Für den Einbau sollte man auch eine Elektrofachkraft bemühen. Denn 230 Volt können einen umbringen wenn man nicht weiß was man tut.

 

 

Die Software

Da ich von Natur aus faul bin, greife ich auf das aktuelle Image von solaranzeige.de zurück und und installiere es gemäß der Anleitung dort, auf meiner Festplatte. Wichtig ist hierbei das die Konfigurationsdatei direkt richtig bearbeitetZähler wird. Wichtig ist auf jeden Fall das man im Abschnitt influxDB nicht vergisst anzugeben  das die Datenbank auf localhost läuft. Sonst werden keine Daten geloggt. Der Sonoff POW2 wird ebenfalls via Anleitung konfiguriert.

Nun sollten wir schon das vorgefertigte Dashboard für Sonoff POW in Grafana auswählen können und die ersten Daten sollten Angezeigt werden. Soweit ist die Standartkonfiguration abgeschlossen.

Leider haben wir aber noch nichts was die Daten vom IR-Lesekopf des Zählers sammelt und in die Datenbank schreibt. Dazu kommt vzlogger aus dem Volkszähler Projekt zum Einsatz. Leider muß man das selbst durch den Compiler jagen, aber keine Angst das ist hier sehr gut dokumentiert. Was nicht gut dokumentiert ist, ist die Erstellung der Configdatei. Meine ist für den Einsatz eines USB Lesekopf von Weidman Elektronik in verbindung mit einem SML sprechenden Zählers.

Hier die Konfigurationsdatei für den Weidmann Kopf und meinen Iskra MT176 Zähler.

 

 
{ 

 
"retry": 3, 

 
"daemon": true, 
 "verbosity": 1, 
 "log": "/var/log/vzlogger.log", 

 
"local": { 
 "enabled": true, 
 "port": 8080, 
 "index": false, 
 "timeout": 30, 
 "buffer": 600 
 }, 
 "meters": [ 
 // examples for InfluxDB as storage 
 { 
 // See vzlogger.conf for complete meter configuration options 

 
"enabled": true, // disabled meters will be ignored 
 "protocol": "sml", // see 'vzlogger -h' for list of available protocols 
 "device": "/dev/ttyUSB0", 
 "parity" : "8N1", 
 "baudrate" : 9600, 
 "aggtime" : -1, 
 "aggfixedinterval" : false, 
 "channels": [ 
 { 
 "api": "influxdb", // use the InfluxDB api 
 "uuid": "bd951202-7721-11ea-a606-079e471a3f4e", // use the uuid command to generate this 
 "identifier" : "1-0:1.8.0*255", // OBIS code for "Zählerstand" 
 "host": "127.0.0.1:8086", // This assumes that InfluxDB is running on localhost 
 "database": "solaranzeige", // Optional: make sure this database exists in InfluxDB 
 "measurement_name": "iskra_Zaelerstand", // Optional: It is recommended that all your meters have the same InfluxDB measurement name 
 "duplicates": 3600, 
 "aggmode": "max", 
 //"tags": "foo=bar,example=42", // Optional: Additional tags to append when inserting data 
 //"username": "", // Optional: When InfluxDB Auth is enabled you need to set the correct user and password 
 //"password": "", 
 //"max_batch_inserts": 4500, // Optional: Max number of measurements per request. No need to change this 
//"max_buffer_size": 450000, // Optional: Max number of measurements to be cached when InfluxDB is not available 
 //"timeout": 30, // Optional: Time in seconds after which requests to InfluxDB time out 
 //"send_uuid": false, // Optional: Disables the sending of the UUID to the InfluxDB server 
 //"ssl_verifypeer": false, // Optional: Disables the certificate verification for https connections 
 }, 
 { 
 "api": "influxdb", // use the InfluxDB api 
 "uuid": "e6ec7eb2-79b3-11ea-a7aa-8355a49ab492", // use the uuid command to generate this 
 "identifier" : "1-0:16.7.0*255", // OBIS code for "Leistung" 
 "host": "127.0.0.1:8086", // This assumes that InfluxDB is running on localhost 
 "database": "solaranzeige", // Optional: make sure this database exists in InfluxDB 
 "measurement_name": "AC", // Optional: It is recommended that all your meters have the same InfluxDB measurement name 
 "aggmode": "none", 
 //"tags": "foo=bar,example=42", // Optional: Additional tags to append when inserting data 
 //"username": "", // Optional: When InfluxDB Auth is enabled you need to set the correct user and password 
 //"password": "", 
 //"max_batch_inserts": 4500, // Optional: Max number of measurements per request. No need to change this 
 //"max_buffer_size": 450000, // Optional: Max number of measurements to be cached when InfluxDB is not available 
 //"timeout": 30, // Optional: Time in seconds after which requests to InfluxDB time out 
 //"send_uuid": false, // Optional: Disables the sending of the UUID to the InfluxDB server 
//"ssl_verifypeer": false, // Optional: Disables the certificate verification for https connections 
 }, 
 { 
 "api": "influxdb", // use the InfluxDB api 
 "uuid": "e6ec7eb2-79b3-11ea-a7aa-8355a49ab492", // use the uuid command to generate this 
 "identifier" : "1-0:16.7.0*255", // OBIS code for "Leistung" 
 "host": "127.0.0.1:8086", // This assumes that InfluxDB is running on localhost 
 "database": "solaranzeige", // Optional: make sure this database exists in InfluxDB 
 "measurement_name": "AC", // Optional: It is recommended that all your meters have the same InfluxDB measurement name 
 "aggmode": "none", 
 //"tags": "foo=bar,example=42", // Optional: Additional tags to append when inserting data 
 //"username": "", // Optional: When InfluxDB Auth is enabled you need to set the correct user and password 
 //"password": "", 
 //"max_batch_inserts": 4500, // Optional: Max number of measurements per request. No need to change this 
 //"max_buffer_size": 450000, // Optional: Max number of measurements to be cached when InfluxDB is not available 
 //"timeout": 30, // Optional: Time in seconds after which requests to InfluxDB time out 
 //"send_uuid": false, // Optional: Disables the sending of the UUID to the InfluxDB server 
 //"ssl_verifypeer": false, // Optional: Disables the certificate verification for https connections 
 } 
 ], //channels 
 },//meter 
 ] // meters 
} // end of config 

 

Bei anderen Zählertypen müssen evtl. Schnuttstellenparameter angepasst werden.

Nachdem nun der Zählerstand und die Leistung in der Datenbank abgelegt werden, kann man zur Konfiguration der Anzeige in Grafana übergehen. Das nerfige an den Gauges in Grafana ist das diese mit negativen Werten nichts anfangen können.
So geht der Halbkreisbaragraph immer nur in eine Richtung. Und zwar mit dem Uhrzeiger! Toll währe es, wenn man auf dem Kreisbogen der Anzeige irgendwo Null definieren könnte, so das dann bei negativen Anzeigen der Kreisbaragraph von Null entgegen dem Uhrzeiger läuft (kleiner Wink an die Entwickler!). Das ist umso blöder da mein Zähler, Einspeisung ins Netz mit Minus vor dem Leistungswert anzeigt. Demnach sind -300, 300 Watt Einspeisung.

Da wir eine vernünftige Anzeige mit negativen Werten nicht hinbekommen, werden wir halt 2 Anzeigen erstellen müssen. Eine für Einspeisung und eine für Bezug. Bei mir sieht das so aus!

Gauges

 

 

Der Bezug Query

Ist eigentlich zu konfigurieren wie jede andere Anzeige auch.

QueryNetzbezug

 

 

 

 

 

Die Visualisierung ist auch Standard.

VisualizationNetzbezug

 

 

 

 

 

Da wir ja wissen, dass der MT176 Einspeisung mit negativem Vorzeichen versieht, müssen wir verhindern das negative Werte angezeigt werden. Daher schalten wir das ab und zwar mit Value Mapping.
Dieser Teil besagt das alles was von -700 bis 0 an Zahlen reinkommt durch eine Null ersetzt wird.

ValuemappingNetzbezug

 

 

Der Einspeisequery

Da wir ja die Einspeiseleistung nicht in negativen Zahlen angeben wollen müssen wir Diese ersmal in Positive Zahlen umwandeln.
Dazu nehmen wir uns die Math Funktion in Grafana zur Hilfe. Wir erinnern uns zurück wie unser Mathelehrer uns mit dem Multiplizieren von Negativen Zahlen generft hat. 1*-1 ergibt -1. Frei nach dem Motto Erstellen wir uns die Abfrage in der Datenbank wie folgt um positive Zahlen zu erhalten:

QueryEinspeisung

 

 

 

 

 

Visualisierung ist ebenfalls Standard und kann analog zur Anzeige des Bezuges erstellt werden.
Value Mapping wird ebenfals Analog zum Bezugsanzeige Erstellt, es ist aber sicherzutellen hier einen negativen Maximalwert zu wählen der niemals erreicht werden kann.

Das war es vorab.....






 

 

 

Diese Webseite nutzt Google Analytics. Bei der Nutzung dieser Webseite stimmen Sie dem Setzen von Cookies zu.