FHEM Forum

FHEM - Entwicklung => Wunschliste => Thema gestartet von: pirmanji am 03 Juni 2019, 19:03:37

Titel: expiredReadings
Beitrag von: pirmanji am 03 Juni 2019, 19:03:37
Huhu!

ich weiß nicht, ob es da schon etwas Entsprechendes gibt (gefunden habe ich in der Doku erstmal nichts): ich lasse mir in regelmäßigen Abständen Readings per Telegram / Pushbullet auf mein Smartphone senden. Es kommt aber auch immer wieder vor, dass irgend etwas schief läuft (kein Empfang zum Temperatursensor etc) und ich bekomme total veraltete Werte gesendet, die mich in falsche Sicherheit wiegen. Also bastel ich immer mal wieder, damit ich veraltete Werte rausfiltere bzw. entsprechend informiere, dass kein aktueller Wert da ist. Aber es wäre viel einfacher, wenn es ein globales Attribut gäbe, dem man mitteilen könnte, dass bestimmte Readings nach einer gewissen Zeit expired sind und was dann passieren soll. Z.B. comma-separated list of reading:interval:expiredValue, oder ähnlich:

attr xyz expiredReadings RegEx:300:-1, RegEx:1200:undef

Mir persönlich würde es ja schon reichen, wenn das von ReadingsVal() ausgewertet würde. Ich kenne aber die Interna nicht und hab mich auch noch nicht durchgewühlt. Das ist für andere Leute vielleicht viel einfacher und ich werfe das jetzt einfach mal so in den Raum. Oder gibt es das doch schon?

Viele Grüße,
Christian
Titel: Antw:expiredReadings
Beitrag von: amenomade am 03 Juni 2019, 19:53:44
Also... mit ReadingsTimestamp und ReadingsAge kannst Du schon auswerten.

Bin kein Developer, aber das was Du dir wünschst, sehe ich schwierig zu implementieren: man sollte bei jedem Reading-Setzen irgendwelches Timer noch dazu setzen, das das Reading dann löscht. Viel Last für Fhem, und wenig Sinn.

Ausserdem: vielleicht brauchst Du die verältete Readings für deine Benachrichtung nicht, aber für irgendwelche andere Steuerung doch. Lieber ReadingsAge auswerten, wenn Du es brauchst
Titel: Antw:expiredReadings
Beitrag von: pirmanji am 03 Juni 2019, 20:13:28
Hmm...die Idee mit den Timers ist gar nicht schlecht. Soviel Last dürfte das gar nicht erzeugen. Sämtliche Readings zu loggen erzeugt sicherlich mehr. Aber eigentlich würde es auch reichen, jene Funktionen, mit denen man gezielt Readings ausliest mit einer entsprechenden Abfrage zu versehen. Denn im FhemWeb muss ich es nicht sehen. Da habe ich ja die Zeit des Readings jeweils dabei.
Titel: Antw:expiredReadings
Beitrag von: CoolTux am 03 Juni 2019, 20:19:10
Da Du anscheinend schon eine Funktion hast welche Zeitgesteuert Dir Werte zu sendet kannst Du Dir doch gleich noch das Alter des Wertes mit dazu senden lassen.
Titel: Antw:expiredReadings
Beitrag von: betateilchen am 03 Juni 2019, 20:39:43
Popcorn?
Titel: Antw:expiredReadings
Beitrag von: herrmannj am 03 Juni 2019, 20:50:54
Schau dir doch mal den watchdog an
Titel: Antw:expiredReadings
Beitrag von: peterk_de am 03 Juni 2019, 21:37:13
+1 ;-)

Interessanterweise hatte ich die Tage genau den gleichen Wunsch im Kopf ...

Aktuell gelöst habe ich es mit dem Modul "Monitoring" für wichtige Readings, die gerne mal "aussteigen" (wegen leerer Batterien / kaputten Funkgateway o.Ä.). Das Monitoring-Modul triggert dann eine Push-Benachrichtigung und überschreibt das Reading im Device mit "invalid". Dazu nutze ich diverse solcher Monitoring-Devices, die sich jeder wiederum um diverse Readings kümmern (für jeden Regex ein Monitoring-Device) ... schön ist was anderes:  ;-)

defmod system.monitoring.co2 monitoring (.*raspi.co2):co2:.*
attr system.monitoring.co2 errorWait 30*60
attr system.monitoring.co2 event-on-change-reading state,errorCount
attr system.monitoring.co2 stateFormat {"Offline: ".monitoring_stateFormat("system.monitoring.co2")}

Dazu dann noch NOTIFYS bzw. DOIFS, die die entsprechende Aktion ausführen (also Benachrichtigung, das nix mehr kommt und Reading "löschen").

Könnte man sicher auch mit dem Monitoring Modul noch eleganter hinbekommen als ich das grad tue, aber eine Definition des Ablaufdatums direkt im Device wäre m.E. nochmal sehr viel galanter, da für mich die Information, wann ein Reading als nicht mehr verfügbar zu verstehen ist, irgendwie auch direkt zum Device gehört. Denn so wie ichs grad mache, muss ich bei jedem neuen Device erstmal noch "an anderer Stelle" die Monitoring-Dinger anpassen / ergänzen, und dazu bin ich dann meist zu faul oder vergesse es ;)

Die Syntax so wie du sie vorgeschlagen hast fände ich so ziemlich perfekt.
Titel: Antw:expiredReadings
Beitrag von: Peteruser am 23 August 2019, 10:56:09
Hallo,
ich wollte gerade so etwas anregen, hab dann den vorhandenen Eintrag in der Wunschliste gefunden. Wenn ich mir die letzten Einträge in dem Forum ansehe, dann macht jeder so sein eingenes Süppchen. Bei mir macht das ein Cronjob, der regelmäßig über die wichtigen Werte wacht.

Könnte man hier nicht wenigstens ein Attribut einführen?
attr <Device> TTL <Reading>  <Zeit in Sekunden> <Aktion>

Ich Cleane den Wert bei mir, dann ist ein entsprechendes Chart an der Stelle leer
Aktion > Clean

Sicher geht das auch mit den Userattributen und eingenen Scripten
attr global userattr <attributelist>

Grüße Peter
Titel: Antw:expiredReadings
Beitrag von: herrmannj am 23 August 2019, 11:02:47
Watchdog
Titel: Antw:expiredReadings
Beitrag von: Wzut am 23 August 2019, 11:31:13
ReadingsSupervision -> https://forum.fhem.de/index.php?topic=49408.0
Titel: Antw:expiredReadings
Beitrag von: Peteruser am 23 August 2019, 11:56:34
Hallo,
danke für den Hinweis, in der Doku ist darüber noch nichts zu finden.
Werde das mal testen, scheint genau das zu sein, mit einer aus meiner Sicht unglücklichen Namensgebung.

Gibt es hier schon einen offiziellen Downloadlink oder nur das File in Forum?

Grüße Peter
Titel: Antw:expiredReadings
Beitrag von: Wzut am 23 August 2019, 12:51:08
ob der Name nun glücklich oder nicht ist darüber kann man streiten, ich habe damals in diese Richtung keinen Gedanken verschwendet und ihn vom seinem Vater HCS übernommen. Wenn das Modul via SVN verfügbar wäre hätte ich es schon aus dem ersten Post gelöscht und einen Vermerk hinterlassen.
Titel: Antw:expiredReadings
Beitrag von: Peteruser am 23 August 2019, 13:50:43
Hallo,
ok, dann gibt es in kürze einen Testunser mehr.  ;D

Grüße Peter
Titel: Antw:expiredReadings
Beitrag von: Christoph Morrison am 23 August 2019, 16:07:16
Gibt es eine Chance dass du es in den FHEM-Github-Space mit controls schiebst?
Titel: Antw:expiredReadings
Beitrag von: Wzut am 23 August 2019, 17:21:24
@Christoph, ich verstehe deine Worte , aber nicht deren Sinn :(
Ich habe keine Ahnung was der FHEM-Github-Space ist, IMHO gibt es genau zwei Alternativen :
a. ich setze mich hin und bringe endlich die command.ref auf Vorderman und checke ganz normal ein
b. ich spare mir die Doku Arbeit und lege es unterhalb contrib ab, nur da ist es vom update und Commandref genau so ausgeschlossen wie im ersten Post des Freds
Titel: Antw:expiredReadings
Beitrag von: Christoph Morrison am 23 August 2019, 18:56:44
@Christoph, ich verstehe deine Worte , aber nicht deren Sinn :(
Ich habe keine Ahnung was der FHEM-Github-Space ist, IMHO gibt es genau zwei Alternativen :
a. ich setze mich hin und bringe endlich die command.ref auf Vorderman und checke ganz normal ein
b. ich spare mir die Doku Arbeit und lege es unterhalb contrib ab, nur da ist es vom update und Commandref genau so ausgeschlossen wie im ersten Post des Freds

Es gibt bei Github einen FHEM-Space (https://github.com/fhem) wo einige Module liegen, u.a. auch welche die man nicht über das SVN bekommt. Wenn du dort ein Repository machst und einen Controls-File (hier mal exemplarisch einer von Buienradar (https://github.com/fhem/mod-Buienradar/blob/release/2.3/controls_Buienradar.txt)) anlegst, dann kann man dein Model über das normale update-Prozedere einbinden. Außerdem können dir andere Leute leicht Patches schicken (Fork + Pull Request).
Titel: Antw:expiredReadings
Beitrag von: Wzut am 23 August 2019, 19:10:42
Uff, was für ein Umstand :(
bis ich das ganze (iii)git Zeugs begriffen und gemacht habe, da kann ich in der Zeit auch die beiden command.refs schreiben ....
Titel: Antw:expiredReadings
Beitrag von: herrmannj am 23 August 2019, 19:23:39
minimal Anforderungen für SVN module sind die englische cmdref und support Einsatz über das forum.

DE und EN sind aber in der Tat guter Stil und natürlich müssen SVN Module den Developer guidelines folgen. Sollten fhem module aber sowieso, allein aus funktionalen Gründen. Der Aufwand für SVN Module ist daher eigentlich überschaubar (cmdref EN)
Titel: Antw:expiredReadings
Beitrag von: Christoph Morrison am 23 August 2019, 21:20:43
Uff, was für ein Umstand :(
bis ich das ganze (iii)git Zeugs begriffen und gemacht habe, da kann ich in der Zeit auch die beiden command.refs schreiben ....

Du bist ja nicht der erste der das macht und du kannst dich an einer der vielen Lösungen zum Erzeugen der Datei(en) orientieren. Guck dir einfach mal Buienradar an, da ist das alles schon ganz gut automatisiert.
Titel: Antw:expiredReadings
Beitrag von: Wzut am 02 September 2019, 10:53:04
ich habe  die letzten Tage das Modul überarbeitet und auch nochmal über den Namen nachgedacht.
Ich werde es Mitte der Woche mit erweiterten Funktionen unter den Namen 98_readingsWatcher.pm einchecken.
 
Titel: Antw:expiredReadings
Beitrag von: Peteruser am 02 September 2019, 19:27:27
Hallo,
wollte mich gerade aufmachen, dann warte ich nochmal.
Danke für die Info.

Grüße Peter