FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Weisswurstverkäufer am 12 Mai 2017, 13:50:56

Titel: HTTPMOD - Uhrzeit des Readins beeinflussen?
Beitrag von: Weisswurstverkäufer am 12 Mai 2017, 13:50:56
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?

Titel: Antw:HTTPMOD - Uhrzeit des Readins beeinflussen?
Beitrag von: KernSani am 12 Mai 2017, 16:32:00
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?



Titel: Antw:HTTPMOD - Uhrzeit des Readins beeinflussen?
Beitrag von: Weisswurstverkäufer am 12 Mai 2017, 16:52:24
(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
Titel: Antw:HTTPMOD - Uhrzeit des Readins beeinflussen?
Beitrag von: amenomade am 12 Mai 2017, 17:02:24
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ß
Titel: Antw:HTTPMOD - Uhrzeit des Readins beeinflussen?
Beitrag von: Weisswurstverkäufer am 12 Mai 2017, 17:11:46
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.
Titel: Antw:HTTPMOD - Uhrzeit des Readins beeinflussen?
Beitrag von: KernSani am 12 Mai 2017, 17:15:44
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.