Hallo,
ich habe eine Lüftersteuerung für ein Warmeluftmodul. Wenn die Luft im Solarmudol wärmer ist als im Raum der beheizt werden soll sprint der Lüfter an. Das Problem bei der Sach ist, wenn du Temperatur im solarmudol nur Langsam fällt dann Kphlt mir die einfliesende Luft den Raum wieder aus. Ich hab mit gedach ich mache da jetzt einen Temperaturvergleich in dem zu beheizenden Raum. Ich möcht da jetzt eine überpüfung haben die festellt ob die Raumtemperatur um einen gewissen Wert in einer bestimmten Zeit fällt. z.B. Wenn die Raumtemperatur in den letzten 5min um 2°C gefallen ist, soll der Lüfter ausgehen auch wenn die Luft im Solarmodul noch wärmer ist als in dem Raum.
Meine Frage dazu ist: Wie kann ich den letzten gemessen Wert des Temperaturfühlers mit dem Temperatur wert vor einer Minute vergleich?
Hat da jemand einen Tipp?
Sven
Wenn der "Wert vor einer Minute" der (vor) letzte Wert ist, also zwischen dem aktuellen und dem Wert vor einer Minute keine anderen Werte liegen könnte "userReadings" mit der Einstellung "difference" ggf. helfen (In der "commandref" unter den Eintrag "attr").
VG Niko
Hallo,
danke für die Antwort. Da liegen aber noch Werte dazwischen. Kann man das vielleicht mit einer Zeitangabe regeln? z.B. $meineTemperauter -00:01:00 ?
Ich wuerde event-min-interval und OldValue() verwenden.
Ich dneke ich muss das mit $OldValue machen weil ich da ja den Device angeben kann. Ich schreibe nämlich von verschiedenen Temperatursensoren in eine Logdatei. Da ich aber noch blutiger Anfänger bin fehlt mir da im Moment jeder Ansatz.
so habe ich das jetzt aber das geht nicht
define LuefterAn at +*00:01:00 {\
my $tempm = ReadingsVal("GPIO4_DS18B20_000004a73ba0","temperature",0);;\
if ( $OldValue("GPIO4_DS18B20_000004a73ba0") < $tempm ){fhem("set SolarVentilator on")} else {fhem("set SolarVentilator off")}}
Hallo,
Zitataber das geht nicht
bringt uns unweigerlich wieder zum FHEM-Logfile und zum Event Monitor.
Grüsse
P.S.: Glaskugeln sind zur Zeit leider Mangelware.
Es darf sich niemand wundern wenn keine Antworten mehr kommen wenn erstmal die Basics abgefragt werden müssem - mühsam.
1. Ich habe OldValue() und nicht $OldValue() geschrieben, letzteres ist kein Perl
2. statt at bitte notify verwenden
Hallo,
ich habe so etwas ähnliches für Lichtschalter implementiert: Ein zweites Drücken im Zeitinterval von 1 .. 3 sek. schaltet dann alle Lampen ein.
Vorgehensweise:
1. Setze auf Deine Temperaturfühler ein notify
2. Im notify schreibst Du dann den Wert in ein reading z.B. lasttemp, wenn der Zeitstempel von lasttemp mindestens 60 Sekunden vor "jetzt" liegt.
Wenn Du mit dem Zeitformat nicht herum konvertieren willst (z.B. time_str2num($$ReadingsTimestamp(...), kannst Du auch in ein zweites reading (lasttemptime) mit time() gleich den Sekundenwert schreiben und rechnest die Differenz für Deine Aktion mit
if (time() - ReadingsVal('device','lasttime',0' > 60) ...
Wenn Du verhindern willst, dass die Readings in der Übersicht angezeigt werden, so setze einen "." vor den Namen.
Gruß
Elektrolurch
Zitatich habe so etwas ähnliches für Lichtschalter implementiert: Ein zweites Drücken im Zeitinterval von 1 .. 3 sek. schaltet dann alle Lampen ein.
das interessiert mich doch sehr,wie sieht das genau aus??
Ich würde nämlich gerne einen Timer basteln also 1 mal drücken 10 min Licht an,2 mal 20 Minuten usw
Das wird zwar langsam OT, aber dafuer:
ZitatIch würde nämlich gerne einen Timer basteln also 1 mal drücken 10 min Licht an,2 mal 20 Minuten usw
gibs sequence (http://fhem.de/commandref.html#sequence)