Außenlicht mit Twilight oder mit Sunrise schalten

Begonnen von Meister_Petz, 23 Januar 2015, 09:15:19

Vorheriges Thema - Nächstes Thema

Meister_Petz

@Damian
Leider klappt die 60 Minuten Verzögerung nicht. Hab ich da wieder was übersehen?

Danke!


#------------------------------------------------------#
#       Aussenbeleuchtung - MySensors Relais           #
#------------------------------------------------------#
define ABEinfahrt MYSENSORS_DEVICE 100
attr ABEinfahrt IODev MSGateway
attr ABEinfahrt alias Einfahrt
attr ABEinfahrt mapReading_switch 1 switch
attr ABEinfahrt mode repeater
attr ABEinfahrt requestAck 1
attr ABEinfahrt room Beleuchtung
attr ABEinfahrt setCommands on:switch:on off:switch:off
attr ABEinfahrt setReading_switch on,off
attr ABEinfahrt stateFormat switch
attr ABEinfahrt version 1.4.1

#------------------------------------------------------#
# Zeitschalter für Aussenbeleuchtung                   #
#------------------------------------------------------#
define ABEinfahrtZeit DOIF ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
attr ABEinfahrtZeit wait 60



Meister_Petz

gestern gings weder automatisch an noch aus.

Manuelles Schalten war kein Problem.

LuckyDay

Zitatattr ABEinfahrtZeit wait 60

das sind 60 sekunden

Damian

Zitat von: Meister_Petz am 27 Januar 2015, 13:58:04
gestern gings weder automatisch an noch aus.

Manuelles Schalten war kein Problem.

Dann poste das Ergebnis von list ABEinfahrtZeit

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Meister_Petz

Zitat von: fhem-hm-knecht am 27 Januar 2015, 14:29:46
das sind 60 sekunden
das hab ich mir schon fast gedacht... dann hätte es aber trotzdem angehen sollen... oder?

Zitat von: Damian am 27 Januar 2015, 14:31:14
Dann poste das Ergebnis von list ABEinfahrtZeit

aber gerne doch:
Internals:
   DEF        ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
   NAME       ABEinfahrtZeit
   NR         83
   NTFY_ORDER 50-ABEinfahrtZeit
   STATE      ???
   TYPE       DOIF
   Readings:
     2015-01-27 14:33:16   timer_1_c2      27.01.2015 22:00:00
     2015-01-27 14:33:16   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('myTwilight','aktEvent','') eq "ss_weather"
     1          DOIF_time_once($hash->{timer}{0},$wday,"")
   Days:
   Devices:
     0           myTwilight
     all         myTwilight
   Do:
     0          set ABEinfahrt on
     1          set ABEinfahrt off
   Helper:
     last_timer 1
     sleeptimer -1
   Readings:
     0           myTwilight:aktEvent
     all         myTwilight:aktEvent
   Realtime:
     0          22:00:00
   State:
   Time:
     0          22:00:00
   Timecond:
     0          1
   Timer:
     0          0
   Timerfunc:
   Timers:
     1           0
Attributes:
   wait       3600


und immer danke für die hilfe!

Damian

Zitat von: Meister_Petz am 27 Januar 2015, 14:35:32

Internals:
   DEF        ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
   NAME       ABEinfahrtZeit
   NR         83
   NTFY_ORDER 50-ABEinfahrtZeit
   STATE      ???
   TYPE       DOIF
   Readings:
     2015-01-27 14:33:16   timer_1_c2      27.01.2015 22:00:00
     2015-01-27 14:33:16   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('myTwilight','aktEvent','') eq "ss_weather"
     1          DOIF_time_once($hash->{timer}{0},$wday,"")
   Days:
   Devices:
     0           myTwilight
     all         myTwilight
   Do:
     0          set ABEinfahrt on
     1          set ABEinfahrt off
   Helper:
     last_timer 1
     sleeptimer -1
   Readings:
     0           myTwilight:aktEvent
     all         myTwilight:aktEvent
   Realtime:
     0          22:00:00
   State:
   Time:
     0          22:00:00
   Timecond:
     0          1
   Timer:
     0          0
   Timerfunc:
   Timers:
     1           0
Attributes:
   wait       3600


und immer danke für die hilfe!

Das ist der Zustand von einem frisch angelegten Modul, hier offenbar um 14:33 angelegt - da kann noch nichts passiert sein. Wichtig ist natürlich der Zustand nach dem "ss_weather" zugeschlagen haben sollte, bei mir heute z. B. um 16:16 Uhr. Danach sollte der Status auf cmd_1 gehen und das Modul sollte schalten (bei dir dann entsprechend eine Stunde später). Davon musst du noch mal list posten.

Ansonsten kannst du z. B. auch das Reading twilight_weather abfragen, das läuft gegen Null, je dunkler es wird, hier brauchst du auch keine Verzögerung mit wait angeben, sondern die Abfrage deinen Bedürfnissen anpassen z. B.

([myTwilight:twilight_weather] < 30 and [15:00-22:00]) (set ABEinfahrt on) DOELSE (set ABEinfahrt off)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Meister_Petz

das ist der Auszug von gerade eben (21:59)

Internals:
   DEF        ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
   NAME       ABEinfahrtZeit
   NR         83
   NTFY_ORDER 50-ABEinfahrtZeit
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-01-27 22:00:00   cmd_event       timer_1
     2015-01-27 22:00:00   cmd_nr          2
     2015-01-28 21:58:17   e_myTwilight_aktEvent ss_astro
     2015-01-27 22:00:00   state           cmd_2
     2015-01-27 22:00:00   timer_1_c2      28.01.2015 22:00:00
     2015-01-28 17:19:31   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('myTwilight','aktEvent','') eq "ss_weather"
     1          DOIF_time_once($hash->{timer}{0},$wday,"")
   Days:
   Devices:
     0           myTwilight
     all         myTwilight
   Do:
     0          set ABEinfahrt on
     1          set ABEinfahrt off
   Helper:
     last_timer 1
     sleepdevice myTwilight
     sleeptimer -1
   Internals:
   Readings:
     0           myTwilight:aktEvent
     all         myTwilight:aktEvent
   Realtime:
     0          22:00:00
   State:
   Time:
     0          22:00:00
   Timecond:
     0          1
   Timer:
     0          0
   Timerfunc:
   Timers:
     1           0
Attributes:
   wait       3600



Damian

Zitat von: Meister_Petz am 28 Januar 2015, 22:01:11
das ist der Auszug von gerade eben (21:59)

Internals:
   DEF        ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
   NAME       ABEinfahrtZeit
   NR         83
   NTFY_ORDER 50-ABEinfahrtZeit
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-01-27 22:00:00   cmd_event       timer_1
     2015-01-27 22:00:00   cmd_nr          2
     2015-01-28 21:58:17   e_myTwilight_aktEvent ss_astro
     2015-01-27 22:00:00   state           cmd_2
     2015-01-27 22:00:00   timer_1_c2      28.01.2015 22:00:00
     2015-01-28 17:19:31   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('myTwilight','aktEvent','') eq "ss_weather"
     1          DOIF_time_once($hash->{timer}{0},$wday,"")
   Days:
   Devices:
     0           myTwilight
     all         myTwilight
   Do:
     0          set ABEinfahrt on
     1          set ABEinfahrt off
   Helper:
     last_timer 1
     sleepdevice myTwilight
     sleeptimer -1
   Internals:
   Readings:
     0           myTwilight:aktEvent
     all         myTwilight:aktEvent
   Realtime:
     0          22:00:00
   State:
   Time:
     0          22:00:00
   Timecond:
     0          1
   Timer:
     0          0
   Timerfunc:
   Timers:
     1           0
Attributes:
   wait       3600


Das Problem ist die stündliche Verzögerung. Wenn "ss_weather" gesetzt wird rennt der Timer los, allerdings ändert sich innerhalb der Stunde der Status von ss_weather auf den nächsten Zustand "ss..." und damit wird der laufende Timer unterbrochen. Mit meinem zweiten Vorschlag:"([myTwilight:twilight_weather] < 30..."  solltest du erfolgreicher sein.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Meister_Petz

Zitat von: Damian am 29 Januar 2015, 15:12:42
Mit meinem zweiten Vorschlag:"([myTwilight:twilight_weather] < 30..."  solltest du erfolgreicher sein.

habs grad eingebaut. Gestern Abend wollte sich das Ding gar nicht mehr schalten. Hab dem Relais dann einen Schnips verpasst, dann gings wieder... Mal schaun was heute passiert ;-)