Hallo,
ich verwende HTTPMOD um Daten von meiner Solaranlage zu importieren. Die Daten werden jede Minute abgerufen. Leider habe ich keine Möglichkeit gefunden das Datum der Readings zu beeinflussen - der Last-Modified Header (der korrekt gesetzt wird), wird wohl (automatisch?) nicht beachtet. Ich habe den korrekten Zeitpunkt als "timestamp"-Reading.
Habe ich etwas übersehen, oder gibt es gar keine Möglichkeit bei HTTPMOD die Uhrzeit zu beeinflussen?
Hi,
vielleicht habe ich die Frage nicht so ganz richtig verstanden... Kannst du mal zeigen (ein list des devices) was passiert und was du gerne erreichen würdest?
(list unten)
JSON:
{"timestamp":"2017-05-12 16:43:18","kollektor":54.5,"ruecklauf":45.3,"wasserspeicher":68.5,"vorlauf_pumpe":46.4,"vorlauf_speicher":47.7,"pumpe":"off"}
HTTP Header:
Last-Modified: Fri, 12 May 2017 16:43:18 GMT
Date: Fri, 12 May 2017 16:43:18 GMT
Readings:
2017-05-12 16:44:47 kollektor 54.5
2017-05-12 16:44:47 pumpe off
2017-05-12 16:44:47 ruecklauf 45.3
2017-05-12 16:44:47 timestamp 2017-05-12 16:43:18
2017-05-12 16:44:47 vorlauf_pumpe 46.4
2017-05-12 16:44:47 vorlauf_speicher 47.7
2017-05-12 16:44:47 wasserspeicher 68.5
Die Uhrzeit der Reading ist 16:44:47 - die Daten sind aber in wirklichkeit von 16:43:18. Ich hätte gerne, dass das Reading die richtige Uhrzeit hat.
Variante 1 wäre: HTTPMOD beachtet Date bzw. Last-Modified-Header.
Variante 2 wäre: Uhrzeit der Reading kommt auch aus dem JSON (in dem Fall "timestamp").
Im Optimalfall würde dann auch kein neues Reading erzeugt, wenn sich die Uhrzeit nicht ändert.
Im Normalfall ist der kleine Zeitunterschied natürlich egal, manchmal kommen aber keine neuen Daten. FHEM denkt dann weiterhin die alten Daten wären aktuell.
Internals:
BUSY 0
DEF https://xxx/current.php 60
Interval 60
JSONEnabled 1
LASTSEND 1494600287.93916
MainURL https://xxx/current.php
ModuleVersion 3.3.11 - 8.5.2017
NAME Solaranlage
NR 111
STATE Kollektor: 54.5 ° C, Speicher: 68.5 ° C, Pumpe: off
TRIGGERTIME 1494600347.93904
TRIGGERTIME_FMT 2017-05-12 16:45:47
TYPE HTTPMOD
addr https://xxx:443
buf HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Connection: close
X-Powered-By: PHP/7.1.4
Last-Modified: Fri, 12 May 2017 16:43:18 GMT
Date: Fri, 12 May 2017 16:43:18 GMT
Strict-Transport-Security: max-age=31536000
{"timestamp":"2017-05-12 16:43:18","kollektor":54.5,"ruecklauf":45.3,"wasserspeicher":68.5,"vorlauf_pumpe":46.4,"vorlauf_speicher":47.7,"pumpe":"off"}
code 200
conn
data
displayurl https://xxx/current.php
header
host xxx
httpheader HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Connection: close
X-Powered-By: PHP/7.1.4
Last-Modified: Fri, 12 May 2017 16:43:18 GMT
Date: Fri, 12 May 2017 16:43:18 GMT
Strict-Transport-Security: max-age=31536000
httpversion 1.0
hu_blocking 0
hu_filecount 532
hu_portSfx
ignoreredirects 0
loglevel 4
path /current.php
protocol https
redirects 0
timeout 2
url https://xxx/current.php
value 0
Helper:
Dblog:
Kollektor:
Logdb:
TIME 1494600287.983
VALUE 54.5
Pumpe:
Logdb:
TIME 1494600287.983
VALUE off
Ruecklauf:
Logdb:
TIME 1494600287.983
VALUE 45.3
Timestamp:
Logdb:
TIME 1494600287.983
VALUE 2017-05-12 16:43:18
Vorlauf_pumpe:
Logdb:
TIME 1494600287.983
VALUE 46.4
Vorlauf_speicher:
Logdb:
TIME 1494600287.983
VALUE 47.7
Wasserspeicher:
Logdb:
TIME 1494600287.983
VALUE 68.5
QUEUE:
Readings:
2017-05-12 16:44:47 kollektor 54.5
2017-05-12 16:44:47 pumpe off
2017-05-12 16:44:47 ruecklauf 45.3
2017-05-12 16:44:47 timestamp 2017-05-12 16:43:18
2017-05-12 16:44:47 vorlauf_pumpe 46.4
2017-05-12 16:44:47 vorlauf_speicher 47.7
2017-05-12 16:44:47 wasserspeicher 68.5
Request:
data
header
ignoreredirects 0
retryCount 0
type update
url https://xxx/current.php
value 0
Defptr:
Readingbase:
kollektor reading
pumpe reading
ruecklauf reading
timestamp reading
vorlauf_pumpe reading
vorlauf_speicher reading
wasserspeicher reading
Readingnum:
kollektor
pumpe
ruecklauf
timestamp
vorlauf_pumpe
vorlauf_speicher
wasserspeicher
Readingoutdated:
Requestreadings:
Update:
kollektor reading
pumpe reading
ruecklauf reading
timestamp reading
vorlauf_pumpe reading
vorlauf_speicher reading
wasserspeicher reading
Sslargs:
Attributes:
extractAllJSON 1
icon sani_solar_temp
room Aussen
stateFormat Kollektor: kollektor ° C, Speicher: wasserspeicher ° C, Pumpe: pumpe
2017-05-12 16:43:18 ist die Uhrzeit, wann deine Solaranlage gemessen hat.
16:44 ist die Uhrzeit, wann das Reading von FHEM aktualisiert worden ist, wann FHEM die HTTP Seite aufgerufen hat. Das ist normal: das Timestmap eines Readings, ist die Zeit, wann das Reading in FHEM aktualisiert worden ist.
Vielleicht kannst Du erklären, warum Du unbedingt das Timestand vom Reading genau gleich wie das Reading timestamp haben willst?
Gruß
Ich weiß, dass so das normale Verhalten ist. Das Netatmo-Modul macht es aber auch anders und nimmt den Messzeitpunkt.
Warum?
ZitatIm Normalfall ist der kleine Zeitunterschied natürlich egal, manchmal kommen aber keine neuen Daten. FHEM denkt dann weiterhin die alten Daten wären aktuell.
Ist natürlich eher ein nice-to-have, klar.
Ich denke eine realistische Lösung ist, dass timestamp auch als reading kommt (du könntest dann ein event-on-change-reading darauf setzen). HTTPMOD ist ja ein sehr allgemeines Modul, da wird man kaum eine allgemeine Logik bez. des Timestamps einbauen können.
Vielleicht kann jemand im "Sonstiges (https://forum.fhem.de/index.php/board,46.0.html)" Sub-Forum helfen, wo laut maintainer.txt (https://fhem.de/MAINTAINER.txt) HTTPMOD betreut wird.
Über den Button ganz unten links kannst du verschieben.