DOIF - Wert (z.B. Gardena Smart Control Timer) erneuern, wenn Bedingung erfüllt

Begonnen von Gruvol, 22 November 2017, 09:15:51

Vorheriges Thema - Nächstes Thema

Gruvol

Hallo,
ich habe folgende Herausforderung.
Ich habe das Gardena Smart System mit dem WaterControl in Betrieb.
Die Eigenheit von dem System ist, dass man den WaterControl nur für eine Laufzeit von 59 Minuten einstellen kann.
Das reicht mir jedoch nicht aus, ich benötige knapp 200 Minuten. Nun ist meiner Idee, dass ich eine DOiF Abfrage mache und wenn die Bedingung eintritt, dass der Wert auf 59 (Minuten) gesetzt wird. Jetzt habe ich mir vorgestellt, dass ich beispielsweise alle 55 Minuten die Bedingung prüfe und wenn diese immer noch zutrifft, wieder der Wert 59 geschrieben wird.
Somit soll es automatisch immer verlängert werden. Wenn jedoch eine Füllmenge erreicht ist, soll eine andere Bedingung (
DOELSEIF) den Wert auf (0) Minuten setzen und somit erzwingen, dass das WaterControl aufhört Wasser zu liefern.

Momentan habe ich folgendes umgesetzt:

([HM_Tonne:level] < 22) (set Water_Control_Tonne manualOverride 59) DOELSEIF ([HM_Tonne:level] > 90) (set Water_Control_Tonne manualOverride 0)

Ich habe mir zudem gedacht, dass es hier nicht sinnvoll scheint einen wait Timer zu machen, da sonst die Tonne evtl. voll ist aber der Timer noch nicht abgelaufen ist und nicht erneut geprüft wird.

Daher habe ich eine "Helper" DOIF gemacht:

([HM_Tonne:level] < 90 and [zisterneFill:state] eq "cmd_1") (set Water_Control_Tonne manualOverride 59) DOELSEIF ([HM_Tonne:level] > 90)

Diese schaut nach dem aktuellen state und der Füllmenge und je nach Wert ist die Bedingung erfüllt oder nicht.

Dort habe ich ebenfalls ein do always gemacht und den wait auf 3000 (50 Minuten) gesetzt. Zu Testzwecken, ob das  Zusammenspiel funktioniert, habe ich die Werte auf 20 (Sekunden) gesetzt.

Jedoch macht er bei der zweiten Doif den Timer, führt es aus und dann passiert nichts mehr.

Ich hoffe, ich konnte einigermaßen mein Problem verständlich erklären.
Denke ich in diesem Fall zu kompliziert und es gibt eine deutlich einfachere Methode oder bin ich auf dem richtigen Weg und kriege mit eurer Hilfe das Thema rund.

Gruß Gruvol

Morgennebel

Du wartest, bis die Tonne unter "22" gefallen ist und frickelst dann die Pumpe für n*59 Minuten an, richtig?

Warum nicht einfach die Pumpe aktivieren, wenn der Füllstand der Tonne unter die Wassermenge fällt, die die Pumpe in 59 Minuten liefern kann?

Also z.B.

([HM_Tonne:level] < 50) (set Water_Control_Tonne manualOverride 59)

Dann ist die Tonne vielleicht bei 75. Und Du wartest, bis der Pegelstand von 50 wieder erreicht wurde.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Gruvol

Hi,
vielen Dank für den Tipp.
Aber ich will eigentlich ungern einen Workaround da machen. Werde noch bissle forschen, ob ich da eine praktische Lösung finde.

Danke.

Gruvol