Aufbau neues Projekt mit zweitem RaspberryPi

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von udo1toni »

Der Vorteil des http Caches tritt nur dann zutage, wenn Du aus der selben (!) Abfrage mehrere diskrete Werte extrahieren willst. Ich denke, das war auch der Grund, warum ich das wieder aus dem Cache rausgenommen habe - ich brauche nur einen einzelnen Wert.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von Kuli »

Hallo,

ich brauce noch mal Unterstützung. Die aktuelle Leistung bekomme ich dank Udo´s Hilfe jetzt angezeigt mit dem von Ihm gepostetet item:

Number VZ_Bezug "Bezug [%.1f W]" (Strom) {http="<[http://192.1168.178.100/middleware.php/ ... a.average)]"}

Jetzt möchte ich aber auch das Zähler Item, also den aktuellen Zählerstand in openHAb anzeigen.
Dazu habe ich schon einiges ausprobiert, aber nicht zum Laufen gebracht, weil ich die Syntax nicht verstehe.

1. Woher wird dem Ithem der Wert geliefert? Aus der Middelware des Volkszählers und nicht aus dem Frontend, richtig?
Das Item greift aber nicht direkt in die Datenbak sondern mittels Jsonpath auf eine http Seite? Liefert die MIddelware eine http-Seite?
Muss ja wohl sonst würde es keinen Leistungswert zurück liefern.

2. Was bedeutet die ":30000" nach der uuid?

3. Warum funktioniert das VZ-Bezug item, wenn JSONPATH($.date.average) doch nur data als Angabe hat?
Wenn ich mir meine Json Datei anschaue müsste die Abfrage doch JSONPATH($.data[0].tuples[0][1].average) sein?
Ich habe meine json Datei mal angefügt.

4. Was bedeutet das average am Ende der Abfrage? Welche Durchschnittswerte welcher Zeitspanne werden dort übernommen? Wie kann ich den aktuellen Wert abfragen?


Was muss ich also an dem item öndern, um den Zählerstand ab zu fragen? Hier mit average einen Durchschnittswert ab zu frgaen macht ja keinen Sinn beim Zählerstand brauche ich ja einen aktuellen Wert.

Okay sind viele Fragen geworden. Ich wäre sehr dankbar, wenn ich ich eine Antwort auf die Fragen bekomme, um mienen grauen Schleier im Kopf etwas zu lüften.

Grüße Kuli
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von udo1toni »

Ich scheine da den to-Parameter unterschlagen zu haben...
Die Adresse muss natürlich

Code: Alles auswählen

http://192.1168.178.100/middleware.php/data.json?from=-10Minute&to=+1Minute&uuid=12345678-9012-3456-7890-123456789012:30000:JSONPATH($.data.average)
lauten...
Und schon sollten die Datenpunkte für average auch vorhanden sein :)

Der aktuelle Zählerstand hingegen wird so nicht auszulesen sein.
volkszähler verwendet allerdings MySQL (oder MariaDB?) als middleware. Du könntest Dich allenfalls direkt mit der middleware verbinden und dort per SQL Query die Daten abgreifen. Über die Webschnittstelle von volkszähler steht dieser Wert jedenfalls nicht zur Verfügung. Ob der aktuelle Zählerstand überhaupt direkt gespeichert wird, müsste man auch noch nachschauen...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von udo1toni »

Ich hab mal nachgeschaut. Der Zählerstand wird nur unter der Voraussetzung in der Datenbank abgelegt, dass der absolute Zählerstand auch ausgelesen wird. Das bedeutet, Zähler mit Impulsauswertung fallen hier raus.

Eine SQL-Abfrage wie z.B.

Code: Alles auswählen

SELECT `value` FROM `data` WHERE `channel_id` = 21 ORDER BY `timestamp` DESC LIMIT 1;
liefert den letzten Wert (hier von der Channel ID 21, die kann man in der Tabelle entities von der UID ableiten) vom Zähler.
Die Abfrage kann man in der Datenbank als View speichern und dann abrufen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von Kuli »

Hallo Udo.

Danke erst mal für deine schnellen Antworten. Ich verstehe deinen Ansatz über die Datenbank, aber müsste es nicht auch (für mich) einfacher über die Webschnittstelle der Middelware gehen?
Was meine ich mit Webschnittstelle der Middelware? Wenn ich den Volkszaehler auf Port 8090 (habe ich so in der vzconfig über "Buid-in HTTP server" auf Port 8090 eingestellt) abfrgae, bekomme die Json Antwort wie oben als Json.txt mitgeschickt. Dort ist der Zählerstand (910777.58530000004) als Wert enthalten. Dieser muss sich doch genauso wie der Leistungswert auslesen lasse, oder?

Wenn ich die Abrage auf Port 8080 (oder wie bei dir ohne Angabe eines Ports) mache (Abfrage für das Frontend), hast du recht, bekomme ich den Zählerstand nicht übermittelt.

Hast du noch eine Idee, oder bin ich auf dem Holzweg?
wenn ich auf dem Holzweg bin, werde ich das Thema über die Datenbank angehen müssen.

Grüße Kuli

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von Kuli »

Hallo.

Nachdem ich von den Volkszaehler Kollegen gerlernt habe, dass es einen separaten HTTP-Server für die Middelware gibt (wie oben vermutet), hat es mich nicht losgelassen, den Zählerstand dort aus der Middelware aus zu lesen und siehe da, es funktioniert.

In der http.cfg habe ich dazu eine Abfrage auf den von mir eingestellten Wert der Middelware (8090) alle 10000 Millisekunden angeregt:

# configuration of the second cache item
counterCache.url=http://192.168.4.20:8090
counterCache.updateInterval=10000

Als Item hol ich mir dann den Wert alle 30 Sekunden mit folgender item Konfiguration:

Number counter"Zaehlerstaende[%.3f kWh]" <inverter> {http="<[counterCache:30000:JSONPATH($.data[1].tuples[0][1])]"}

Damit erhalte ich alle 30 Sekunden den aktuellen Zaehlerstand bis auf die 3 Nachkommastelle.
Das selbe funktioniert überings aus mit dem aktuellen Leistugswert direkt aus der Middelware, ebenso wie die Abfrage von Udo aus dem Frontend.
Nur das dem Frontend halt kein Zählerstand zur Verfügung gestellt wird und dieser somit auch nicht abgefragt werden kann.


Vielleicht hilft die Info ja jemanden, ich begebe mich jetzt an den Feinschliff.

Grüße Kuli

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von Kuli »

Ergänzung:

Das funktioniert aus der Middleware auch ohne das http Binding (Cache) direkt mit dem aktuellen Wert in das Item mit:

Number VZ_Bezug "Bezug [%.1f W]" (Strom) {http="<[http://192.168.4.20:8090/:30000:JSONPAT ... les[0][1])]"}

oder für den Zählerstand mit

Number VZ_Zaehler "Bezug [%.1f W]" (Strom) {http="<[http://192.168.4.20:8090/:30000:JSONPAT ... les[0][1])]"}

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Aufbau neues Projekt mit zweitem RaspberryPi

Beitrag von udo1toni »

Ah, cool, dass die middleware auch einen htpp port auf macht, war mir gar nicht bewusst.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten