Autor Thema: readings mit nicht aktuellen timestamp  (Gelesen 616 mal)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20359
readings mit nicht aktuellen timestamp
« am: 18 August 2020, 20:09:41 »
es gibt module bei denen es sinnvoll ist readings nicht mit dem aktuellen timestamp zu versehen sondern mit einem timestamp der zum tatsächlichen zeitpunkt der entstehung des wehrtest passt.

z.b.: abfrage externer dienste die zu jedem wert die original zeit liefern:
withings wage -> pollen nur alle stunde, reading hat den zeitpunkt des wiegens

netatmo modul -> wetter werte bekommen den zeitpunkt der tatsächlichen entstehung

mercedes benz mercedes me modul -> readings bekommen den zeitpunkt an dem tatsächlich tür oder fenster geöffnet/geschlossen wurden, km stand an dem er tatsächlich ausgelesen wurde. beim km stand eventuell besonders auffällig weil er nur 2 mal pro stunde abgefragt werden.

es gibt noch ein paar beispiele mehr.


aktuell wird das von fhem nur über einen workaround und auch nur unvollständig und mit problemen behaftet unterstützt: man kann .updateTimestamp vor und CHANGETIME nach dem aufruf von readingsBulkUpdate auf den richtigen wert 'verbiegen'. mit list oder aufrufen der detail seite sieht man dann den vorgesehenen timestamp. dblog hat damit auch kein problem.

aber: im event zum seiten update kommt trotzdem immer die aktuelle zeit und filelog hat ein problem weil die timestamps im log file nicht mehr monoton sind.

wie können wir das absichtliche setzen einer bestimmten zeit für ein reading in fhem besser unterstützen?

« Letzte Änderung: 18 August 2020, 20:26:29 von justme1968 »
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16517
  • s/fhem\.cfg/configDB/g
Antw:readings mit nicht aktuellen timestamp
« Antwort #1 am: 18 August 2020, 20:17:54 »
langsam werden die Wünsche echt schräg...

Mir ist eigentlich egal, wann ein Wert tatsächlich entsteht, aber im readingTimestamp möchte ich bitte den Zeitpunkt behalten, zu dem FHEM von diesem Wert erfahren und diesen in das reading geschrieben hat.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20359
Antw:readings mit nicht aktuellen timestamp
« Antwort #2 am: 18 August 2020, 20:31:48 »
nicht immer nur von dir auf andere und deren anforderungen schließen.

den wusch und das beschriebene verhalten gibt es schon viele jahre. in mehr als einem modul.

es gibt anwendungen da ist der tatsächliche zeitpunkt des wertes wichtig. nicht/nicht nur wann er in fhem angekommen ist.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH
Zustimmung Zustimmung x 1 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16517
  • s/fhem\.cfg/configDB/g
Antw:readings mit nicht aktuellen timestamp
« Antwort #3 am: 18 August 2020, 20:39:12 »
Dann sollte man vielleicht einen zusätzlichen valueTimeStamp einführen und nicht den readingsTimestamp dafür mißbrauchen.

nicht immer nur von dir auf andere und deren anforderungen schließen.

Danke gleichfalls.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20359
Antw:readings mit nicht aktuellen timestamp
« Antwort #4 am: 18 August 2020, 20:46:06 »
Dann sollte man vielleicht einen zusätzlichen valueTimeStamp einführen und nicht den readingsTimestamp dafür mißbrauchen.

zum beispiel.

oder umgekehrt: einen updateTimestamp einführen und readingsTimestamp eben den zeitpunkt des readings sein lassen :).

deshalb war die frage ja auch wie wir diesen anwendungsfall besser unterstützten können.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH
Zustimmung Zustimmung x 1 Liste anzeigen

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22806
Antw:readings mit nicht aktuellen timestamp
« Antwort #5 am: 19 August 2020, 11:10:35 »
Ich habe keine eindeutige Meinung, welche der Zeitstempel der Richtige oder Wichtigere ist, sicher ist, dass ohne weiteres Wissen oder explizite Kennzeichung es den Benutzer verwirrt.

Variante 1: das Reading-Zeitstempel enthaelt den Eingang des Events in FHEM.
- die "eigentliche" Zeit muss in einem separaten Reading, oder als weitere Spalte hinterlegt werden, wenn sie als wichtig erachtet wird.
- es gibt keine Funktion ReadingsTimestamp/ReadingsAge etc fuer diese Werte
- in den Plots kann man die Ereignisse nicht richtig darstellen

Variante 2: das Reading-Zeitstempel enthaelt die vom Fremdsystem uebermittelte Zeit
- FileLog hat Probleme, wenn die Events unsortiert reinkommen. Evtl reicht es, im Erzeugermodul die Events zu sortieren. Ein korrektes Einfuegen beliebiger Zeitstempel in FileLog fuehrt mAn zu weit, ich will keine DB implementieren.
- readings*Update unterstuetzt nur umstaendlich abweichende Zeitstempel
- weitere Bugs wie "seiten update" (ist damit das FHEMWEB-UPdate gemeint?)

Ich meine die readingsUpdate Probleme und die anderen Bugs bei Variante 2 sollten behoben werden, dann hat der Modulautor eine Alternative zu Variante 1. Es muss aber dokumentiert/kenntlich gemacht werden, welche Zeitstempel gemeint sind, und dass mit manchen Modulen (z.Bsp. FileLog) Probleme entstehen koennten.

Ich meine, dass langfristig diese Klasse von Problemen verschwindet, weil eine direkte Verbindung/Push normal wird.

Meinungen?

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22806
Antw:readings mit nicht aktuellen timestamp
« Antwort #6 am: 19 August 2020, 19:07:24 »
Zitat
Ich meine die readingsUpdate Probleme und die anderen Bugs bei Variante 2 sollten behoben werden

Ich hoffe das jetzt erledigt zu haben:
- setreading hat einen optionalen Zeitstempel: setreading name [YYYY-MM-DD HH:MM:SS] reading value
- readingsSingleUpdate, readingsBulkUpdate und addEvent haben einen optionalen letzten Parameter $timestamp (Format YYYY-MM-DD HH:MM:SS bzw. FmtDateTime())
- inform timer (in telnet) und FHEMWEB inform beruecksichtigen $hash->{CHANGETIME}

Offline M.Schulze

  • Commercial User
  • New Member
  • *
  • Beiträge: 32
  • Principal Strategist, Maker
Antw:readings mit nicht aktuellen timestamp
« Antwort #7 am: 22 August 2020, 12:33:12 »

Ich meine, dass langfristig diese Klasse von Problemen verschwindet, weil eine direkte Verbindung/Push normal wird.


Warum sollten solche Klasse von Problemen durch eine direkte Verbindung verschwinden?


Fremdsysteme werden eigene Zeitstempel haben. Da auch hier Teilsysteme synchronisiert werden müssen. Dann stellt sich schon die Frage nach Variante 1 oder Variante 2.

Der Zeitstempel dient sekundär der Speicherung des Zeitpunktes der tatsächlichen Entstehung des Wertes, und primär der Synchronisation und Verteilung des neuen Wertes, bzw. der damit verbundenen Aktivitäten.


- setreading hat einen optionalen Zeitstempel:
Meiner Meinung dürften Zeitstempel für Readings im Betrieb nicht in die Vergangenheit wandern, selbst der gleiche Zeitstempel in Folge wäre nicht zulässig, weil es ja kein neuerer Wert ist.

Das setzen eines alten Zeitstempels ist generell problematisch da der Zeitraum vielleicht schon als synchronisiert gilt. Eine Anwendung könnte im Loop gezielt nur nach neueren Zeitstempeln fragen -> long poll und würde diese Änderungen nicht mitbekommen.

MfG

Home Control (HCtrl.de) - Operating Home-Automation as a Service (HAaaS)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22806
Antw:readings mit nicht aktuellen timestamp
« Antwort #8 am: 22 August 2020, 13:11:38 »
Zitat
Warum sollten solche Klasse von Problemen durch eine direkte Verbindung verschwinden?
Wenn alle Systeme immer online sind, gibt es keinen Grund Daten versetzt zu uebermitteln.

Die aufgezeigten Probleme sehe ich auch, die Schnittstelle ist aber nicht fuers Einfuegen von Datensaetzen in beliebiger Zeitreihenfolge gedacht, sondern weiterhin monoton steigend. Das Setzen eines anderen Zeitstempels war auch bisher moeglich, nur etwas inkonsistent und weniger komfortabel.

Bei der Abfrage von neueren Datensaetzen muss dem Entwickler bewusst sein, das "neuer" nicht gleichzusetzen ist mit "nach dem Zeitstempel der letzten Synchronisation".

 

decade-submarginal