FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: RalfKruppa am 06 Februar 2014, 16:01:14

Titel: Auf einem größeren Temperaturanstieg reagieren
Beitrag von: RalfKruppa am 06 Februar 2014, 16:01:14
Hallo,

ich bin recht neu im Thema FHEM.

Ich möchte meine Zirkulationspumpe so umbauen das sie nur auf Anforderung ihre Arbeit aufnimmt.
Ich habe dazu zwei Temperatur sensoren die alle 10 Sekunden ihre Werte an FHEM schicken

define vorlauf_temp dummy

Über ein Shell-Script werden von einem Raspberry Pi alle 10 Sekunden die aktuellen Temperaturen gesendet

echo "set vorlauf_tem $temp" | netcat localhost 7072

Die Daten werden in ein Logfile geschrieben

define FileLog_vorlauf_temp FileLog ./log/vorlauf_temp-%Y.log vorlauf_temp

so da stehen dann auch alle Werte schön drin.

Wenn nun die Temperatur um mehr als 2° gestiegen ist zum vorherigen Meßwert dann soll der Befehl set gpio_17 on gesendet werden.

Kann mir jemand helfen ?

Gruß Ralf
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: roedert am 09 Februar 2014, 22:18:51
Du machst ein Notify auf deinen vorlauf_temp ... dies wird aufgerufen jedesmal wenn dieser einen Wert bekommt. Ausserdem legst du einen 2. Dummy an vorlauf_temp_alt, im Notify kannst du den aktuellen Wert mit dem altenWert vergleichen und setzt danach den alten Wert auf den aktuellen Wert:

define vorlauf_temp_alt dummy
define vorlauf_temp_nfy notify vorlauf_temp:.* {
  if (Value("vorlauf_temp")-Value("vorlauf_temp_alt") > 2) { ...mach irgendwas....};
  fhem "set vorlauf_temp_alt " . Value("vorlauf_temp");
}


Gleiches Prinzip habe ich bei einer Lüftersteuerung über die Luftfeuchtigkeit .... ich habe sogar 3 alte Werte um weiter in die Vergangenheit schauen zu können:

  fhem "set alterWert3 " . Value("alterWert2");
  fhem "set alterWert2 " . Value("alterWert1");
  fhem "set alterWert1 " . Value("aktuellerWert");
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: justme1968 am 09 Februar 2014, 22:23:52
du solltest dir mal THRESHOLD anschauen. es gibt sogar beispiele für genau deinen anwendung. das schalten einer zirkulationspumpe bei temperaturdifferenz.

kein grund werte in Dummys zu kopieren und selber notifys zu schreiben.

gruss
  andre
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: roedert am 09 Februar 2014, 22:30:52
Hast du da gerade mal einen Link zu? Konnte über die Suche nichts finden.

Ich werte ja nicht die Differenz zweier verschiedener Sensoren aus (woe ich es in einem Beispiel gefunden habe), sondern nur eines Sensors zu seinem alten Wert ... also muss ich doch diesen alten Wert irgendwo zwischenspeichern?
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: Groby am 09 Februar 2014, 22:35:26
einfach über den link commandref und dann nach THRESHOLD suchen...
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: justme1968 am 09 Februar 2014, 22:38:50
in der commandref zu THRESHOLD steht direkt ein beispiel zur zirkulationspumpe.

die änderung des sensorwertest kannst du dir z.b. mit einem userReading direkt im sensor merken und THRESHOLD darauf los lassen.

gruss
  andre
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: roedert am 09 Februar 2014, 23:39:20
ok, soweit verstanden .... mit einem userReading kann ich ja sogar die Differenz zum letzten Wert abspeichern.
Aber lässt sich so auch irgendwie die Differenz mit drittletzten Wert ermitteln ... so wie ich es mit meinen 3 Dummies gemacht habe?

Da habe ich jetzt noch keinen Lösungsansatz für.
Titel: Antw:Auf einem größeren Temperaturanstieg reagieren
Beitrag von: RalfKruppa am 10 Februar 2014, 07:03:51
Hallo und Danke für die vielen anregungen.
Ich habe es jetzt folgendermaßen gelöst:

define pumpe_an notify vorlauf_temp { if (Value('vorlauf_temp') gt OldValue('vorlauf_temp')+2) { fhem "set gpio_17 on" } }