[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

Damian

Zitat von: Helmi55 am 09 Mai 2017, 22:08:40
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

Da musst du dir zunächst die Frage Stellen wozu ist eine Hysterese da.

Sie ist da, um ständiges Hin- und Herschalten zu verhindern. Nun schwankt oft die entnommene Temperatur, wenn du ein wait setzt, dann verhinderst du ein  "vorzeitiges" Schalten und wartest ab, bis sich das Schwanken "stabilisiert" hat.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Muschelpuster

Zitat von: Helmi55 am 09 Mai 2017, 22:08:40@Damian. Wie meinst du das bitte mit dem wait
Das wait-Attribut hast Du ja in Deinem Ausgangspost auch bereits verwendet. Damian meinte lediglich, dass Du damit auch die Aufgabe der Hysterese (ständiges Hin- und Herschalten) verhindern soll. Wenn Du nun auf eine Bedingung verzögert reagierst, kommt das ja fast auf das Gleiche raus.
Der Begriff Hysterese ist in diesem Kontext einfach verwirrend, weil Du eine Temperaturdifferenz damit beschreibst. Die Hysterese wäre jetzt, wenn Du den Schaltpunkt mit 5° festlegst und die Hysterese mit 2°. Dann wäre z.B. der Einschaltpunkt 7° und der Ausschaltpunkt 5°. Oder 5/3 oder sehr genau 6/4. Wie auch immer, die Hysterese beschreibt in der Regelungstechnik die Differenz zwischen Ein- und Ausschaltpunkt. Viel (zu viel) zu dem Begriff kann man bei Wikipedia lesen: https://de.wikipedia.org/wiki/Hysterese

abwartende 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 guten Morgen
Angekommen - Danke. Dann werde ich das auf [TempDiff] umbenennen. Dann ist niemand mehr verwirrt
Und ich verwende keine falschen Begriffe    8)
Noch eine letzte Frage zu meinen nun gesetzten wait Befehlen.
Passen die mit 0:300:0:300. damit jeweils der off Befehl verlängert wird (sollte ja auf das 2. und 4. DOELSEIF reagieren) d.h. Die Pumpe dreht nicht sofort nach wieder erreichen der TempDiff ab sondern läuft 5 Min nach
Nochmals Danke für eure Hilfe
Vielleicht kommt die Badesaison heuer doch noch. Heute Nacht waren wir auf 1 Grad.   Brrrrrr
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/

Helmi55

Irgendwie bekomm ich das mit dem wait nicht auf die Reihe


([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)


in diesem Fall muss doch wait 0:300:0:300 den 2ten und 4ten DOELSEIF beeinflussen oder (ware in diesen Fällen


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


Ich konnte nur beobachten, dass nach Erreichen der Differenz (sorry hab das Hysterie noch nicht umbenannt!!!)
das EINSCHALTEN der Pumpen verzögert war, nicht aber das Abschalten

Danke nochmals für eure 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/

Per

Zitat von: Helmi55 am 11 Mai 2017, 10:49:20in diesem Fall muss doch wait 0:300:0:300 den 2ten und 4ten DOELSEIF beeinflussen
Nein, den 1. und 3. Du hast den DOIF-Fall vergessen.
1.: DOIF
2.: 1. DOELSEIF
3.: 2. DOELSEIF
...
n.: n-1. DOELSEIF
n+1: DOELSE

Helmi55

Danke
Werde es sofort umstellen 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

Mehrere, extra geklammerte Befehle in einem DO(ELSE)IF werden im Wait mit Komma getrennt. Hier das Beispiel aus der Commandref:Beispieldefinition bei mehreren DO-Blöcken mit Befehlssequenzen:

DOIF (Bedingung1)
(set ...) ## erster Befehl der ersten Sequenz soll um eine Sekunde verzögert werden
(set ...) ## zweiter Befehl der ersten Sequenz soll um 2 Sekunden nach dem ersten Befehl verzögert werden
DOELSEIF (Bedingung2)
(set ...) ## erster Befehl der zweiten Sequenz soll um 3 Sekunden verzögert werden
(set ...) ## zweiter Befehl der zweiten Sequenz soll um 0,5 Sekunden nach dem ersten Befehl verzögert werden

attr <DOIF-module> wait 1,2:3,0.5


nachgeschlagene 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
irgendwie stehe ich mit diesem Monster DOIF auf Kriegsfuß.
Gestern am Abend hat die anlage um 19 Uhr nicht abgeschaltet.
Jetzt habe ich noch das DOELSE am Anfang hinzugefügt.
Jetzt um 9:33 ist die SolarDiff >7 (bei 12 Grad) und die anlage schaltet nicht ein???
Hier nochmals das aktuelle DOIF (ja, noch immer mit Hysterese sorry - das wird, wenn es funktioniert, geändert.
Meine einzelnen DOIFs haben funktioniert??


([11:00-19:00] and [?PoolMaster] eq "on") (set PoolPumpe on) DOELSE (set PoolPumpe off) 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 ([?08:30-10:54] and [?PoolMaster] eq "on" and [PoolPumpe] eq "off" and [SolarDiff]>[Hysterese:state]) (set PoolPumpe on, set SolarPumpe on) DOELSEIF ([?08:30-10:54] and [?SolarPumpe:state] eq "on" and [SolarDiff]<[Hysterese:state]) (set SolarPumpe off, set PoolPumpe off) DOELSEIF ([08:30-10:54] and [?SolarPumpe:state]eq "off") (set PoolPumpe off)


Bitte um eure Unterstützung - DANKE
Ein genervter und gestreßter 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/

pc1246

#23
Moin
Nach DOELSE ist glaube ich Ende!
Gruss Christoph

Edith: Warum machst Du nicht einfach mal Zeilenumbrueche rein, dann kann man es viel besser lesen!
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

pc1246

Moin
Also, warum meinst Du das die Anlage um 19:00 Ausschalten soll? So wie Dein DOIF aussieht kann das passieren, muss aber nicht!
([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 ([?08:30-10:54] and [?PoolMaster] eq "on" and [PoolPumpe] eq "off" and [SolarDiff]>[Hysterese:state]) (set PoolPumpe on, set SolarPumpe on)
DOELSEIF ([?08:30-10:54] and [?SolarPumpe:state] eq "on" and [SolarDiff]<[Hysterese:state]) (set SolarPumpe off, set PoolPumpe off)
DOELSEIF ([08:30-10:54] and [?SolarPumpe:state]eq "off") (set PoolPumpe off)
DOELSE (set PoolPumpe off)

Ich habe Dir das mal umgestellt, dann sieht man es besser! Und mit dem DOELSE schaltest Du jetzt die Pumpe immer aus, wenn keine der anderen Bedingungen erfuellt sind!
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

Per

Zitat von: Helmi55 am 12 Mai 2017, 09:35:34Jetzt habe ich noch das DOELSE am Anfang hinzugefügt.
1. Warum überhaupt?
2. Kommt DOELSE wie jeder anderen Programmiersprache am Ende (if - elseif - ... - elseif - else) und ist optional. Nur DOIF (=if) ist Pflicht. Und die Reihenfolge.

pc1246

Zitat von: Per am 12 Mai 2017, 11:38:27
1. Warum überhaupt?
Weil die Pumpe nicht ausging!
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 pc1246 - Danke. Werde das so umsetzen
Hallo Per - ja genau weil die Pumpe nicht abgeschaltet hat und ich das leichtsinnigerweise (ich bin kein Programmierer - habe meine Programmer in der Firma  immer über GUI bearbeitet - leider hab ich das programmieren nie gelernt -Schade) von meinem einen DOIF übernommen habe.
Ja jetzt ist es mir klar - da kam ja auch nix mehr dahinter.
Ich glaub trotzdem dass ich min meinem Alter noch lernfähig bin -dauert halt etwas und muss immer draufgestossen werden

Trotzdem Danke für eure Hilfe
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/

pc1246

Hallo Helmut
Ich habe Dir keine Loesung fuer Dein Problem gegeben! Ich habe lediglich Dein DOIF lesbar gemacht, und das DOELSE ans Ende gestellt.
Deine Probleme sind immer noch vorhanden!
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

Per

Hab mir nochmal deinen Ausgang angeschaut. Irgendwie ergibt das wenig Sinn.
1. (Poolpumpe und Zeitsteuerung) und 2. (Solarpumpe und Zeitsteuerung) OK, aber 3. macht beides ohne Zeiteinschränkung, klar, dass das "reingrätscht".

Vllt. ist es für den Anfang leichter, du beschäftigst dich erstmal damit, di_Solar2 passende Einschränkungen zu geben (Zeit o.ä.), denn von
Zitat von: Helmi55 am 01 Mai 2017, 17:43:25außerhalb der KernZeit
weiss das DOIF ja nix.
Außerdem bist du von [19:00-10:59] auf [08:30-10:54] umgestiegen. Die 6 Minuten vor 11 ist klar, aber wo ist der Rest hin?