Volkszähler -> Easymeter Q3DA und Kromschröder BK-4G

  • Moin, moin zusammen!
    Ich habe mal n paar Fragen an euch.
    Ich betreibe bei mir zuhause Homematic, einen Arduino Mega und einen RaspberryPI2.
    Als Energiezähler hab ich einen Stromzähler vom Typ Easymeter Q3DA1004 und einen Gaszähler vom Typ Kromschröder BK-4G.
    Für den Stromzähler habe ich einen USB-IR-Schreib-Lesekopf
    http://wiki.volkszaehler.org/h…reib-lesekopf-usb-ausgang
    und für den Gaszähler Gaszähler-Lesekopf.
    http://wiki.volkszaehler.org/h…llers/gaszaehler_lesekopf
    Beides von Udo.


    Den Easymeter hatte ich bis jetzt mit dem Pi anhand eines Skriptes ausgelesen und mir den Zählerstand und den Verbrauch an die Homematic-CCU2 gesendet.
    Das mit senden an Homematic hat den Grund das ich mir dann die Werte auf einem Tablet im Flur über DahUI anzeigen lassen kann. Deshalb sende ich mir die Daten an eine Systemvariable die dann DashUI ausliest.


    Zu erwähnen ist das der Easymeter keine Aufforderung zum Senden benötigt. Er sendet kontinuierlich folgende Zeilen mit aktualisierten Werten ( ausser die von mir hinzugefügten Kommentare :wink: ):


    Ausgewertet hab ich den Stromzähler mit Hilfe folgender Skripte Danke nochmal an Knut hier aus m Forum für die Unterstützung):
    - Verbrauch aktueller Monat ( ausgelöst durch crontab 5 Minuten nach jeder vollen Stunde)
    - Sendet aktualisierte Werte an Homematic-CCU (aktueller Verbrauch, Zählerstand)


    - Verbrauch aktueller Monat ( ausgelöst durch crontab jeden 1. im Monat)
    - Sendet aktualisierte Werte an Homematic-CCU (Vormonatsverbrauch, Zählerstand)


    Den Gaszähler hatte ich bis jetzt über den S0-Ausgang des Gaszähler-Lesekopfes am Impulseingang des Arduino (dieser ist als homeduino konfiguriert. Projektseite: http://www.stall.biz/project/h…l-fuer-die-hausautomation ) hängen und die Counts an die Homematic-CCU2 gesendet.
    Anhand eines Skriptes auf der CCU diese dann zu einem Monatsverbrauch und Zählerstand umgerechnet.


    Leider erfüllt das alles nicht so ganz meinen Erwartungen (Auzeichnung Strom und Gasverbrauch mit monatlicher Abrechnung).


    Jetzt hab ich mir auf meinen Pi das aktuelle Volkszählerimage installiert.
    Ich habe beide Leseköpfe jetzt am PI hängen.
    Über UDEV regeln ist der USB-IR-Schreiblesekopf -> lesekopf 0
    und der Gaszähler-Lesekopf -> lesekopf1


    Den vzlogger habe ich dann wie folgt konfiguriert ( Vielleicht kann sich das jemand mal genau ansehen ob das so in Ordnung ist):


    vzlogger.conf


    In der Middleware hab ich dann folgende Kanäle angelegt:


    Die Aufzeichnung der Werte klappt auch wunderbar soweit, nur jetzt hab ich da n paar Verständnisprobleme.


    1. Wie lösche ich die Demo-Kanäle??
    2. Muss man beim Stromzähler auch einen Initialzählerstand mit angeben? Den liest er doch eigentlich mit aus, oder -> 1-0:1.8.0*255(00000758.4697830*kWh) ?
    3. Wo sehe ich im Frontend bei „Stromzähler-Zählerstand“ den aktuellen Zählerstand? Von der Aufzeichnung sieht die Kurve genauso aus wie bei „Stromzähler Gesamtleistung“. Müsste da nicht ein steigender Zählerstand angezeigt werden?


    Gib es für den Volkszähler auch eine Möglichkeit z.B. über ein Skript folgendes durchzuführen?
    - Jede Stunde den aktualisierten derzeitigen Monatsgesamtverbrauch und den aktuellen Zählerstand auszulesen und an HM zu schicken (mit z.B. curl)
    - Jeden 1. Im Monat Vormonatsverbrauch auszulesen und an HM zu schicken.


    Sowohl für Stromzähler als auch für Gaszähler.


    Ich hoffe ihr konntet einigermaßen folgen *fg*


    Wäre super wenn mir da jemand helfen könnte!


    Tausend Dank schon mal im voraus!


    Johnny


    P.S. Ich hab keinen Plan von PHP und SQL ;-)

  • Zitat von PrinzEisenherz1

    Den vzlogger habe ich dann wie folgt konfiguriert ( Vielleicht kann sich das jemand mal genau ansehen ob das so in Ordnung ist):


    Vorsicht mit den Kommas am Ende der Zeilen.


    Zitat

    Initialzählerstand: 11051,25 -> Muss hier Komma oder Punkt????????


    Punkt.


    Zitat

    1. Wie lösche ich die Demo-Kanäle??


    Z.B mit vzclient an der Konsole vom Raspi.

    Code
    vzclient -u 18bdae40-18cf-11e1-97b1-c9ebec812cd6 delete channel


    Zitat

    2. Muss man beim Stromzähler auch einen Initialzählerstand mit angeben?


    Ja, sonst geht 3 nicht.


    Zitat

    3. Wo sehe ich im Frontend bei „Stromzähler-Zählerstand“ den aktuellen Zählerstand?


    Unten rechts. Dazu muss aber Aggregation in der Middleware aktiv sein und regelmäßig nachgefüllt werden.


    Zitat

    Von der Aufzeichnung sieht die Kurve genauso aus wie bei „Stromzähler Gesamtleistung“. Müsste da nicht ein steigender Zählerstand angezeigt werden?


    Nein. Deswegen ist es auch zweckfrei Leistung und Zählerstand zu loggen.


    Zumal: Was willst du aus einer stetig steigenden Treppe ablesen?


    Zitat

    Gib es für den Volkszähler auch eine Möglichkeit z.B. über ein Skript folgendes durchzuführen? [...] Ich hab keinen Plan von PHP und SQL


    Cronjob, bashscript, vzclient.
    Zu den Möglichkeiten schau dir mal die Referenzseite an.



    mfg JAU

    No Shift - No Service

  • Hi JAU
    erstmal danke für Deine Antwort!
    Das mit den Kommas hab ich schon bemerkt! Betrifft aber nicht die Original vzlogger.conf


    Dank für die Info mit dem vzclient. Hat bestens funktioniert.
    Zum Zählerstand hab ich noch ne Frage. Ich hab da immer wieder mal n riesen Peak drin! Heute Nacht war einer mit über 2 MW. Woher kommt das und wie kann ich das abstellen? Einen Megawatt-Verbraucher hab ich definitiv nicht *fg*


    Ich hab jetzt auch noch in der vzlogger.conf ->aggmode,aggtime, interval miteingefügt. Ist das so richtig? Oder macht das keinen Sinn? Verfälscht das die Messergebnisse?


    Dann ist mir aufgefallen das ich unter phpmyadmin bei der ID für "Stromzähler Zählerstand" der richtigen Zählerstand erfasst ist, so wie auch am Zähler angezeigt wird.
    Wie kann ich sowas auslesen? Geht sowas mit curl oder vzclient?
    Wenn ja, welche Parameter müsste ich da mit angeben?


    Ich bräuchte hald den Zählerstand für Homematic!


    Kann man auch den Gesamtimpulswert des Gaszählers auslesen? z.B. von 01.09.15 um 00:00 bis 15.09.15 00:00
    Wenn ja wie macht man das am besten?


    Ich hoffe Du oder jemand kann mir da weiterhelfen!


    Johnny

  • Zitat von PrinzEisenherz1

    Dank für die Info mit dem vzclient. Hat bestens funktioniert.


    Wobei curl vielleicht schneller sein könnte. Vzclient ist auch nur ein (Phython) Script. :|


    Zitat

    Zum Zählerstand hab ich noch ne Frage. Ich hab da immer wieder mal n riesen Peak drin!


    Das ist ein Zeitproblem das man mit besserer Hardware oder Aggregation in Griff bekommt.


    Zitat

    Ich hab jetzt auch noch in der vzlogger.conf ->aggmode,aggtime, interval miteingefügt. Ist das so richtig?


    "aggtime" und "aggfixedintervall" sind "meter"-Parameter.
    Nur "aggmode" gehört zum "channel".
    "intervall" wird benötigt wenn der Zähler nur auf Zuruf Daten ausspuckt. Also zurück zu "-1".


    Als Hilfestellung: vzlogger Config Editor


    Zitat

    Verfälscht das die Messergebnisse?


    Gröber. Wenn Peaks auftreten wird das Ergebnis aber eher besser als schlechter.
    Zumal bei weniger Daten die Systemperformance besser wird (bzw. bleibt).


    Zitat

    Dann ist mir aufgefallen das ich unter phpmyadmin bei der ID für "Stromzähler Zählerstand" der richtigen Zählerstand erfasst ist, so wie auch am Zähler angezeigt wird.
    Wie kann ich sowas auslesen? Geht sowas mit curl oder vzclient?


    Die Middleware unterstützt eine direkte Ausgabe der Zählerstände nicht.
    Problem liegt in der internen Struktur und den verschiedenen Arten von Daten mit denen der vz klar kommt. Eine direkte Zählerstandsabfrage wäre ein dreckiger hack geworden, daher hat sich da Projektteam gezielt dagegen entschieden.
    Der Zählerstand unten rechts ist das beste was du vom vz bekommen wirst (funktioniert dafür aber auch für Impulszähler).


    Eine Anfrage die das liefert (diesmal direkt an die MW) sieht z.B. so aus:

    Code
    http://127.0.0.1/middleware.php/data/ccd52140-9999-11e1-8e36-e556c9177879.json?from=0&tuples=1&group=day


    Hinter "consumption:" steht der Zählerstand.


    Die Anfrage kann etwas dauern weil der Zählerstand erst aus den vorhandenen Daten (unter Berücksichtigung des Initialstands) addiert wird.
    Der Wert entspricht auch der hinterlegten Einheit, bei deinem Gaszähler also keine Impulse sondern m³.


    Zitat

    Ich bräuchte hald den Zählerstand für Homematic!


    Eine Alternative wäre der httpd im vzlogger. Darüber werden die gelesene Daten zur weiteren Verwendung zur Verfügung gestellt.
    Du könntest sogar auch auf die gesamte Middleware verzichten.


    Zitat

    Kann man auch den Gesamtimpulswert des Gaszählers auslesen? z.B. von 01.09.15 um 00:00 bis 15.09.15 00:00
    Wenn ja wie macht man das am besten?


    Wie schon erwähnt hilft da ein Blick in die Referenz.
    All diese Anfragen sind auch über vzclient möglich. Auch mit Start- und Zieldatum.


    Z.B.

    Code
    vzclient -u ccd52140-9999-11e1-8e36-e556c9177879 get data from=01-09-2015 to=15-09-2015


    Man kann aber auch relative Zeitangaben verwenden.


    Wenn du direkt mit Unix-Timestamp arbeiten möchtest musst du beachten das dem Standard noch zusätzlich 000 angefügt werden muss. Der VZ arbeitet ms-genau, nicht nur s.



    mfg JAU

    No Shift - No Service

  • So, hab mal die vzlogger.conf so abgeändert das die Punkte aggtime, aggmode, interval, aggfixedinterval an der richtigen Stelle sind. Mal gespannt wie sich das auswirkt!
    Das mit dem httpd hab ich auch aktiviert. Da erscheint unter anderem dann auch der richtige Zählerstand.
    Mal kucken wie ich das dann am besten filtere das ich nur die benötigten Zahlen ausgespuckt bekomme.
    Was mir dabei aber aufgefallen ist, das hier beim Gaszähler nicht der Zählerstand (der aufsummierte wie in der Middleware) erschein sondern nur der Impuls (0 bzw 1).


    Hab den Punkt mal probiert (mit der UUID von mir)

    Code
    http://127.0.0.1/middleware.php/data/<UUID>.json?from=0&tuples=1&group=day


    Da spuckt er dann aber unter consumption 0 aus! hmmm....
    Als UUID hab ich die von dem Punkt "Stromzähler Zählerstand" genommern (OBIS 1.0.8).
    Klappt irgendwie nicht!


    Über vzclient muss ich später mal zuhause testen!
    Bin gerade noch auf Arbeit *g*


    Gruß
    Johnny

  • Zitat von PrinzEisenherz1

    Was mir dabei aber aufgefallen ist, das hier beim Gaszähler nicht der Zählerstand (der aufsummierte wie in der Middleware) erschein sondern nur der Impuls (0 bzw 1).


    Das ist soweit korrekt, der vzlogger lies ja auch nur die Zähler aus. Er sammelt ev. die Daten um die Middleware zu entlasten, aber ansonsten ändert er an den Daten nix.


    Zitat

    Da spuckt er dann aber unter consumption 0 aus! hmmm....


    Das klappt nur wenn er auch am Frontend den Zählerstand ausgibt.
    Wie oben schon erwähnt muss dazu Aggregation in der Middleware aktiv und die zugehörigen Tabellen in der Datenbank gefüllt sein.



    mfg JAU

    No Shift - No Service