Hallo,
ich habe ein DOIF welches zwischen SS-21:00 gewisse Lampen schalten soll, wenn in dieser Zeit der TV an geht.
Es funktioniert tadellos nur ab diesem Zeitpunkt wird das DOIF ca. alle Minuten ausgeführt?
Ich hab es schon mit event on change.* und event on update.* probiert. Ohne Erfolg?
([{sunset("real",0)}-21:00] and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSE
Auch Abe ich schon ein ?vor [{sunset. probiert. Ohne Erfolg.
Hier nur ein kleiner Auszug aus dem Log
2019.03.26 19:42:11 3: CUL_HM set Sitzbank_links on
2019.03.26 19:42:11 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:42:12 3: CUL_HM set Vitrine off
2019.03.26 19:42:52 3: CUL_HM set Sitzbank_links on
2019.03.26 19:42:52 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:42:52 3: CUL_HM set Vitrine off
2019.03.26 19:43:32 3: CUL_HM set Sitzbank_links on
2019.03.26 19:43:32 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:43:32 3: CUL_HM set Vitrine off
2019.03.26 19:44:12 3: CUL_HM set Sitzbank_links on
2019.03.26 19:44:12 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:44:12 3: CUL_HM set Vitrine off
2019.03.26 19:44:52 3: CUL_HM set Sitzbank_links on
2019.03.26 19:44:52 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:44:52 3: CUL_HM set Vitrine off
2019.03.26 19:45:32 3: CUL_HM set Sitzbank_links on
2019.03.26 19:45:32 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:45:32 3: CUL_HM set Vitrine off
2019.03.26 19:46:12 3: CUL_HM set Sitzbank_links on
2019.03.26 19:46:12 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:46:12 3: CUL_HM set Vitrine off
2019.03.26 19:46:52 3: CUL_HM set Sitzbank_links on
2019.03.26 19:46:52 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:46:52 3: CUL_HM set Vitrine off
2019.03.26 19:47:32 3: CUL_HM set Sitzbank_links on
2019.03.26 19:47:32 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:47:32 3: CUL_HM set Vitrine off
2019.03.26 19:48:12 3: CUL_HM set Sitzbank_links on
2019.03.26 19:48:12 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:48:12 3: CUL_HM set Vitrine off
2019.03.26 19:48:52 3: CUL_HM set Sitzbank_links on
2019.03.26 19:48:52 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:48:52 3: CUL_HM set Vitrine off
2019.03.26 19:49:34 3: CUL_HM set Sitzbank_links on
2019.03.26 19:49:34 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:49:34 3: CUL_HM set Vitrine off
2019.03.26 19:50:14 3: CUL_HM set Sitzbank_links on
2019.03.26 19:50:14 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:50:14 3: CUL_HM set Vitrine off
2019.03.26 19:50:54 3: CUL_HM set Sitzbank_links on
2019.03.26 19:50:54 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:50:54 3: CUL_HM set Vitrine off
2019.03.26 19:51:34 3: CUL_HM set Sitzbank_links on
2019.03.26 19:51:34 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:51:34 3: CUL_HM set Vitrine off
2019.03.26 19:52:14 3: CUL_HM set Sitzbank_links on
2019.03.26 19:52:14 3: CUL_HM set Sitzbank_rechts on
2019.03.26 19:52:14 3: CUL_HM set Vitrine off
Was mach ich hier falsch, damit nur einmal geschaltet wird?
Danke
Gruß
Helmut
Ist ja auch logisch, die Bedingung ist ja wiederholt wahr: In einem Zeitraum ist der Fernseher an. Und der bleibt ja an.
Entweder eine weitere Bedingung hinzufügen wie zB
([{sunset("real",0)}-21:00]
and [TV:state] eq "on"
and [Sitzbank_links:state] ne "on"
and [Sitzbank_rechts:state] ne "on"
and [Vitrine:state] ne "off")
(set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off)
DOELSE
Oder über repeatcmd auf 1 (https://fhem.de/commandref_DE.html#DOIF_repeatcmd) dies Ausführungswiederholung einschränken.
Danke für die rasche Antwort. Werde ich mir ansehen
Tx Helmut
Zitat von: yersinia am 27 März 2019, 15:13:17Ist ja auch logisch, die Bedingung ist ja wiederholt wahr
Aber es gibt keinen Trigger. Außer TV:state wird im Minutentakt aktualisiert. Dem kann man mit event-on-change .* (event-on-update ist hier fehl am Platz!) auf TV abhelfen.
Oder ein
DOELSEIF [0:00] als Reaktivierung anhängen (statt
DOELSE).
do always sollte auch deaktiviert sein/werden (leider hast du kein LIST angehängt und auch die Events von TV ausgefiltert).
Hallo Per
hier das List vom DOIF
Internals:
DEF ([{sunset("real",0)}-21:00] and [TV:state] eq "on") (set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off) DOELSE
FUUID 5c45c885-f33f-ee2d-b231-543c7d63820a02c7
MODEL FHEM
NAME di_LampenTV_an
NR 315
NTFY_ORDER 50-di_LampenTV_an
STATE cmd_2
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
READINGS:
2019-03-27 16:09:56 Device TV
2019-03-26 21:00:00 cmd 2
2019-03-26 21:00:00 cmd_event timer_2
2019-03-26 21:00:00 cmd_nr 2
2019-03-26 22:07:36 e_TV_state off
2019-03-26 09:57:18 mode enabled
2019-03-26 21:00:00 state cmd_2
2019-03-26 21:00:00 timer_01_c01 27.03.2019 18:11:55
2019-03-26 21:00:00 timer_02_c01 27.03.2019 21:00:00
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'TV','state') eq "on"
days:
devices:
0 TV
all TV
do:
0:
0 set Sitzbank_links on, set Sitzbank_rechts on, set Vitrine off
1:
0
helper:
event presence: absent
globalinit 1
last_timer 2
sleeptimer -1
timerdev TV
timerevent off
triggerDev TV
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: timer_2
state: cmd_2
timerevents:
off
timereventsState:
state: off
triggerEvents:
presence: absent
triggerEventsState:
presence: absent
internals:
interval:
0 -1
1 0
intervalfunc:
intervaltimer:
itimer:
localtime:
0 1553706715
1 1553716800
perlblock:
readings:
0 TV:state
all TV:state
realtime:
0 18:11:55
1 21:00:00
time:
0 {sunset("real",0)}
1 21:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1553706715:
localtime 1553706715
hash:
1553716800:
localtime 1553716800
hash:
uiState:
uiTable:
Attributes:
event-on-update-reading .*
room Steuerung
und ein List vom TV
Internals:
DEF 10.0.0.30
FUUID 5c45c885-f33f-ee2d-90e4-0fece571696797ef
HOST 10.0.0.30
NAME TV
NR 313
PARTIAL
STATE off
TYPE LGTV_WebOS
VERSION 2.0.9
READINGS:
2018-08-01 22:50:59 3D off
2018-08-01 22:50:59 3DMode 2d
2019-01-28 21:54:32 channel -
2018-08-01 22:51:07 channelCurrentEndTime -
2018-08-01 22:51:07 channelCurrentStartTime -
2018-08-01 22:51:07 channelCurrentTitle -
2019-01-28 21:54:32 channelMedia -
2019-01-28 21:54:32 channelName -
2018-08-01 22:51:07 channelNextEndTime -
2018-08-01 22:51:07 channelNextStartTime -
2018-08-01 22:51:07 channelNextTitle -
2018-12-19 17:39:06 extInput_HDMI-1 connect_true
2019-01-29 14:52:39 extInput_HDMI-2 connect_true
2018-10-15 08:40:08 extInput_HDMI-3 connect_true
2019-01-15 15:35:58 extInput_HDMI-4 connect_false
2019-01-29 14:52:35 input HDMI-1
2019-01-30 17:41:34 lastResponse error - 500 internal error
2019-01-29 14:52:35 launchApp -
2018-08-01 09:33:57 lgKey 45eb2988750c476d4276c8aaa18b0b7f
2019-01-20 15:05:48 mute off
2019-01-29 17:44:22 pairing unpaired
2019-03-27 16:10:56 presence absent
2019-03-26 22:07:36 state off
2019-01-29 15:28:57 volume 8
helper:
wsKey MTU1MzYzNDQzNC41NjYyNA==
device:
registered 0
runsetcmd 0
channelguide:
counter 10979
Attributes:
devStateIcon on:10px-kreis-gruen:off off:10px-kreis-rot:on
pingPresence 1
room TV_Bereich
verbose 0
do always ist nicht aktiv
Gruß
Helmut
Setz mal event-on-change-reading .* bei TV rein.
Servus hab ich gemacht. Leider ohne Wirkung.
hier nochmals ein list vom TV
Internals:
CHANGED
DEF 10.0.0.30
FUUID 5c45c885-f33f-ee2d-90e4-0fece571696797ef
HOST 10.0.0.30
NAME TV
NR 313
PARTIAL
STATE off
TYPE LGTV_WebOS
VERSION 2.0.9
READINGS:
2018-08-01 22:50:59 3D off
2018-08-01 22:50:59 3DMode 2d
2019-01-28 21:54:32 channel -
2018-08-01 22:51:07 channelCurrentEndTime -
2018-08-01 22:51:07 channelCurrentStartTime -
2018-08-01 22:51:07 channelCurrentTitle -
2019-01-28 21:54:32 channelMedia -
2019-01-28 21:54:32 channelName -
2018-08-01 22:51:07 channelNextEndTime -
2018-08-01 22:51:07 channelNextStartTime -
2018-08-01 22:51:07 channelNextTitle -
2018-12-19 17:39:06 extInput_HDMI-1 connect_true
2019-01-29 14:52:39 extInput_HDMI-2 connect_true
2018-10-15 08:40:08 extInput_HDMI-3 connect_true
2019-01-15 15:35:58 extInput_HDMI-4 connect_false
2019-01-29 14:52:35 input HDMI-1
2019-01-30 17:41:34 lastResponse error - 500 internal error
2019-01-29 14:52:35 launchApp -
2018-08-01 09:33:57 lgKey 45eb2988750c476d4276c8aaa18b0b7f
2019-01-20 15:05:48 mute off
2019-01-29 17:44:22 pairing unpaired
2019-03-27 21:49:10 presence absent
2019-03-27 21:47:58 state off
2019-01-29 15:28:57 volume 8
helper:
wsKey MTU1MzcxOTY1Ni43ODY5Mg==
device:
registered 0
runsetcmd 0
channelguide:
counter 611
Attributes:
devStateIcon on:10px-kreis-gruen:off off:10px-kreis-rot:on
event-on-change-reading .*
pingPresence 1
room TV_Bereich
verbose 0
und noch das Log
2019.03.27 20:55:28 3: CUL_HM set Sitzbank_links on
2019.03.27 20:55:28 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:55:28 3: CUL_HM set Vitrine off
2019.03.27 20:56:08 3: CUL_HM set Sitzbank_links on
2019.03.27 20:56:08 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:56:08 3: CUL_HM set Vitrine off
2019.03.27 20:56:48 3: CUL_HM set Sitzbank_links on
2019.03.27 20:56:48 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:56:48 3: CUL_HM set Vitrine off
2019.03.27 20:57:28 3: CUL_HM set Sitzbank_links on
2019.03.27 20:57:29 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:57:29 3: CUL_HM set Vitrine off
2019.03.27 20:58:09 3: CUL_HM set Sitzbank_links on
2019.03.27 20:58:09 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:58:09 3: CUL_HM set Vitrine off
2019.03.27 20:58:49 3: CUL_HM set Sitzbank_links on
2019.03.27 20:58:49 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:58:49 3: CUL_HM set Vitrine off
2019.03.27 20:59:29 3: CUL_HM set Sitzbank_links on
2019.03.27 20:59:29 3: CUL_HM set Sitzbank_rechts on
2019.03.27 20:59:29 3: CUL_HM set Vitrine off
Gruß Helmut
Hallo Helmut,
schau Dir doch mal in Ruhe an, wer wie Dein DOIF triggert: der Zeitraum triggert zum Sunset (wird wahr) und um 21:00 (wird falsch). Dein Fernseher scheint jede Menge Events zu liefern. Du fragst im DOIF den TV:state ab, dann schau Dir das doch mal eine Weile im Event Monitor an:
EventMonitor öffnen, dann bei "Events (Filter: .*) das .* anklicken und in der erscheinenden Eingabezeile TV:state vor das .* schreiben: TV:state.*
OK klicken und warten. Fernseher einschalten und einige Minuten laufen lassen, Fernseher dann ausmachen und wieder ein paar Minuten zusehen. Dann weist Du erst mal was da für Events kommen und vor allem wie oft.
Sollte der Fernseher nun alle xMinuten den state senden kannst Du Dir ja mal DOIF_Readings anschauen. Das sollte Dein Problem ganz elegant lösen.
event-on-change-reading .* ist genausogut wie kein event-on- Attribut gesetzt: es würde bei jeder Änderung jedes readings einen Event liefern. Wenn schon dann event-on-change-reading state. Aber das musst Du nicht bei DOIF_Readings. Und wir wissen ja nicht, ob die vielen anderen readings vom TV noch irgendwo genutzt werden.
Wer schaltet eigentlich die Lampen aus?
Gruß
Sany
Hallo Sany,
erde deinen Rat befolgen. Melde mich wieder.
Ach ja, ausgeschaltet wird durch "alles aus" liegt auf der Logitech FB, im HomeKit bzw. auch am Tablet welches das Wetter anzeigt.
Dadurch werden alle Lampen ausgeschaltet und wieder ein Licht im Vorzimmer für 10 Minuten eingeschaltet.
Schönen Tag
Moin,
bei mir habe ich den TV mit dem WOL-Modul eingebunden. Damit funktioniert die TV-abhängige Licht-Steuerung ziemlich gut. D.h. es triggert nicht dauernd und löst somit auch kein DOIF-Dauerfeuer aus.
LG
Das mit dem Dauerfeuer der Readings sowie den Attributen event-on-[change|update]-reading in den Devices kann ich nachvollziehen um das Mitteilungsbedürfnis der Devices entsprechend einzuschränken.
Allerdings kann ich nicht verstehen, wenn man wie von mir weiter oben vorgeschlagen (https://forum.fhem.de/index.php/topic,99054.msg924226.html#msg924226) die DOIF Bedingung einfach weiter einschränkt, das nicht schon ausreichen sollte? Ich würde doch der Logik des Anwenders hier auch folgen: Wenn zwischen Sonnenuntergang und 21 Uhr der Fernseher angeht, dann schalte auch drei (Licht)Schalter ein. Dies impliziert auch, dass die (Licht)Schalter aus gewesen sind. Wenn also Licht bereits an ist, dann schalte nicht nochmal.
Genauso soll es sich verhalten, wenn ich den Fernseher (und das Licht) zwischenzeitlich mal ausgeschaltet habe.
Btw, was passiert eigentlich, wenn sunset(real) nach 21 Uhr ist? Gilt das dann von heute 21:03 (fiktiver sunset) bis morgen 21:00?
Hallo danke für deine Antwort. Ja das mit 21 Uhr kann ich natürlich auch noch auf 22 Uhr erweitern. das soll wirklich nicht zum Problem werden.
Deinen Vorschlag werde ich auch noch durcharbeiten um zu einem guten Ergebnis zu kommen.
Melde mich wieder Danke nice eve
Helmut
Zitat von: Helmi55 am 27 März 2019, 20:37:34und noch das Log
Da sehe ich immer noch kein Event von einem TV?!
Also wenn ich mir den EventMonitor von TV nun ansehe
TV.*) FHEM log
2019-03-29 19:16:00 LGTV_WebOS TV presence: present
2019-03-29 19:16:06 LGTV_WebOS TV off
2019-03-29 19:16:08 LGTV_WebOS TV on
2019-03-29 19:16:10 LGTV_WebOS TV presence: present
2019-03-29 19:16:20 LGTV_WebOS TV presence: present
2019-03-29 19:16:30 LGTV_WebOS TV presence: present
2019-03-29 19:16:40 LGTV_WebOS TV presence: present
2019-03-29 19:16:46 LGTV_WebOS TV off
2019-03-29 19:16:48 LGTV_WebOS TV on
2019-03-29 19:16:50 LGTV_WebOS TV presence: present
2019-03-29 19:17:00 LGTV_WebOS TV presence: present
2019-03-29 19:17:10 LGTV_WebOS TV presence: present
2019-03-29 19:17:21 LGTV_WebOS TV presence: present
2019-03-29 19:17:26 LGTV_WebOS TV off
2019-03-29 19:17:28 LGTV_WebOS TV on
2019-03-29 19:17:31 LGTV_WebOS TV presence: present
2019-03-29 19:17:41 LGTV_WebOS TV presence: present
2019-03-29 19:17:51 LGTV_WebOS TV presence: present
2019-03-29 19:18:01 LGTV_WebOS TV presence: present
muss ich auf presence umstellen? Keine Ahnung woher immer das off on kommt?
Presence mit event on change ? Ist das ein Ansatz?
Nice eve
Also mit DOELSEIF ([0:00]) ist Ruhe. Keine Meldung mehr im Log
Danke
PS das mit ([0:00]) kannte ich nicht
Gruß Helmut