FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: TWART016 am 26 September 2018, 18:06:25

Titel: DOIF Uhrzeit hinzufügen
Beitrag von: TWART016 am 26 September 2018, 18:06:25
Hallo,

ich habe folgendes DOIF das sehr gut funktioniert. Wenn der Mode schlafen oder alles_aus ist oder niemand zu Hause, wird die Lampe ausgeschalten. Jetzt möchte ich aber, dass dieses DOIF nicht zwischen 6 und 8 Uhr morgens gilt. Wie muss ich die Zeit einfügen?

([Wohnzimmer_Modi] eq "schlafen" or [alles_aus] eq "einfach_geniessen" or [Bewohner:residentsHome] == 0) (set Schlafzimmer_Schranklampe off) DOELSE (set Schlafzimmer_Schranklampe on)


Gruß
TWART016
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Esjay am 26 September 2018, 19:14:46
https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung

Grüße
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Damian am 26 September 2018, 19:20:38
Ich glaube, er braucht eher das https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Esjay am 26 September 2018, 19:26:05
Hatte bis zu dem Punkt gescrollt. Hab noch nicht gescheckt, wann er die Position als url übernimmt  ::) :D :)

Ja ok, wenn ich es in der Übersicht anklicke  ;D
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: TWART016 am 14 Oktober 2018, 11:47:47
Auch mit einem bestimmten Zeitraum funktioniert es nicht. Das DOIF wird jetzt gar nicht mehr geschalten.

(([Wohnzimmer_Modi] eq "schlafen" or [Wohnzimmer_Modi] eq "einfach_geniessen" or [Bewohner:residentsHome] == 0) and [08:00-04:00])
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: TWART016 am 19 Oktober 2018, 17:11:24
So funktioniert es nun:
(([Wohnzimmer_Modi] eq "schlafen" or [Wohnzimmer_Modi] eq "einfach_geniessen" or [Bewohner:residentsHome] == 0) and [08:00-04:00]) (set Schlafzimmer_Schranklampe off;set Telegram msg Schranklampe aus) DOELSE (set Schlafzimmer_Schranklampe on;set Telegram msg Schranklampe ein)


Nur wird um 4 Uhr die Lampe eingeschalten. Wie muss ich den Code ändern?
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Damian am 19 Oktober 2018, 20:25:57
Zitat von: TWART016 am 19 Oktober 2018, 17:11:24
So funktioniert es nun:
(([Wohnzimmer_Modi] eq "schlafen" or [Wohnzimmer_Modi] eq "einfach_geniessen" or [Bewohner:residentsHome] == 0) and [08:00-04:00]) (set Schlafzimmer_Schranklampe off;set Telegram msg Schranklampe aus) DOELSE (set Schlafzimmer_Schranklampe on;set Telegram msg Schranklampe ein)


Nur wird um 4 Uhr die Lampe eingeschalten. Wie muss ich den Code ändern?

Dann musst du den Trigger aus dem Zeitintervall rausnehmen:

.... [?08:00-04:00]
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: TWART016 am 08 November 2018, 12:05:20
Kann man auch in das DOELSE eine Bedingung machen? Ich möchte, dass zwischen 8 und 4 das Licht nicht eingeschalten wird.
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Per am 08 November 2018, 12:06:36
Nein. DOELSE = Tue sonst, wenn keine andere Bedingung zutrifft.

Aber extra für dich wurde DOELSEIF (Bedingung) erfunden ;)
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: TWART016 am 08 November 2018, 16:29:21
Wenn ich jetzt DOELSEIF verwende, werden dann die ersten 3 Bedingungen auch noch abgefragt?

In das DOELSEIF alle 3 Bedingungen + die Zeit reinschreiben würde ich gerne vermeiden. Das wäre doppelter Code.
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Per am 08 November 2018, 16:55:48
Wird es zwar, aber nicht verschachtelt (weil DOIF ist ein DEVICE), das geht nur mit IF (ist ein Hilfskonstrukt).
Aber du kannst DOIF_readings nehmen, dann hast du die "komplexe" Abfrage nur einmal und kannst dich in jeden Zweig darauf beziehen.

Ist aber in jeder Programmiersprache so.
Titel: Antw:DOIF Uhrzeit hinzufügen
Beitrag von: Damian am 08 November 2018, 18:18:28
Zitat von: TWART016 am 08 November 2018, 16:29:21
Wenn ich jetzt DOELSEIF verwende, werden dann die ersten 3 Bedingungen auch noch abgefragt?

In das DOELSEIF alle 3 Bedingungen + die Zeit reinschreiben würde ich gerne vermeiden. Das wäre doppelter Code.

Wenn du den Perlmodus wählst, kannst du if-Befehle beliebig schachteln.