Hallo,
ich lasse die Rasenbewässerung über ESPEASY steuern. Ich setzte einen Timer über 15, 30,45 oder 60 Min über Fhem. Nach ablauf des Timer wird die Bewässerung abgeschaltet. Ich möchte nun die Restlaufzeit des Timers an Fhem senden. Das bekomme ich leider nicht hin und brauche etwas Hilfe.
Wie kann ich die Restlaufzeit von Timer2 in ein Values bekommen ?
Rules:
// Relais bei Tastendruck
on Ventil#Taste do
if [Ventil#Relay]=1
gpio,12,0
else
gpio,12,1
endif
endon
// Sicherheitstimer setzten
on Ventil#Relay do
if [Ventil#Relay]=1
timerSet,1,3600
else
timerSet,1,0
endif
endon
// LED bei Relais on, Timer4 0 bei Relais off
on Ventil#Relay do
if [Ventil#Relay]=1
gpio,13,0
else
gpio,13,1
TaskValueSet 4,1,0
endif
endon
// Relais schalten toggle
on toggle do
if [Ventil#Relay] =1
gpio,12,0
else
gpio,12,1
endif
endon
// Relais schalten 15min
on timer15 do
if [Ventil#Relay] =1
gpio,12,0
timerSet,2,0
TaskValueSet 4,1,0
else
gpio,12,1
timerSet,2,900
TaskValueSet 4,1,15
endif
endon
// Relais schalten 30min
on timer30 do
if [Ventil#Relay] =1
gpio,12,0
timerSet,2,0
else
gpio,12,1
timerSet,2,1800
TaskValueSet 4,1,30
endif
endon
// Relais schalten 45min
on timer45 do
if [Ventil#Relay] =1
gpio,12,0
timerSet,2,0
else
gpio,12,1
timerSet,2,2700
TaskValueSet 4,1,45
endif
endon
// Relais schalten 60min
on timer60 do
if [Ventil#Relay] =1
gpio,12,0
timerSet,2,0
else
gpio,12,1
timerSet,2,3600
TaskValueSet 4,1,60
endif
endon
// Timer Ende Ralais off
on Rules#Timer=1 do
gpio,12,0
endon
on Rules#Timer=2 do
gpio,12,0
endon
Hallo hanswerner1,
ich habe einen zusätzlichen 60 Sekunden Timer, der die Zeit runter zählt und in einen Dummy und in eine interne Variable reinschreibt. Solange der "äußere" Timer noch läuft, wird der 60 Sekunden Timer neu gestellt. Der Dummy wird an FHEM mit MQTT übertragen.
Hier mein 60 Sekunden Timer. Vielleicht hilft dir das.
On Rules#Timer=8 Do
Let,1,[VAR#1]-60
if [VAR#1]<=0
gpio, 16,0
gpio, 12,0
gpio, 2,1
else
TaskValueSet,9,1,[VAR#1]
TimerSet,8,60
endif
EndOn
Gruß,
sidi
Hallo sidi,
interessant, Ich würde den Timer8 für 60 sec starten wenn GPIO 12 auf 1 geht. Nach Ablauf der 60sec eine Variable um 1 erhöhen und den Timer8 wieder für 60 sec starten, solange gpio 12 auf 1 ist. Ist gpio 12 auf 0 setzte ich den timer8 nicht neu. Somit würde in der Variable die Minuten gezählt solange gpio 12 auf 1 ist.
Meinst Du das so ?
Gruß HW1
Hallo hanswerner1,
nur dass ich die Sekunden runterzähle, da ich die verbeibende Zeit in TableUI anzeige.
Hier mal die Rule für meinen Bewässerungskreis 1. Dort wird ein Magnetventil und die Brunnenpumpe gesteuert.
Es wird wird der Timer 2 für den Bewässerungskreis und der Timer 8 für den Countdown gestartet.
Im Timer 8 wird die Zeit vom Bewässerungskreis bei jedem Durchlauf um 60 Sekunden reduziert und der Timer 8 wieder neu gestartet, bis die Zeit vom Bewässerungskreis abgelaufen ist
on Bewaesserung#Hunter1_mqtt=1 do
gpio, 16,1
gpio, 2,0
timerset,2,2700
timerset, 8,60
Let,1,2700
TaskValueSet,9,1,[VAR#1]
endon
on Bewaesserung#Hunter1_mqtt=0 do
if [Bewaesserung#Pumpe_mqtt]=0
gpio, 16,0
endif
gpio, 2,1
timerset, 8,0
Let,1,0
TaskValueSet,9,1,[VAR#1]
endon
On Rules#Timer=8 Do
Let,1,[VAR#1]-60
if [VAR#1]<=0
gpio, 16,0
gpio, 12,0
gpio, 2,1
else
TaskValueSet,9,1,[VAR#1]
TimerSet,8,60
endif
EndOn
Gruß,
sidi
Hallo Sidi,
habe es jetzt folgendermaßen hinbekommen:
Beispiel für 15 min, habe das auch noch für 30,45 und 60 min
// Relais schalten 15min
on timer15 do
if [Ventil#Relay] =1
gpio,12,0
timerSet,2,0
timerSet,8,0
TaskValueSet,4,1,0
else
gpio,12,1
timerSet,2,900
TaskValueSet,4,1,15
Let,1,15
TaskValueSet,4,2,[VAR#1]
timerSet,8,60
endif
endon
hier wird dann runtergezählt.
// Timer8 Var1 Restzeit runter zaehlen
on Rules#Timer=8 do
if [Ventil#Relay] =1
Let,1,[VAR#1]-1
TaskValueSet,4,2,[VAR#1]
TimerSet,8,60
else
Let,1,0
TaskValueSet,4,2,[VAR#1]
endif
EndOn
Klappt soweit, vielen Dank für deine Hilfe.