Hallo zusammen,
ich brauche mal ein paar Ideen/Tipps/Brainstorming
IST:
- PV-Anlage ist vorhanden und der Eigenverbrauch soll natürlich maximiert werden. Akuteller Ertag über S0-Zähler bekannt, aber leider nicht wieviel davon gerade verkauft wird
- Wasserbett mit zwei Matratzen und dann natürlich auch zwei Heizungen (~150 Watt pro Heizung)
- ESP 8266 mit zwei DS18B20 und zwei Relais liegt funktionsfähig auf dem Schreibtisch
Soll
Die Soll-Temperatur soll über das Thermostat Widget (FTUI) eingestellt werden können. Die Heizung soll mit einer Hysterese von 0,2°C heizen und natürlich nicht beide gleichzeit und wenn zu wenig Strom produziert wird soll erst ab 0,5°C unter Solltemperatur bis 0,2°C unter solltemperatur aufgezeit werden.
bin jetzt dabei das irgendwie in ein DOIF zu stecken
##Wasserbett1 normal Heizen
[08:00-09:00] or [10:00-11:00] or ..... [18:00-19:00] and [Wasserbett1:temperatur] < [Wasserbett1:soll] and [Leistung_PV] > 1000 (set Heizung_Wasserbett1 on)) ##wie die Hysterese einbauen
##Wasserbett2 normal Heizen
[09:00-10:00] or [11:00-12:00] or ..... [19:00-20:00] and [Wasserbett1:temperatur] < [Wasserbett1:soll] and [Leistung_PV] > 1000 (set Heizung_Wasserbett2 on))
##Wasserbett1 wird zu kalt
[Wasserbett1:temperatur] < [Wasserbett1:soll] --> Heizung1 an wie die 0,5 Grad niedriger einbauen
##Wasserbett2 wird zu kalt
[Wasserbett1:temperatur] < [Wasserbett1:soll] --> Heizugn2 an wie die 0,5 Grad niedriger einbauen
ich weiß die Syntax oben ist so nicht richtig, habe es der Übersichtlichkeit halber verkürzt, mir geht es in erster Linie um Anregungen, wie ich es vielleicht schöner und einfacher lösen könnte.
Vorallem den Zeitwechesel der zwei Heizungen.
Gruß Carsten
Zitatwie die 0,5 Grad niedriger einbauen
[Wasserbett1:temperatur] < ([Wasserbett1:soll]-0.5)
Beim Rest habe ich nicht ganz verstanden, was die Frage ist...
Danke erstmal für die schnelle spontane Hilfe, aber bei der Lösung passiert ja folgendes.
Solltemperatur 29°C
Heizung geht bei 28,49°C an und bei 28,51°C wieder aus.
Sie soll aber bei <28,5°C heizen bis 28,8°C, damit sie nicht ständig an und aus geht.
Das gleiche wenn ich genug Strom produzieren soll die Heizung bei einer Solltemperatur von 29°C von 28,8 bis 29,2°C heizen.
Ist mein Problem so vielleicht verständlicher ausgedrückt?
Gruß Carsten
ZitatHeizung geht bei 28,49°C an und bei 28,51°C wieder aus.
Und wie geht sie aus, wenn im DOIF kein "set off" zu sehen ist?
DOELSEIF
(set beide Heizungen off)
hatte ich der Übersichtlichkeit halber weggelassen
Mein Ansatz war vor Jahren etwas anders. Nimm ein DoIf (oder notify) und sage ihm nur Temp > Soll -> Relay off , Temp < Soll -> Relay on.
Temp = Soll bleibt als Hysterese und bekommt keine Definition.
Im zweiten Schritt fängst du mit deinen ganzen Bedingungen an , PV Ertrag , Uhrzeit , Urlaub, was auch immer und hier änderst du nur noch Soll
Zitat von: Carsten1981 am 31 Mai 2019, 17:48:26
DOELSEIF
(set beide Heizungen off)
hatte ich der Übersichtlichkeit halber weggelassen
DOELSEIF was? Bedingung? Da kannst Du schon deine Hysterese einbauen. Du hast ein Beispiel hier: https://fhem.de/commandref_DE.html#DOIF_Weitere_Anwendungsbeispiele
klingt gut...
ich baue mir vier Dummys die ich über ein weiteres DOIF schalten lassen.
[Wasserbett1:temperatur] < ([Wasserbett1:soll] -0.2] (Set Dummy_Wasserbett1_heizen_normal on)
DOELSEIF
[Wasserbett1:temperatur] > ([Wasserbett1:soll] +0.2] (Set Dummy_Wasserbett1_heizen_normal off)
DOELSEIF
[Wasserbett1:temperatur] < ([Wasserbett1:soll] -0.5] (Set Dummy_Wasserbett1_heizen_kalt on)
DOELSEIF
[Wasserbett1:temperatur] > ([Wasserbett1:soll] -0.2] (Set Dummy_Wasserbett1_heizen_kalt off)
und das gleiche dann noch für die zweite Matratze....
Irgendwie stellst du ja fest, dass genug Strom da ist. Dieser Wert (ja = hohe, nein = niedrige Zieltemperatur) wird als "Variable" in diesem DOIF als Zielvorgabe (+/- Hysterese) verwendet.
-> DOIF oder DOIF_Reading
Wenn immer nur abwechselnd ein Bett geheizt wird, reicht dafür ein DOIF, ansonsten sind zwei sich bei Bedarf (wenig Sonne) ggseitig verriegelnde DOIF leichter zu händeln.
Ich habe mich über das Wochende mal noch ein paar weitere Gedanken gemacht und versucht die Ideen irgendwie in einen funktionierenden Code zu bekommen
(
[ESPEasy_D1_mini_Wasserbett_Carsten:Temperature] < ([Wasserbett_soll_Carsten:state]-0.1) and
[Dummy_Helligkeit] eq "on" and
[ESPEasy_D1_mini_Wasserbett_Heizung_Ela:State] eq "off"
)
(set ESPEasy_D1_mini_Wasserbett_Heizung_Carsten on)
DOELSEIF
([ESPEasy_D1_mini_Wasserbett_Carsten:Temperature] > ([Wasserbett_soll_Carsten:state]+0.1))
(set ESPEasy_D1_mini_Wasserbett_Heizung_Carsten off)
DOELSEIF
(
[ESPEasy_D1_mini_Wasserbett_Ela:Temperature] < ([Wasserbett_soll_Ela:state]-0.1) and
[Dummy_Helligkeit] eq "on" and
[ESPEasy_D1_mini_Wasserbett_Heizung_Carsten:State] eq "off"
)
(set ESPEasy_D1_mini_Wasserbett_Heizung_Ela on)
DOELSEIF
([ESPEasy_D1_mini_Wasserbett_Ela:Temperature] > ([Wasserbett_soll_Ela:state]+0.1))
(set ESPEasy_D1_mini_Wasserbett_Heizung_Ela off)
DOELSEIF
(
[ESPEasy_D1_mini_Wasserbett_Carsten:Temperature] < ([Wasserbett_soll_Carsten:state]-0.5) and
[Dummy_Helligkeit] eq "off"
)
(set ESPEasy_D1_mini_Wasserbett_Heizung_Carsten on)
DOELSEIF
([ESPEasy_D1_mini_Wasserbett_Carsten:Temperature] > ([Wasserbett_soll_Carsten:state]-0.1))
(set ESPEasy_D1_mini_Wasserbett_Heizung_Carsten off)
DOELSEIF
(
[ESPEasy_D1_mini_Wasserbett_Ela:Temperature] < ([Wasserbett_soll_Ela:state]-0.5) and
[Dummy_Helligkeit] eq "off"
)
(set ESPEasy_D1_mini_Wasserbett_Heizung_Ela on)
DOELSEIF
([ESPEasy_D1_mini_Wasserbett_Ela:Temperature] > ([Wasserbett_soll_Ela:state]-0.1))
(set ESPEasy_D1_mini_Wasserbett_Heizung_Ela off)
Der Dummy_Helligkeit wird noch durch die PV-Leistung ersetzt. Es scheint zu funktionieren das die beiden Heizungen sich gegenseitig sperren wenn es hell ist. Sollte Nachts oder bei zu wenig PV-Leistung die Temperatur zu weit fallen, wird auf jeden Fall geheizt, es erfolgt auch keine gegenseitiges sperren.
Wenn hier jemand noch einen Fehler sieht, nehme ich ihn gerne auf.
gruß Carsten