Hauptmenü

notify mit 2 Temperaturen

Begonnen von Raschi1210, 15 April 2015, 08:23:13

Vorheriges Thema - Nächstes Thema

Raschi1210

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

rudolfkoenig

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.

Raschi1210

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; ")

rudolfkoenig

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 auch beschrieben..

scooty

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 
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol