Hauptmenü

DOIF Rolladen

Begonnen von no_Legend, 01 Juni 2015, 15:03:10

Vorheriges Thema - Nächstes Thema

en-trust

Kaum habe ich einen neuen Modus (XMas) aufgenommen, fährt die Jalousie gar nicht mehr hoch/runter.


#
# Jalousienregelung (FHZ)
#
define Modus_RL dummy
attr Modus_RL alias Jalousienmodus
attr Modus_RL devStateIcon devStateIcon Auto:fts_shutter_automatic URLAUB:fts_shutter ASTRO:fts_shutter_updown HAND:fts_shutter_manual XMas:fts_shutter_automatic
attr Modus_RL eventMap Auto URLAUB ASTRO HAND XMas
attr Modus_RL setList state:Auto,URLAUB,ASTRO,HAND,XMas
attr Modus_RL webCmd state

#
# Definition Jalousien-Aktoren (WZ.Rechts)
#
define WZ.Jalousie.Rechts ...attr WZ.Jalousie.Rechts userattr room_map structexclude

# Dummy fürs zeitliches Hochfahren (Werktags)
define du_WZ.Jalousie.Rechts.Up_WT dummy
attr du_WZ.Jalousie.Rechts.Up_WT alias Jalousien WZ (Rechts) - zeitliches Hochfahren (Werktags)
attr du_WZ.Jalousie.Rechts.Up_WT devStateIcon .*:rc_BLANK
attr du_WZ.Jalousie.Rechts.Up_WT setList state:time
attr du_WZ.Jalousie.Rechts.Up_WT webCmd state

# Dummy fürs zeitliches Hochfahren (Wochenende)
define du_WZ.Jalousie.Rechts.Up_WE dummy
attr du_WZ.Jalousie.Rechts.Up_WE alias Jalousien WZ (Rechts) - zeitliches Hochfahren (Wochenende)
attr du_WZ.Jalousie.Rechts.Up_WE devStateIcon .*:rc_BLANK
attr du_WZ.Jalousie.Rechts.Up_WE setList state:time
attr du_WZ.Jalousie.Rechts.Up_WE webCmd state

# Dummy fürs zeitliches Herunterfahren (Werktags und Wochenende)
define du_WZ.Jalousie.Rechts.Down dummy
attr du_WZ.Jalousie.Rechts.Down alias Jalousien WZ (Rechts) - zeitliches Herunterfahren
attr du_WZ.Jalousie.Rechts.Down devStateIcon *:rc_BLANK
attr du_WZ.Jalousie.Rechts.Down setList state:time
attr du_WZ.Jalousie.Rechts.Down webCmd state


Der eigentliche Knackpunkt liegt wohl hier...

#
# Steuerung Automatik (Auto -> Zeit / ASTRO -> sun(-set/-rise) / HAND oder XMas)
#
define WZ.Jalousie.Rechts.Auto DOIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Down]|8] or [[du_WZ.Jalousie.Rechts.Down]|7])) (set WZ.Jalousie.Rechts 0) \
DOELSEIF ([Modus_RL] eq "Urlaub" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "Urlaub" and [10:25]) (set WZ.Jalousie.Rechts 40) \
DOELSEIF ([Modus_RL] eq "Urlaub" and [22:00]) (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "ASTRO" and [Tageslicht] eq "hell") (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "ASTRO" and [Tageslicht] eq "dunkel") (set WZ.Jalousie.Rechts 0) \
DOELSEIF ([Modus_RL] eq "XMas" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100) \
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set WZ.Jalousie.Rechts 0)
attr WZ.Jalousie.Rechts.Auto group Jalousien-Zeitgeber
attr WZ.Jalousie.Rechts.Auto room Automation


Vielleicht kann ja mal jemand einen Blick drauf werfen.

automatisierer

wenn du ein list vom DOIF (am besten direkt nachdem es nicht funktioniert hat) posten würdest, statt der definition, könnte man evtl. eher sehen woran es liegt... die definition sieht mMn zumindest mal plausibel aus.

en-trust

Habe testweise die Zeit von XMas auf 17:30 gesetzt und es tat sich nichts. Hier nun das list vom WZ.Jalousie.Rechts.Auto

Internals:
   CFGFN      ./FHEM/fhem_activeactors.cfg
   DEF        ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100)
DOELSEIF ([Modus_RL] eq "Auto" and ([[du_WZ.Jalousie.Rechts.Down]|8] or [[du_WZ.Jalousie.Rechts.Down]|7])) (set WZ.Jalousie.Rechts 0)
DOELSEIF ([Modus_RL] eq "Urlaub" and ([[du_WZ.Jalousie.Rechts.Up_WT]|8] or [[du_WZ.Jalousie.Rechts.Up_WE]|7])) (set WZ.Jalousie.Rechts 100)
DOELSEIF ([Modus_RL] eq "Urlaub" and [10:25]) (set WZ.Jalousie.Rechts 40)
DOELSEIF ([Modus_RL] eq "Urlaub" and [17:30]) (set WZ.Jalousie.Rechts 0)
   NAME       WZ.Jalousie.Rechts.Auto
   NR         160
   NTFY_ORDER 50-WZ.Jalousie.Rechts.Auto
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-12-01 17:20:15   cmd             0
     2017-12-01 17:20:15   state           initialized
     2017-12-01 17:21:28   timer_01_c01    02.12.2017 08:00:00|8
     2017-12-01 17:21:28   timer_02_c01    02.12.2017 08:20:00|7
     2017-12-01 17:21:28   timer_03_c02    01.12.2017 22:00:00|8
     2017-12-01 17:21:28   timer_04_c02    01.12.2017 22:00:00|7
     2017-12-01 17:21:28   timer_05_c03    02.12.2017 08:00:00|8
     2017-12-01 17:21:28   timer_06_c03    02.12.2017 08:20:00|7
     2017-12-01 17:21:28   timer_07_c04    02.12.2017 10:25:00
     2017-12-01 17:30:00   timer_08_c05    02.12.2017 17:30:00
   condition:
     0          InternalDoIf($hash,'Modus_RL','STATE') eq "Auto" and (DOIF_time_once($hash,0,$wday,"8") or DOIF_time_once($hash,1,$wday,"7"))
     1          InternalDoIf($hash,'Modus_RL','STATE') eq "Auto" and (DOIF_time_once($hash,2,$wday,"8") or DOIF_time_once($hash,3,$wday,"7"))
     2          InternalDoIf($hash,'Modus_RL','STATE') eq "Urlaub" and (DOIF_time_once($hash,4,$wday,"8") or DOIF_time_once($hash,5,$wday,"7"))
     3          InternalDoIf($hash,'Modus_RL','STATE') eq "Urlaub" and DOIF_time_once($hash,6,$wday)
     4          InternalDoIf($hash,'Modus_RL','STATE') eq "Urlaub" and DOIF_time_once($hash,7,$wday)
   days:
     0          8
     1          7
     2          8
     3          7
     4          8
     5          7
   devices:
     0           Modus_RL
     1           Modus_RL
     2           Modus_RL
     3           Modus_RL
     4           Modus_RL
     all         Modus_RL
   do:
     0:
       0          set WZ.Jalousie.Rechts 100
     1:
       0          set WZ.Jalousie.Rechts 0
     2:
       0          set WZ.Jalousie.Rechts 100
     3:
       0          set WZ.Jalousie.Rechts 40
     4:
       0          set WZ.Jalousie.Rechts 0
     5:
   helper:
     event      timer_8
     globalinit 1
     last_timer 8
     sleeptimer -1
     triggerDev
     triggerEvents:
       timer_8
   internals:
     0           Modus_RL:STATE
     1           Modus_RL:STATE
     2           Modus_RL:STATE
     3           Modus_RL:STATE
     4           Modus_RL:STATE
     all         Modus_RL:STATE
   interval:
   itimer:
     all         du_WZ.Jalousie.Rechts.Up_WT du_WZ.Jalousie.Rechts.Up_WE du_WZ.Jalousie.Rechts.Down
   localtime:
     0          1512198000
     1          1512199200
     2          1512162000
     3          1512162000
     4          1512198000
     5          1512199200
     6          1512206700
     7          1512232200
   readings:
   realtime:
     0          08:00:00
     1          08:20:00
     2          22:00:00
     3          22:00:00
     4          08:00:00
     5          08:20:00
     6          10:25:00
     7          17:30:00
   regexp:
     all:
   state:
     STATE:
   time:
     0          [du_WZ.Jalousie.Rechts.Up_WT]
     1          [du_WZ.Jalousie.Rechts.Up_WE]
     2          [du_WZ.Jalousie.Rechts.Down]
     3          [du_WZ.Jalousie.Rechts.Down]
     4          [du_WZ.Jalousie.Rechts.Up_WT]
     5          [du_WZ.Jalousie.Rechts.Up_WE]
     6          10:25:00
     7          17:30:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
     7          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1
     1           2  3
     2           4  5
     3           6
     4           7
   triggertime:
     1512162000:
       localtime  1512162000
       hash:
     1512198000:
       localtime  1512198000
       hash:
     1512199200:
       localtime  1512199200
       hash:
     1512206700:
       localtime  1512206700
       hash:
     1512232200:
       localtime  1512232200
       hash:
Attributes:
   group      Jalousien-Zeitgeber
   room       Automation

automatisierer

#33
ich sehe keine Bedingungen mit XMas, da gibts nur Auto und Urlaub

sieht mir fast so aus, als hättest du die .cfg editiert und nicht neu geladen...

en-trust

Jetzt klappt es. Vermutlich nimmt dem das rereadcfg nicht richtig an. Im list steht jedenfalls jetzt auch Xmas.

buchner51

Hallo,

ich bräuchte etwas Hilfe. Ich versuche gerade auf Sonnenaufgang umzusteigen mit einen DOIF aber leider ohne Erfolg.

defmod Rollo_Wohnen_Sonne DOIF ([{sunset(-1500, "16:00", "22:00")}]-[{sunrise(+1800, "07:00", "9:00")}])    (set wz_Rollo_Hof 100) DOELSE (set wz_Rollo_Hof 0)
attr Rollo_Wohnen_Sonne room Schaltuhr

setstate Rollo_Wohnen_Sonne cmd_2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 cmd 2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 cmd_event Rollo_Wohnen_Sonne
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 cmd_nr 2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 error set wz_Rollo_Hof 0: Unknown argument 0, choose one of value:slider,0,1,100 string on-for-timer raw off rgb:colorpicker on on-until off-till-overnight blink on-till toggle off-for-timer on-till-overnight off-till intervals
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:09 mode enabled
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:13 state cmd_2
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:09 timer_01_c01 20.01.2018 17:11:22
setstate Rollo_Wohnen_Sonne 2018-01-20 08:36:09 timer_02_c01 21.01.2018 08:10:19


wenn ich das richtig sehe stimmt zwar die Zeit wo die Rollos fahren sollen aber die Prozentangabe ist unbekannt.

Was mache ich falsch??
Raspberry pi 3+
KNX mit TUL, FHEM mit SMARTVISU 2.9

Ellert

#36
Sieht so aus, wie ein Problem des Moduls, das den set-Befehl verarbeiten soll.

Außerdem, solltest Du Dir die Angabe der Zeitspanne genauer ansehen, in der deutschsprachigen Befehlsreferenz gibt es Beispiele, zum Abgleichen.

buchner51

Hallo,

habs gelöst:Bei KNX ist der set Befehl:

set group=Rollo_Wohnraum value 100

Manchmal verrennt man sich einfach.
Raspberry pi 3+
KNX mit TUL, FHEM mit SMARTVISU 2.9

tweety-rt

Hallo,

bin FHEM-Frischling und lebe aktuell von Lösungen, die man in diesem grandiosen Forum findet.
Aktuell fahre ich meine Dachfenster-Rollos mit diesem at erfolgreich abends runter
*{twilight("LichtWetter","ss_indoor","16:00","22:00")} set SZ_Rollo zu
jetzt wollte ich mich am ersten DOIF versuchen mit dem Ziel, dass der Rollo nur runter fährt, wenn es kälter als 18 Grad ist und ansonsten hoch fährt. Morgens das ganze dann umgekehrt. Ist es draussen warm, lasse ich tagsüber zu und mache abends zum lüften auf. Ist es draussen kalt, mache ich abends zu. Aber nur zwischen 16:00 und 21:00 Uhr. Habe leider kein passendes Beispiel gefunden. Habe folgendes definiert:
([{twilight("LichtWetter","ss_indoor","16:00","21:00")}] and [YahooWetter:temperature] < 18) (set SZ_Rollo zu) DOELSE ([{twilight("LichtWetter","ss_indoor","16:00","21:00")}] and [YahooWetter:temperature] > 18)(set SZ_Rollo offen)
Leider geht der Rollo abends nicht runter obwohl unter 18 Grad.
Im DOIF hat fhem den richtigen Timer und die Temperatur. State ist cmd_2 ???
Kann mir bitte jemand auf die Sprünge helfen?

Ellert

Du verwendest DOELSE mit einer Bedingung, das hast Du nicht aus der Commandref.

tweety-rt

Ich hatte gehofft, das geht. Ohne die Bedingung ist der Rollo eine ganze Nacht im Abstand von genau einer Stunde hoch gefahren.

Per

Zitat von: tweety-rt am 14 März 2018, 13:14:31Ohne die Bedingung
Ohne Bedingung: DOELSE
Mit Bedingung: DOELSIF
Wie in jeder anderen Programmiersprache auch.

tweety-rt

Auch mit DOELSEIF ist der Rollo gestern Abend nicht zu gegangen.
Kann es ein Problem geben, wenn die beiden Timer die exact gleiche Zeit haben?
Hat jemand sonst eine Idee, wie ich die Aufgabe lösen könnte?

Frank_Huber

Zitat von: tweety-rt am 16 März 2018, 12:51:28
Kann es ein Problem geben, wenn die beiden Timer die exact gleiche Zeit haben?

Ja!
Es können nicht zwei Zweige zur gleichen Zeit abgearbeitet werden.

tweety-rt

und wie genau gebe ich dem zweiten ss_indoor eine Sekunde dazu?
Bei meinen Versuchen springt der timer_2 immer auf 16:00 statt timer_1 +x.
Oder gibt es einen anderen Lösungsansatz?

Ich hätte ja vermutet, so wäre es richtig.

([{twilight("LichtWetter","ss_indoor","16:00","21:00")}] and [YahooWetter:temperature] < 18) (set SZ_Rollo zu) DOELSE (set SZ_Rollo offen)


Aber da wurde der Rollo die Nacht über alle Stunde geöffnet. Bei checkall kommt als state cmd_2