Hauptmenü

DOIF: mit Twilight

Begonnen von moonsorrox, 18 März 2015, 14:45:45

Vorheriges Thema - Nächstes Thema

moonsorrox

ich arbeite nun zum ersten mal mit Twilight und mir ist das nicht ganz klar ob das nun auch funktioniert. Evtl. schaut mal jemand drauf.

Ich möchte folgendes erreichen, eine Flurbeleuchtung soll morgens nicht vor 6 Uhr einschalten und im Winter nicht nach 8.30 Uhr, so als Beispiele mal die Zeiten.

Da das Twilight jetzt bei "sr_civil"  eine Zeit von 05:56:32 Uhr anzeigt, sollte das DOIF nicht einschalten, ist das richtig..?
Mir ist aber noch nicht ganz klar, wenn es dann hell wird sagen wir mal um 6:45 Uhr wie das dann ausgehen soll, denn es soll ja wenn es hell wird ausgehen..

hier das list:
Internals:
   CFGFN      ./FHEM/Automation.cfg
   DEF        ([06:00-08:30] and [Flur_Twilight:aktEvent] eq "sr_civil") (set Flur_Lampe on) DOELSE (set Flur_Lampe off)
   NAME       di_lamp_Flur
   NR         96
   NTFY_ORDER 50-di_lamp_Flur
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-03-18 14:42:12   state           initialized
     2015-03-18 14:42:12   timer_1_c1      19.03.2015 06:00:00
     2015-03-18 14:42:12   timer_2_c1      19.03.2015 08:30:00
   Condition:
     0          DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and ReadingValDoIf('Flur_Twilight','aktEvent','') eq "sr_civil"
   Days:
   Devices:
     0           Flur_Twilight
     all         Flur_Twilight
   Do:
     0          set Flur_Lampe on
     1          set Flur_Lampe off
   Helper:
     last_timer 2
     sleeptimer -1
   Itimer:
   Readings:
     0           Flur_Twilight:aktEvent
     all         Flur_Twilight:aktEvent
   Realtime:
     0          06:00:00
     1          08:30:00
   State:
   Time:
     0          06:00:00
     1          08:30:00
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
     0           0  1
Attributes:
   room       AutomationTest


list Twilight
Readings:
     2015-03-18 14:14:48   aktEvent        sr_weather
     2015-03-18 14:34:40   azimuth         218.17
     2015-03-18 14:34:40   compasspoint    south-southwest
     2015-03-18 14:14:37   condition       34
     2015-03-18 14:14:37   condition_txt   Fair
     2015-03-18 14:34:40   elevation       31.98
     2015-03-18 14:14:48   horizon         3
     2015-03-18 14:14:48   light           6
     2015-03-18 14:14:48   nextEvent       ss_weather
     2015-03-18 14:14:48   nextEventTime   18:03:29
     2015-03-18 14:14:37   sr              06:36:01
     2015-03-18 14:14:37   sr_astro        04:34:55
     2015-03-18 14:14:37   sr_civil        05:56:32
     2015-03-18 14:14:37   sr_indoor       06:55:46
     2015-03-18 14:14:37   sr_naut         05:16:29
     2015-03-18 14:14:37   sr_weather      06:55:46
     2015-03-18 14:14:37   ss              18:23:15
     2015-03-18 14:14:37   ss_astro        20:24:21
     2015-03-18 14:14:37   ss_civil        19:02:44
     2015-03-18 14:14:37   ss_indoor       18:03:29
     2015-03-18 14:14:37   ss_naut         19:42:47
     2015-03-18 14:14:37   ss_weather      18:03:29
     2015-03-18 14:14:48   state           6
     2015-03-18 14:34:40   twilight        100
     2015-03-18 14:34:40   twilight_weather 100
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

vielleicht ist das auch mit Twilight zu kompliziert, evtl. reicht ja sunrise und sunset.

Ich schreibe mal hier die Anforderung hin.
Anwendungsbeispiel: Flur_Licht soll morgens an Werktagen, wenn es hell wird angehen, aber nicht vor 6:00 Uhr ausgehen soll es, wenn es hell wird (Sunset.?), aber spätestens um 8:00 Uhr (letzteres gilt eben für Winter)
Jetzt wird das ganze Konstrukt nichts mehr machen, aber das ist richtig so, denn es ist ja um 6:00 Uhr schon hell

Das DOIF würde ich evtl. so machen, nur mir kommt das mit dem Ausschalten nicht so richtig vor..!
Evtl. hat jemand für den Ausschaltzeitpunkt einen besseren Einfall..?
Ist ja wie in der commanref nur mit umgekehrten Ein/Aus Zeiten

list:
Internals:
   CFGFN
   DEF        ([{sunrise_abs("CIVIL",0,"06:00","08:00")}|8]-[{sunset(0,"06:01","08:00")}])(set Flur_Lampe on) DOELSE (set Flur_lampe off)
   NAME       di_Flur_Lampe
   NR         2674
   NTFY_ORDER 50-di_Flur_Lampe
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-03-19 12:22:04   state           initialized
     2015-03-19 12:22:04   timer_1_c1      20.03.2015 06:00:00|8
     2015-03-19 12:22:04   timer_2_c1      20.03.2015 08:00:00
   Condition:
     0          DOIF_time_once($hash->{timer}{0},$wday,"8")-DOIF_time_once($hash->{timer}{1},$wday,"")
   Days:
     0          8
   Devices:
   Do:
     0          set Flur_Lampe on
     1          set Flur_lampe off
   Helper:
     last_timer 2
     sleeptimer -1
   Itimer:
   Realtime:
     0          06:00:00
     1          08:00:00
   State:
   Time:
     0          {sunrise_abs("CIVIL",0,"06:00","08:00")}
     1          {sunset(0,"06:01","08:00")}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
     0           0  1
Attributes:
   room       AutomationTest

Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Bartimaus

Du kannst doch das Reading "twilight_weather" als Bedingung innerhalb eine DOIF einbinden.


z.B. "and [myT:twilight_weather]>50"



LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

Zitat von: Bartimaus am 21 März 2015, 10:38:00
Du kannst doch das Reading "twilight_weather" als Bedingung innerhalb eine DOIF einbinden.


z.B. "and [myT:twilight_weather]>50"

Das dürfte das Einfachste sein und entspricht meinem Beispiel mit Helligkeitssensor (allerdings mit festen Zeiten) zu Lichtsteuerung in der Commandref:

ZitatAnwendungsbeispiel: Lampe soll ab 6:00 Uhr angehen, wenn es dunkel ist und wieder ausgehen, wenn es hell wird, spätestens aber um 9:00 Uhr:

define di_lamp DOIF ([06:00-09:00] and [sensor:brightness] < 40) (set lamp on) DOELSE (set lamp off)


Abgesehen davon bei mir im täglichen Einsatz erprobt ;)


Gruß

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

moonsorrox

#4
Zitat von: Damian am 21 März 2015, 11:48:17
Das dürfte das Einfachste sein und entspricht meinem Beispiel mit Helligkeitssensor (allerdings mit festen Zeiten) zu Lichtsteuerung in der Commandref:


Abgesehen davon bei mir im täglichen Einsatz erprobt ;)


Gruß

Damian

ich habe wohl dran vorbei gesehen, zzzzh  :-\  ;)
es ist bei einem Bekannten und der hat keinen Helleigkeitssensor, dass heißt ganz logisch ich muss es eben ohne machen und mit "twilight_weather"

Das werde ich mal testen...
Werde es so einsetzen:
([06:00-08:00] and [myTwilight:twilight_weather] < 40) (set Flur_Licht on) DOELSE (set Flur_Licht off)

zum Verständnis für mich 1.Bedingung ist für 6:00 Uhr, also sobald es kleiner 40 wird geht das Licht an..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: moonsorrox am 21 März 2015, 13:27:40

([06:00-08:00] and [myTwilight:twilight_weather] < 40) (set Flur_Licht on) DOELSE (set Flur_Licht off)

zum Verständnis für mich 1.Bedingung ist für 6:00 Uhr, also sobald es kleiner 40 wird geht das Licht an..?

ja, zwischen 06:00 und 08:00 Uhr. Wenn vor 06:00 Uhr es kleiner als 40 ist, dann geht das Licht Punkt 06:00 Uhr an. Wenn nach 08:00 Uhr es kleiner 40 wird, passiert nichts.

Gruß

Damian

Gruß

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

moonsorrox

Zitat von: Damian am 21 März 2015, 15:02:48
ja, zwischen 06:00 und 08:00 Uhr. Wenn vor 06:00 Uhr es kleiner als 40 ist, dann geht das Licht Punkt 06:00 Uhr an. Wenn nach 08:00 Uhr es kleiner 40 wird, passiert nichts.

und wie verhält es sich zwischen 06:00 und 08:00 Uhr, richtet sich die Ausschaltzeit dann nach dem Wert von Twilight..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: moonsorrox am 21 März 2015, 15:32:13
und wie verhält es sich zwischen 06:00 und 08:00 Uhr, richtet sich die Ausschaltzeit dann nach dem Wert von Twilight..?

logischer Weise, wenn twilight_weather >= 40 wird, spätestens um 08:00 Uhr.

Gruß

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

moonsorrox

Zitat von: Damian am 21 März 2015, 15:52:49
logischer Weise, wenn twilight_weather >= 40 wird, spätestens um 08:00 Uhr.

OK, so hatte ich es mir erhofft...!  ;) Danke
ist jetzt schlecht zu testen, da muss ich schon mit der Zeit runter, es wird Frühling  :D ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

so irgendwie stehe ich noch mit dem DOIF Twilight auf dem Schlauch  :-\

ich habe das so drin:
([06:00-08:00] and [myTwilight:twilight_weather] < 40) (set Flur_Licht on) DOELSE (set Flur_Licht off)

Gestern ist die Lampe um 6:00 Uhr angegangen und um 6:35 Uhr aus,
Heute ist die Lampe um 6:00 Uhr angegangen und um 6:25 Uhr aus, normal sollte sie eigentlich gar nicht mehr angehen da es ja schon hell ist...

Muss ich jetzt den Wert runter nehmen oder das < Zeichen umdrehen..?
Sehe da grad nicht durch und kann nicht schauen was "twilight_weather" morgens zeigt
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: moonsorrox am 25 März 2015, 13:31:20
so irgendwie stehe ich noch mit dem DOIF Twilight auf dem Schlauch  :-\

ich habe das so drin:
([06:00-08:00] and [myTwilight:twilight_weather] < 40) (set Flur_Licht on) DOELSE (set Flur_Licht off)

Gestern ist die Lampe um 6:00 Uhr angegangen und um 6:35 Uhr aus,
Heute ist die Lampe um 6:00 Uhr angegangen und um 6:25 Uhr aus, normal sollte sie eigentlich gar nicht mehr angehen da es ja schon hell ist...

Muss ich jetzt den Wert runter nehmen oder das < Zeichen umdrehen..?
Sehe da grad nicht durch und kann nicht schauen was "twilight_weather" morgens zeigt

hell, aber offenbar nicht hell genug ist. Wenn um 06:25 Uhr die Lampe ausgeht, dann ist das der Zeitpunkt, wo die Schwelle von 40 überschritten wird. Wenn es dir zu spät ist bzw. zu hell dann musst du einfach die Schwelle deinen Bedürfnissen anpassen. Du schaust einfach welcher Wert in twilight_weather steht, wenn du der Meinung bist, dass es für dich hell genug ist und den Wert setzt du anstelle von 40 ein. Den Wert 40 habe ich doch nur zufällig gewählt.

Gruß

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