Easymeter Q3DA1004 abfragen mit Script

  • Hi zusammen!
    Ich hab n Problem und hoffe das mir vielleicht hier jemand helfen kann!
    Ich habe zuhause einen Easymeter Q3DA1004 durch meinen Netzbetreiber verbaut bekommen und den würde ich gerne über ein Script auslesen.
    Ich habe mir von Udo (volkszaehler.org) einen USB-IR-Schreib-Lesekopf besorgt und den an einem RaspberryPI 2 hängen.
    Über minicom hab ich dann die Schnittstelle konfiguriert, mit stty -g -F /dev/ttyUSB0 die Einstellungen exportiert.
    Wenn ich dann über Konsole folgendes eingebe:

    Code
    stty -F /dev/ttyUSB0 1:0:cad:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
    cat /dev/ttyUSB0


    bekomme ich folgende Ausgabe (alle ca 2 Sekunden mit aktualisierten Werten):
    Ich muss den Zähler auch nicht mit nem echo-Befehl anstoßen das er plaudert!
    Er sendet alles im Klartext


    Jetzt möchte ich in Homematic nur den Zählerstand verwenden und hab dazu ein Script für den Itron ACE3000 (vz-wiki) angepasst um es für den Q3D zu verwenden und leider klappt das nicht!


    Hier der link zum original Script
    http://wiki.volkszaehler.org/h…hz/itron_ace3000_type_260


    Hier das angepasste Script


    Das Script soll bei mir folgendes bewirken:
    Script wird über crontab zu jedem 01. ausgeführt
    1. Sicherung des alten Zählerstandes
    2. auslesen des aktuellen Zählerstandes
    3. Verbrauch berechnen (Zählerstand neu - Zählerstand alt)
    4. dann soll Zählerstand neu und Verbrauch mit wget an Homematic CCU2 übertragen werden.


    Leider liest mir das Script nichts aus!
    Ich hab schon alles mögliche probiert aber leider bekomme ich es nicht hin!
    Hat vielleicht jemand von euch ne Lösung oder ein Script das ich verwenden kann?


    Gruß
    Johnny

  • Aus der Hüfte geschossen:


    Code
    [[ "$line" =~ "1-0:1.8.0*255" ]]


    Der Ausdruck "0*" sucht nach "Ziffer 0 beliebig oft", was Du suchst, ist einfach


    Code
    [[ "$line" =~ "1.8.0" ]]


    oder mit maskiertem Stern


    Code
    [[ "$line" =~ "1-0:1.8.0[*]255" ]]


    Knut

    20.12.11: 11,28 kWp | 22 (-10°) + 26 (-100°) Q.PRO 235 | STP 10000TL-10

    26.03.12: 9,18 kWp | 18 (80°) + 18 (-100°) Q.PEAK 255 | STP 8000TL-10

    17.08.15: 5,72 kWp | 22 (80°) Q.PRO 260 | STP 5000TL-20

    alle DN 22°


    FTP-Hosting für Photovoltaikanlagen - self.Logger.solar

    API für Prognosedaten zur Solarproduktion - Forecast.Solar

  • Hi Knut
    Danke für Deinen Beitrag aber leider klappt das irgendwie nicht!
    Das Script schreibt mir nichts in die Variable zaehlerstand.


    Gibt es vielleicht ne andere Möglichkeit die Zeile mit dem OBIS-Code 1.8.0 raus zufiltern und mir von der Zeile den Verbrauch in eine Variable zu schreiben?


    Gruß Johnny

  • Versuch erst mal dieses Minimal-Script, um zu verstehen, was da abläuft:



    Knut

    20.12.11: 11,28 kWp | 22 (-10°) + 26 (-100°) Q.PRO 235 | STP 10000TL-10

    26.03.12: 9,18 kWp | 18 (80°) + 18 (-100°) Q.PEAK 255 | STP 8000TL-10

    17.08.15: 5,72 kWp | 22 (80°) Q.PRO 260 | STP 5000TL-20

    alle DN 22°


    FTP-Hosting für Photovoltaikanlagen - self.Logger.solar

    API für Prognosedaten zur Solarproduktion - Forecast.Solar

  • Schön,


    dann nur noch Deins wieder drumstricken und es sollte gehen.


    Knut

    20.12.11: 11,28 kWp | 22 (-10°) + 26 (-100°) Q.PRO 235 | STP 10000TL-10

    26.03.12: 9,18 kWp | 18 (80°) + 18 (-100°) Q.PEAK 255 | STP 8000TL-10

    17.08.15: 5,72 kWp | 22 (80°) Q.PRO 260 | STP 5000TL-20

    alle DN 22°


    FTP-Hosting für Photovoltaikanlagen - self.Logger.solar

    API für Prognosedaten zur Solarproduktion - Forecast.Solar

  • Da bin ich gerade dabei!
    Mal ne Frage, gibt es ne Möglichkeit in dem Script ne Funktion einzubinden die nur ausgeführt wird wenn die Uhrzeit des zwischen z.b. 00:30 - 23:30 ist?
    Also, das Script soll mit crontab z.B. jede Stunde gestartet werden. Um 00:00 soll der Tageswert geschrieben werden und zwischen 01:00 und 23:00 nur der Stundenwert in eine separate Variable.
    Oder Soll ich das lieber in getrennte Scripte machen?


    Gruß


    Johnny

  • einen wunderschönen guten Morgen.
    Knut
    Gestern hab ich Dein Script für mich angepasst und jetzt geht plötzlich nichts mehr.
    Hab dann auch dein Ursprungsscript ohne Änderung probiert aber da geht es dann auch in eine Dauerschleife über wenn der Punkt kommt wo im Datenstrom nach der OBIS 1.8.0 gesucht werden soll.
    Auf der Konsole zeigt er mir an das er mal die Kennung des Zählers in die Variable zaehlerstand_neu schreibt,oder n Teil der OBIS-1.8.0 Zeile.
    Ich verstehs nicht warum es jetzt nicht mehr klappt.
    USB-IR-SchreibLesekopf funktioniert. mit cat /dev/ttyUSB0 wird alles richtig angezeigt.


    Hier mal meine drei Scripts:


    Das 1. ist nur zum erzeugen von Ausgangszählerwerten die dann das 2. Script als Ausgangslage nutzt.
    Das erste wird auch nur einmal verwendet.



    Hauptscript soll Monats und Jahresverbrauch berechnen. Es soll über crontab jeden 1. des Monats gestartet werden und mir die Ergebnisse an die CCU von Homematic schicken


    Script 2


    Vielleicht kannst Du da was erkennen, oder jemand anderes!?!?!


    Gruß
    Johnny