FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Raschi1210 am 15 April 2015, 08:23:13

Titel: notify mit 2 Temperaturen
Beitrag von: Raschi1210 am 15 April 2015, 08:23:13
Ich möchte mit 2 Temperatursensoren
- Aussentemperatursensor (Aussentemp_Luftfeuchte)
- Differenz - Temperatursensor (TempSensorRolladen)
die Temperaturen auslesen und damit wenn beide Bedingungen zu treffen (Aussentemp_Luftfeuche > 25 Grad und TempSensorRolladen > 5 Grad), dass diverse Rolläden runterfahren.
Ich habe es mal so probiert, aber das funktioniert nicht ganz.
Das Problem liegt denke ich irgendwie an dem, weil die Temperatur nicht ausgelesen werden kann.

define NV_TEST notify (TempSensorRolladen|Aussentemp_Luftfeuchte) { my $t1 = ReadingsVal("TempSensorRolladen", "temperature", 0);; my $t2 = ReadingsVal("Aussentemp_Luftfeuchte", "temperature", 0)};; if ($t1 > 5.0 && $t2 > 25) { fhem("set Rollo off;; ")}}

Bitte um Hilfe Danke
Titel: Antw:notify mit 2 Temperaturen
Beitrag von: rudolfkoenig am 15 April 2015, 08:32:55
Die geschweiften Klammern sind schon mal falsch.

Am besten sowas nicht in fhem.cfg direkt, sondern im FHEMWEB Detailansicht  (DEF Link anklicken) machen, dann kann man ;; sparen, und einfach(er) eingerueckt auf mehrere Zeilen verteilt hinschreiben, dabei fallen Klammerungsfehler auf.

Noch besser waere in 99_myUtils.pm eine Funktion zu definieren.
Titel: Antw:notify mit 2 Temperaturen
Beitrag von: Raschi1210 am 15 April 2015, 09:43:44
Danke aber so funktionierts auch nicht

(TempSensorRolladen|Aussentemp_Luftfeuchte)
my $t1 = ReadingsVal("TempSensorRolladen", "temperature", 0)
my $t2 = ReadingsVal("Aussentemp_Luftfeuchte", "temperature", 0)
if ($t1 > 1.0 && $t2 > 25) fhem("set Rollo off; ")
Titel: Antw:notify mit 2 Temperaturen
Beitrag von: rudolfkoenig am 15 April 2015, 10:29:04
Ich habe nicht gesagt, dass man alle ; und {} weglassen soll. Folgendes muesste  (im Detailansicht!) korrekt sein (ungetestet):

(TempSensorRolladen|Aussentemp_Luftfeuchte) {
  my $t1 = ReadingsVal("TempSensorRolladen", "temperature", 0);
  my $t2 = ReadingsVal("Aussentemp_Luftfeuchte", "temperature", 0);
  if ($t1 > 1.0 && $t2 > 25) {
    fhem("set Rollo off");
  }
}


Ich empfehle 1-2 Stunden mit dem Lesen der ersten paar Kapitel eines Perl Buches zu beschaeftigen.

Beim Test hilft es in der Kommandozeile sowas wie
{ ReadingsVal("TempSensorRolladen", "temperature", 0); }
einzugeben, um zu sehen, ob man das bekommt, was man will.
mit einem "trigger TempSensorRolladen" kann man das notify testen.
All das ist im http://fhem.de/commandref.html#perl (http://fhem.de/commandref.html#perl) auch beschrieben..
Titel: Antw:notify mit 2 Temperaturen
Beitrag von: scooty am 15 April 2015, 10:43:33
Und ganz ohne Perl und {} schlage ich ein DOIF vor:

define NV_TEST DOIF ([TempSensorRolladen:temperature] > 5 and [Aussentemp_Luftfeuchte:temperature] > 25) (set Rollo off)

Ungetestet und zur Eingabe im Webfrontend gedacht.

Andreas