Moin,
was möchte ich:
Mein Außenlicht soll, wenn es dunkel wird einschalten und maximal bis 22 Uhr leuchten. (im Prinzip so wie im sunrise Beispiel)
Da twilight im Gegensatz zu sunrise, die tatsächlichen Lichtverhältnisse mit einbezieht, würde ich da lieber twilight benutzen, oder geht das nicht?
Danke
Petz
Doch das geht. Es gibt sogar mehrer Wege, die Daten vom Modul zu verwänden.
Ich habe noch einen Dummy dazwischen, damit kann ich auf dem Floorplan auch mal "außerplanmäsig" an- ausschelten.
Noa
Kannst Du mir da evtl. einen Code Schnipsel aus deiner FHEM cfg zeigen?
Jepp kann ich,
aber mehr oder weniger nur so halb aus dem Kopf
Definire dir dein Twilight
define myTwilight Twilight XX.110927 XX.524689 4 XXXXXX
musst halt noch Deine Wetterdaten einsätzen und Deinen Horizont
Dann bau dir einen Dummy:
define TwilightDummy dummy
attr TwilightDummy devStateIcon on:StandBy off:Shutdown
attr TwilightDummy fp_WPlan 410,200,2,
attr TwilightDummy setList state:on,off
attr TwilightDummy webCmd state
und dann mach Dir die Notifys dazu
define TwilightDummyOnNTFY notify myTwilight.*:aktEvent:.*ss_weather.* set TwilightDummy on
define TwilightDummyOffA at *22:00 set TwilightDummy off
Der code ist uralt, statt dem Notify kannst Du es jetzt über ein DOIF lösen, und ansatt meinem TwilightDummy kannst Du direkt die Lampe nehmen.
hoffe ich konnte helfen
Super!
Twilight und Schalter sind klar.
Notify: wenn Ereignis eintritt... mach was - soweit klar
Wie kann man dann das Ereignis übersetzen?
define TwilightDummyOnNTFY notify myTwilight.*:aktEvent:.*ss_weather.* set TwilightDummy on
Nimmt notify dann die Uhrzeit aus ss_weather?
In meinem Fall:
...
ss_weather 16:11:01 23.01.15 11:58
...
Danke!
Nein es setzt zur ss_weather Zeit den dummy auf on.
Das gleiche kannst Du auch mit allen anderen Dingen aus dem Modul so machen.
du kannst den Dummy auch zu ss_weather auf on stezen und bei sr_weather auf off
Dann hast Du einen Dummy der von Sonnenuntergang bis Sonnenaufgang auf on steht. So hatte ich es.
So habe ich dann die verschidene Lichter in der Wohnung gesteuert und mit Uhrzeiten oder dem Presence Modul kombiniert.
ok, verstanden. DANKE!
und nun noch, damit es tricky wird: wenn ich eine Stunde nach ss_weather das Licht anschalten will... wie könnte es dann aussehen? ;-)
Wirklich vielen Dank für die Hilfe!
Petz
define TwilightDummyOnNTFY notify myTwilight.*:aktEvent:.*ss_weather.* set lampe on
du kannst die Lampe oder so auch gleich schalten, oder eine Modul aufrufen, dass das macht:
define TwilightDummyOnNTFY notify myTwilight.*:aktEvent:.*ss_weather.* {eigeneFuntikon()}
und nun noch, damit es tricky wird: wenn ich eine Stunde nach ss_weather das Licht anschalten will... wie könnte es dann aussehen? ;-)
define TwilightDummyOnNTFY notify myTwilight.*:aktEvent:.*ss_weather.* define timer +01:00:00 set lampe on
hat aber den Nachteil, dass eine erneutes Setzen des Timers() timer überschreiben würde und dann eine Fehlermeldung erzeugt würde.
Zitat von: Dietmar63 am 23 Januar 2015, 13:17:06
...
hat aber den Nachteil, dass eine erneutes Setzen des Timers() timer überschreiben würde und dann eine Fehlermeldung erzeugt würde.
...
dies gilt dann für den Timer mit Namen "timer" d.h. ich kann Timer mit anderen Namen an anderer Stelle nutzen, richtig?
Ja
Zitat von: Meister_Petz am 23 Januar 2015, 13:12:39
ok, verstanden. DANKE!
und nun noch, damit es tricky wird: wenn ich eine Stunde nach ss_weather das Licht anschalten will... wie könnte es dann aussehen? ;-)
Wirklich vielen Dank für die Hilfe!
Petz
Oder z. B. so:
define di_lamp DOIF ([myTwilight:aktEvent] eq "ss_weather") (set lamp on) DOELSEIF ([22:00]) (set lamp off)
attr di_lamp wait 60
Gruß
Damian
@DAMIAN
wenn ich das mit DOIF versuche, was mir gut gefallen würde, bekomme ich:
Unknown module ([myTwilight:aktEvent] Please define ABEinfahrtZeit first
sowohl myTwilight ist schon definiert und funktioniert als auch ABEinfahrtZeit:
define ABEinfahrtZeit ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
attr ABEinfahrtZeit wait 60
Zitat von: Meister_Petz am 24 Januar 2015, 18:31:32
@DAMIAN
wenn ich das mit DOIF versuche, was mir gut gefallen würde, bekomme ich:
Unknown module ([myTwilight:aktEvent] Please define ABEinfahrtZeit first
sowohl myTwilight ist schon definiert und funktioniert als auch ABEinfahrtZeit:
define ABEinfahrtZeit ([myTwilight:aktEvent] eq "ss_weather") (set ABEinfahrt on) DOELSEIF ([22:00]) (set ABEinfahrt off)
attr ABEinfahrtZeit wait 60
Wo ist der Modulname:
define ABEinfahrtZeit
DOIF ([myTwilight:aktEvent] eq "ss_weather") ....
Gruß
Damian
Danke! Wer lesen kann ist klar im Vorteil
@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
gestern gings weder automatisch an noch aus.
Manuelles Schalten war kein Problem.
Zitatattr ABEinfahrtZeit wait 60
das sind 60 sekunden
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
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!
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
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
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
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 ;-)