Seite 1 von 3

Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 19. Okt 2021 10:57
von AndyS1989
Hallo zusammen,

habe den Volkszähler und Openhabian mit Openhab 3, jeweil auf einem eigenen Raspi laufen. Die Anbindung von Openhab zu Volkszähler über http funktioniert soweit. Ist es möglich zu dem aktuellen Verbrauch, Min, Max auch den aktuellen Zählerstand auf Openhab auszugeben?

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 19. Okt 2021 17:38
von udo1toni
Meines Wissens wird der konkrete Zählerstand in Volkszähler.org nicht angezeigt.
Gleichwohl liegt die Information natürlich in der Datenbank vor, wenn der Zähler über serielle Schnittstelle abgefragt wird, und nicht einfach die S0-Impulse aufgezeichnet werden.
Ich habe momentan keine entsprechende Erweiterung laufen, aber es sollte nicht allzu schwer sein, die Informationen mit einer Abfrage zu extrahieren und dann nach openHAB zu schicken. Dazu könnte man auf dem Volkszaehler.org Pi ein Script laufen lassen, was einfach alle 10 Sekunden den Zählerstand aus der Datenbank extrahiert und per curl in ein bestimmtes Item schreibt. Alternativ könnte man auch ein python Script schreiben, welches die Daten per mqtt liefert, sollte nicht weiter kompliziert sein...

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 19. Okt 2021 20:03
von AndyS1989
Ok soweit bin ich noch nicht das ich mir selber Scripte schreibe :-).
Was ich nicht verstehe wieso ich den unten gezeigten Gesamtverbrauch (3707 kWh) oder auch die Summe in Euro nicht auch einfach per HTTP auf Openhab bringen kann?
volkszaehler.JPG

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 19. Okt 2021 23:21
von udo1toni
Das ist interessant... bei mir werden nämlich die Zählerstände in der UI nicht angezeigt... Wenn die Anzeige zuverlässig über die UI kommt, schau spaßeshalber vielleicht noch im JSON Objekt nach, ob auch dort der Zählerstand übertragen wird. Ansonsten kannst Du natürlich auch http dazu verwenden, die Daten abzugreifen. allerdings wird es vermutlich nicht ganz einfach, die Daten zuverlässig korrekt abzugreifen...

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 22. Okt 2021 09:27
von mcdandrew
Ich hatte es damals wie folgt abgefragt...habe es derzeit aber nicht mehr im Einsatz (deshalb auch auskommentiert...sollte aber noch funktionieren)
Vielleicht hilft es euch weiter

Code: Alles auswählen

Thing http:url:vz:strom "Volkszähler 10min" [ 
    baseURL="http://192.168.10.6/middleware.php/data.json?from=-10Minute&to=now&uuid[]=306bd2a0-eb03-11eb-b386-470b4c5a7cdf",
    refresh=60,
   timeout=10000
] {
    Channels: 
      //uuid="	306bd2a0-eb03-11eb-b386-470b4c5a7cdf" -> Gesamt
     Type number : Strom_Gesamt_leistung	"Gesamt Leistung" 	[stateTransformation="JSONPATH:$.data[?(@.uuid=='306bd2a0-eb03-11eb-b386-470b4c5a7cdf')].average"]

    //Type number : Strom_Haushalt_min	"Haushaltsstrom  min" [stateTransformation="JSONPATH:$.data[?(@.uuid=='df5f90a0-eaff-11eb-b780-47dc55049e86')].min[1]"]
   
   //Type number : Strom_Haushalt_max	"Haushaltsstrom  max" [stateTransformation="JSONPATH:$.data[?(@.uuid=='df5f90a0-eaff-11eb-b780-47dc55049e86')].max[1]"]
   //Type number : Strom_Haushalt_con 	"Haushaltsstrom  Verbrauch" [stateTransformation="JSONPATH:$.data[?(@.uuid=='df5f90a0-eaff-11eb-b780-47dc55049e86')].consumption"]   
}

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 22. Okt 2021 23:23
von udo1toni
Nein, es geht um den aktuellen Zählerstand, nicht um den Verbrauch. Der Verbrauch ist klar. Der Zählerstand wird im K´JSON nicht ausgeliefert, steht aber in der Datenbank. Tatsächlich greife ich die Zählerstände in der MariaDB über einen View ab. Allerdings bilde ich die Daten nicht in openHAB ab (oder zumindest bisher nicht).

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 2. Nov 2021 07:41
von SRX
Ich nutze VZ ebenfalls um die Werte auszulesen. Allerdings nutze ich einen optischen Kopf.
Den Zählerstand ermittle ich mit folgender Abfrage: (IP-Adresse und UUID bitte eintragen)

Code: Alles auswählen

//Item
String Strom_tuples "Test Haushalt [%.1f W]" (Current, Current_Chart) { http="<[http://<IP-Adresse VZ>/middleware.php/data/<UUID>.json?from=now&options=raw:60000:JSONPATH($.data.tuples)]" }

Number Strom_Stand "Zaehlerstand Haushalt [%.1f kWh]" (Current, Current_Chart) 
//Rule
rule "Zaehlerstand"
when
    Item Strom_tuples changed
then
        var String strTeil2 = Strom_tuples.toString.split(",").get(2)

    Strom_Stand.sendCommand(strTeil2)
       
end
Evtl. hilft es. Aber bitte beachten das ich noch OH 2.5 im Einsatz habe.

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 2. Nov 2021 16:40
von udo1toni
Ah, dann ist der Zählerstand doch im JSON enthalten… Ich schaue mir das nachher mal in Ruhe an…


Gesendet von iPad mit Tapatalk

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 2. Nov 2021 18:15
von AndyS1989
Hm... komme nicht wirklich weiter. Ich habe auch einen Optisches Lesekopf verbaut. Bei mir in Openhab 3 sieht das Thing im Code folgendermaßen aus:

Code: Alles auswählen

UID: http:url:Strom_Zaehlerstand
label: Strom Zaehlerstand
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http="<[http://192.168.178.36//middleware.php/data/ab5e7330-eb06-11eb-8cd0-415ce6542c45.json?from=now&options=raw:60000:JSONPATH($.data.tuples)]
  password: xxxx
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048
  username: xxxx
channels:
  - id: Strom_Zaehlerstand
    channelTypeUID: http:number
    label: Strom Zaehlerstand
    description: ""
    configuration:
      stateTransformation: JSONPATH:$.data[?(@.uuid=='593d03a0-eb0e-11eb-84be-a5fa265407f3')].average
Eventuell könnt ihr mir hier helfen? Ich bekomme in Verbindung mit der angepassten Rule als String "label: Strom Zaehlerstand" zurück.

Re: Volkszähler + Openhab 3 Gesamtverbrauch

Verfasst: 2. Nov 2021 20:25
von udo1toni
Die baseURL ist verkehrt. Die angegebene Konfiguration ist aus dem http1 Binding. Ganz grob:

Code: Alles auswählen

 { http="<[http://<IP-Adresse VZ>/middleware.php/data/<UUID>.json?from=now&options=raw:60000:JSONPATH($.data.tuples)  ]" }
Ankommend^ ^-------------------------------- baseURL --------------------------------^   ^   ^- stateTransformation -^
                                                                                      Refresh (in MS)
Aber es wäre besser, statt mit einer Rule aufwändig den Wert herauszuschneiden, gleich das JSON so anzupassen, dass die richtigen Daten direkt heraus fallen.