[gelöst] Zeitbereich wird nicht eingehalten

Begonnen von caldir65, 04 Dezember 2016, 20:23:40

Vorheriges Thema - Nächstes Thema

caldir65

Hallo,

ich habe mir folgendes DOIF eingerichtet, um die Abwesenheit auszuwerten bzw. zu verwerten:
([ANW_christoph] eq "absent" and [ANW_meike] eq "absent" and [ANW_julia] eq "absent" and [07:00-18:00]) (
set kz1_RolloJulia position 85,
set sz_RolloSchlafzimmer position 85,
set kz2_RolloJoschua position 95,
set kue_Arbeitsflaeche_Spuele off,
set hwr_RolloHWR down,
set AS_AbstellTreppeLicht off,
set az_Arbeitszimmer_Heizung_Climate desired-temp 18,5,
set KUE_Kueche_Heizung_Clima desired-temp 18,5,
set fl_FlurHeizung_Clima desired-temp 18,5,
set wz_Wohnzimmer_Heizung_Climate desired-temp 18,5,
{Log 1, "Sind alle weg"}

DOELSEIF ([ANW_christoph] eq "absent" and [ANW_meike] eq "absent" and [ANW_julia] eq "present" and [07:00-18:00]) (
set Anwesenheit.AlleWeg julia,
set sz_RolloSchlafzimmer position 85,
set kz2_RolloJoschua position 95,
set kue_Arbeitsflaeche_Spuele off,
set hwr_RolloHWR down,
set AS_AbstellTreppeLicht off
set kz1_Julia_Heizung_Climate 20.5,
{Log 1, "Nur Julia ist zu Hause"}
)
DOELSEIF ([ANW_christoph] eq "present" or [ANW_meike] eq "present" and [ANW_julia] eq "absent" and [07:00-18:00]) (
set kz1_RolloJulia position 0,
set sz_RolloSchlafzimmer position 0,
set kz2_RolloJoschua position 0,
set hwr_RolloHWR up,
set az_Arbeitszimmer_Heizung_Climate desired-temp 21.0,
set KUE_Kueche_Heizung_Clima desired-temp 20.5,
set fl_FlurHeizung_Clima desired-temp 20.5,
set wz_Wohnzimmer_Heizung_Climate desired-temp 21.0,
{Log 1, "Machen mal etwas wärmer, es ist jemand zu Hause ..."}
)


Grundsätzlich funktioniert es inzwischen soweit zuverlässig - einzig das Ende "18:00" wird nicht eingehalten, und ich habe keine Ahnung, warum ...

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Otto123

Hallo Christoph,

Du hast aus meiner Sicht kein Ende definiert!?
Du hast nur definiert was in der Zeit von 7:00-18:00 passieren soll.
Wenn alle drei Bedinungen nicht mehr wahr sind passiert einfach nichts.
DOELSE am Ende vergessen?

Ich habe Deinen Code aber nicht im Detail angesehen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

caldir65

Ich hatte es so verstanden, daß nicht unbeding ein DOELSE notwendig ist? Oder liege ich da falsch?
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Otto123

Generell ist das richtig. Aber Du sagst Ende geht nicht. Aber was ist für Dich Ende? Was soll also am Ende passieren?

Bei Zeitintervallen fällt mir keine Möglichkeit ein ohne DOELSE. Siehe auch http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

caldir65

Ende soll ab 18:00 Uhr sein - dann soll die An-/Abwesenheit in dieser Form nichts mehr passieren - erst zu 7:00 Uhr soll diese Regel greifen...
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

automatisierer

dürfte an and / or liegen.
Das hier:
DOELSEIF ([ANW_christoph] eq "present" or [ANW_meike] eq "present" and [ANW_julia] eq "absent" and [07:00-18:00]
ist wahr, wenn
[ANW_christoph] eq "present"
wahr ist, oder wenn
[ANW_meike] eq "present" and [ANW_julia] eq "absent" and [07:00-18:00]
wahr ist.

Wenn Christoph oder Meike anwesend sein sollen und Juli abwesend und das ganze nur zwischen 07-18 Uhr, dann müsstest du es so schreiben:

DOELSEIF (([ANW_christoph] eq "present" or [ANW_meike] eq "present") and [ANW_julia] eq "absent" and [07:00-18:00]



caldir65

Also so ähnlich wie in Mathe - Klammer geht vor  ;)
Ich werde es gleich mal ausprobieren - Danke
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

automatisierer

das wäre eher Punkt vor Strich... Klammer geht sowieso vor...  8)

Otto123

#8
Zitat von: caldir65 am 04 Dezember 2016, 21:14:22
Ende soll ab 18:00 Uhr sein - dann soll die An-/Abwesenheit in dieser Form nichts mehr passieren - erst zu 7:00 Uhr soll diese Regel greifen...
Ok da hätten wir das ausgesprochen und geklärt.

Ich finde den Ansatz so irgendwie verkehrt. Leider hat DOIF kein disabledForIntervals, sonst würde ich das damit lösen.
Wenn überhaupt diese Kombination mit den vielen Bedingungen würde ich das Zeitinterval links hinschreiben, Zitat Commandref:
ZitatDie Angaben werden immer von links nach rechts abgearbeitet.

Du könntest Deine Bedingungen so formulieren wie bisher (ich habe die Logik nicht überprüft) allerdings ohne den Zeitbereich und mit einem zweiten DOIF in dem Zeitraum [07:00-18:00] das DOIF set <> disable bzw enable/initialized setzen.
das würde dem disabledForIntervals ansatzweise entsprechen.
Aber Du musst das verstehen und warten können.
Viele Wege führen nach Rom.

Gruß Otto

Nachtrag:
Mir fällt gerade ein ich habe auch ein paar solche DOIFs z.B. dies hierdefine di_TemperaturAnsage DOIF ([?06:00 - 20:00] and [PIR1:"motion: on"]) ( set MyTTS volume 30, set MyTTS tts Es sind [SensorAussen:tempText] Grad)
attr di_TemperaturAnsage cmdpause 1800
attr di_TemperaturAnsage do always
attr di_TemperaturAnsage room Haus

Dabei nehme ich den Zeitraum nicht als triggernde sondern nur als Abfragebedingung. Ob das wirklich richtig und gut ist bin ich mir auch nicht sicher. Aber es funktioniert
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

([ANW_christoph] eq "present" or [ANW_meike] eq "present" and [ANW_julia] eq "absent" and [07:00-18:00])

damit ist klar, dass das Zeitintervall nicht greift.


Du meinst vermutlich:

(([ANW_christoph] eq "present" or [ANW_meike] eq "present" and [ANW_julia] eq "absent") and [07:00-18:00])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

caldir65

Zitat von: Damian am 05 Dezember 2016, 07:30:09

(([ANW_christoph] eq "present" or [ANW_meike] eq "present" and [ANW_julia] eq "absent") and [07:00-18:00])

So habe ich es inzwischen eingetragen ;-)
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

automatisierer

(([ANW_christoph] eq "present" or [ANW_meike] eq "present" and [ANW_julia] eq "absent") and [07:00-18:00])

dann wird es wahr, wenn christoph present und 07-18 Uhr ist oder aber
meike present und julia absent und 07-18 Uhr ist

caldir65

Zitat von: automatisierer am 05 Dezember 2016, 12:40:15
dann wird es wahr, wenn christoph present und 07-18 Uhr ist oder aber
meike present und julia absent und 07-18 Uhr ist

Hm, wenn ich das jetzt richtig verstanden habe, müßte es im Grunde letztlich so aussehen
(([ANW_christoph] eq "present" or [ANW_meike] eq "present") and [ANW_julia] eq "absent" and [07:00-18:00])
damit bei (entweder christoph oder meide anwesent) und julia weg und 07-18 Uhr ist
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

automatisierer


Damian

Einfach merken: and bindet stärker als or (entspricht Punkt vor Strich Regel).
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF