[vz-users] Abfrage Zählerstand aus Wasserzähler

Heine.Thomas at online.de Heine.Thomas at online.de
Do Apr 8 09:42:08 CEST 2021


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.


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 
>> <mailto: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:
>>> RE: [vz-users] Abfrage Zählerstand aus Wasserzähler
>>> 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
>>>     <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  <http://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  <http://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  <http://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  <http://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  <http://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  <http://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  <http://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
>>>             <mailto: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
>>>             <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
>>>
>>>
>>
>

-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20210408/d7b863e3/attachment-0001.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : bhjgbnpbhbfpehmc.png
Dateityp    : image/png
Dateigröße  : 13106 bytes
Beschreibung: nicht verfügbar
URL         : <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20210408/d7b863e3/attachment-0001.png>


Mehr Informationen über die Mailingliste volkszaehler-users