DOIF Rolladen hoch wenn Fenster geöffnet wird und nach 30min bei Sonnenstand run

Begonnen von Depechem, 29 Dezember 2019, 22:20:28

Vorheriges Thema - Nächstes Thema

Depechem

Hallo
ich möchte gern folgende Automatisierung erstellen. Nur leider komme ich nicht ganz weiter.
Folgendes soll gemacht werden

Wenn Fenster-Rolladen geschlossen Rollo_Badezimmer control 0
und Fenster geöffnet wird Bad_Fenster_angekippt Open
dann öffne Fenster-Rolladen set Rollo_Badezimmer control 100

soweit kein Problem als DOIF
([Rollo_Badezimmer:control] eq "0" and [Bad_Fenster_angekippt:state] eq "Open")(set Rollo_Badezimmer control 100)

nun soll aber der Rolladen nach 30 Minuten wieder runter gehen was grundlegend mit "sleep  1800" möglich ist > aber nur mit folgender Bedingung. Er soll nur wieder nach 30min runter gehen wenn die Zeit zwischen Sonnenuntergang und Sonnenaufgang liegt.
Also eine weitere Bedingung. Ist dies mit einem DOIF möglich? Vieleicht könnt ihr mir dazu einen Ansatz geben? Falls es damit nicht gelöst werden kann, wie wäre es alternativ möglich?

Danke Euch
VG Thomas
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

ahermann86

Hallo,

ohne es getestet zu haben, hätte ich folgende Idee:


([Bad_Fenster_angekippt:state] eq "Open" and [?Rollo_Badezimmer:control] eq "0")
(set Rollo_Badezimmer control 100)
( IF ([{sunrise_abs("HORIZON=0",0)}] and [{sunset_abs("HORIZON=0",0)}]) (set Rollo_Badezimmer control 0) )

DOELSE
()  ##Timer abwürgen


Attributes:
wait 0,1800:0

Gruß
Axel

Depechem

Zitat von: ahermann86 am 29 Dezember 2019, 23:04:25
Hallo,

ohne es getestet zu haben, hätte ich folgende Idee:


([Bad_Fenster_angekippt:state] eq "Open" and [?Rollo_Badezimmer:control] eq "0")
(set Rollo_Badezimmer control 100)
( IF ([{sunrise_abs("HORIZON=0",0)}] and [{sunset_abs("HORIZON=0",0)}]) (set Rollo_Badezimmer control 0) )

DOELSE
()  ##Timer abwürgen


Attributes:
wait 0,1800:0

Gruß
Axel

Hallo Axel, Danke das kling schon mal gut. Leider springt er bei Ausführung immer gleich von cmd_1 über  cmd_1.1 zu cmd_2
Also kann er das IF nicht ganz auswerten.

so sieht es bei mir aus


([Bad_Fenster_angekippt:state] eq "Open" and [Rollo_Badezimmer:control] eq "0")
(set Rollo_Badezimmer control 100)
(IF ([{sunset("HORIZON=-3.5",0,"16:00","22:00")}] and [{sunrise("HORIZON=-3.2",0,"05:00","08:00")}]) (set Rollo_Badezimmer control 0))

DOELSE
()  ##Timer abwürgen


wo könnte noch der Fehler liegen?

meine normale Rolladensteuerung funktioniert mit folgenden 2 "at"
defmod Rollos_Wohnung_Thomas_Sonnenaufgang at *{sunrise("HORIZON=-3.2",0,"05:00","08:00")} set Rollo_Balkontuer pct 100;; set Rollo_Wohnzimmer pct 100;; set Rollo_Fenster_Kueche pct 100;; sleep 15;; set Rollo_Badezimmer pct 100;; set Rollo_KiZi_vorn pct 100

defmod Rollos_Wohnung_Thomas_Sonnenuntergang at *{sunset("HORIZON=-3.5",0,"16:00","22:00")} set Rollos_Wohnung_Thomas down;; sleep 0.5;; \
set Rollo_Wohnzimmer pct 55

RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux

Hallo Thomas,

Was spricht gegen das ASC (AutoShuttersControl) Modul  ;)


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Depechem

Zitat von: CoolTux am 30 Dezember 2019, 08:02:21
Hallo Thomas,

Was spricht gegen das ASC (AutoShuttersControl) Modul  ;)


Grüße

stimmt das gibt es ja jetzt auch.
Muss ich mich mal in Ruhe mit beschäftigen. Kann man dort drin meine gewünschten Automatisierungen einfach lösen?
Laut Commandref soll ja genau das der Hintergrund des Moduls sein und da shast auch du wieder erstellt ;-)

Ich schaue es mir an. Danke
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux

Einfach ist relativ. Du müsstest Dich etwas einarbeiten  ;D
Aber das meiste Deiner Wünsche sollte kein Problem sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ahermann86

Hallo,

habe es nun doch einmal nachgebaut:


([EG_Fenster_Arbeit:getG1] eq "on" and [?EG_Rollo_Arbeit:getG1:d] == 100)
(set EG_Rollo_Arbeit Auf) ##Auf
( IF ([{sunrise_abs("HORIZON=0",0)}] and [{sunset_abs("HORIZON=0",0)}]) (set EG_Rollo_Arbeit Ab) )

DOELSE
()  ##Timer abwürgen


Das funktioniert bei mir auch so. Mir ist aufgefallen, dass du das "?" in dem [?Rollo_Badezimmer:control] eq "0") nicht eingebaut hast.
Ohne dem funktioniert das bei mir auch nicht. Das löst sofort einen Trigger beim Fahren aus und somit wird der DOELSE aktiv sobald der Rollladen nicht mehr "0" ist.

Füge das "?" ein und es wird funktionieren ;)

Gruß
Axel

CoolTux

Bedeutet das ? nicht eher das es keinen Trigger gibt sondern das hier lediglich eine Abfrage erfolgen soll?
Stand früher jedenfalls mal so in der Commandref
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

Diese Definitione macht so keinen Sinn:

IF ([{sunrise_abs("HORIZON=0",0)}] and [{sunset_abs("HORIZON=0",0)}])

IF kennt keine Zeitintervalle,  deine Abfrage entspricht

if ("HH:MM:SS" and "HH:MM:SS") ...

das ist immer wahr.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ahermann86

@CoolTux: Ja, das ist ja auch mein Ziel.  8)

@Damian: Das hatte ich so nicht bedacht - ich dachte das geht, da es in einer DOIF Bedingung so funktioniert.. aber jetzt wo du mich aufklärst, das IF ist ja ein "anderes" Modul..

Depechem

Zitat von: Damian am 30 Dezember 2019, 14:15:48
Diese Definitione macht so keinen Sinn:

IF ([{sunrise_abs("HORIZON=0",0)}] and [{sunset_abs("HORIZON=0",0)}])

IF kennt keine Zeitintervalle,  deine Abfrage entspricht

if ("HH:MM:SS" and "HH:MM:SS") ...

das ist immer wahr.

Danke für eure Infos. Bedeutet das ein ich eine sunrise / sunset Funktion mit einem IF Befehl nicht kombinieren kann!? Wie könnte man das alternativ umsetzen?
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

ahermann86

Mein letzter Versuch:



([EG_Fenster_Arbeit:getG1] eq "off")
() ##Timer abwürgen - wenn Fenster vor Ablauf des Timers zu gemacht wird bleibt Rollladen oben

DOELSEIF (     [EG_Fenster_Arbeit:getG1] eq "on"
           and [?EG_Rollo_Arbeit:getG1:d] == 100)
(set EG_Rollo_Arbeit Auf)

DOELSEIF (     [$SELF:cmd_nr, 2] == 2
           and [EG_Rollo_Arbeit:getG1:d] > 0
           and [{sunrise_abs("HORIZON=0",0)}-{sunset_abs("HORIZON=0",0)}])
(set EG_Rollo_Arbeit Ab)



Alternativ könnte man ein zweites DOIF definieren, welches nur die Bedinung ([{sunrise_abs("HORIZON=0",0)}-{sunset_abs("HORIZON=0",0)}]) hat und dieses als IF wie in der ersten Version abfragen...

Nachtrag:
Was mir gerade noch in den Sinn gekommen ist: Du nimmst einfach in das IF die Funktion isday() (https://forum.fhem.de/index.php?topic=10857.0)

Gruß
Axel

Depechem

Vielen Dank Alex,
so hat es geklappt  :D

Hier meine fertige Lösung:


##Rollo schließt - wenn Fenster geschlossen wird sowie zwischen Sonnenuntergang sowie Aufgang

([Bad_Fenster_angekippt:state] eq "closed")

(     [Bad_Fenster_angekippt:state] eq "closed"
           and [Rollo_Badezimmer:control] > 0
           and [{sunset("HORIZON=-3.5",0,"16:00","22:00")}-{sunrise("HORIZON=-3.2",0,"05:00","08:00")}])
(set Rollo_Badezimmer control 0)



##Rollo öffnet - wenn Rollo zu und Fenster angekippt

DOELSEIF (     [Bad_Fenster_angekippt:state] eq "open"
           and [?Rollo_Badezimmer:control] == 0)
(set Rollo_Badezimmer control 100)



##Rollo schließt - wenn Zeit abgelaufen(siehe wait attr) und Rollo größer als 0 sowie zwischen Sonnenuntergang sowie Aufgang

DOELSEIF (     [$SELF:cmd_nr, 2] == 2
           and [Rollo_Badezimmer:control] > 0
           and [{sunset("HORIZON=-3.5",0,"16:00","22:00")}-{sunrise("HORIZON=-3.2",0,"05:00","08:00")}])
(set Rollo_Badezimmer control 0)


attr wait:0:0:1800

Gruß Thomas
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Damian

Und du bist sicher, dass dein Timer nach Ankippen des Fensters anläuft?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Depechem

Zitat von: Damian am 30 Dezember 2019, 23:21:56
Und du bist sicher, dass dein Timer nach Ankippen des Fensters anläuft?

Ja alles mehrfach getestet, warum sollte er nicht


Gesendet von iPhone mit Tapatalk
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...