Nicht-aktuelle Temperaturwerte löschen

Begonnen von miro, 16 November 2015, 17:25:11

Vorheriges Thema - Nächstes Thema

miro

Hallo zusammen,

ich suche eine Lösung für folgendes Problem:

Wenn ich in FHEM (bspw. in einem Floorplan) den Messwert eines Temperatursensors anzeige, dann bleibt wird dieser Wert so lange angezeigt, bis ein neuer Messwert vom Sensor empfangen wird. So weit erstmal gut. Hat der Sensor aber Verbindungsprobleme oder ist aus einem anderen Grund länger kein neuer Wert mehr empfangen worden, so steht auf meinem Floorplan weiterhin der alte, womöglich mittlerweile völlig falsche Wert. Ich möchte, wenn ich bspw. morgens eine Temperatur ablese, wissen, dass diese aktuell ist und nicht den Wert von vor 4,5 Stunden angezeigt bekommen.
Klar kann man den Zeitstempel mit anzeigen. Aber wer will schon bei einem Blick auf eine Infoseite mit Temperaturen etc. bei jedem Messwert den Zeitstempel auf Aktualität prüfen? Erst recht nicht die Frau ;-)

Jedes 0815-Thermometer mit Außensensor zeigt ---, wenn längere Zeit keine Werte mehr empfangen wurden.
Die Idee ist, das Reading in einen Dummy zu schreiben, und falls nach Zeit x kein neuer Messwert empfangen wurde, ein --- in den Dummy zu schreiben, bis wieder ein aktueller Wert reinkommt.
Ich bin mir sicher, dass man das in FHEM lösen kann, mir fehlen aber dazu leider die Kenntnisse.

Hoffe ihr könnt mir da Tipps geben!

Gruß
Miro

Thorsten Pferdekaemper

Hi,
dazu brauchst Du eigentlich kein Dummy, sondern das neue Reading kann auch direkt in das eigentliche Device geschrieben werden (mit setreading oder so).
Ein Ansatz waere z.B.: Du machst Dir ein notify auf die Temperatur. Das notify schreibt die Temperatur in das neue Feld. Ausserdem legt es ein "at" an, das nach einer Stunde (oder was auch immer) den Wert im neuen Feld loescht. Bevor das at angelegt wird, wird es geloescht. (Vielleicht braucht man letzteres auch nicht.)
Gruss,
   Thorsten
FUIP

miro

Zitat von: Thorsten Pferdekaemper am 16 November 2015, 17:39:25
Das notify schreibt die Temperatur in das neue Feld. Ausserdem legt es ein "at" an, das nach einer Stunde (oder was auch immer) den Wert im neuen Feld loescht. Bevor das at angelegt wird, wird es geloescht.

Hi Thorsten,

was meinst du mit neues Feld? Und das mit dem gelöschten at ist mir auch nicht ganz klar.
Ansonsten schon eine gute Idee, werde ich versuchen umzusetzen.

Gruß Mijo

miro

#3
Ich habs hinbekommen!  8)

Nach deinem Tipp wars nur ein Einzeiler:

define n_NUL_TF_Keller notify TF_Keller define NUL_TF_Keller at +00:20:00 setreading TF_Keller temperature ---

Damit wird 20 Minuten nach dem letzten Signalempfang der letzte Temperaturwert mit --- überschrieben.

Vielen Dank für den Anstoß  ;)

Gruß Miro

Edit:
Leider war es doch nicht ganz so einfach. Das Logfile läuft voll mit Einträgen, dass NUL_TF_Keller schon definiert sei. Scheinbar muss es doch gelöscht werden. Aber wie?