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!
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?
@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?
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.
Danke :)
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 ?
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?
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 (<)
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?
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 ?
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
und für einen Anfänger woher weiß ich welches die Gegenseite ist ? Steht nicht in der Warning.
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.
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 "<".
Ich habe den Fehler gefunden. Er lag bei [Twilight:light]. Ich hatte Twilight aber als twilight definiert. Was so ein upcase ausrichten kann :(
Danke.
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 ?
DOELSEIF ([Modus_RL] eq "XMas" and [22:00]) (set Weihnachtsbeleuchtung off)
Nur um 22:00 geht es aus.
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.
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)
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
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)