FHEM - Hausautomations-Systeme > Sonstige Systeme

neues Modul: VZLOGGER

(1/20) > >>

optimizer:
Hallo,

für alle VOLKSZAEHLER Freunde habe ich das Modul VZLOGGER geschrieben, um ohne die VZ-Middleware Daten in FHEM speichern zu können. Da ich keine feine Auflösung brauche, habe ich die SQL-Datenbank für Volkszähler nicht installiert.
Das Linux Programm vzlogger unterstützt mittlerweile sehr viele Stromzähler (d0, SML, S0-Impulse ...) und sendet diese normalerweise an die VZ-Datenbank. vzlogger kann aber auch einen kleinen HTTP-Daemon (local > enabled = true, meters > channels > api = NULL) starten und die Rohdaten dort ausgeben. Diese Funktion nutze ich zum Auslesen des Zählerstands meines L&G d0-Zählers.

Falls Du vzlogger nicht selber compilieren möchtest, kannst du das Programm (für RaspberryPi Debian compiliert) hier herunterladen.

In der vzlogger.conf anbei sind die Minimalparameter eingetragen. Diese musst Du noch an deinen Zähler anpassen. Beachte folgendes:

* "local" > "enabled": true // Damit wird der HTTP-Daemon gestartet
* "local" > "buffer": 420 // positive Werte zeigen den Werte-Puffer der letzten x Sekunden an. Dies sollte mit dem Ausleseabstand in FHEM (delay) zusammenpassen, bzw. in FHEM nicht unterschritten werden.
* "meters" > "channels" > "api" : NULL // Wenn Du die Volkszähler-Datenbank/Middleware nicht benutzen willst, setze api auf NULL
* "meters" > "channels" > "UUID" : 123 // bei api:NULL ist eine virtuelle ID im Nummernkreis 0-9 u. a-f ausreichend, z.B. e18 In der Konfigurationsdatei vzloggerd0.conf findest du ein Beispiel für einen D0-Zähler, in vzloggerS0.conf für S0-Impulszähler.

Verwendung in FHEM:
Installier vorher den perl JSON-parser:

--- Code: --- $ sudo cpan JSON

--- Ende Code ---


--- Code: ---define <name> VZLOGGER <IP-Adresse von vzlogger> <Port> <Channel / UUID>
z.B.: define Strombezug VZLOGGER localhost 8080 180
oder: define Zaehlerstand VZLOGGER 192.168.x.y 8080 1.8.1

--- Ende Code ---
Wähle einen passenden Verarbeitungsmodus mit VZLOGGER_modus.
Das Ergebnis wird in die readings energy und energy_current und energy_avg geschrieben. Wenn Du das statistics Modul verwendest, werden damit sowohl delta als auch MIN/MAX Werte zum einfacheneren loggen erzeugt.
Bei Leistungswerten wird ein virtueller Zählerstand in "energy" aufsummiert. Den Offset/Aufsetzpunkt dazu kannst du mit dem Attribut VZLOGGER_offset bestimmen. Zur Info wird unter Internals das letzte Offset-setzen-Datum angezeigt.

Attribute:

* VZLOGGER_corrF:  Korrekturfaktor/Multiplikator um reading zu übersteuern. Default = 1.0
* VZLOGGER_modus: Wähle einen Verarbeitungsmodus:  "Zählerstand": absolute Werte, "Leistung": Leistungswerte (W, kW), "Impuls": S0-Impulse
* VZLOGGER_offset: Zähleroffset für Verbrauchszähler zum Errechnen eines Zählerstands. Dieses Attribut wird nach dem ersten Reading gelöscht. Bitte nicht in FHEM config abspeichern, da sonst der Aufsetzpunkt jedes mal beim nächsten FHEM Start verwendet wird. 
* VZLOGGER_resolution: Auflösung für S0-Impulse
* VZLOGGER_unit: Einheit für state. Default = kWh
* VZLOGGER_show0avg: auch 0-Werte anzeigen lassen
* connectTimeout: Timeout in Sekunden für langsame Verbindungen. Default = 7
* delay: Zeit zwischen zwei Lesevorgängen in Sekunden. Default = 120 Sekunden
Als userReadings können folgende Hilfsfunktionen verwendet werden:
- Berechnung des (Solar)Eigenverbrauchs als virtueller Zählerstand: SolarEigenverbrauch (Zählerstand Einspeisung,Zählerstand Erzeugung,Zählerstand Eigenverbrauch)
- Berechnung des Gesamtverbrauchs als virtueller Zählerstand: StromGesamtverbrauch (Zählerstand Einspeisung,Zählerstand Erzeugung,Zählerstand Bezug,Zählerstand Gesamtverbrauch)
z.B. attrib userReadings EnergyGesamtverbrauch {StromGesamtverbrauch(ReadingsVal("vz280","energy",0),ReadingsVal("Solaranlage","Total.Energy",0),ReadingsVal("vz180","energy",0),ReadingsVal("vz180","EnergyGesamtverbrauch",0))}

Hilfe bei der Fehlersuche:
1. Einstellungen in vzlogger.conf korrekt? buffer groß genug (600)? siehe auch Wiki unter VOLKSZAEHLER
2. Zeigt der http-daemon vom Linux Programm vzlogger sinnvolle Werte an? z.B. http://raspberrypi:8080/
3. Richtige Modul Definition in fhem? Stimmt host, port, uuid?
...


Änderungen:
13.10.15 Version 0.2: Unterstützung S0 Impulszähler, besseres Fehlerhandling
28.10.15 Version 0.3: Offset für s0 und Leistungswerte. Verarbeitungswahl über Attribut VZLOGGER_modus. energy_avg
06.11.15 Version 0.4: neuer Parameter f. Korrekturfaktor
13.11.15 Version 0.5: neue Hilfsfunktionen für PV-Besitzer: SolarEigenverbrauch, StromGesamtverbrauch
15.03.16 Version 0.6: bessere Durchschnittsberechnung, neues state-Format, neuer Parameter VZLOGGER_show0avg

onkel-tobi:
Hi,

dass liest sich doch sehr gut.
Meinst Du das klappt performancetechnisch auf meinem fhem RPi?
Hast du die github  version von vzlogger verwendet?

Danke & Gruß,
Tobi

optimizer:
Hallo Tobi,

bei mir läuft alles (FHEM + 1wire + 2x vzlogger) auf dem Raspi. Ich habe jedoch den Verdacht, dass vzlogger mit zunehmender uptime immer mehr CPU/Speicher braucht. Aber da findet sich bestimmt eine Lösung.

vzlogger hole ich immer aus github - zur Zeit Version 0.4.4 bei mir.

osid-timo:
Hallo optimizer
Deine Lösungsidee hat mich begeistert
Ich habe versucht sie wie vorgeschlagen zu konfigurieren aber ich bekomme keine Daten:
"empty reading 0" siehe auch FHEM screenshot

Meine vzlogger.conf für meinen EasyMeter Q3C sieht wie folgt aus.
Und gestartet habe ich sie mit vzlogger -c  /etc/vzlogger4FHEMvzlogger.conf

{
// vzlogger.conf with minimal settings without middleware
"retry" : 30,           /* how long to sleep between failed requests, in seconds */
"daemon": true ,        /* run periodically */
"verbosity" : 15,        /* between 0 and 15 */
//"log" : "/var/log/vzlogger.log",/* path to logfile, optional */
"log" : "/home/pi/vzlogger.log",  /* path to logfile, optional */

"local" : {
    "enabled" : true,   /* should we start the local HTTPd for serving live readings? */
    "port" : 8080,   /* the TCP port for the local HTTPd */
    "index" : true,   /* should we provide a index listing of available channels if no UUID was requested? */
    "timeout" : 30,   /* timeout for long polling comet requests, 0 disables comet, in seconds */
//    "buffer" : 30   /* default=600 how long to buffer readings for the local interface, in seconds */
    "buffer" : 600   /* negative values: how many readings for the local interface */

},

"meters" : [
    {
    "enabled" : true ,                // true, Beginn EasyMeter Q3C Zähler
    "protocol" : "sml",
    "baudrate" : 9600,
    "device" : "/dev/ttyUSB0",
    "parity" : "8N1",
    "pullseq" : "2f3f210d0a",        // HEX Darstellung der Pullsequenz
    "interval" : 60,                 // Wartezeit bis zum nächsten Pull
   "channels": [{
       "api" : "NULL" ,         // ohne middleware
       "uuid" : "180",          // virtuelle UUID / Channel für FHEM
            "identifier" : "1-1:1.8.0",  // /* Wirkarbeit Bezug +A T0*/
        }]

    }]
}

Die Abfrage http://192.168.178.37:8080/  ergibt:
{ "version": "0.4.2", "generator": "vzlogger", "data": [ { "uuid": "180", "last": 0, "interval": 60, "protocol": "sml" } ] }


was ist an der Konfiguration anzupassen, damit ich Daten bekomme
Gruß Oswald

optimizer:
Hallo Oswald,

freut mich, dass dir mein Lösungsansatz gefällt.

Das Auslesen funktioniert laut log-Datei schon mal. Probier mal ob "1-1:1.8.0*255" als identifier. Es könnte aber auch an "alten" Version liegen, da es mittlerweile 0.4.5 gibt.

Gruß
optimizer

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln