neues Modul: VZLOGGER

Begonnen von optimizer, 05 September 2015, 23:53:59

Vorheriges Thema - Nächstes Thema

winner_ix

#60
By the way.
Mir ist noch was aufgefallen, dass ich nicht ganz nachvollziehen kann.

Der Zählerstand wird vom Volkszähler ins FHEM Modul korrekt alle 120 sec übernommen.
Bei der Durchschnitsberechnung ergeben sich bei mir für die AVG Werte im FHEM VZLOGGER immer folgende discrete Werte:
0,291 / 0,437 / 0,655 / 0,873 / 1,092 / 1,31 / ... in kW
Mit der Formel kann ich es aber nicht nachvollziehen:
1 Counter Einheit in 120sec  -->  ergibt in 60 Minuten 30 CE oder im Schnitt 300 W
2 CE --> 600 W
3 CE --> 900 W
...etc

was passiert im Modul noch....kommt es zu einer weiteren Berechnung?

optimizer

Hallo winner_ix,

zu
if ($value_avg != 0) {
Bei meinem Zähler  kommt es oft vor, dass sich der Zählerstand aufgrund nur einer Nachkommastelle nicht ändert. Deshalb habe ich lieber keinen Wert als "0".
Bei PV-Anlagen würde das aber durchaus Sinn machen. Ein weiterer Parameter für das Anzeigen von 0-Werten wäre hier vielleicht hilfreich?

Die Durchschnittsrechnung rechnet mit den aus vzlogger übergebenen Zeitwerten abzüglich des letzten readings - deshalb die krummen Zahlen. 0,291 kW oder 300 W schaut doch gar nicht schlecht aus  :D ?

Gruß
optimizer

winner_ix

Hallo optimizer,

danke für deine Antwort.
Ich habe versuchsweise die Abfrage rausgenommen und es passt fü rmich besser.

Aber ich habe auch herausgefunden, dass der Readout vom Smart Meter 22sec dauert !?!
Demenstprechen habe ich auch die vzlogger.conf delay time jetzt auf 37sec gesetzt. Damit gibt es alle 59sec neue Werte.
Davor hatte ich das Smart Meter readout auf 60sec und VZLOGGER delay auch auf 60sec aber da es nur alle 82 sec neue Daten gab ist avg=0 oft vorgekommen.
Grund: innerhalb des 82sec Intervalls wurde 2 mal von FHEM derselbe Zählerstand abgefragt.

Jetzt bin ich noch am Optimieren zwischen kurzem Intervall und schönem Plott.

Kann ich eigentlich im vzlogger.conf dieselben Zählerstände in unterschiedlichen Intervallen ans Interface (http) schicken?
zB.: 1.8.0 alle 60sec für Steuerungen verschiedener elektrischer Geräte mit aktuellen Werten und 1.8.0 mit 180 sec für schöneren avg-Plott.
Aber da könnte auch das Statistik Modul helfen ....

LG
winner_ix

optimizer

#63
Hallo zusammen,

nachdem der Durchschnittswert manchmal Probleme macht, habe ich weiter analysiert und mögliche Fehlerquellen gefunden. Besonders wenn der Puffer in der httpd-Ausgabe klein (oder -1) ist und FHEM in längeren Abständen liest, ist der Wert sehr ungenau.
In der angehängten Version habe ich noch einige Änderungen vogenommen:
- Für den Durchschnittswert merke ich mir nun das letzte Änderungsdatum (soweit genügend Pufferdaten vorhanden) anstatt Auslesedatum.
- Mit dem neuen Parameter VZLOGGER_show0avg kannst du nun auch 0-Werte anzeigen lassen.
- Das Readings-Format für energy_current, energy_avg habe ich von kWh auf W umgestellt. Vorsicht bei vorhandenen Log-Dateien! Findet ihr das gut, oder war der ungenaue kWh-Wert besser?
- Überarbeitetes und einheitliches state-Format für alle Modus mit Pfeil nach oben/unten als Trendanzeige
(https://forum.fhem.de/index.php?action=dlattach;topic=40766.0;attach=48622;image)

Leider habe ich noch Unterschiede in der Zählerstandsberechnung von S0 und Leistungswerten, deshalb bitte ich euch das Modul richtig durchzutesten.

Gruß
Karlheinz

persching

Hallo zusammen,
ich hab zwei Sensus PolluCom E Wärmemengenzähler, die ich gerne mit vzlogger auslesen würde. Ich hab vzlogger installiert bzw. selbst kompiliert, hab ein define für vzlogger erstellt, aber ich bekomme keine Daten raus. Logisch, weil ich nicht so recht weiß, was ich in die vzlogger.conf eintragen muss. Angeblich ist es möglich die Wärmemengenzähler mit dem Volkszähler auszulesen. Also muss es doch eine funktionierende .conf Datei geben. Ich kann aber nix finden. Kann mir jemand helfen, wie ich mich dem Thema nähern kann?

Ich habe z.b. schon einmal das Protokoll gefunden was gesendet und was ausgelesen wird:

http://wiki.volkszaehler.org/doku.php/hardware/channels/meters/warming/sensus_pollucom

Ich kann den Wärmemengenzähler auch mit dem Tool des Herstellers auslesen (das beweist lediglich, dass der IR-Lesekopf funktioniert).

Ich hab schon viel gegoogled, aber ich komme hier einfach nicht voran und hoffe, dass mich wenigstens jemand auf den richtigen Weg bringen kann.

Gruß persching

optimizer

Hallo persching,

diese Fragen solltest du besser in der Mailingliste von volkszaehler.org (oder in diesem Forum ) stellen.

Gruß
Karlheinz

Romoker

Hallo optimizer,

ich habe das neue Modul getestet.

  • Die S0-Impulse (Modus Impuls) werden jetzt korrekt gezählt.
  • Auch nach einem Reboot des Fhem-Servers bleiben die Werte korrekt.
  • Die Einheit W statt kW kommt mir entgegen.
  • Der Energieverbrauch (Zählerstand) "energy" aus den Impuls-Leistungswerten (Modus Leistung) ist exakt schwierig zu ermitteln. Der Verbrauchswert ist besser über den Zähler (Modus Impuls) abzubilden. Ich nutze im Modus Leistung nur "energy_current", um die aktuelle Leistung oder den Durchsatz anzuzeigen.
  • Der Modus Zählerstand tuts wie vorher.
  • Die Trendanzeige mit dem Pfeil oben/unten ist eine gute Idee.

Fazit: Ich werde mein altes, angepasstes VZLOGGER-Modul durch das neue Modul ablösen.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

optimizer

Zitat von: optimizer am 15 März 2016, 22:33:13
Leider habe ich noch Unterschiede in der Zählerstandsberechnung von S0 und Leistungswerten, deshalb bitte ich euch das Modul richtig durchzutesten.
Die Unterschiede kommen von einem Bug in der Durchschnittsberechnung im Programm vzlogger. Bis auf weiteres ist es deshalb ratsam in der vzlogger.conf "aggmode": "none" unter "channels" einzustellen.

In FHEM VZLOGGER Version 0.6 habe ich keine Probleme mehr gefunden und läuft stabil.
Das reading "energy_avg", das den Durchschnitt im letzten Auslesezeitraum (delay) rechnet, läuft einwandfrei.

Gruß
Karlheinz

onkel-tobi

Hi,

wollte mal nachfragen wie ihr das genau mit dem Statistics Modul macht und den entsprechenden log Einträgen.
Ich bekomme hier sowas:
2016.05.21 08:09:16 5: statistics statisticsVerbrauch: Notify.263 Notification of 'KeyValueProtocol_LGW_1302972' received. Device not monitored.
2016.05.21 08:09:16 5: statistics statisticsZaehlerstand: Notify.263 Notification of 'KeyValueProtocol_LGW_1302972' received. Device not monitored.


Meine Definition sieht folgendermaßen aus:
define Verbrauch_aktuell VZLOGGER localhost 8080 167
attr Verbrauch_aktuell VZLOGGER_modus Zählerstand
attr Verbrauch_aktuell VZLOGGER_unit kWh
attr Verbrauch_aktuell connectTimeout 7
attr Verbrauch_aktuell delay 120
attr Verbrauch_aktuell group Strom
attr Verbrauch_aktuell room Volkszaehler
#attr Verbrauch_aktuell delay 60
define FileLog_Verbrauch_aktuell FileLog ./log/Verbrauch_aktuell-%Y-%m.log Verbrauch_aktuell
attr FileLog_Verbrauch_aktuell logtype text

define Zaehlerstand VZLOGGER localhost 8080 180
attr Zaehlerstand VZLOGGER_corrF 0.001
attr Zaehlerstand VZLOGGER_modus Zählerstand
attr Zaehlerstand VZLOGGER_unit kWh
attr Zaehlerstand connectTimeout 7
attr Zaehlerstand delay 120
attr Zaehlerstand group Strom
attr Zaehlerstand room Volkszaehler
#attr Zaehlerstand delay 60
define FileLog_Zaehlerstand FileLog ./log/Zaehlerstand-%Y-%m.log Zaehlerstand
attr FileLog_Zaehlerstand logtype text

define statisticsVerbrauch statistics Verbrauch_aktuell
attr statisticsVerbrauch deltaReadings energy

define statisticsZaehlerstand statistics Zaehlerstand
attr statisticsZaehlerstand deltaReadings energy

Hab ich da was falsch gemacht? / Kann ich da was optimieren? event-change-on-reading würde doch auch SInn machen, oder?

Danke & Gruß,
Tobi

onkel-tobi

Zitat von: optimizer am 06 Januar 2016, 23:17:39
@TobiJa, die Differenz jeden Monat ist ausreichend, aber ich kenne keinen einfacheren Weg als über das statistics Modul und ein FileLog auf die statistik Werte (statEnergyMonthLast). In die erzeugte Textdatei habe ich auch ältere Werte manuell nachgetragen (eventuell FHEM herunterfahren). Hast Du einen einfacheren Weg?
Hi Karlheinz,

wollte mich jetzt noch mal an das Thema Statistik machen. Hast Du da ein eigenes Log für geschrieben?
Kannst Du deinen svg code mal zur Verfügung stellen?

Danke & Gruß,
Tobi

Bootscreen

Hy optimizer,

dank dir für das wunderbare Modul. Aber irgendwie will das bei mir noch nich so ganz. Vllt kannst du mir helfen.

Gibt es eine Möglichkeit bei den Zählerstandsangaben den avg und current zu deaktivieren?
In meinem Fall bräuchte ich den avg nicht da ich den aktuellen Verbauch / Einspeisung über eigene Channels auslesen kann und das Wahrscheinlich etwas genauer ist.
Und current bräuchte ich auch nicht da current Runder und damit auch ungenauer ist.
Hier mal ein List von entsprechendem Device:
ZitatInternals:
   CFGFN
   DEF        192.168.66.34 8080 2b98f3f0-9b38-11e6-a810-4780fc9fb361
   NAME       Zaehler.Ausgehend.Gesamt
   NR         397889
   STATE             no data for 2b98f3f0-9b38-11e6-a810-4780fc9fb361. (last energy value: 1092.96)
   TYPE       VZLOGGER
   VERSION    0.6
   vzlogger_protocol d0
   vzlogger_version 0.6.0
   Readings:
     2016-10-27 12:49:47   energy          1092.96
     2016-10-27 12:31:39   energy_avg      32788800.0
     2016-10-27 12:49:47   energy_current  1093.0
     2016-10-27 12:49:47   state                  no data for 2b98f3f0-9b38-11e6-a810-4780fc9fb361. (last energy value: 1092.96)
   Helper:
     Channel    2b98f3f0-9b38-11e6-a810-4780fc9fb361
     Host       192.168.66.34
     HostPort   8080
     TimerInterval 120
     TimerStatus Zaehler.Ausgehend.Gesamt.STATUS
     delayCounter 0
Attributes:
   VZLOGGER_modus Zählerstand
   connectTimeout 7
   delay      120

Und beim Modus Leistung bin ich irgendwie auch etwas verwirrt.
Hier mal das List des Devices:
ZitatInternals:
   CFGFN
   DEF        192.168.66.34 8080 58956220-9b42-11e6-b58e-dffb7bbd114a
   NAME       Zaehler.Eingehend.aktueller_Verbrauch
   NR         397809
   STATE       0.6 W (0.7 kWh 2016-10-27 12:46:48)
   TYPE       VZLOGGER
   VERSION    0.6
   vzlogger_protocol d0
   vzlogger_version 0.6.0
   Readings:
     2016-10-27 12:46:59   energy          0.70606
     2016-10-27 12:46:59   energy_avg      0.6
     2016-10-27 12:46:59   energy_current  0.6
     2016-10-27 12:46:59   state            0.6 W (0.7 kWh 2016-10-27 12:46:48)
   Helper:
     Channel    58956220-9b42-11e6-b58e-dffb7bbd114a
     Host       192.168.66.34
     HostPort   8080
     TimerInterval 120
     TimerStatus Zaehlerstand_aktueller_Verbrauch.STATUS
     delayCounter 0
Attributes:
   VZLOGGER_modus Leistung
   connectTimeout 7
   delay      120
und dann der Codeüber die HTTP Abfrage.
{ "version": "0.6.0", "generator": "vzlogger", "data": [ { "uuid": "872ac8b0-9c19-11e6-90db-5d7c1163a290", "last": 1477565212424, "interval": 60, "protocol": "d0", "tuples": [ [ 1477565212424, 68.129999999999995 ] ] } ] }
avg und current sind zu ungenau und energy hat irgendwie nen ganz andren Wert. oO

Wäre es möglich so eine Art simple Mode einzubauen? So das nur noch die Werte angezeigt werden die ausgelesen werden? Und vielleich beim modus Leistung mit einer Tendenz zum vorherigem Wert?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

roadrunnner

#71
Hallo,

ich habe den vzlogger mit Frontend auf einem Pi2 laufen und jetzt versucht, die Werte in FHEM auf einem weiteren Pi3 mit dem vzlogger-Modul einzubinden - leider ohne Erfolg. In der fhem.log taucht diese Meldung auf:
"2017.02.08 19:37:42 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/23_VZLOGGER.pm line 319. Undefined subroutine &main::Dumper called at ./FHEM/23_VZLOGGER.pm line 348"
Zudem lädt nach der ersten Abfrage an den vzlogger die FHEM-Website im 5s-Rhythmus neu. Bin ein wenig ratlos   :-\

Gruss

roadrunnner

optimizer

Sorry fürs späte antworten, aber anscheinend hat die E-Mail-Erinnerung nicht funktioniert.

@Bootscreen:
Zitat von: Bootscreen am 27 Oktober 2016, 13:02:08
Gibt es eine Möglichkeit bei den Zählerstandsangaben den avg und current zu deaktivieren?
Nein, die readings sollten aber auch nicht stören. Der avg-Wert ist seltsam. Ich vermute der buffer in vzlogger.conf ist zu klein; setze ihn mal auf 600.
Ich habe noch eine älteres vzlogger-Programmversion (0.5.2) im Einsatz. Ich werd mal updaten und prüfen, obs daran liegen kann.
Bei "Leistung" schreibe ich in das state-reading auch eine Trendanzeige / Trend vor den Leistungswert.

@roadrunner: Ich verwende die JSON u. Dumper-library. Vielleicht musst du diese  mit "cpan JSON" nachinstallieren. Die Zeile 348 ("VZLOGGER_Log $hash, 5, "tuples Dumper: \n".Dumper($f);") könntest du auch mit "#" davor auskommentieren.
Mit dem Parameter "delay" kannst du die Pause in Sekunden zwischen den Abfragen einstellen. Versuch mal delay=180

Gruß
Karlheinz

andies

Vielen Dank für das tolle Modul, das ist sehr hilfreich - ich möchte nämlich FHEM als meine Hausautomationszentrale haben und nicht mehrere parallele Systeme betreiben. Allerdings habe ich hierzu eine Frage. Ich dachte, ich könnte die middleware beim Volkszähler einsparen, erhalte aber in der Log regelmäßige Fehlermeldungen der Form
2017.04.05 22:05:17 2: VOLKSZAEHLER Can't get http://192.168.2.110:8080/middleware.php/data/e18.json?from=60%20seconds%20ago&tuples=1 -- 500 Can't connect to 192.168.2.110:8080
2017.04.05 22:06:17 2: VOLKSZAEHLER Can't get http://192.168.2.110:8080/middleware.php/data/e18.json?from=60%20seconds%20ago&tuples=1 -- 500 Can't connect to 192.168.2.110:8080


Meine Installation sieht so aus:
{
"retry" : 3,
"daemon": true,
"verbosity" : 0,
"log" : "/tmp/vzlogger.log",

"local" : {
"enabled" : true,
"port" : 8080,
"index" : true,
"timeout" : 30,
"buffer" : 600
},

"meters" : [{
"protocol" : "sml",
"enabled" : true,
"device" : "/dev/ttyUSB0",
"parity" : "8N1",
"baudrate" : 9600,
"aggtime" : -1,
"aggfixedinterval" : true,
"channels": [{
"uuid" : "e18", //Vorschlag für eindeutigen Identifier. nur Buchstaben von a - f u. Zahlen erlaubt
"identifier" : "Power", /* bei Impulszähler ist Power oder Impulse erlaubt */
"type": "device",
"aggmode": "none",
"scaler": 1,        // neu
"duplicates": 0     // neu
}]
}
]}


und es handelt sich um einen https://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/emh-ehz-h1 bzw EMH eHZ-H Meter. Eventuell kann mir jemand helfen?
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

optimizer

#74
Hallo Andies,

deine Meldungen klingen mehr nach dem Modul VOLKSZAEHLER, dass auch in diesem Forum angeboten wird - hier wird aber die volkszähler-middleware abgefragt.
Bist du sicher, dass die Meldung aus dem Modul VZLOGGER kommt? Installationshinweise und das Modul findest du im ersten Beitrag.
Für mehr Details kannst du kurzfristig das Logging Level im Modul mit verbose auf 4 erhöhen. Ein list <modulname> wäre auch hilfreich.

Der identifier "Power" in deiner vzlogger.conf kann bei sml nicht stimmen. Versuch es mal mit "1-0:1.8.0"

Gruß
optimizer