FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Dersch am 01 August 2016, 10:13:05

Titel: cmd innerhalb eines DOIF nur 1x am Tag durchführen
Beitrag von: Dersch am 01 August 2016, 10:13:05
Hallo,

ich habe für unser Kinderzimmer einen Rolladen der zu einer festen Uhrzeit runtergeht. Dann aber wieder etwas öffnet wenn das Fenster offen ist, ein Tageslicht Dummy auf Dunkel steht und die Zimmertemperatur über 20Grad ist. Bevor es wieder hell wird soll der Rolladen wieder runter gehen. (Wichtig im Sommer)


([KzRolladenRechts] ne "down" and [18:50]) (set KzRolladenRechts down)
DOELSEIF
([KzFensterRechts] eq "open" and [Tageslicht] eq "dunkel" and [KzTempFeuchte:temperature] > 20) (set KzRolladenRechts 50)
DOELSEIF
([KzRolladenRechts] ne "down" and [4:00]) (set KzRolladenRechts down)


dazu habe ich folgendes Attribut gesetzt:
wait 0:3600:0
Da der Dummy "Tageslicht" schon auf Dunkel steht wenn es nur leicht dämmert wurde ein 1 stündiger Wait für cmd2 gesetzt da es dann schon eher Stockduster ist.

Nun habe ich aber folgendes beobachtet heute morgen:

Der Rolladen war auf 50, also geöffenet und das Log zeigt folgendes:


2016.08.01 04:00:00 3: CUL_HM set KzRolladenRechts off
2016.08.01 05:00:32 3: CUL_HM set KzRolladenRechts 50


Was ja auch eigentlich klar ist. Da nach cmd3 ein trigger kommt der wiederrum cmd2 zur Aktion bewegt was dann durch das wait genau eine Std später greift.
Die cmd2 Bedingungen sind ja 4 Uhr Nachts noch gültig (zumindest momentan) 

Daher meine Frage:
Wie löse ich am elegantesten (evtl durch ein Attr), dass cmd2 nur einmal in der Nacht bzw innerhalb von 24std durchgeführt wird?

Aus der Commandref werde ich nicht ganz schlau. Dachte erst an repeatsame 0:1:0 aber das ist nicht das was ich will glaube ich.
Da ich etwas unsicher bin was das Richtige ist und der Einsatzort nicht der richtige ist um viele Tests zu machen (Die Kinder sind dann sehr früh morgens wach) wäre ich für Input dankbar (meine Frau auch) :)

Grüße
Dirk
Titel: Antw:cmd innerhalb eines DOIF nur 1x am Tag durchführen
Beitrag von: igami am 01 August 2016, 11:31:02
Eventuell macht Zeitintervalle, Readings und Stati ohne Trigger (http://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Stati_ohne_Trigger) ja das was du möchtest.
Titel: Antw:cmd innerhalb eines DOIF nur 1x am Tag durchführen
Beitrag von: Dersch am 01 August 2016, 11:38:22
Ah, du meinst damit ich den cmd zeitlich beschränke? Das kann funktionieren! Danke schon mal das teste ich mal :D

Jetzt muss ich nur noch verstehen wie... Der Zeitraum liegt ja zwischen 2 Tagen.

Das ist meine erste Idee
([KzRolladenRechts] ne "down" and [18:50]) (set KzRolladenRechts down)
DOELSEIF
([?4:00-19:00] and [KzFensterRechts] eq "open" and [Tageslicht] eq "dunkel" and [KzTempFeuchte:temperature] > 20) (set KzRolladenRechts 50)
DOELSEIF
([KzRolladenRechts] ne "down" and [4:00]) (set KzRolladenRechts down)


So wie ich es grade verstehe wird dann nur zwischen 4 und 19 Uhr abgefragt nicht aber ausgeführt. Verstehe ich das richtig?

Edit:
Nach etwas überlegen habe ich es nun so. Ob es klappt weiß ich noch nicht.

([KzRolladenRechts] ne "down" and [18:50]) (set KzRolladenRechts down)
DOELSEIF
([19:00-3:50] and [KzFensterRechts] eq "open" and [Tageslicht] eq "dunkel" and [KzTempFeuchte:temperature] > 20) (set KzRolladenRechts 50)
DOELSEIF
([KzRolladenRechts] ne "down" and [4:00]) (set KzRolladenRechts down)


Da ich nun folgende Timer Readings habe bin ich optimistisch

timer_1_c1 01.08.2016 18:50:00
timer_2_c2 01.08.2016 19:00:00
timer_3_c2 02.08.2016 03:50:00
timer_4_c3 02.08.2016 04:00:00