Hauptmenü

if ReadingsVal else

Begonnen von Vladi2010, 10 Oktober 2013, 16:46:13

Vorheriges Thema - Nächstes Thema

Vladi2010

hallo ich über gerade mit  if ReadingsVal (else)

Meine Winmatick meldet unter  state folgendes:  locked   und  0 % bis 100%

ich will bei locked  meinen PID auf  disable 0 setzen, und bei allen anderen werten den PID auf  disable 1 setzen.

Disable 0 funktioniert schon :-)

define Fensterzustand_Kueche_testAUF notify CUL_HM_HM_SEC_WIN_127AC0_Win  { fhem("attr heizung.4 disable 0")if ReadingsVal("CUL_HM_HM_SEC_WIN_127AC0_Win", "state ", "locked") }

aber wie erweitere ich es, mit "else", damit der PID auf  disable 1 zurück springt sobald ein wert von 1 bis 100% unter State der Winmatic steht?

Danke für eure Hilfe

Andreas

MisterEltako

Hallo!

1 Beispiel wäre so:

define Fensterzustand_Kueche_testAUF notify CUL_HM_HM_SEC_WIN_127AC0_Win {\
if (ReadingsVal("CUL_HM_HM_SEC_WIN_127AC0_Win", "state ", "locked") eq "locked"){\
   fhem("attr heizung.4 disable 0");;\
}else{\
   fhem("attr heizung.4 disable 1");;\
}\
}


MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Vladi2010

danke für die Antwort  :-)werde damit gleich Probieren

wofür steht den das  eq "locked")   ??

grüße Andras

MisterEltako

zunächst würde ich den Namen des Aktors vereinfachen z.B.:

rename CUL_HM_HM_SEC_WIN_127AC0_Win Kontakt_Kueche (in die Kommandozeile eingeben)

"locked" ist der eine mögliche Status, den du angegeben hast.
 
Da du den "state" abfragst geht es dann auch etwas kürzer.

define Fensterzustand_Kueche_testAUF notify Kontakt_Kueche {\
if (Value("Kontakt_Kueche")) eq "locked"){\
   fhem("attr heizung.4 disable 0");;\
}else{\
   fhem("attr heizung.4 disable 1");;\
}\
}


MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Vladi2010

habe jetzt auf WinMatic_Kueche umgetauft :-)

Value  oder ReadingsVal  ?

habe es so Probiert:

define Fensterzustand_Kueche_testAUF notify WinMatic_Kueche {\
if (ReadingsVal("WinMatic_Kueche")) eq "locked"){\
   fhem("attr heizung.4 disable 0");;\
}else{\
   fhem("attr heizung.4 disable 1");;\
}\
}

und so:

define Fensterzustand_Kueche_testAUF notify WinMatic_Kueche {\
if (Value("WinMatic_Kueche")) eq "locked"){\
   fhem("attr heizung.4 disable 0");;\
}else{\
   fhem("attr heizung.4 disable 1");;\
}\
}
beides funktioniert leider nicht :(

(siehe Anhang / see attachement)

MisterEltako

Ok, sieht besser aus! ;o)

Also deine erste Variante kann nicht klappen:

ReadingsVal("Para1","Para2","Para3") - liest das angegebene Reading eines Aktors und der letzte Parameter wird übernommen, wenn kein Lesen des Reading möglich war
z.B. ReadingsVal("Winmatic_Kueche", "direction", "kein_Wert_gelesen")

Value("Aktorname") - liest immer nur den "state" eines Aktors

so nun zum eigentlichen Code:

Laut deinem Bild ist der Status der WinMatic "100%", also müsste "else" ausgeführt werden und heizung.4 disable 1 geschalten werden.

Füge bitte Logzeile ein und gib nach dem Speichern in die Kommandozeile:
trigger WinMatic_Kueche
ein. Bitte dann ins Logfile schauen was dort steht und posten.

define Fensterzustand_Kueche_testAUF notify WinMatic_Kueche {\
Log 3, "WinMatic_Kueche-Status: ".Value("WinMatic_Kueche");;\
if (Value("WinMatic_Kueche")) eq "locked"){\
fhem("attr heizung.4 disable 0");;\
}else{\
fhem("attr heizung.4 disable 1");;\
}\
}

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Vladi2010

hab ich gemacht



log:

2013.10.10 22:10:42 3: Fensterzustand_Kueche_testAUF return value: syntax error at (eval 774) line 1, near ") eq"
syntax error at (eval 774) line 1, near "}else"

2013.10.10 22:10:42 3: Fensterzustand_Kueche_testAUF return value: syntax error at (eval 775) line 1, near ") eq"
syntax error at (eval 775) line 1, near "}else"

2013.10.10 22:10:51 2: HMLAN_Parse: HMLAN1 new condition Warning-HighLoad
2013.10.10 22:11:20 2: HMLAN_Parse: HMLAN1 new condition ERROR-Overload
2013.10.10 22:11:26 3: FHT8V set Stellantrieb_BAD valve 0

MisterEltako

Ok, eine Klammer zuviel!

define Fensterzustand_Kueche_testAUF notify WinMatic_Kueche {\
Log 3, "WinMatic_Kueche-Status: ".Value("WinMatic_Kueche");;\
if (Value("WinMatic_Kueche") eq "locked"){\
fhem("attr heizung.4 disable 0");;\
}else{\
fhem("attr heizung.4 disable 1");;\
}\
}

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Vladi2010

trigger WinMatic_Kueche

log:
bei Fenster ZU
WinMatic_Kueche-Status: locked

bzw während des öffnens  

zb:
WinMatic_Kueche-Status: 0 %
WinMatic_Kueche-Status: 73 %

bei offenem Fenster:
WinMatic_Kueche-Status: 100 %

Vladi2010

Zitat von: Vladi2010 schrieb am Do, 10 Oktober 2013 22:45trigger WinMatic_Kueche

log:
bei Fenster ZU
WinMatic_Kueche-Status: locked

bzw während des öffnens  

zb:
WinMatic_Kueche-Status: 0 %
WinMatic_Kueche-Status: 73 %

bei offenem Fenster:
WinMatic_Kueche-Status: 100 %




oooooooooo  disable PID Funktioniert    :):):):):):)


super,

jetzt werde ich es erweitern indem ich die Stellantriebe auf 0 % Setze bei disable 1

Vladi2010

vielen vielen Dank
  :)

ich habe jetzt noch etwas  da zugeschrieben ( es war einfach nach deiner Hilfe)

define Fensterzustand_Kueche_testAUF notify WinMatic_Kueche {\
Log 3, "WinMatic_Kueche-Status: ".Value("WinMatic_Kueche");;\
if (Value("WinMatic_Kueche") eq "locked"){\
fhem("attr heizung.4 disable 0");;\
}else{\
fhem("attr heizung.4 disable 1");; fhem("set Stellantrieb_Kueche valve 0") ;;\
}\
}


 dient dazu, den stell antrieb zu zu drehen wenn das Fenster offen ist

MisterEltako

Müsste so passen... ;o)

Allerdings kannst du die Zeile gleich so schreiben, da diese beiden Befehle FHEM eigen und kein Perlcode sind:

fhem("attr heizung.4 disable 1;; set Stellantrieb_Kueche valve 0");;\

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310