Hallo,
seit einigen Wochen beschäftige ich mit der FHEM-Haussteuerung. Hintergrund ist eine komfortablere Heizungssteuerung als es bisher möglich war. Erweiterungen sind geplant.
Was ich bisher installiert habe:
1 HomeMatic Konfigurations-Adapter LAN, Steuerung über Raspberry Pi 2
3 Wandthermostate HM-TC-IT-WM-W-EU (Wohnzimmer, Küche, Badezimmer)
4 Heizkörperthermostate HM-CC-RT-DN (2 im Wohnzimmer, 1x Küche, 1x Badezimmer)
1 Schaltaktor HM-LC-SW4-WM im Heizungsraum
4 Fensterkontakte HM-SEC-SC-2
Die Installation und Inbetriebnahme (peering von Wandthermostaten und Heizkörperthermostaten sowie Fensterkontakten) verlief ohne große Probleme. Jetzt stoße ich als Anfänger doch auf ein Problem.
Ich möchte die Heiztherme in Abhängigkeit der gewünschten Temperatur in jedem Raum individuell steuern. Dazu habe ich den Schaltaktor mit dem Fernschalter der Heiztherme verbunden. Schaltet der Aktor auf "on", wird die Heiztherme abgeschaltet (geht auf die eingestellte Nachtabsenkung), bei "off" schaltet sich die Heiztherme wieder an.
Ich habe mich entschieden dieses über eine Abfrage der ValvePosition der Heizkörperhermostaten zu realisieren. Es gibt sicherlich weitere Möglichkeiten, diese habe ich noch nicht ausprobiert.
+*00:01:00 { if (ReadingsVal ("Heizung_Kueche_Clima","ValvePosition", "100 %") < "5 %") { fhem ("set Thermenschalter on")}}
{ if (ReadingsVal ("Heizung_Kueche_Clima","ValvePosition", "100 %") > "5 %") { fhem ("set Thermenschalter off")}}
Das funktioniert bei einem Heizkörperthermostaten. Nun möchte ich, dass die Heiztherme erst bei ValvePosition aller Heizkörperthermostaten <5% abgeschaltet wird. Die Einbindung der anderen Heizkörperthermostaten mit perl-Code && funktioniert so leider nicht. Bin leider noch kein perl-code Fachmann.
{ if (ReadingsVal ("Heizung_Kueche_Clima","ValvePosition", "100 %") < "5 %") && {if (ReadingsVal ("Heizung_Badezimmer_Clima","ValvePosition", "100 %") < "5 %") { fhem ("set Thermenschalter on")}}}
Seit einer Woche versuche ich das hinzubekommen. Was ist falsch an dem Code?
nimm das Modul HCS
ZitatBin leider noch kein perl-code Fachmann.
Schau Dir mal DOIF an DOIF (http://fhem.de/commandref_DE.html#DOIF) , damit kannst Du Deine Problemstellung einfach lösen ohne Perlcode.
ZitatNun möchte ich, dass die Heiztherme erst bei ValvePosition aller Heizkörperthermostaten <5% abgeschaltet wird.
So etwa habe ich es bei mir gelöst, Beispiel zur Veranschaulichung
define VentilePosition DOIF
attr VentilePosition {([RTDN1_ArbZ:actuator]+[RTDN1_Bad:actuator]+[RTDN1_SZ:actuator]+[RTDN_WZ1:actuator]+[RTDN_WZ2:actuator])/5}
Damit hast Du die durchschnittliche Ventilposition.
Den Brenner steuere ich mit
BrennerOn, BrennerOff sind 2 Dummys mit denen ich die Ein- und Auschaltschwelle festlegen kann.
define Brenner DOIF ([VentilePosition] > [BrennerOn])
(<Einschaltbefehl>)
DOELSEIF ([VentilePosition] < [BrennerOff])
(<Ausschaltbefehl stehen>)
Hallo fhem-hm-knecht, Hallo Ellert,
vielen Dank für eure Antworten. Mit dem HCS-Modul habe ich mich zwar schon beschäftigt, bin dabei recht schnell an meine Verständnisgrenzen gestossen. Ich bin vorgegangen wie in http://www.fhemwiki.de/wiki/Heating_Control beschrieben.
Aber bei der Zeile:
define HCS_System HCS Vaillant
war es dann zu Ende. Es kam die Fehlermeldung
ZitatDevice Vaillant not defined. Please add this device first!
Bin mir nicht sicher, was mit dem Device Vaillant gemeint ist. Soll das der Schaltaktor sein mit dem die Heiztherme geschaltet wird?
Bei Ellert's Beispiel bin ich auch nicht so recht vorangekommen. Ich gehe mal davon aus, dass beim HM-CC-RT-DN der Clima-Channel gemeint ist. Von dort bekomme ich doch aus den Readings die ValvePosition. Bei der Eingabe:
attr VentilePosition {([Heizung_Badezimmer_Climate:ValvePosition]+[Heizung_Kueche_Climate:ValvePosition]+[Wohnzimmer_Heizung_rechts_Climate:ValvePosition]+[Wohnzimmer_Heizung_links_Climate:ValvePosition])/4}
kommt die Fehlermeldung:
ZitatVentilePosition: unknown attribute {([Heizung_Badezimmer_Climate:ValvePosition]+[Heizung_Kueche_Climate:ValvePosition]+[Wohnzimmer_Heizung_rechts_Climate:ValvePosition]+[Wohnzimmer_Heizung_links_Climate:ValvePosition])/4}
Alles noch ziemlich verwirrend :(
Gruß
Zitat von: Friese am 21 Januar 2016, 20:46:39
attr VentilePosition {([Heizung_Badezimmer_Climate:ValvePosition]+[Heizung_Kueche_Climate:ValvePosition]+[Wohnzimmer_Heizung_rechts_Climate:ValvePosition]+[Wohnzimmer_Heizung_links_Climate:ValvePosition])/4}
es muss wohl heißen:
attr VentilePosition
state {([Heizung_Badezimme...
Gruß
Damian
Zitatdefine HCS_System HCS Thermenschalter
und da du auf ventil position reagieren willst
Zitatattr HCS mode valve
stellen
ZitatvalveThresholdOff <wert>
valveThresholdOn <wert>
setzen für an und aus , und dann bist auch schon fertig
und zum nachlesen die comref
http://fhem.de/commandref.html#HCS (http://fhem.de/commandref.html#HCS)
fhem-hm-knecht schrieb:
Zitatund zum nachlesen die comref http://fhem.de/commandref.html#HCS
Vielen Dank für alle eure Hinweise. Das HCS-Modul ist sicherlich ein tolles und komplexes Modul. Als Anfänger möchte allerdings verstehen was ich mache. Ich habe es mal in fhem integriert, aber es ist erst einmal deaktiviert bis ich einen besseren Durchblick habe. Im Moment hakt es doch noch ein wenig.
Vorläufig möchte ich an dem Vorschlag von Ellert weitermachen. Ein Erfolgserlebnis habe ich damit schon. Mit:
define VentilePosition DOIF
attr VentilePosition {([Heizung_Badezimmer:actuator]+[Heizung_Kueche:actuator]+[Wohnzimmer_Heizung_rechts:actuator]+[Wohnzimmer_Heizung_links:actuator])/4}
bekomme ich den Durchschnittswert der actoren meiner HT's. Ist halt zwischen 0 und 100. Dieser Wert muss ja jetzt an den Thermenschalter mit
define Brenner DOIF ([VentilePosition] > [BrennerOn]) (set Thermenschalter on) DOELSEIF ([VentilePosition] < [BrennerOff]) (set Thermenschalter off)
übergeben werden.
Wo und wie muss ich die Werte für BrennerOn und BrennerOff eingeben damit der Schalter reagiert? Bei 0 soll der Schalter einschalten, bei >0 soll er abschalten. Stehe trotz stundenlanger Suche etwas auf dem Schlauch. Manchmal sieht man den Wald vor lauter Bäumen nicht ;)
Gruß,
Ludwig
ZitatWo und wie muss ich die Werte für BrennerOn und BrennerOff eingeben damit der Schalter reagiert?
BrennerOn und BrennerOff sind zwei Dummys. Die kannst Du mit
set BrennerOn <Wert>
setzen.
Zitat
Bei 0 soll der Schalter einschalten, bei >0 soll er abschalten.
Das verstehe ich nicht. Wenn die Ventilposition auf 0 (geschlossen) steht, dann soll der Brenner einschalten und bei der geringsten Ventilöffnung soll der Brenner abschalten. Was hat das für einen Sinn?
Ellert schrieb:
ZitatDas verstehe ich nicht. Wenn die Ventilposition auf 0 (geschlossen) steht, dann soll der Brenner einschalten und bei der geringsten Ventilöffnung soll der Brenner abschalten. Was hat das für einen Sinn?
Das klingt in der Tat etwas Missverständlich. Es soll natürlich nicht der Brenner eingeschaltet werden wenn die VentilPosition auf 0 steht, sondern der Schalter den ich an der Heiztherme angeschlossen habe soll auf "on" schalten. Damit wird nach Junkers Terminologie der sogenannte Fernschalter geschlossen und die Therme schaltet auf die eingestellte Nachtabsenkung. Sobald wieder Heizbedarf besteht, schaltet der Schalter auf "off" und die Therme schaltet sich wieder ein.
Deinen Tip:
define Brenner DOIF ([VentilePosition] > [BrennerOn]) (set Thermenschalter on) DOELSEIF ([VentilePosition] < [BrennerOff]) (set Thermenschalter off)
habe ich auf meine Bedürfnisse abgewandelt in:
define Brenner ([VentilePosition] < [HeizBedarf]) (set Schalter_Therme on) DOELSEIF ([VentilePosition] > [HeizBedarf]) (set Schalter_Therme off)
Nach 18 Std. Testlauf funktioniert es tadellos. Das ist genau das was ich wollte. Vorher war eine individuelle Heizregelung für jedes Zimmer nicht möglich. Die Therme ist zwar schon 12 Jahre alt, funktioniert aber noch sehr gut.
Jetzt frage ich mich nur noch ob ich statt der VentilPosition besser mit den drei Wandthermostaten die Schaltung (Differenz IstTemp SollTemp) mit dem delta-Wert vornehmen soll.
Vielen Dank nochmal
Ludwig