FHEM Forum

FHEM => Automatisierung => Thema gestartet von: NehCoy am 10 August 2018, 07:50:30

Titel: Hilfe bei der optimalen Umsetzung
Beitrag von: NehCoy am 10 August 2018, 07:50:30
Hallo!

Ich benötige mal bitte Tipps, wie man mit FHEM folgendes "am besten"/"sinnvollsten"/"einfachsten" automatisiert.

Folgendes habe ich vor:
Ich habe einige Aktoren für die Bewässerung (für unterschiedliche Bewässerungsläufe + Pumpe). Ca. 30 Sekunden bevor ein Ventil zur Bewässerung geöffnet werden soll, soll die Pumpe eingeschaltet werden, damit Wasserdruck aufgebaut werden kann (Momentan mache ich das noch manuell). Die Pumpe soll wieder ausgeschaltet werden, wenn kein Kreislauf mehr eingeschaltet ist.

Mein Lösungsweg wäre hätte  folgender:
Ich lege für jeden Bewässerungskreislauf ein Dummy-Device, mit dem Namensschema dy.Bewaesserung.X.Y an.
Mit einem notify auf dy.Bewaesserung. bekomme ich mit, wann was eingeschaltet und ausgeschaltet wird.
Entsprechend kann ich bei einem "on" die Pumpe einschalten und mit "at +00:00:30"  30 Sekunden später das Ventil öffnen. Beim Ausschalten soll die Pumpe ebenfalls nicht sofort ausschalten. Beim Rasensprenger muss z.B. zwischen Kreisläufen gewechselt werden.

Mein Problem
Das sind eigentlich 3 Dinge, bei deinen ich ad-hoc keine Lösung habe:
1. Wie mache ich am besten das Mapping, von dy.Bewaesserung.* auf den eigentlichen dazugehörigen Aktorausgang?
2. Wie prüfe ich am besten, dass alle Ventile seit mindestens 10 Sekunden geschlossen sind, bevor ich die Pumpe wieder abschalte?
3. Kleines "Problem": Wenn die Pumpe schon an ist brauche ich bei öffnen eines Ventils nicht noch mal 30 Sekunden warten.

Danke für eure Hilfe und viele Grüße
NehCoy

Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: volschin am 10 August 2018, 07:57:16
Erste Idee: Structure auf die Module und einen Watchdog darauf.
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: CoolTux am 10 August 2018, 08:11:10
Fang doch einfach an mit den Dummys und der Struktur. Da kann man ja nichts falsch machen.
Wie sind denn Deine Ventile und Deine Pumpe aktuell in FHEM dar gestellt?
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: CBSnake am 10 August 2018, 08:13:45
Moin,

structure auf die Ventile, über die Attribute einstellen: alle zu = off, eines auf = on

ich bin doif fan :-) nimm die dummy raus, setze dafür ein reading im aktor z.b. setreading aktor xy einschaltwunsch on

zu 1.
triggern auf einschaltwunsch on und obige Structure abfragen, ist die auf on, ist eines der Ventil auf und die Pumpe ist nicht nur an sondern lief vorher auch schon 30 sec, dann kannst mit $DEVICE direkt auf des auslösende Ventil zugreifen.
im zweiten DOIF zweig wird auch auf einschaltwunsch on getriggert aber hier ist structure off dann pumpe an und at +00:00:30 $DEVICE on

zu 2.

watchdog oder doif auf die Structure

zu 3.

wäre im doif oben ja schon erledigt



grüße

Achim
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: volschin am 10 August 2018, 08:25:18
Die Structure attributierst Du so, dass sie auf ON geht, sobald ein Kreislauf ON ist. Der Watchdog überwacht das OFF und wenn nach 30s nicht wieder ein ON kommt, wird die Pumpe abgeschaltet.
Der Startteil könnte etwas komplexer sein, jenachdem, wie wirklich deine Anforderung ist. Im notify auf den dummy abfragen, ob die Pumpe schon läuft, wenn nein, anschalten und entweder ein ein at oder ein pause einbauen. Jetzt wird es komplexer, wenn Du konkurrierende Schaltungen abfangen musst. Kommt nach 10s die nächste Anschaltung rein, läuft die Pumpe ja bereits, aber Druck ist erst in 20s aufgebaut.
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: volschin am 10 August 2018, 08:41:55
Das Problem der Konkurrenz lässt sich mglw. auch einfach lösen, indem die Structure nicht auf die Dummies, sondern die Ventile gelegt wird. Diese wird neben der Pumpe im Start-notify abgefragt und wenn OFF um 30s verzögert.
Dazu sollte aber die Nachlaufzeit etwas länger als 30s sein, sonst bekommst du evtl. ein Timingproblem. Also Nachlauf z.B 35s einstellen.
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: NehCoy am 25 August 2018, 13:50:59
Hallo zusammen!

Erst noch mal danke für eure Hilfestellung und sorry für meine späte Rückmeldung.
Leider finde ich kaum Zeit mich dem Thema FHEM zu widmen.

Folgendes konnte ich bereits erfolgreich umsetzen:
clientstate_behavior = relative
clientstate_priority = on|On|on off|Off|off

Soweit, so gut.

Für mich noch nicht gelöst ist das verzögerte Einschalten der Ventile, also 30 Sekunden nach der Pumpe. Mit dem aktivieren des Ventils wird es ja auch in Wirklichkeit geöffnet.

@volschin:
ZitatDiese wird neben der Pumpe im Start-notify abgefragt und wenn OFF um 30s verzögert.
Deinen Vorschlag verstehe ich leider (noch) nicht. Könntest du das bitte näher erläutern.


Anderfalls müsste ich doch Dummies dafür verwenden. Dann stellt sich wieder die Frage nach Punkt 1
ZitatWie mache ich am besten das Mapping, von dy.Bewaesserung.* auf den eigentlichen dazugehörigen Aktorausgang?
Der Automaisierungmechanismus wäre dann:

Vielen Dank und viele Grüße
NehCoy
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: alru am 25 August 2018, 14:15:16
Moin,

das Timing zur Aktivierung der Ventile habe ich bei mir so gelöst:
Die Pumpe (genau genommen ein Hauswasserwerk mit Brunnenwasser) ist über ein HM-ES-PMSw1-Pl angeschlossen.
Bevor der eigentliche Bewässerungszyklus startet (also alle Ventile noch zu sind), wird die Pumpe eingeschaltet. Sie baut dann innerhalb von ca. 30 Sek den Betriebsdruck auf und schaltet sich dann ab.
Nach dieser Zeit wird die Leistungsaufnahme geprüft. Die sollte dann =0 W sein. Wenn das eintritt, startet der Bewässerungszyklus (Pumpe an, Ventile auf).
Wenn die Pumpe bei der Prüfung noch läuft, stimmt was nicht (Wassersäule weggesackt, Leck, ...)  und es wird alles ausgeschaltet.
Umgesetzt wird das mit einem DOIF
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: NehCoy am 25 August 2018, 14:49:41
Hallo alru!

Dein Problem klingt zwar ähnlich, scheint aber doch anders zu sein.
Du startest deinen Bewässerungszyklus und gehst dann eine Art Statemachine durch, oder?
Ich bestimme ja selsbt, welches Ventil geöffnet werden soll. Nur soll dieses eben erst 30 Sekunden nachdem die Pumpe eingeschaltet wurde geöffnet werden ...

Grüße
NehCoy
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: alru am 25 August 2018, 15:04:21
Hi NehCoy,

ja, es ist nicht der gleiche Prozess wie bei dir. Allerdings könnte man die Druckprüfung vor jeder Ventilöffnung vorschalten. Die einzelnen Bewässerungskreise werden bei mir auch manuell gestartet. Die Entscheidung darüber, was, wann und wie lange mit Wasser versorgt wird, will sich meine Frau nicht nehmen lassen.
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: NehCoy am 25 August 2018, 15:23:47
Hallo!

ZitatAllerdings könnte man die Druckprüfung vor jeder Ventilöffnung vorschalten.
Die Druckprüfung könnte bei mir einfach nur "Pumpe an seit 30 Sekunden an?" lauten.
Aber genau diese 30 Sekunden sind ja das Problem ...

Grüße
NehCoy
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: alru am 25 August 2018, 15:40:13
OK, dazu könnte man beim Einschalten der Pumpe die aktuelle Zeit+30 Sek in ein reading schreiben. Dieser Zeitstempel wiederum öffnet dann dein Ventil.
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: NehCoy am 25 August 2018, 16:48:06
Es soll aber das Ventil geöffnet werden, dass ich eben zuvor ausgewählt habe ...
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: alru am 25 August 2018, 17:29:36
Den Ablauf stelle ich mir so vor:
Einen ähnlichen Ablauf hab ich für meine Bewässerung ebenfalls umgesetzt
Titel: Antw:Hilfe bei der optimalen Umsetzung
Beitrag von: NehCoy am 06 September 2018, 19:41:06
Hallo!

Habe es nun wie folgt gelöst:
Für jedes Ventil ein Dummy angelegt.
Alle Dummy in eine Struktur aufgenommen, die dann "on" ist, sobald mindestens ein Element "on" ist.
Ein Notify auf diese Struktur zum direkten Einschalten der Pumpe, wenn diese On ist.
Ein Watchdog auf diese Struktur der die Pumpe nach 35 Sekunden wieder ausschalten, wenn deren Zustand Off ist.
Ein Notify auf jedes Dummy, der bei "On" das eigentliche Ventil durch einen at-Befehl 30 Sekunden später einschaltet und bei Off sofort aus.

Grüße
Neh Coy