Hauptmenü

FHEM If condition

Begonnen von user4711, 29 Juni 2014, 19:03:21

Vorheriges Thema - Nächstes Thema

user4711

Hallo,

ich würde gerne dann eine Lampe anschalten, wenn diese nicht bereits angeschaltet ist (Dimmer) und wenn der Bewegungsmelder eine Helligkeit von kleiner 91 erkennt.
Was muss ich bei meinem Code anpassen, dass er tut was er soll.

Vorab besten Dank
user4711

define TR_MotionDetector_notify notify TR_MotionDetector:motionCount.* \
if (({ReadingsVal("TR_MotionDetector","brightness","80")<91}) &&\
      ([TR_Lampen] eq "off") \
    )  \
    (set TR_Lampen on-for-timer 120)

Puschel74

Hallo,

ZitatWas muss ich bei meinem Code anpassen, dass er tut was er soll.
Du musst dich zwischen if und IF entscheiden.
Mischen geht nicht.

Grüße
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.

user4711

Ok, hab mich für IF (gemäß FHEM Beschreibung) entschieden. Danke für den Hinweis, hätte ich wahrscheinlich nie gesehen. Doch leider geht die Lampe bei einer Helligkeit von  150 bereits an.

Was habe ich noch falsch?

Anmerkung: Weiteres "Problem" Wenn ich den Ausdruck
{ReadingsVal("TR_MotionDetector","brightness","80")<91} im Formular von FHEM angebe, dann bekomme ich 1, wenn die Bedingung erfüllt ist und ein neu geladene Web-Page, wenn die Bedingung nicht erfüllt ist. ???

Wenn ich die einzelnen Bedingungen welche mit "Und" verknüpft sind einsetzt (-> Und nicht benutze), dann geht die if Abfrage (in reduzierte Funktion). Mit dem "Und" geht nichts.

Viele Grüße
user4711

satprofi

versuch mal {ReadingsVal("TR_MotionDetector","brightness","80")>91}

wenn ich richtig verstehe soll die lampe unter 91 anschalten, du schaltest aber off


define TR_MotionDetector_notify notify TR_MotionDetector:motionCount.* \
if (({ReadingsVal("TR_MotionDetector","brightness","80")<91}) &&\
      ([TR_Lampen] eq "off") \
    )  \
    (set TR_Lampen on-for-timer 120)
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Puschel74

#4
Hallo,

ZitatWenn ich die einzelnen Bedingungen welche mit "Und" verknüpft sind einsetzt (-> Und nicht benutze), dann geht die if Abfrage (in reduzierte Funktion). Mit dem "Und" geht nichts.

Und nicht benutze  ???
Was heisst das?

Wenn Bedingungen in einen Code eingefügt werden WERDEN diese benutzt und ausgewertet.

Daher auch hier die Bitte:
http://forum.fhem.de/index.php/topic,16311.0.html

Fragen zu IF gehören nach Automatisierung - Fragen zu if kann hier bleiben.
Danke.

Grüße

Edith: Wobei für mich der gepostete Code in dieser Form keinen Sinn macht.
Die Abfrage NACH && sollte mMn ich der selben Zeile stehen wie der Rest VOR dem &&
Ach ja - noch was: Finger weg von der fhem.cfg.
Ich musste das auch erst lernen aber es ist einfacher NUR und ausschliesslich das DEF zu bearbeiten und nicht! ind der fhem.cfg "rum zu fuhrwerken".
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.

user4711

Hallo,

kannst du den Threat zur Automatisierung verschieben oder soll ich einen Neuen aufmachen?


Noch zum Problem:

Habe beide Conditions in eine Zeile gebracht, leider ohne Erfolg.

Und = &&

if condition1 und condition2
   schalte  Lampe
// geht was nicht

Zum Test habe ich jeweils nur eine Bedingung benutzt und das war ok.

if condition1
   schalte Lampe  //L War ok Lampe an, wenn Dimm-Lampe auf off steht.

if condition2
   schalte Lampe  // War ok Lampe  an, wenn es zu dunkel war

Viele Grüße
user4711

Puschel74

Hallo,

verschieben kann ich aber dort nicht zusammenfügen.

Ich hab mal versucht dir einen Code zu bauen.
Ob er deinen Ansprüchen genügt weiß ich nicht und er ist auch ungetestet und gehört in das DEF deines notify.
TR_MotionDetector:motionCount.* {
  if ((ReadingsVal("TR_MotionDetector","brightness","80") < "91") && (Value("TR_Lampen") eq "off")) {
    fhem("set TR_Lampen on-for-timer 120");
  }
  else {
    fhem("set TR_Lampen off") if (Value("TR_Lampen") ne "off");
  }
}

Den else-Zweig musst du ggf. noch anpassen.

Grüße

P.S.: Ich benutze if und nicht IF (oder das neue DOIF).
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.