Hallo, nach einigen Versuchen habe ich folgenden Code "entwickelt", der aber noch nicht ganz das macht, was er soll:
*{sunset(0,"17:00","22:00")} {if ((Value("Rolaautomatik") eq "Ein") && (ReadingsVal("SZ_Rola","state","") =~ m /on/)){fhem "set SZ_Rola SoSchu";}if (ReadingsVal("Wetter_Borsdorf","fc1_low_c",0)<5) {fhem "set SZ_Rola Zu";}}
Folgendes ist beabsichtigt:
Zur festgelegten Zeit soll geprüft werden, ob der SZ_Rola oben ist:
Wenn nein -> es soll nichts passieren, da der Rola mit der Hand verfahren wurde.
Wenn ja -> Rola soll in SoSchu fahren (ca. 50%) und dann soll geprüft werden, ob die zu erwartende Tiefsttemp. unter 5°C sinken soll. Wenn ja -> Rola ganz zu; sonst in SoSchu lassen.
Ich will auf diese Weise alles in eine DEF packen, um nicht zu viele DEFs zu haben und den Überblick zu verlieren.
Bis jetzt passiert folgendes: Ist der Rola oben, dann werden die Entscheidungen nacheinander abgearbeitet und der Rola fährt in SoSchu bzw. ganz zu. Ist der Rola aber nicht ganz oben, so fährt er immer ganz zu.
Also stimmt etwas mit der "Klammerei" nicht. Funktioniert mein Denkansatz überhaupt so mit fhem oder lässt sich das doch nur mit zwei DEFs lösen?
Danke für Hinweise in die richtige Richtung.
Uwe
Zitat von: locodriver schrieb am Sa, 28 September 2013 17:04Zur festgelegten Zeit soll geprüft werden, ob der SZ_Rola oben ist:
Wenn nein -> es soll nichts passieren, da der Rola mit der Hand verfahren wurde.
Wenn ja -> Rola soll in SoSchu fahren (ca. 50%) und dann soll geprüft werden, ob die zu erwartende Tiefsttemp. unter 5°C sinken soll. Wenn ja -> Rola ganz zu; sonst in SoSchu lassen.
Du denkst viel zu kompliziert. Mach Dir doch mal ein Schema, wie der logische Ablauf sein soll...
(ich mach das jetzt mal symbolisch, die Abfragen sind syntaktisch nicht korrekt!)1. Bedingung: Rollladen oben? Ja: weiter, Nein: interessiert nicht.
Daraus ergibt sich die "Hauptabfrage":
if(Rollladen == oben)
{
...
}
2. Bedingung: Tiefsttemperatur < 5? Ja: Rolladen zu, Nein: Rolladen SoSchu
Daraus ergibt sich ganz einfach eine zweite Abfrage innerhalb der Hauptabfrage:
if(Rollladen == oben)
{
if(Tiefsttemp < 5) { set Rolladen zu } else { set Rolladen SoSchu }
}
Fertig :)
Und Deine Abfrage, ob die Automatik aktiv ist, gehört als Erweiterung in die Hauptabfrage.
(Ich weiss, es ginge sogar noch kürzer, aber ich wollte das Ganze übersichtlich und verständlich halten)---
Hallo Betateilchen,
manchmal ist man wie vernagelt und kommt von der einmal entwickelten Idee einfach nicht mehr weg - gut, dass man hier immer den richtigen Tipp in die richtige Richtung bekommt.
Ich kann die Änderung erst morgen testen, da ich jetzt arbeiten "darf".
Der Code wäre dann wohl so:
*{sunset(0,"17:00","22:00")} {if ((Value("Rolaautomatik") eq "Ein") && (ReadingsVal("SZ_Rola","state","") =~ m /on/)) if (ReadingsVal("Wetter_Borsdorf","fc1_low_c",0)<5) {fhem "set SZ_Rola Zu";} else {fhem "set SZ_Rola SoSchu";}}
Danke und bis morgen
Uwe
nein, da fehlt noch eine geschweifte Klammerebene nach der ersten Abfrage :)
*{sunset(0,"17:00","22:00")} {if ((Value("Rolaautomatik") eq "Ein") && (ReadingsVal("SZ_Rola","state","") =~ m /on/)) {if (ReadingsVal("Wetter_Borsdorf","fc1_low_c",0)<5) {fhem "set SZ_Rola Zu";} else {fhem "set SZ_Rola SoSchu";} } }
Ein paar runde Klammern hast Du zwar zuviel, die tun aber nicht weh.
Irgendwie haut es noch nicht hin, ich bekomme jetzt diese Meldung:
2013.09.30 19:40:47 3: SZ_Rola_runter: Unknown command {if, try help.
Unknown command }, try help.
Unknown command }, try help.
Ich habe es auch mal mit Rola oben bzw. nicht oben versucht - immer das gleiche Ergebnis und der Rola bewegt sich nicht. Mit ein paar anderen Versuchen, die Klammern zu setzen bin ich auch nicht weiter gekommen.
Ich werde mich mal am langen WE damit beschäftigen, momentan komme ich nur über VPN auf mein System da ich nicht zu Hause bin.
Uwe
Das WE hat geholfen...
*{sunset(0,"17:00","22:00")} {if ((Value("Rolaautomatik") eq "Ein") && (ReadingsVal("SZ_Rola","state","") =~ m /on/)) {if ((ReadingsVal("Wetter_Borsdorf","fc1_low_c",0)<9)) {fhem "set SZ_Rola Zu";} else {fhem "set SZ_Rola SoSchu";} } }
Ist aus der Def. kopiert und tut jetzt was es soll - schön, wenn man ein Erfolgserlebnis hat :-))
Uwe