Hallo,
vielleicht könnte ihr mir hier ein wenig auf die Sprünge helfen.
Ich würde gerne de Zustand meiner Terrassentüre (geschlossen, geöffnet oder gekippt) abfragen und den Rollladen NICHT automatisch herunterfahren lassen, wenn die Türe den Zustand geöffnet oder gekippt hat.
Ich will also sicherstellen, dass ich mich dadurch nicht aussperre, wenn der Rollladen (ebenfalls durch FHEM gesteuert) herunterfährt.
Jetzt weiß ich nicht, wo ich anfangen soll. Kann so etwas durch if-then-else, notify, watchdog, doif, etc.. realisiert werden?
Ein Gedankenanstoß könnte hier mit vielleicht schon helfen.
Vielen Dank und Grüße in die Runde :)
Schau dir mal das Modul DOIF an.
http://fhem.de/commandref_DE.html#DOIF (http://fhem.de/commandref_DE.html#DOIF)
Wenn du dann nicht weiter kommst helfe ich dir gerne. Aber erstmal le(e)hrenen. 8)
Das ist relativ simpel:
Welche Statusabfragen brauchst du?
z. B. Fensterkontakt, Temperatur, Uhrzeit, Beschattungssensor oder MyTwighligt
Dann die Beschreibung genau durchlesen und die Bedingungen reinpacken.
Hallo,
vielen Dank schon mal für die Hinweise.
Ich habe es jetzt mal so versucht:
define KU_Rollladen_runter at *{sunset(-1200,"17:00","23:00")} && {(Value("KU_Terrassentuer") eq "closed")} set KU_Rollladen runter
Könnte das so funktionieren?
Ok, nun ist es so, dass die Rolllade nicht herunterfährt, solange die Türe geöffnet/gekippt ist. Ein erster Erfolg also! :D
Allerdings fährt die Rolllade dann aber auch nicht runter, sobald die Türe geschlossen wird. Insoweit also kein Erfolg! :-[
mein DEF Teil vom AT sieht so aus ...
*{sunset(0,"18:30","23:00")} set hm.rollade.2 off;set dummy.rollade.1 off;
IF ([hm.sec.1:state] eq "closed") (set hm.rollade.1 off)
ELSE (
IF ( [hm.rhs.1:state] eq "tilted") (set hm.rollade.1 [hm.rollade.1:level.tilt:d])
ELSE (set hm.rollade.1 ([hm.rollade.1:level.warning:d]))
)
ich habe noch einen Dummy für den globalen Rolladenstatus und ich habe ein warning Reading bei den Rolladen hinzugefügt, dann kann ich den Wert einfacher an zentraler Stelle ändern. ABER ein set ... clear readings löscht auch diese und ich muss diese danach auf wieder neu setzen und habe ich die Tür gekippt, dann geht es in die Lüftungsstellung
Kurze Frage: Warum machst du es nicht mit DOIF es ist eine mächtige Funktion, die sehr einfach funktioniert. Mein Beispiel bei der Beschattung:
Zitat
define Rollladen_Sonne DOIF ([Thermometer:temperature:d]>22 and [Fensterkontakt_Tuer_links:state] eq "closed" and [bs:state] eq "off 2.5" and [?10:00-22:00]) (set Rolladen Ab80) DOELSE (set Rolladen on)
In der Commandref steht dieses Beispiel bzgl. Sunset und Sunrise:
Zitatdefine di_light DOIF ([{sunrise_abs()}-{sunset(1800,"17:00","21:00")}])(set outdoorlight off) DOELSE (set outdoorlight on)
Du brauchst nur Sunset, also den Sunrise-Teil weglassen und dann ein "and" dazu und den Status des Sensors dazupacken. Das ergibt dann so was:
Zitatdefine di_light DOIF ([{sunset(1800,"17:00","21:00")}] and [deinSensor:state] eq "deinReading")(set outdoorlight off) DOELSE (set outdoorlight on)
Ich habe meines zwar noch mit der If-Funktion, da es zu dem Zeitpunkt kein DOIF gab, aber mittlerweile realisiere ich alles was einen Watchdog braucht oder ein If mit der DOIF-Funktion.
Vielen Dank für die ausführlichen Infos.
Ich habe mich mal daran versucht und dabei ist das raus gekommen:
define KU_Rollladen_runter DOIF ([{sunset(-1200,"17:00","23:00")}] and [KU_Terrassentuer] eq "closed")(set KU_Rollladen runter)
Leider fährt der Rollladen jetzt gar nicht mehr runter, selbst bei geschlossener Türe bewegt sich nichts.
Hat vielleicht jemand noch einen heißen Tipp für mich?
Wünschenswert wäre es natürlich auch, wenn der Rollladen sofort herunterfährt, wenn die sunset-Bedingung bereits überschritten ist und dann erst die Türe geschlossen wird. Solange die Türe offen ist, soll der Rollladen ja auf keinen Fall herabfahren.
Viele Grüße
Funktioniert dein Sunset modul? Welche Uhrzeit steht da für heute drin?
Sunset-Modul für sich funktioniert. Die Zeit für heute kann ich im Moment nicht nachschauen.
Ich habe die Einstellungen für die Sunset-Funktion nur kopiert um sie in der DOIF-Funktion zu verwenden.
Zitat von: MrMaxy am 07 Juli 2015, 23:27:37
Vielen Dank für die ausführlichen Infos.
Ich habe mich mal daran versucht und dabei ist das raus gekommen:
define KU_Rollladen_runter DOIF ([{sunset(-1200,"17:00","23:00")}] and [KU_Terrassentuer] eq "closed")(set KU_Rollladen runter)
Leider fährt der Rollladen jetzt gar nicht mehr runter, selbst bei geschlossener Türe bewegt sich nichts.
Hat vielleicht jemand noch einen heißen Tipp für mich?
Wünschenswert wäre es natürlich auch, wenn der Rollladen sofort herunterfährt, wenn die sunset-Bedingung bereits überschritten ist und dann erst die Türe geschlossen wird. Solange die Türe offen ist, soll der Rollladen ja auf keinen Fall herabfahren.
Viele Grüße
Du arbeitest hier mit punktueller Zeitangabe, diese ist nur zum gegebenen Trigger-Zeitpunkt wahr, sonst nicht. Da wird dir das Bewegen der Tür nicht viel helfen, da es mit "und" verknüpft ist. Vermutlich willst du mit Zeitintervallen arbeiten, diese sind nicht nur zum Triggerzeitpunkt, sondern in einem Zeitintervall wahr (siehe Commandref zu DOIF). Hier z. B.:
define KU_Rollladen_runter DOIF ([{sunset(-1200,"17:00","23:00")}-00:00] and [KU_Terrassentuer] eq "closed")(set KU_Rollladen runter)
Und ohne do always Attribut wird es auch nur einmal funktionieren. Am besten definierst du dir gleich den Fall zum Hochfahren, dann wird die Zustandsverwaltung dem Modul überlassen (ohne do always). Das Konzept ist anhand vieler Beispiele in der Commandref des DOIF-Modus erklärt.
Gruß
Damian
Da fehlt was:
Zitatdefine KU_Rollladen_runter DOIF ([{sunset(-1200,"17:00","23:00")}] and [KU_Terrassentuer] eq "closed")(set KU_Rollladen runter)
Bei
Zitat[KU_Terrassentuer] eq "closed")
fehlt der Readingwert
Es müsste heißen
Zitatdefine KU_Rollladen_runter DOIF ([{sunset(-1200,"17:00","23:00")}] and [KU_Terrassentuer:state] eq "closed")(set KU_Rollladen runter)
Vielen Dank!
Da habe ich das kleine Detail mit dem Readingwert wohl vollkommen übersehen. ::)
Seit gestern Abend fährt der Rollladen auch wieder herunter - wenn die Türe geschlossen ist.
Werde ich heute Abend mal mit geöffneter Türe ausprobieren.
Hallo MrMaxy,
ich hatte dafür mal hier (http://forum.fhem.de/index.php/topic,34848.0.html) Codeschnipsel bereitgestellt, das mit dem runterfahren muss ich mal schauen, hatte ich glaube ich nicht berücksichtigt.
Gruß
Micha
Hallo Micha,
sieht gut aus und entspricht fast genau dem, was ich versuche umzusetzen. Bei mir handelt es sich eben nur um eine Türe.
Werde mich mal an deinem Code versuchen.
Vielen Dank!
kannst ja mal berichten ob alles so funktioniert hat wie du es wolltest.
Hallo,
leider bin ich bisher noch nicht dazu gekommen, deinen Code zu testen.
Werde mich aber hier melden, sobald ich mehr weiß. :)