FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: SnakeZZ am 14 Dezember 2018, 21:01:00

Titel: Ich bin zu blöd....
Beitrag von: SnakeZZ am 14 Dezember 2018, 21:01:00
Hallo zusammen,

ich kämpfe etwas mit einer eigentlich simplen Anforderung, die ich gerne mit DOIF umsetzen würde.
Meine Wetterstation liefert eine Aussentemperatur. Solange es unter 1°C Aussentemperatur hat, würde ich gerne einmal pro Stunde einen ZWave Aktor für 15 Minuten einschalten.

Mein DOIF sieht so aus:


([Wetterstation:temperature] < 1 ) (set pushmsg msg 'Frostwächter: Heize für 15 min', set draussen.Elektrokasten.Sw05.01 on-for-timer 900)


Ich hab dann noch ein
attr do resetwait

sowie ein
attr wait 3600

hinzugenommen.

Es will so aber nicht. Was mach ich falsch?

Beste Grüsse, SnakeZZ
Titel: Antw:Ich bin zu blöd....
Beitrag von: Otto123 am 14 Dezember 2018, 22:14:57
Hi,

hast Du sowas versucht -> https://commandref.fhem.de/commandref_DE.html#DOIF_Zeitangaben_nach_Zeitraster_ausgerichtet

trifft das nicht Deinen Anwendungsfall? Kombiniert mit Deiner Bedingung ...

Gruß Otto
Titel: Antw:Ich bin zu blöd....
Beitrag von: SnakeZZ am 20 Dezember 2018, 19:21:38
Vielen Dank für die Hinweise!

Ich habs jetzt wie folgt gelöst:


([+01:00] and [Wetterstation:temperature] < 1 ) (set pushmsg msg 'Frostwächter: Heize für 15 min', set draussen.Elektrokasten.Sw05.01 on-for-timer 900)


in Kombination

mit einem

attr do always

Damit mach ich jede Stunde die Heizung für 15 Minuten an, sobald die Aussentemperatur unter 1°C liegt.

Gruss,

SnakeZZ
Titel: Antw:Ich bin zu blöd....
Beitrag von: Deckoffizier am 20 Dezember 2018, 20:47:40
Hallo,

ZitatEs will so aber nicht. Was mach ich falsch?

bin auch nur DOIF Novice....
aber könnte es daran gelegen haben aus der commandref

Zitat
Sollen Verzögerungen innerhalb von Befehlsfolgen stattfinden, so müssen diese Kommandos in eigene Klammern gesetzt werden, das Modul arbeitet dann mit Zwischenzuständen.

Beispiel: Bei einer Befehlssequenz, hier: (set lamp1 on, set lamp2 on), soll vor dem Schalten von lamp2 eine Verzögerung von einer Sekunde stattfinden. Die Befehlsfolge muss zunächst mit Hilfe von Klammerblöcke in eine Befehlssequenz aufgespalten werden: (set lamp1 on)(set lamp2 on). Nun kann mit dem wait-Attribut nicht nur für den Beginn der Sequenz, sondern für jeden Klammerblock eine Verzögerung, getrennt mit Komma, definieren werden, hier also: wait 0,1. Damit wird lamp1 sofort, lamp2 eine Sekunde danach geschaltet. Die Verzögerungszeit bezieht sich immer auf den vorherigen Befehl.

Gruß
Hans-Jürgen
Titel: Antw:Ich bin zu blöd....
Beitrag von: Per am 21 Dezember 2018, 11:36:23
Zitat von: Deckoffizier am 20 Dezember 2018, 20:47:40aber könnte es daran gelegen haben
Nein.

@SnakeZZ
ABER: wenn es aus irgend einem Grund zur vollen Stunde nicht kalt genug ist oder der Frost zu stark ist, kommt dein DOIF an seine Grenzen.
Und:
Zitat von: SnakeZZIch bin zu blöd....
ist zumindest kein sinnvoller Betreff. "Stündliche Ausführung" oder so wäre treffender.
Titel: Antw:Ich bin zu blöd....
Beitrag von: Damian am 21 Dezember 2018, 12:19:42
DOIF ([Wetterstation:temperature] < 1 ) (set pushmsg msg 'Frostwächter: Heize für 15 min', set draussen.Elektrokasten.Sw05.01 on-for-timer 900)
attr repeatcmd 3600


ohne do always