Hauptmenü

DOIF zu langsam?

Begonnen von juemuc, 05 Januar 2018, 22:55:20

Vorheriges Thema - Nächstes Thema

juemuc

Hallo zusammen,

ich habe einen Timer definiert, der eine Lampe zu einer bestimmten Zeit "EIN" bzw. "AUS" schalten soll. Zusätzlich habe ich einen Auswahlbutton definiert, der den Timer entweder "AUS" schaltet oder die Anfangszeit Auf die Sonnenuntergangszeit setzt. Die Änderung des Schalters und die Änderung der Sonnenuntergangszeit frage ich mit einem Notify ab. Dies funktioniert auch alles, sofern ich die gewünschte Anfangszeit im DOIF setze oder ohne DOIF-Änderung im notify. Setze ich jedoch den Schalter im doif auf "Sonnenuntergang" setzt das notify zwar den Anfangswert im Reading mybegin, aber der Timer ändert sich nicht. Wer kann helfen?
anbei meine Definitionen:
DOIF:
defmod Vogellampe_timer DOIF ([[$SELF:mybegin,"00:00"]]) \
   (IF ([Vogellampe_timer:mybutton] ne "AUS")\
      (set set FBDECT_FB_08761_0234719:FILTER=state=off on))  \
DOELSEIF \
([[$SELF:myend,"00:00"]])\
    (IF ([Vogellampe_timer:mybutton] ne "AUS")\
       (set set FBDECT_FB_08761_0234719:FILTER=state=on off))
attr Vogellampe_timer cmdState Sonnenuntergang|Zeit|AUS
attr Vogellampe_timer do always
attr Vogellampe_timer group Schaltzeitpunkte
attr Vogellampe_timer icon time_timer@black
attr Vogellampe_timer readingList mybutton mybegin myend
attr Vogellampe_timer room TEST
attr Vogellampe_timer setList mybutton:Sonnenuntergang,Zeit,AUS mybegin:time myend:time
attr Vogellampe_timer stateFormat {if (ReadingsVal($name,"mybutton","") eq "AUS"){"AUS"} else {"An: ".ReadingsVal($name,"timer_01_c01" ,""). " || Aus: ".ReadingsVal($name,"timer_02_c02" ,"")}}
attr Vogellampe_timer webCmd mybutton:mybegin:myend


und mein notify
defmod Vogellampe_timer_notify notify Vogellampe_timer.*|Sonnenuntergang_fuer_Vogellampe.*\
IF ([Vogellampe_timer:mybutton] eq "Sonnenuntergang")\
  (set Vogellampe_timer mybegin [Sonnenuntergang_fuer_Vogellampe])
attr Vogellampe_timer_notify room TEST


Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Der Timer dürfte gesetzt sein. Er wird allerdings ohne Event aktualisiert, daher muss man den Browser (F5) aktualisieren, um den tatsächlichen Wert zu sehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

#2
Hallo Damian,
leider nein.

Es ist nur das Reading mybegin auf dem neuen Wert. Der Timer01 hat sich nicht verändert. Ich nicht nach "F5"  8)
Ich habe das einmal im Anhang dokumentiert.
Auch wenn ich die Änderung innerhalb des DOIFs mache, habe ich diese Situation. Deshalb hatte ich ja die Idee mit der Auslagerung in ein notify.


Viele Grüße
Jürrgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Damian

Zitat von: juemuc am 06 Januar 2018, 17:27:36
Hallo Damian,
leider nein.

Es ist nur das Reading mybegin auf dem neuen Wert. Der Timer01 hat sich nicht verändert. Ich nicht nach "F5"  8)
Ich habe das einmal im Anhang dokumentiert.
Auch wenn ich die Änderung innerhalb des DOIFs mache, habe ich diese Situation. Deshalb hatte ich ja die Idee mit der Auslagerung in ein notify.


Viele Grüße
Jürrgen


Kann ich nicht nachvollziehen, mit folgender Definition klappt alles wie erwartet:

defmod di_test DOIF ([[$SELF:mybegin]])(set bla1 on)
attr di_test do always
attr di_test readingList mybutton mybegin myend
attr di_test setList mybutton:Sonnenuntergang,Zeit,AUS mybegin:time myend:time
attr di_test webCmd mybutton:mybegin:myend

setstate di_test initialized
setstate di_test 2018-01-06 17:55:18 cmd 0
setstate di_test 2018-01-06 17:55:18 mode enabled
setstate di_test 2018-01-06 17:55:48 mybegin 17:00
setstate di_test 2018-01-06 17:55:18 state initialized
setstate di_test 2018-01-06 17:55:48 timer_01_c01 07.01.2018 17:00:00



Eine Änderung von mybegin in der Statusleiste führt zum sofortigen Setzen des Timers.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juemuc

Hallo Damian,

ja das ist genau das Problem. Eine manuelle Änderung über den Schieberegler führt zum korrekten Ergebnis. Wenn ich aber den "Status" von "Zeit" auf "Sonnenuntergang" setze und damit das Reading mybegin über das notify gesetzt wird, gibt es das Problem. Wenn ich das Notify durch ein DOIF mit einem WAIT ersetze funktioniert es auch, aber nur mit WAIT.

Das DOIF ist zumindest eine "Zwischenlösung"  8)

Viele Grüße
Jürgen 
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).