Hallo!
gibt es eine Möglichkeit Temperaturmesswerte zwischen zwei Zeiten zu ignorieren, bzw ab eines gewissen Zeitpunktes immer nur den letzten gemessenen Wert in das Log zu schreiben??
Hintergrund:
Ich messe eine Wassertemperatur eines Teiches. Die Messung erfolgt nicht direkt im Wasser sondern als an einer Pumpe. Am Zulauf ist das Thermometer installiert. Die Pumpe läuft jetzt aber nur zwischen 07:00h und 22:00h. Während der Laufzeit wird alles korrekt gemessen, schön. In der Nebenzeit kann es nun aber vorkommen, dass die Temperatur abfällt oder ansteigt.
Daher soll entweder nichts in das Log geschrieben werden oder wenn der letzte Wert um 22:00h zB 15°C war soll dieser Wert bis 07:00h in das Log geschrieben werden.
Danke für eure Tipps
Hallo,
jedes FHEM "Device" hat das Attribute disable. Auch das Filelog...
Damit solltest Du das Log per Zeitsteuerung (at oder DOIF) einfach abschalten oder anschalten können.
Habe ich noch nicht versucht...
Gruß Otto
Zitat von: mhelgers am 18 Mai 2015, 15:35:57
Hallo!
gibt es eine Möglichkeit Temperaturmesswerte zwischen zwei Zeiten zu ignorieren, bzw ab eines gewissen Zeitpunktes immer nur den letzten gemessenen Wert in das Log zu schreiben??
Hintergrund:
Ich messe eine Wassertemperatur eines Teiches. Die Messung erfolgt nicht direkt im Wasser sondern als an einer Pumpe. Am Zulauf ist das Thermometer installiert. Die Pumpe läuft jetzt aber nur zwischen 07:00h und 22:00h. Während der Laufzeit wird alles korrekt gemessen, schön. In der Nebenzeit kann es nun aber vorkommen, dass die Temperatur abfällt oder ansteigt.
Daher soll entweder nichts in das Log geschrieben werden oder wenn der letzte Wert um 22:00h zB 15°C war soll dieser Wert bis 07:00h in das Log geschrieben werden.
Danke für eure Tipps
Mit einem userReadings könntest du einen 2. Temperaturwert nur innerhalb 7 und 22 speichern:
attr temp_sensor userReadings temperature2 { getTemp() }
getTemp in 99_myUtils.pm kopieren.
sub getTemp()
{
my @now = localtime;
my $t2;
if ($now[2] >= 7 and $now[2] <= 22) {
$t2 = ReadingsVal("temp_sensor","temperature",undef);
} else {
$t2 = undef;
}
return $t2;
}
temp_sensor und temperature entsprechend anpassen.
Im LogFile wird nun zusätzlich temperature2 gespeichert.
Wenn es soweit klappt, kann man das Ganze noch optimieren; beide Temperaturen oder nur temperature2 speichern.
Gruss
flurin
Danke! Ich denke das ist ein guter Ansatz....werde es mal testen
wenn du feste zeiten hast schaut dir disbaledForIntervals an.
gruss
andre
Zitat von: justme1968 am 20 Mai 2015, 08:27:49
wenn du feste zeiten hast schaut dir disbaledForIntervals an.
gruss
andre
Danke für den Hinweis. IMHO wäre "enable" besser.
statt:
attr temp_sensor disabledForIntervals 22:00-24:00 00:00-07:00
so:
attr temp_sensor enabledForIntervals 07:00-22:00
Edit: enabledForIntervals gibt es nicht. Es ist ein Vorschlag!
Gruss
flurin
Zitat von: flurin am 20 Mai 2015, 11:04:28
attr temp_sensor disabledForIntervals 22:00-24:00 00:00-07:00
attr temp_sensor enabledForIntervals 07:00-22:00
Ich weiß nicht... Meines Wissens gibt es bei notify und watchDog ein disabledForIntervals - sonst nicht.
Also keiner meiner Sensoren hat dieses Attribute.
Und enabledForIntervals sehe ich nirgends...
Habe ich irgendwas verpasst?
Gruß Otto
Zitat von: Otto123 am 20 Mai 2015, 21:16:19
Ich weiß nicht... Meines Wissens gibt es bei notify und watchDog ein disabledForIntervals - sonst nicht.
Also keiner meiner Sensoren hat dieses Attribute.
Und enabledForIntervals sehe ich nirgends...
Habe ich irgendwas verpasst?
Gruß Otto
Nein, du hast nichts verpasst! Es ist ein Vorschlag/Wunsch für die Zukunft.
Ich finde es einfacher, wenn man eine Bedingung positiv definiert, zudem ist oft eine Umrechnung (wie oben) nicht nötig.
Gruss
flurin
Du meinst jetzt Dein enabled... aber auch den Vorschlag von Andre mit dem durchaus bei einigen vorhandene Attribute disabledForIntervals kenne ich nicht bei Filelog oder Sensoren.
Aber meine Idee das Filelog zu deaktivieren ist keine Gute? Warum sollte man den das Log mit gleichen Werten voll schreiben, der Plot zieht doch dann sowieso eine Gerade.
Gruß Otto
Zitat von: Otto123 am 21 Mai 2015, 15:43:21
... aber auch den Vorschlag von Andre mit dem durchaus bei einigen vorhandene Attribute disabledForIntervals kenne ich nicht bei Filelog oder Sensoren.
Bei Sensoren ist "disableForIntervals" bei mir wählbar und so würde ich es auch anwenden.
Zitat von: Otto123 am 21 Mai 2015, 15:43:21
Aber meine Idee das Filelog zu deaktivieren ist keine Gute? Warum sollte man den das Log mit gleichen Werten voll schreiben, der Plot zieht doch dann sowieso eine Gerade.
So wie ich das verstanden habe, wurde "Disable" ursprünglich nicht zur Steuerung eingeführt, sondern eher um ein "define" zu deaktivieren ohne den Eintrag in fhem.cfg löschen zu müssen. So macht die Bezeichnung auch Sinn.
Gruss
flurin
Zitat von: flurin am 21 Mai 2015, 16:23:27
Bei Sensoren ist "disableForIntervals" bei mir wählbar und so würde ich es auch anwenden.
Aha, bei mir nicht. Ich habe Homematic, welche Sensoren hast Du?
Ich finde das nur bei at, notify und watchdog.
Zitat
So wie ich das verstanden habe, wurde "Disable" ursprünglich nicht zur Steuerung eingeführt, sondern eher um ein "define" zu deaktivieren ohne den Eintrag in fhem.cfg löschen zu müssen. So macht die Bezeichnung auch Sinn.
Ja kann sein, aber ich benutze das an mancher Stelle und es funktioniert. 8)
Man muss halt selbst ein save dahinter machen, damit der Status gespeichert wird.
Gruß Otto
Zitat von: Otto123 am 21 Mai 2015, 17:08:14
Aha, bei mir nicht. Ich habe Homematic, welche Sensoren hast Du?
Ich finde das nur bei at, notify und watchdog.
EnOcean und ZWave, disabledForIntervals wird aber auch nur bei EnOcean unterstützt.
Zitat von: flurin am 20 Mai 2015, 21:26:17
Ich finde es einfacher, wenn man eine Bedingung positiv definiert, zudem ist oft eine Umrechnung (wie oben) nicht nötig.
Gruss
flurin
Ein define ist doch per se schon positiv definiert - ich will dieses "Device" ja haben.
Dieses dann nochmal mit einem enable zu "erlauben" wäre wohl etwas zu viel des Guten.
Das Attribut disabledForIntervals ermöglicht doch nur dieses positiv angelegte Device zu bestimmten Zeiten "abzuschalten".
Aber anyway - ich weiß was du meinst.
Wünsche sollten aber auch im passenden Unterforum verlautbart werden ;)
Zitat von: Puschel74 am 21 Mai 2015, 19:34:20
Ein define ist doch per se schon positiv definiert - ich will dieses "Device" ja haben.
Dieses dann nochmal mit einem enable zu "erlauben" wäre wohl etwas zu viel des Guten.
Das wäre kein Problem, enable könnte als Default auf true (1) voreingestellt werden, wie übrigens disable auf false (0) gesetzt wird.
Aber soweit habe ich immer eine Lösung gefunden, ohne disable zu "missbrauchen". disable verwende ich nur für manuelle Einstellungen mit dem Frontend, beispielsweise um Test-Definitionen zu deaktivieren. Für diesen Zweck ist es für mich Okey.
disabledForIntervals habe ich selbst noch nie angewendet. Es ist auch nicht überall verfügbar.
Ein anderer Ansatz....:
wäre es vielleicht auch möglich die Rechte des Logs in der 'Auszeit' so zu setzten, dass nur das Lesen (und nicht das Schreiben) erlaubt ist??
Zitat von: mhelgers am 22 Mai 2015, 07:10:52
Ein anderer Ansatz....:
wäre es vielleicht auch möglich die Rechte des Logs in der 'Auszeit' so zu setzten, dass nur das Lesen (und nicht das Schreiben) erlaubt ist??
Das würde nur mit einem system-Befehl gehen, als Folge davon hättest du Fehlermeldungen in fhem.
Unterstützt dein Sensor "disabledForIntervals"? Wenn ja, dann ist dies die einfachste Lösung:
attr temp_sensor disabledForIntervals 22:00-24:00 00:00-07:00
Sonst würde ich es mit userReadings lösen.