[vz-users] Abfrage Zählerstand aus Wasserzähler
Andreas Goetz
cpuidle at gmail.com
Do Apr 8 11:00:27 CEST 2021
Du kannst noch ein tuples=1 anhängen, dann sollte die Middleware das in einen Wert verdichten.
Viele Grüße, Andreas
> Am 08.04.2021 um 10:29 schrieb Heine.thomas at online.de:
>
> Hallo Andreas,
>
> ok, dass passt.
> Dann kann ich es mir selbst zusammensetzen...
>
> Kann ich den Gesamtverbrauch irgendwie besser abfragen, dass ich nicht alle Werte geliefert bekomme?
> Also nicht mit
> from=1&to=now
>
> Gruß
> Thomas
>
> Am 08.04.2021 um 10:18 schrieb Andreas Goetz:
>> Das passiert tatsächlich nicht in der Middleware sondern nur im UI:
>>
>> this.totalconsumption = (this.definition.scale || 1) * this.initialconsumption + json.data.consumption;
>>
>> Du musst die Addition also selber machen. Den Wert dafür erhältst Du über:
>>
>> https://demo.volkszaehler.org/middleware.php/entity/1a233660-2e6c-11eb-920c-47caa07ee809.json
>>
>> Viele Grüße, Andreas
>>
>>
>>> On 8. Apr 2021, at 10:03, Heine.Thomas at online.de wrote:
>>>
>>> Hallo Andreas,
>>>
>>> das ist vom ersten Wert bis jetzt, oder?
>>> Das gibt ne lange Liste (siehe Anhang)
>>>
>>> Da steht dann bei consumption 1490 drin.
>>> Ist ja auch der Verbraúch seit der Aufzeichnung.
>>>
>>> Wird da aber nirgends der Initailverbrauch drauf gerechnet oder angezeigt, oder?
>>> So dass ich es nicht selbst machen muss und an mehreren Stellen dran denken muss?
>>>
>>> Oder kann ich den Eintrag des Initialverbrauchs auch irgendwie abfragen?
>>>
>>> Danke
>>>
>>> Gruß
>>> Thomas
>>>
>>>
>>> Am 08.04.2021 um 09:55 schrieb Andreas Goetz:
>>>> Entschuldige, Deine Timestamps scheinen zu passen in ms. Bei Post kannst Du die aber weglassen- die Middleware wird sie selbst erzeugen.
>>>>
>>>> Bzgl. Abfrage probier mal bitte ?from=1&to=now
>>>>
>>>> Viele Grüße,
>>>> Andreas
>>>>
>>>>
>>>>> On 8. Apr 2021, at 09:42, Heine.Thomas at online.de wrote:
>>>>>
>>>>> Hallo Andreas,
>>>>>
>>>>> ich steh grade auf dem Schlauch. An welcher Stelle seht ihr denn falsche Zeitstempel?
>>>>> Welcher Konverter? Das ESP?
>>>>>
>>>>> Das ESP sendet die Daten an Node-Red. Dort setze ich mir den Post-Befehl selbst zusammen.
>>>>> Ich nehme den Counter-stand und setze die UUID und einen aktuellen Zeitstempel mit dran.
>>>>> <bhjgbnpbhbfpehmc.png>
>>>>>
>>>>> ich poste es wie folgt:
>>>>> http://192.168.178.51/middleware.php/data/xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx.json?ts=1617867468039&value=147
>>>>>
>>>>> Die post-response:
>>>>> {"_msgid":"99863cea.a330b","uuid":"xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx","timestamp":1617867468039,"url":"http://192.168.178.51/middleware.php/data/xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx.json?ts=1617867468039&value=147","statusCode":200,"headers":{"date":"Thu, 08 Apr 2021 07:37:48 GMT","server":"ReactPHP/1","cache-control":"no-cache, private","content-type":"application/json","access-control-allow-origin":"*","content-length":"26","connection":"close","x-node-red-request-node":"39370292"},"responseUrl":"http://192.168.178.51/middleware.php/data/xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx.json?ts=1617867468039&value=147","payload":{"version":"0.3","rows":1},"redirectList":[]}
>>>>>
>>>>> Ist hier irgend ein Fehler versteckt?
>>>>>
>>>>> Gruß
>>>>> Thomas
>>>>>
>>>>> Am 08.04.2021 um 09:01 schrieb Andreas Goetz:
>>>>>> Die VZ Zählerstände sind in Millisekunden- der Konverter vmtl. Sekunden?
>>>>>>
>>>>>> Viele Grüße, Andreas
>>>>>>
>>>>>>
>>>>>>> On 8. Apr 2021, at 09:00, Heine.Thomas at online.de wrote:
>>>>>>>
>>>>>>> Hallo Thomas,
>>>>>>>
>>>>>>> Wenn ich es so abfrage:
>>>>>>> http://192.168.178.51/data/xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx.json
>>>>>>> kommt folgendes:
>>>>>>>
>>>>>>> {"version":"0.3","data":{"tuples":[[1617777764306,0,1]],"uuid":"xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx","from":1617777464308,"to":1617777764306,"min":[1617777764306,0],"max":[1617777764306,0],"average":0,"consumption":0,"rows":2}}
>>>>>>> consumption bleibt 0 (ist das nicht der Aktualverbrauch?)
>>>>>>>
>>>>>>> Ich hab ja keinen Impuls-Kanal, sondern einen Zählerstand-Kanal.
>>>>>>> In Frontend wird der Gesamtverbrauch ja auch richtig angezeigt (aufgerundet 136m³):
>>>>>>>
>>>>>>> <ajjlibndepcjlagi.png>
>>>>>>>
>>>>>>> Den Gesamtverbrauch (müsste ja der Zählerstand sein) würde ich gerne anzeigen.
>>>>>>> Oder habe ich hier irgendwas nicht richtig kapiert, oder Grundlegende Denkfehler?
>>>>>>>
>>>>>>> Der Counter-Stand des ESP kann doch auch als Zählerstand mit dem entsprechenden Offset und Initialverbrauch als "Zähler" dienen, oder?
>>>>>>>
>>>>>>> <lppmegjjoipaghpl.png>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Was stimmt bei den Zeitstempeln nicht? Wenn ich sie im Unix-Time-Converter eingebe, passen sie.
>>>>>>>
>>>>>>> Gruß Thomas
>>>>>>>
>>>>>>>
>>>>>>> Am 08.04.2021 um 08:40 schrieb Thomas Höpfner:
>>>>>>>> Hallo Thomas,
>>>>>>>>
>>>>>>>> die Zeitstempel stimmen nicht. Wie PHP hier reagiert verstehe ich auch nicht.
>>>>>>>> options=raw kanst du weglassen. Hier bekommst du nur eine Liste mit allen Impulsen. Interesand ist aber nur die Anzahl, die steht dann auch als consumtion in der Antwort.
>>>>>>>> Ich sehe im Moment keine Möglichkeit den aktuellen Zählerstand eines Iipulszählers aus vz auszulesen.
>>>>>>>>
>>>>>>>> Thomas
>>>>>>>>
>>>>>>>> -----Ursprüngliche Nachricht-----
>>>>>>>> Von: Heine.Thomas at online.de <Heine.Thomas at online.de>
>>>>>>>> Gesendet: Donnerstag 8 April 2021 08:24
>>>>>>>> An: volkszaehler-users at demo.volkszaehler.org
>>>>>>>> Betreff: Re: [vz-users] Abfrage Zählerstand aus Wasserzähler
>>>>>>>>
>>>>>>>> Hallo Andreas,
>>>>>>>>
>>>>>>>> es liegen seid 2.4. Daten vor (inzwischen 1450 Liter)
>>>>>>>> Initialverbrauch 134264 Liter
>>>>>>>> Der Zählerstand sollten also inzwischen rechnerisch 135714 Liter sein.
>>>>>>>>
>>>>>>>> Hier die Debug-Abfrage:
>>>>>>>>
>>>>>>>> http://192.168.178.51/data/xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx.json?from=-1&options=raw&debug=1
>>>>>>>>
>>>>>>>> und das Ergebnis:
>>>>>>>>
>>>>>>>> {
>>>>>>>> "version": "0.3",
>>>>>>>> "data": {
>>>>>>>> "tuples": [
>>>>>>>> [
>>>>>>>> 1617862067814,1617864302904
>>>>>>>> 145,
>>>>>>>> 1
>>>>>>>> ]
>>>>>>>> ],
>>>>>>>> "uuid": "xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx",
>>>>>>>> "from": 1617861767833,
>>>>>>>> "to": 1617862067814,
>>>>>>>> "average": 0,
>>>>>>>> "consumption": 0,
>>>>>>>> "rows": 2
>>>>>>>> },
>>>>>>>> "debug": {
>>>>>>>> "database": "pdo_mysql",
>>>>>>>> "time": 0.19783,
>>>>>>>> "uptime": 1177360290,
>>>>>>>> "load": [
>>>>>>>> 3.78,
>>>>>>>> 4.25,
>>>>>>>> 4.21
>>>>>>>> ],
>>>>>>>> "commit-hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
>>>>>>>> "php-version": "7.3.19-1~deb10u1",
>>>>>>>> "messages": [],
>>>>>>>> "sql": {
>>>>>>>> "totalTime": 0.02234506607055664,
>>>>>>>> "worstTime": 0.0026459693908691406,
>>>>>>>> "queries": [
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n MAX(timestamp) \nFROM \n data \nWHERE \n channel_id = 44 \n AND timestamp < 1617873106000",
>>>>>>>> "execTime": 0.0026459693908691406
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n MAX(timestamp) \nFROM \n data \nWHERE \n channel_id = 44 \n AND timestamp < 1617862067814",
>>>>>>>> "execTime": 0.0012600421905517578
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 6 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.0021820068359375
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 5 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.0018649101257324219
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 4 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.002110004425048828
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 3 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.0017001628875732422
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 2 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.001873016357421875
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 1 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.0018138885498046875
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n UNIX_TIMESTAMP(\n FROM_UNIXTIME(\n MIN(timestamp) \/ 1000, \n \"%Y-%m-%d %H:%i:00\"\n )\n ) * 1000 \nFROM \n aggregate \nWHERE \n channel_id = 44 \n AND type = '1' \n AND timestamp >= UNIX_TIMESTAMP(\n DATE_ADD(\n FROM_UNIXTIME(\n 1617861767833 \/ 1000, \"%Y-%m-%d %H:%i:00\"\n ), \n INTERVAL 1 minute\n )\n ) * 1000",
>>>>>>>> "execTime": 0.001316070556640625
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n UNIX_TIMESTAMP(\n DATE_ADD(\n FROM_UNIXTIME(\n MAX(timestamp) \/ 1000, \n \"%Y-%m-%d %H:%i:00\"\n ), \n INTERVAL 1 minute\n )\n ) * 1000 \nFROM \n aggregate \nWHERE \n channel_id = 44 \n AND type = '1' \n AND timestamp < 1617862067814",
>>>>>>>> "execTime": 0.0012249946594238281
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n aggregate.type \nFROM \n aggregate \n INNER JOIN entities ON aggregate.channel_id = entities.id \nWHERE \n uuid = 'xxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx' \n and aggregate.type = 0 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nLIMIT \n 1",
>>>>>>>> "execTime": 0.0016429424285888672
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n COUNT(1) \nFROM \n data \nWHERE \n channel_id = 44 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814",
>>>>>>>> "execTime": 0.001310110092163086
>>>>>>>> },
>>>>>>>> {
>>>>>>>> "sql": "SELECT \n timestamp, \n value, \n 1 AS count \nFROM \n data \nWHERE \n channel_id = 44 \n AND timestamp >= 1617861767833 \n AND timestamp <= 1617862067814 \nORDER BY \n timestamp ASC",
>>>>>>>> "execTime": 0.0014009475708007812
>>>>>>>> }
>>>>>>>> ]
>>>>>>>> }
>>>>>>>> }
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> Hilft das weiter?
>>>>>>>>
>>>>>>>> Gruß
>>>>>>>> Thomas
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Am 08.04.2021 um 08:10 schrieb Andreas Goetz:
>>>>>>>> Häng mal bitte ein &debug=1 dran, dann sollten wir sehen welches SQL ausgeführt wird. Vielleicht gibt das einen Hinweis.
>>>>>>>>
>>>>>>>> Viele Grüße, Andreas
>>>>>>>>
>>>>>>>> PS.: seit wann erfasst Du die Daten?
>>>>>>>>
>>>>>>>> Am 08.04.2021 um 07:59 schrieb Heine.thomas at online.de:
>>>>>>>>
>>>>>>>> Hallo,
>>>>>>>>
>>>>>>>> ich habe inzwischen meinen Wasserzähler mit einem Reed-Kontakt ausgestattet und lese ihn per Tasmota ESP8266 über einen Counter (10l-Schritte) aus.
>>>>>>>> der Counterwert wird also alle 10l um 1 erhöht.
>>>>>>>> Im VZ-Logger habe ich einen Kanal mit "Wasser Zählerstände" angelegt.
>>>>>>>> Das klappt soweit auch alles. Ich sehe einen Verbrauch, und auch den Gesamt-Zählerstand nach dem ich einen Initialen Zählerstand eingetragen habe.
>>>>>>>>
>>>>>>>> <adillmbjlmnoplia.png>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Per HTTP-Request kann ich auch bestimmte Zeit-Bereiche super abfragen.
>>>>>>>>
>>>>>>>> Jetzt würde ich gerne aber an meiner Haus-Visualisierung den aktuellen Zählerstand anzeigen.
>>>>>>>>
>>>>>>>>
>>>>>>>> So wollte ich ihn abfragen:
>>>>>>>>
>>>>>>>> http://192.168.178.51/data/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx.json?from=-1&options=raw
>>>>>>>>
>>>>>>>> das json sieht jedoch dann so aus:
>>>>>>>> {"version":"0.3","data":{"tuples":[[1617860867741,144,1]],"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx","from":1617860567724,"to":1617860867741,"average":0,"consumption":0,"rows":2}}
>>>>>>>>
>>>>>>>> bzw. so:
>>>>>>>> <lcnmkochlddnejkg.png>
>>>>>>>>
>>>>>>>> der Zählerstand müsste derzeit irgendwo bei 136xxx Liter sein...
>>>>>>>>
>>>>>>>> Was mache ich bei der Abfrage zum Zählerstand falsch?
>>>>>>>>
>>>>>>>> Danke vorab für eure Hilfe
>>>>>>>>
>>>>>>>> Gruß
>>>>>>>> Thomas
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>> <xxxx-xxxxxx-xxxxxxx-xxxxxxx.json>
>>
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20210408/4562e85d/attachment-0001.html>
Mehr Informationen über die Mailingliste volkszaehler-users