FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Home_Fhem am 02 Dezember 2017, 09:23:25

Titel: Zeitschaltuhr mit DOIF
Beitrag von: Home_Fhem am 02 Dezember 2017, 09:23:25
Guten Morgen, ich würde gerne meine Weihnachtsbeleuchtung über DOIF ein/aus Schalten.
Bin bisher wie folgt vorgegangen:
Lampe definiert

Die Lampe lässt sich nun mit on/off per Hand schalten

Doif definiert
Ich sehe wie DOIF schaltet aber die Lampe geht nicht an.
Habe ich einen Befehl falsch eingegeben oder etwas vergessen?

Danke für die Hilfe!
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Damian am 02 Dezember 2017, 10:33:46
Zitat von: Home_Fhem am 02 Dezember 2017, 09:23:25
Guten Morgen, ich würde gerne meine Weihnachtsbeleuchtung über DOIF ein/aus Schalten.
Bin bisher wie folgt vorgegangen:
Lampe definiert


  • define lampe IT FF0000000F FF F0
    attr lampe IODev CUL1
    attr lampe model itswitch
Die Lampe lässt sich nun mit on/off per Hand schalten

Doif definiert

  • define lampensteuerung DOIF ([20:00|Mo Di Mi Do Fr Sa So]) (set lampe on) DOELSEIF ([23:00|Mo Di Mi Do Fr Sa So]) (set lampe off)
Ich sehe wie DOIF schaltet aber die Lampe geht nicht an.
Habe ich einen Befehl falsch eingegeben oder etwas vergessen?

Danke für die Hilfe!

Wenn set lampe on in der Kommandozeile funktioniert, dann funktioniert es auch im DOIF, so wie du es angegeben hast (ohne do always Attribut allerdings nur wenn sich der Zustand von DOIF ändert)

Warum gibst du Wochentage an, wenn du jeden Tag meinst?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Home_Fhem am 02 Dezember 2017, 12:30:34
@Damian danke für die Antwort. Es hat mit set Lampe on leider nicht funktioniert. Nun habe ich die Lampe nochmal neu definiert und es geht...

Bin neu in FHEM und natürlich auch mit DOIF was muss ich eingeben bzw. weglassen wenn ich die Zeitschaltuhr jeden Tag schalten lassen möchte? Einfach die Wochentage weglassen oder sieht dann die Funktion anders aus?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Damian am 02 Dezember 2017, 12:36:49
define lampensteuerung DOIF ([20:00]) (set lampe on) DOELSEIF ([23:00]) (set lampe off)

Funktioniert ohne do always, weil ja der Status des Moduls immer zwischen cmd_1 und cmd_2 wechselt.
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Home_Fhem am 02 Dezember 2017, 15:56:54
Danke  :)
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 12 Dezember 2017, 17:14:50
Ich versuche meine Weihnachtsbeleichtung zu bestimmten Zeiten zu schalten. Allerdings schaltet er nicht.

hier mal das list#

Save config
upCam
Tablet-UI
Smartphone-UI
System
3.2_Anwesenheit
9.3_Watchdog
90_sys.batteries
Arbeitszimmer
Auskunft
Automation
Badezimmer
Büro
CUL_HM
CUL_TCM97001
CUL_TX
FHEM
FS20
Flur
Fritzbox
Garten
Gerätestatus
Gäste-WC
Hardware
icoHaus Haus
Heizungskeller
IT
Kinderzimmer
Klima
Küche
LaCrosse
Plots
Schlafzimmer
Sensoren
Spritpreise
Status
TV-Programm
Unsorted
Verkehrsinfo
Vorratsraum
Weather
Wetter
Wettervorhersage
Wohnzimmer
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor

Internals:
   CFGFN      ./FHEM/fhem_multimedia.cfg
   DEF        ([Modus_RL] eq "XMas" and ([6:30-9:00] or [13:00-22:15]) and [Twilight:light] < 5) (set Weihnachtsbeleuchtung on)
DOELSEIF ([Modus_RL] eq "XMas" and [22:20]) (set Weihnachtsbeleuchtung off)
   NAME       XMasLights.Auto
   NR         839
   NTFY_ORDER 50-XMasLights.Auto
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-12-12 06:30:01   cmd             1
     2017-12-12 06:30:01   cmd_event       timer_1
     2017-12-12 06:30:01   cmd_nr          1
     2017-12-12 06:30:01   state           cmd_1
     2017-12-12 09:00:00   timer_01_c01    13.12.2017 06:30:00
     2017-12-12 09:00:00   timer_02_c01    13.12.2017 09:00:00
     2017-12-11 22:15:00   timer_03_c01    12.12.2017 13:00:00
     2017-12-11 22:15:00   timer_04_c01    12.12.2017 22:15:00
     2017-12-11 22:20:01   timer_05_c02    12.12.2017 22:20:00
     2017-12-12 13:00:00   warning         condition c01: Argument "" isn't numeric in numeric lt (<)

   condition:
     0          InternalDoIf($hash,'Modus_RL','STATE') eq "XMas" and (DOIF_time($hash,0,1,$wday,$hms) or DOIF_time($hash,2,3,$wday,$hms)) and ReadingValDoIf($hash,'Twilight','light') < 5
     1          InternalDoIf($hash,'Modus_RL','STATE') eq "XMas" and DOIF_time_once($hash,4,$wday)
   days:
   devices:
     0           Modus_RL Twilight
     1           Modus_RL
     all         Modus_RL Twilight
   do:
     0:
       0          set Weihnachtsbeleuchtung on
     1:
       0          set Weihnachtsbeleuchtung off
     2:
   helper:
     event      timer_3
     globalinit 1
     last_timer 5
     sleeptimer -1
     timerdev
     timerevent timer_3
     timereventsState
     triggerDev
     timerevents:
       timer_3
     triggerEvents:
       timer_3
   internals:
     0           Modus_RL:STATE
     1           Modus_RL:STATE
     all         Modus_RL:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   itimer:
   localtime:
     0          1513143000
     1          1513152000
     2          1513080000
     3          1513113300
     4          1513113600
   readings:
     0           Twilight:light
     all         Twilight:light
   realtime:
     0          06:30:00
     1          09:00:00
     2          13:00:00
     3          22:15:00
     4          22:20:00
   regexp:
     all:
   state:
     STATE:
   time:
     0          6:30
     1          9:00
     2          13:00:00
     3          22:15:00
     4          22:20:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          1
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0  1  2  3
     1           4
   triggertime:
     1513113300:
       localtime  1513113300
       hash:
     1513113600:
       localtime  1513113600
       hash:
     1513143000:
       localtime  1513143000
       hash:
     1513152000:
       localtime  1513152000
       hash:
Attributes:
   group      Zeitschaltuhr
   room       Automation


und der Code...
#
# Steuerung Weihnachtsbeleuchtung (XMas)
#
define Weihnachtsbeleuchtung structure room GT.Gartenhaus_CUL KU.Fensterleuchte_CUL SZ.Fensterleuchte_CUL
attr Weihnachtsbeleuchtung clientstate_behavior relative
attr Weihnachtsbeleuchtung clientstate_priority an|on aus|off
attr Weihnachtsbeleuchtung group Zeitschaltuhr
attr Weihnachtsbeleuchtung room Automation

define XMasLights.Auto DOIF ([Modus_RL] eq "XMas" and ([6:30-9:00] or [13:00-22:15]) and [Twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSEIF ([Modus_RL] eq "XMas" and [22:20]) (set Weihnachtsbeleuchtung off)
attr XMasLights.Auto group Zeitschaltuhr
attr XMasLights.Auto room Automation


Der Modus steht auf XMas...
Jemand eine Idee ?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Ellert am 12 Dezember 2017, 18:23:55
Zitat von: en-trust am 12 Dezember 2017, 17:14:50
Jemand eine Idee ?
Ja, es gibt eine Warnung, die solltest Du beseitigen indem Du die Ursache findest und beseitigst. Hast Du selbst das Listing nicht angesehen?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 13 Dezember 2017, 07:42:49
Doch nur habe ich den Code so von hier übernommen und mir ist nicht klar was fhem damit mir sagen will.

warning         condition c01: Argument "" isn't numeric in numeric lt (<)
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Esjay am 13 Dezember 2017, 09:58:34
Zitat von: en-trust am 13 Dezember 2017, 07:42:49
Doch nur habe ich den Code so von hier übernommen und mir ist nicht klar was fhem damit mir sagen will.

warning         condition c01: Argument "" isn't numeric in numeric lt (<)

"Irgendwo" hast du im code einen Vergleich kleiner als (<) aber das Argument ist keine Zahl sondern ein String, also eine Zeichenkette.

Jetzt deutlicher?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 13 Dezember 2017, 15:36:34
diese warning kommt von der XMasLights. Aber da gibt es nur das Twilight:light < 5.

define Weihnachtsbeleuchtung structure room GT.Gartenhaus_CUL KU.Fensterleuchte_CUL SZ.Fensterleuchte_CUL
attr Weihnachtsbeleuchtung clientstate_behavior relative
attr Weihnachtsbeleuchtung clientstate_priority an|on aus|off
attr Weihnachtsbeleuchtung group Zeitschaltuhr
attr Weihnachtsbeleuchtung room Automation

define XMasLights.Auto DOIF ([Modus_RL] eq "XMas" and ([6:30-9:00] or [13:00-22:00]) and [Twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set Weihnachtsbeleuchtung off)
attr XMasLights.Auto group Zeitschaltuhr
attr XMasLights.Auto room Automation


Woher soll es also kommen ? Oder ist die 5 von Light etwa Alphanumerisch ?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Ellert am 13 Dezember 2017, 15:39:28
Zitat von: en-trust am 13 Dezember 2017, 15:36:34
diese warning kommt von der XMasLights. Aber da gibt es nur das Twilight:light < 5.

define Weihnachtsbeleuchtung structure room GT.Gartenhaus_CUL KU.Fensterleuchte_CUL SZ.Fensterleuchte_CUL
attr Weihnachtsbeleuchtung clientstate_behavior relative
attr Weihnachtsbeleuchtung clientstate_priority an|on aus|off
attr Weihnachtsbeleuchtung group Zeitschaltuhr
attr Weihnachtsbeleuchtung room Automation

define XMasLights.Auto DOIF ([Modus_RL] eq "XMas" and ([6:30-9:00] or [13:00-22:00]) and [Twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set Weihnachtsbeleuchtung off)
attr XMasLights.Auto group Zeitschaltuhr
attr XMasLights.Auto room Automation


Woher soll es also kommen ? Oder ist die 5 von Light etwa Alphanumerisch ?
Von der anderen Seite des Vergleichsoperators, steht doch in der Meldung.
Zitat"" isn't numeric
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 13 Dezember 2017, 18:59:31
und für einen Anfänger woher weiß ich welches die Gegenseite ist ? Steht nicht in der Warning.
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Damian am 13 Dezember 2017, 19:30:23
Ich vermute, dass [Twilight:light] nicht existiert, denn dann wird per Default "" zurückgegeben und "" < 5 führt zu einer Warnung.

Mit list Twilight in der Kommandozeile kannst du überprüfen, ob es das Device gibt und ob light darin vorkommt.
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: Ellert am 13 Dezember 2017, 22:34:19
Zitat von: en-trust am 13 Dezember 2017, 18:59:31
und für einen Anfänger woher weiß ich welches die Gegenseite ist ? Steht nicht in der Warning.
Du verwendest nur einen Vergleichsoperator "<".
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 14 Dezember 2017, 07:43:29
Ich habe den Fehler gefunden. Er lag bei [Twilight:light]. Ich hatte Twilight aber als twilight definiert. Was so ein upcase ausrichten kann :(

Danke.
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 16 Dezember 2017, 10:36:07
Heute zum Samstag um 10:00 war die Beleuchtung immernoch an, obwohl twilight:light auf 6 stand und die Uhrzeit auch außerhalb der definition lag.

Internals:
   CFGFN      ./FHEM/fhem_multimedia.cfg
   DEF        ([Modus_RL] eq "XMas" and ([6:30-9:00] or [13:00-22:00]) and [twilight:light] < 5) (set Weihnachtsbeleuchtung on)
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set Weihnachtsbeleuchtung off)
   NAME       XMasLights.Auto
   NR         765
   NTFY_ORDER 50-XMasLights.Auto
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-12-16 10:30:42   Device          twilight
     2017-12-16 06:30:01   cmd             1
     2017-12-16 06:30:01   cmd_event       timer_1
     2017-12-16 06:30:01   cmd_nr          1
     2017-12-16 10:30:42   e_twilight_light 6
     2017-12-16 06:30:01   state           cmd_1
     2017-12-16 09:00:00   timer_01_c01    17.12.2017 06:30:00
     2017-12-16 09:00:00   timer_02_c01    17.12.2017 09:00:00
     2017-12-16 08:30:17   timer_03_c01    16.12.2017 13:00:00
     2017-12-16 08:30:17   timer_04_c01    16.12.2017 22:00:00
     2017-12-16 08:30:17   timer_05_c02    16.12.2017 22:00:00
   condition:
     0          InternalDoIf($hash,'Modus_RL','STATE') eq "XMas" and (DOIF_time($hash,0,1,$wday,$hms) or DOIF_time($hash,2,3,$wday,$hms)) and ReadingValDoIf($hash,'twilight','light') < 5
     1          InternalDoIf($hash,'Modus_RL','STATE') eq "XMas" and DOIF_time_once($hash,4,$wday)
   days:
   devices:
     0           Modus_RL twilight
     1           Modus_RL
     all         Modus_RL twilight
   do:
     0:
       0          set Weihnachtsbeleuchtung on
     1:
       0          set Weihnachtsbeleuchtung off
     2:
   helper:
     event      azimuth: 152.47,elevation: 10.74,twilight: 100,twilight_weather: 100,compasspoint: southeast
     globalinit 1
     last_timer 5
     sleeptimer -1
     timerdev   twilight
     timerevent azimuth: 130.44,elevation: 0.52,twilight: 69.6,twilight_weather: 55.1,compasspoint: east-southeast
     triggerDev twilight
     timerevents:
       azimuth: 130.44
       elevation: 0.52
       twilight: 69.6
       twilight_weather: 55.1
       compasspoint: east-southeast
     timereventsState:
       azimuth: 130.44
       elevation: 0.52
       twilight: 69.6
       twilight_weather: 55.1
       compasspoint: east-southeast
     triggerEvents:
       azimuth: 152.47
       elevation: 10.74
       twilight: 100
       twilight_weather: 100
       compasspoint: southeast
     triggerEventsState:
       azimuth: 152.47
       elevation: 10.74
       twilight: 100
       twilight_weather: 100
       compasspoint: southeast
   internals:
     0           Modus_RL:STATE
     1           Modus_RL:STATE
     all         Modus_RL:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   itimer:
   localtime:
     0          1513488600
     1          1513497600
     2          1513425600
     3          1513458000
     4          1513458000
   readings:
     0           twilight:light
     all         twilight:light
   realtime:
     0          06:30:00
     1          09:00:00
     2          13:00:00
     3          22:00:00
     4          22:00:00
   regexp:
     0:
     1:
     all:
   state:
     STATE:
   time:
     0          6:30
     1          9:00
     2          13:00:00
     3          22:00:00
     4          22:00:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          1
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0  1  2  3
     1           4
   trigger:
   triggertime:
     1513425600:
       localtime  1513425600
       hash:
     1513458000:
       localtime  1513458000
       hash:
     1513488600:
       localtime  1513488600
       hash:
     1513497600:
       localtime  1513497600
       hash:
Attributes:
   group      Zeitschaltuhr
   room       Automation


Was kann es jetzt sein ?
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: amenomade am 16 Dezember 2017, 21:11:48
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set Weihnachtsbeleuchtung off)

Nur um 22:00 geht es aus.
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 17 Dezember 2017, 11:52:22
Müsste ich jetzt jede einzelne uhrzeit mit on/Off abfragen oder kann ich das zusammenfassen. Am besten wäre das es bei twilight egal ob uhrzeit an bleibt.
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: amenomade am 17 Dezember 2017, 12:26:36
Prinzipiell: so lange eine Bedingung wahr bleibt, wird nichts weiteres getan. Wenn die Bedingung nicht mehr wahr ist, dann werden evtl. auch die anderen bewertet.

Ich würde einfach dein DOELSEIF durch ein DOELSE ersetzen.

([Modus_RL] eq "XMas" and ([6:30-9:00] or [13:00-22:00]) and [twilight:light] < 5) (set Weihnachtsbeleuchtung on)
DOELSE (set Weihnachtsbeleuchtung off)


Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: en-trust am 17 Dezember 2017, 16:02:15
würde das auch funktionieren ?

define XMasLights.Auto DOIF ([Modus_RL] eq "XMas" and [6:30-9:00] and [twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSEIF ([Modus_RL] eq "XMas" and [13:00-22:00] and [twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSEIF ([Modus_RL] eq "XMas" and [twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSE (set Weihnachtsbeleuchtung off)
attr XMasLights.Auto group Zeitschaltuhr
attr XMasLights.Auto room Automation
Titel: Antw:Zeitschaltuhr mit DOIF
Beitrag von: amenomade am 17 Dezember 2017, 18:06:48
Ja, es würde funktionieren. Aber auf Grund der 3. Bedingung, sind die 2 ersten jetzt unnötig. Es würde dann reichen:([Modus_RL] eq "XMas" and [twilight:light] < 5) (set Weihnachtsbeleuchtung on) \
DOELSE (set Weihnachtsbeleuchtung off)