Hallo zusammen,
ich kann mich auf den Kopf stellen aber der Code will einfach nicht. Zumindest Tagsüber.
Wenn es Hell ist und der wert fc1_high_c weniger als 19 ist oder es nach 12 Uhr ist, soll der JLhochfahren() ausführen.
So jetzt ist fc1_high_c 26 2014-07-23 11:30:59 Ergo 26 Grad
Und es ist 11:30Uhr. Ergo vor 12
Er fährt die Jalousie hoch obwohl da steht über 19 Grad nicht hochfahren. Was hab ich falsch gemacht?
Vielen Dank schon mal für Hilfe.
pir_FlurEG:motion {
if (ReadingsVal("Hell", "state", "") eq "Ja" && (ReadingsVal("Wetter", "fc1_high_c", "0") le "19" || $hour ge "12"))
{
JLhochfahren();
fhem ("attr notify_motion_jl disable 1");
}
Log 3, "Jalousien wurden hochgefahren Motion";
}
Hallo,
so ganz verstehe ich nicht, was 'Du da willst, würde aber mal in Deiner Abrage-Logik um die Teile, die zusammengehören, noch ein Klammerpaar setzen.
hell und temp oder größer 12 Uhr
Wenn die temp und größer 12 Uhr zusammengehören (||), dann muss da eine Klammer herum.
Tipp:
Um Deine Abfragen zu testen, kannst Du Sie natürlich auch einzeln oben in die fhem - Zeile eingeben: Nur } drum und ;; verwenden:
{ReadingsVal('hell','state',0);;}
Steht der Wert wirklich in 'state' oder in 'STATE',
dann geht natürlich auch Value('hell')
Gruß
Elektrolurch
Ich habs gefunden, klasse Fehler!
Vor dem zweiten ReadingsVal darf keine Klammer. :-/
Danke für die Hilfe!
Zur Erklärung
Der Bewegungssensor soll bei "motion" die Jalousien hochfahren und zwar wenn
Es Hell ist und fc_high_c kleiner gleich 19 oder es nach 12:00 Uhr ist.
Vor 12 steht die Sonne voll im Wohnzimmer ab 12 gar nicht mehr. Wenn es kälter als 19 Grad werden soll kann die Sonne rein. Zum wärmen. Den optimalen Wert muss ich aber noch ermitteln.
Das aber nur einmal am Tag deshalb das disable
So ist es richtig.
pir_FlurEG:motion {
if (ReadingsVal("Hell", "state", "") eq "Ja" && ReadingsVal("Wetter", "fc1_high_c", "0") le "19" || $hour ge "12")
{
JLhochfahren();
fhem ("attr notify_motion_jl disable 1");
}
Log 3, "Jalousien wurden hochgefahren Motion";
Das oben ist auch falsch. Es geht einfach nicht.
Deshalb so. Das hab ich jetzt mehrfach getestet und scheint zu gehen.
pir_FlurEG:motion {
if ((ReadingsVal("Wetter", "fc1_high_c", "18") <= "19" || $hour >= "12") && ReadingsVal("Hell", "state", "") eq "Ja")
{
JLhochfahren() ;
fhem ("attr notify_motion_jl disable 1");
Log 3, "Jalousien wurden hochgefahren Motion";
}
}