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
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
danke für die Antwort :-)werde damit gleich Probieren
wofür steht den das eq "locked") ??
grüße Andras
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
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)
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
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
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
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 %
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
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
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