FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: satprofi am 30 August 2016, 19:02:01

Titel: Befehl nur 1x ausführen.
Beitrag von: satprofi am 30 August 2016, 19:02:01
Hallo.
Möchte eine Luftpumpe beim ersten Ladevorgang pro Tag laufen lassen. Wie Stelle ich es an, dass beim weiteren Ladevorgang, weil genug Power vorhanden, die Pumpe nicht mehr startet?

send from OP3

Titel: Antw:Befehl nur 1x ausführen.
Beitrag von: schka17 am 30 August 2016, 19:11:35
Ich habe auch ein paar solcher Anwendungsfälle, ich habs folgendermassen gelöst, das erste Ereigniss triggert ein notify dass die gewünschte Funktion auslöst, bei mir z.b. Eine AlarmSMS, danach wird das notify deaktiviert und alle nachfolgende Ereignisse nicht mehr gemeldet. Über ein at z.b. Um 8:00, aktiviere ich das notify wieder und beim ersten Ereignis wird das notify wieder getriggert. Man kann das aber genauso auch über watchdog erreichen, gibt sicher auch noch andere Wege, aber diese beiden verwende ich.


Sent from my iPad using Tapatalk
Titel: Antw:Befehl nur 1x ausführen.
Beitrag von: Ellert am 30 August 2016, 20:18:45
Mit DOIF etwa so:
([Ladevorgang] eq "on" and ![$SELF:erster]) (setreading $SELF erster 1, set Luftpumpe on, <weitere Befehle>)
DOELSEIF ([Ladevorgang] eq "on" and [$SELF:erster]) (<Befehle>)
DOELSEIF ([00:00]) (setreading $SELF erster 0)


und ggf. das Attribut do auf always setzen.

Ungetestet.
Titel: Antw:Befehl nur 1x ausführen.
Beitrag von: satprofi am 30 August 2016, 20:33:57
Aha,danke. Aber was bedeutet $SELF. ?

send from OP3

Titel: Antw:Befehl nur 1x ausführen.
Beitrag von: kumue am 30 August 2016, 20:39:07
commandref DOIF
Zitat$SELF
    für den Gerätenamen des DOIF
Titel: Antw:Befehl nur 1x ausführen.
Beitrag von: satprofi am 31 August 2016, 18:15:49
Aha.

Wäre es so richtig?

DOIF ([Ueberschuss:state:d] > 1000 and ![$Batterieladung:erster]) (set Batterielader_aus off,set Luftpumpe on,setreading $Batterieladung erster 1 )
DOELSEIF ([Ueberschuss:state:d] <1 and [$Batterieladung:erster]) (set Batterielader_aus on)
DOELSEIF ([00:00]) (setreading $Batterieladung erster 0)
[code]

Muss ich ein Reading erster anlegen?

Titel: Antw:Befehl nur 1x ausführen.
Beitrag von: Ellert am 31 August 2016, 20:58:45
Wenn es nicht funktioniert, könntest Du $SELF verwenden.