[gelöst-Danke]Wie soll ich das am saubersten lösen

Begonnen von Helmi55, 01 Mai 2017, 17:43:25

Vorheriges Thema - Nächstes Thema

Helmi55

Guten Abend.
ich habe bei meiner Poolsteuerung folgende 3 DOIFs im Einsatz.
1) hiermit wird die KernPoolPumpenumwälzung gesteuert - Poolmaster ist ein Dummy (Badebetrieb Sommer-Winter)

define Ti_PoolPumpe DOIF ([11:00-19:00] and [PoolMaster] eq "on") (set PoolPumpe on) DOELSE (set PoolPumpe off)
attr Ti_PoolPumpe do always
attr Ti_PoolPumpe room Poolsteuerung

2) Das Herzstück die Solarsteuerung

define di_Solar1 DOIF ([11:00-19:00] and [PoolMaster] eq "on" and [PoolPumpe] eq "on" and ([SolarDiff]>[Hysterese:state])) (set SolarPumpe on) DOELSE (set SolarPumpe off)
attr di_Solar1 room Poolsteuerung
attr di_Solar1 wait 0:240

und 3) die Solarsteuerung außerhalb der KernZeit

define di_Solar2 DOIF ([PoolMaster] eq "on" and [PoolPumpe] eq "off" and ([SolarDiff]>[Hysterese:state])) (set PoolPumpe on, set SolarPumpe on) DOELSE (set SolarPumpe off, set PoolPumpe off))
attr di_Solar2 room Poolsteuerung
attr di_Solar2 wait 0:300


Jetzt zum Problem: es kann natürlich vorkommen dass außerhalb der Kernzeit die Hysterese um 10:58 aktiv wird, d.h. ungefähr um 11:05
schaltet mir das 3) DOIF die Anlage ab. AUS.....

Nun meine Frage wie kann und soll ich das am schönsten und zweckmäßigsten lösen?
Kann ich im 3. DOIF noch ein DOELSEIF anhängen und sagen um 10:59:30 Set PoolPumpe off, Set SolarPumpe off?
Oder soll ich einfach mit einem at um 10:59:30 beide Pumpen abschalten

Kann das so funktionieren oder ist das Murks und es gibt was eleganteres?

Danke Euch
LG
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Helmi55

Ich habe jetzt mal das DOIF2 so abgeändert

([07:30:00-10:59:30] and [PoolMaster] eq "on" and [PoolPumpe] eq "off" and ([SolarDiff]>[Hysterese:state])) (set PoolPumpe on, set SolarPumpe on) DOELSE (set SolarPumpe off, set PoolPumpe off))


Mal sehen wie sich das die nächsten Tage verhält
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Helmi55

Irgendwie habe ich einen Denkfehler bei dem Ganzen!
Auch wenn ich im Solar2 DOIF die Zeit bis 10:59:30 begrenzen, habe ich ja immer noch den wait  fehl mit drinnen.
Den brauche ich aber für den Normalbetrieb damit die Pumpen nicht sofort abschalten und eine Nachlaufzeit haben.
Jetzt kann die Hysterese um 10:58 wirksam werden und durch das wait bin ich wieder nach 11 Uhr mit dem ausschalten.
Um 11 Uhr schaltet aber das Ti_PoolPumpe ein und würde aber durch den waitBefehl vom Solar2 z.B. um 11:02 wieder ausgeschaltet werden

Gibts da bitte einen Lösungsansatz - die Sonneneinstrahlung für die Hysterie kann ich ja Gottseidank nicht beeinflussen......

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Muschelpuster

#3
Zitat von: Helmi55 am 01 Mai 2017, 17:43:25Kann ich im 3. DOIF noch ein DOELSEIF anhängen und sagen um 10:59:30 Set PoolPumpe off, Set SolarPumpe off?
Natürlich, da spricht nichts gegen. Es sollten nicht zu viele Bedingungen triggern (mit vorangestelltem '?' deaktivieren)!
Ich versuche so etwas nach Möglichkeit in 1 DOIF zu packen, dann bricht eine neue Situation den WAIT-Timer ab. Macht zwar keinen absolut fixen Wait-Timer, aber das scheint mich ja auch nicht überwichtig. Wenn doch, dann muss die Einschaltzeit in ein Dummy geschrieben werden und dieser Wert beim Ausschalten berücksichtigt werden.

Mal so ein grober Entwurf ohne Gewähr:define di_Pool DOIF
   ([11:00-19:00] and [?PoolMaster] eq "on") (set PoolPumpe on)
DOELSEIF
   ([19:00-10:59] and [?SolarPumpe:state] eq "off") (set PoolPumpe off)
DOELSEIF
   ([?11:00-19:00] and [?PoolMaster] eq "on" and [?PoolPumpe] eq "on" and [SolarDiff]>[Hysterese:state]) (set SolarPumpe on)
DOELSEIF
   ([?19:00-10:59] and [?PoolMaster] eq "on" and [PoolPumpe] eq "off" and [SolarDiff]>[Hysterese:state]) (set PoolPumpe on, set SolarPumpe on)
DOELSEIF
   ([?19:00-10:59] and [?SolarPumpe:state] eq "on" and ([SolarDiff]<[Hysterese:state]) (set SolarPumpe off, set PoolPumpe off)
DOELSEIF
   ([?11:00-19:00] and [?SolarPumpe:state] eq "on" (and ([SolarDiff]<[Hysterese:state]) (set PoolPumpe off)


Ich würde ggf. 2 Hysterese-Werte schaffen (1x aus, 1x ein), dann verdient das Ding auch seinen Namen. Oder im DOIF einen Hysteresewert abziehen oder addieren (je nachdem an welcher Stelle).

zusammengefasste Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Helmi55

Hallo Niels
vorerst herzlichen Dank dass du dich meiner Sache annimmst.
Schaut wesentlich übersichtlicher aus als mein gebastelt - aber ja es hat ja fast funktioniert.
Wenn ich dich richtig verstanden habe, müsste aber dann in der letzten Zeile der letzte Befehl lauten "Set SolarPumpe off"

Jetzt noch eine Frage dazu, ich könnte doch eigentlich das "Hysterese off" weglassen und auch
ein
([?11:00-19:00] and [?PoolMaster] eq "on" and [?PoolPumpe] eq "on" and ([SolarDiff]>[Hysterese:state]) (set SolarPumpe on-for-timer 300)
setzen.
Dann würde ich die off Schaltungen nicht benötigen und würde auch kein "wait" brauchen.
Ein Wasserdurchlauf benötigt zirka 5 Minuten - ja kann ich auch auf 7 Min setzen?
Müsste so doch auch funktionieren? Oder wird der on-for-timer Befehl gelöscht wenn Hysterese = oder< - NEIN oder?

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Per

Kann dir zwar gerade nicht zur "Hysterese" helfen, aber zwei Anmerkungen:
1. Zur Übersicht solltest du nicht ein Device von verschiedenen DOIFs schalten lassen, welche auf die gleichen Eingaben (Zeit, Sensoren...) reagieren.
2.

define Ti_PoolPumpe DOIF ([11:00-19:00] and [PoolMaster] eq "on") (set PoolPumpe on) DOELSE (set PoolPumpe off)
attr Ti_PoolPumpe do always



define di_Solar1 DOIF ([11:00-19:00] and [PoolMaster] eq "on" and [PoolPumpe] eq "on" and ([SolarDiff]>[Hysterese:state])) (set SolarPumpe on) DOELSE (set SolarPumpe off)
attr di_Solar1 wait 0:240


Da aber PoolPumpe = ([11:00-19:00] and [PoolMaster] eq "on"), kannst du im zweiten DOIF direkt nach ([PoolPumpe] eq "on" and ([SolarDiff]>[Hysterese:state])) fragen.

Und Nils hat wohl zuviele "(", die er los werden muss ;). Zumindest hat er dir 3 untergejubelt, die da nicht hingehören.

OK, doch noch was zur Hysterese, bzw. der Laufzeit:
Wenn du die Startzeit einfach auf [19:00-10:54] reduzierst, bekommst du mit wait 300 zumindest schon mal keine Überschneidungen.

Helmi55

danke Per
das mit Endzeit 10:54 ist logisch und leuchtet mir ein - da habe ich den Wald vor lauter Bäumen anscheinend nicht mehr gesehen
Danke
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Muschelpuster

Zitat von: Per am 04 Mai 2017, 17:15:07Und Nils hat wohl zuviele "(", die er los werden muss ;). Zumindest hat er dir 3 untergejubelt, die da nicht hingehören.
Wollte ja nur mal sehen, ob Ihr auch aufpasst  8)
Typisch Copy&Paste  ;)

zusammenkopierte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

pc1246

Zitat von: Per am 04 Mai 2017, 17:15:07
1. Zur Übersicht solltest du nicht ein Device von verschiedenen DOIFs schalten lassen, welche auf die gleichen Eingaben (Zeit, Sensoren...) reagieren.
Hallo
Das oben gesagte kann ich nur unterstreichen! Man sollte einen Aktor immer nur von einem DOIF schalten lassen. Du fummelst Dir sonst nen Wolf und suchst eventuell im falschen DOIF! In der Steuerungstechnik macht man das auch so, da man sonst nicht weiss wer gewinnt!
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

Helmi55

Hallo und sorry für die späte Rückmeldung (musste nur zuerst Tapezierer, Maler und Tischler aus dem Haus bekommen 8) 8))
Ich habe das jetzt so zusammengefasst und werde es in der Produktion so versuchen umzusetzen:

([11:00-19:00] and [?PoolMaster] eq "on") (set PoolPumpe on)
DOELSEIF
([?11:00-19:00] and [?PoolMaster] eq "on" and [?PoolPumpe] eq "on" and [SolarDiff]>[Hysterese:state]) (set SolarPumpe on)
DOELSEIF
([?11:00-19:00] and [?SolarPumpe:state] eq "on" and [SolarDiff]<[Hysterese:state]) (set SolarPumpe off)
DOELSEIF
([?19:00-10:54] and [?PoolMaster] eq "on" and [PoolPumpe] eq "off" and [SolarDiff]>[Hysterese:state]) (set PoolPumpe on, set SolarPumpe on)
DOELSEIF
([?19:00-10:54] and [?SolarPumpe:state] eq "on" and [SolarDiff]<[Hysterese:state]) (set SolarPumpe off, set PoolPumpe off)
DOELSEIF
([19:00-10:54] and [?SolarPumpe:state]eq "off") (set PoolPumpe off)


Dann habe ich für die off Befehle folgendes wait eingebaut 0:300:0:300

So sollte es funktionieren oder? Werde mir noch überlegen, wie angeregt, eine Hysterese on und off anzulegen.

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Per

Zitat von: Helmi55 am 09 Mai 2017, 17:21:47Werde mir noch überlegen, wie angeregt, eine Hysterese on und off anzulegen.
Heizsysteme mit viel Wasser (Pool) sind in der Regel träge genug, keine Hysterese zu benötigen. Verwunderlich war eher die Verwendung dieses Begriffes ohne passende Funktion.

Helmi55

Hallo Per
ich meine damit die Schaltdifferenz? Ich kann festlegen ob bei 5, 7 oder 15 Grad Differenz zwischen dem Poolwasser und der Solarmatte die
SolarPumpe geschaltet wird.
Das ist doch die Hysterie oder? Will jetzt nicht OT werden - mir ist nur wichtig dass die Anlage richtig schaltet damit der Pool warm wird  ;D ;D ;D
Liebe Grüße
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Per

Zitat von: Helmi55 am 09 Mai 2017, 18:13:43Das ist doch die Hysterie oder?
Nee, die Hysterese ist der Unterschied zwischen Ein- und Ausschaltpunkt. Bsp. Heizung: bei 20°C wird eingeschaltet, bei 22°C wieder aus. Sonst läuft die nur ganz kurz und ineffektiv. Da so ein Pool aber eine recht hohe Trägheit hat (Nachheizen), wirst du es nicht brauchen. Zumindest nicht am Anfang, später vllt. zum Optimieren.

Damian

Zitat von: Per am 09 Mai 2017, 21:58:52
Nee, die Hysterese ist der Unterschied zwischen Ein- und Ausschaltpunkt. Bsp. Heizung: bei 20°C wird eingeschaltet, bei 22°C wieder aus. Sonst läuft die nur ganz kurz und ineffektiv. Da so ein Pool aber eine recht hohe Trägheit hat (Nachheizen), wirst du es nicht brauchen. Zumindest nicht am Anfang, später vllt. zum Optimieren.

und gegen Schwankungen kann man wait einsetzen. Da kann man auf Hysterese fast schon verzichten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Helmi55

Hallo
Vielleicht habe ich mich falsch ausgedrückt?
Ich habe z.b. 5 Grad eingestellt. D. H. Wenn der Pool 20 hat und am Dach sind es 25 schaltet die Solarpumpe ein und läuft bis am Dach auch wieder 20 sind Plus der wait Zeit (damit ist etwas mehr Zeit)

@Damian. Wie meinst du das bitte mit dem wait

Bin für alle Verbesserungen zu haben. Vielleicht einfacher zu lösen und ich denke zu kompliziert oder unwissend

Danke euch für die Unterstützung

Gruß Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/