Temperaturenvergleich von aktuelle Temperatur und die vor einer Minute

Begonnen von deinmedium, 15 Januar 2014, 15:06:11

Vorheriges Thema - Nächstes Thema

deinmedium

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

Niko

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

deinmedium

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 ?

rudolfkoenig


deinmedium

#4
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")}}

Puschel74

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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

rudolfkoenig

1. Ich habe OldValue() und nicht $OldValue() geschrieben, letzteres ist kein Perl
2. statt at bitte notify verwenden

Elektrolurch

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
configDB und Windows befreite Zone!

BeamterAD

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

rudolfkoenig

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