Hauptmenü

Doif und Twilight

Begonnen von Kai-Alfonso, 15 Januar 2017, 10:12:59

Vorheriges Thema - Nächstes Thema

Kai-Alfonso

Hallo,

ich hatte dank eines Hausbauprojekts etwas länger nicht mehr Zeit, mich um Fhem zu kümmen und ich bin ein wenig eingerostet und brauche jetzt wohl mal Hilfe.

Gegeben ist:

defmod doif.rolladen_automatic DOIF ([?Rolladen_Automatik] eq "on" and ([Twilight:ss_civil]))\
(set Rolladen_EG down)(set Rolladen_OG down)\
DOELSEIF  (([[Twilight:sr]|8] or [09:00:00|7]) and [?Rolladen_Automatik] eq "on")\
(set Rolladen_EG up)(set Rolladen_OG up)
attr doif.rolladen_automatic checkReadingEvent 1
attr doif.rolladen_automatic do always
attr doif.rolladen_automatic room Programme,Rolladen

setstate doif.rolladen_automatic cmd_2
setstate doif.rolladen_automatic 2017-01-15 10:07:44 Device Twilight
setstate doif.rolladen_automatic 2017-01-15 09:00:01 cmd 2.2
setstate doif.rolladen_automatic 2017-01-15 09:00:01 cmd_event timer_2
setstate doif.rolladen_automatic 2017-01-15 09:00:01 cmd_nr 2
setstate doif.rolladen_automatic 2017-01-15 09:00:01 cmd_seqnr 2
setstate doif.rolladen_automatic 2017-01-15 00:00:06 e_Twilight_ss_civil 17:28:02
setstate doif.rolladen_automatic 2017-01-15 09:00:01 state cmd_2
setstate doif.rolladen_automatic 2017-01-15 08:36:05 timer_01_c02 16.01.2017 08:36:05|8
setstate doif.rolladen_automatic 2017-01-15 09:00:01 timer_02_c02 16.01.2017 09:00:00|7


Also, Rolladen runter um ss:civil und Rolladen hoch um sr (Werktags) oder 9:00 (Sonn und Feiertage)

Nur scheint das nicht zu gehen und ich finden den Knoten im Hirn nicht ;-) Bräuchte wohl einen kleinen Schubs

Danke und schönen Sonntag
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

Muschelpuster

Mhh, erst einmal bin ich mir nicht sicher, ob mehre Befehle einzeln geklammert werden. IMHO nicht, denn die Commandref sagt:
Zitatdefine <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Wenn Du keine weiteren Rollläden mit entspr. Namen hast, dann würde ich einen regulären Ausdruck verwenden:set Rolladen_.* down.
Ansonsten muss ich leider passen. Ich hatte das mit den festen Sunset-Varianten gebaut, allerdings über das Reading Light. Damit wurde ich/Frau aber nicht so wirklich glücklich, daher nutze ich jetzt das etwas feiner abstimmbare Reading state.
Das Ganze habe ich mal in einem etwas anderen Kontext dokumentiert. Vielleicht ist das auch was für Dich, wenn es auch nicht ganz Dein Ansatz ist - dafür ist es aber fertig  8): https://wiki.fhem.de/wiki/DOIF/do_always_Alternative_am_Beispiel_einer_Rollladenautomatik
Getrennte Einstellungen für Werktags und Wochenende gibt es gratis dazu  ;)

beispielhafte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Kai-Alfonso

Hallo Muschelpuster,

danke für Deine Antwort. Ich kenne natürlich deinen Wiki Artikel, wollte mich aber erst mal durch meinen Kram wühlen :-)

Ich habe übrigens den Fehler bei mir gefunden. Einmal benötigt [Twilight:ss_civil] tatsächlich anscheinend einen Ausführtag, weil mit [[Twilight:ss_civil]|0123456] hat er auch einen Timer für ss_civil. Außerdem schein ich einen Fehler in der Definition der Rolladen gemacht zu haben. Bei Down fuhren Sie hoch und umgekehrt - deswegen ist nix passiert :-)
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

automatisierer

Zitat von: Kai-Alfonso am 16 Januar 2017, 08:37:29


Ich habe übrigens den Fehler bei mir gefunden. Einmal benötigt [Twilight:ss_civil] tatsächlich anscheinend einen Ausführtag, weil mit [[Twilight:ss_civil]|0123456] hat er auch einen Timer für ss_civil.

Das macht keinen Sinn...

Im Beispiel:
([[myTwilight:ss_weather]])

In deinem Code:
([Twilight:ss_civil])

da fehlte einmal []


Wenn du HM Aktoren hast, dann bewirkt up und down nur eine abwärts oder aufwärts Fahrt um 10% - sollten deine Jalousien dennoch komplett auf/zu gehen, dann wird das daran liegen, dass du die driveDown / driveUp Zeit noch nicht angepasst hast...

ansonsten wird die Jalousie mit on/off - auf/zu gemacht.

Kai-Alfonso

Zitat von: automatisierer am 16 Januar 2017, 09:03:52


Wenn du HM Aktoren hast, dann bewirkt up und down nur eine abwärts oder aufwärts Fahrt um 10% - sollten deine Jalousien dennoch komplett auf/zu gehen, dann wird das daran liegen, dass du die driveDown / driveUp Zeit noch nicht angepasst hast...

ansonsten wird die Jalousie mit on/off - auf/zu gemacht.

Hi,

ich nutze die Rolladenaktoren mit dem Modul HMCCU - die Gerätedefinitionen habe ich als Beispiel von dem Thread https://forum.fhem.de/index.php/topic,51339.0.html
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

automatisierer

ok, mit HMCCU kenne ich mich nicht aus. Da können die Befehle natürlich von einem direkt mit FHEM gepairten Aktor abweichen.

Kai-Alfonso

Kann natürlich sein, das ich noch ein Syntaxfehler in der Doif Definition mit der eckigen Klammer hatte - die habe ich dann aber wohl selbst gefunden (ich finde doif sehr faszinierend, verstehe es aber noch nicht so ganz)

Aber mein Doif sieht so aus

ZitatDOIF ([?Rolladen_Automatik] eq "on" and ([[Twilight:ss_civil]|0123456]))\
(set Rolladen_EG up)(set Rolladen_OG up)\
DOELSEIF  (([[Twilight:sr]|8] or [09:00:00|7]) and [?Rolladen_Automatik] eq "on")\
(set Rolladen_EG down)(set Rolladen_OG down)

Ja, auch mit den Befehlen in jeweils einer runden Klammer scheint er klar zu kommen. Jedenfalls hat er die folgenden Timer jetzt gesetzt

N_timer_01_c01 16.01.2017 17:29:28

N_timer_02_c02 17.01.2017 08:35:12

N_timer_03_c02 21.01.2017 09:00:00


und das scheint auch zu stimmen. Jedenfalls gestern Abend ist er brav um ss_civil runtergefahren
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

automatisierer

deine Annahme war, dass es nun funktioniert, weil du die Wochentage dabei geschrieben hast. Das war falsch. Du hast, als du die Wochentage dazu geschrieben hast einmal zusätzlich [] um deine indirekte Zeitangabe gemacht - deshalb hat es funktioniert.

bei DOIF werden Zeitangaben in [12:00:00] eckige Klammern gesetzt.

nutzt du indirekte Zeitangaben, z.B. aus einem Dummy oder Twilight, musst du einmal die eckigen Klammern setzen für die Zeitangabe und dann einmal für das [Device] / oder das [Device:Reading] in dem die Zeit steht.

hättest du also statt:
([Twilight:ss_civil])

aus deinem ersten Beispiel, in das hier geändert:
([[Twilight:ss_civil]])

hätte es auch funktioniert

Kai-Alfonso

Hi,

du hast natürlich recht - hab es grade getestet und damit geht es auch. Wieder was dazu gelernt  :D
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

Per

Zitat von: Kai-Alfonso am 16 Januar 2017, 10:14:53Ja, auch mit den Befehlen in jeweils einer runden Klammer scheint er klar zu kommen.
Damit kommt er klar, sind halt Sub-Commands. Ein Komma tut es aber auch. Die Klammern brauchst du zwingend, wenn du mit unterschiedlichen Wait- oder Repeat-Werten arbeiten willst.
(set Rolladen_EG up,set Rolladen_OG up)
Nimmt etwas Last vom System,
(set Rolladen_EG,Rolladen_OG up)
oder
(set Rolladen_.* up)
ginge aber auch.