Hallo
wie kann ich es umsetzen das die heizungs Zirkulationspumpe nur läuft wenn auch ein Heizkörperventil ( Valve ) geöffnet ist.
Die heizungspumpe hängt jetzt an einem schaltmodul ( CUL_HM_HM_LC_SW2_FM_1FD39B_Sw_01_Heizungspumpe )
müsste doch irgendwie mit Notify oder so gehen ?
Gruß Josty
Hallo,
Zitatmüsste doch irgendwie mit Notify oder so gehen ?
Jep. Dazu gibt es auch einen Wiki-Beitrag.
Heizungssteuerung_einfach.
Grüße
Hallo
Ja Dank dir hab es gefunden.
Hab es versucht einzubauen da ich HM komponennten benutze ist es nicht so einfach umzubauen für mich.
hab es so eingebaut
Zitat
define n_heizung notify n_heizung {\
my $brauche_waerme=0;;\
my $ventile_im_leerlauf=0;;\
my $heizung_status=$fs20_c2b{ReadingsVal("CUL_HM_HM_LC_SW2_FM_1FD39B_Sw_01_Heizungspumpe","state","off")};;\
my @@fhts=devspec2array("TYPE=CUL_HM");;\
foreach(@@fhts) {\
my $ventil=ReadingsVal($_, "actuator", "101%");;\
$ventil=(substr($ventil, 0, (length($ventil)-1)));;\
if ($ventil > 50) {\
$brauche_waerme=1\
}\
if ($ventil < 20) {\
$ventile_im_leerlauf++\
}\
}\
if ($brauche_waerme != 0) {\
Log(3,"Wärme benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;\
fhem("set heizung on") if ($heizung_status == 00)\
}
else {\
if ($ventile_im_leerlauf == @@fhts) {\
Log(3,"Keine Wärme (mehr) benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;\
fhem("set heater off") if ($heizung_status == 11)\
}
else {\
Log(3,"Heizbedarf: " . $ventile_im_leerlauf . " of " . @@fhts . " actuators are idle.")\
}\
}\
}
dann bringt er diese fehlermeldung
ZitatUnknown command foreach(@@fhts), try help. Unknown command if, try help. Unknown command else, try help. Unknown command else, try help.
Gruß Josty
Wäre für dich nicht das HCS Modul ein Möglichkeit.
Hallo,
Zitat(@@fhts),
Diese Meldung ist logisch.
Die HM-Geräte sind eben keine FHTs 8)
Entweder die Schleife umbauen das die einzelnen Device abgefragt werden - diese am besten entsprechend umbennen (Heizung_WZ, Heizung_GZ etc.)
dann muss "nur" nach Heizung.* gesucht werden oder
ZitatWäre für dich nicht das HCS Modul ein Möglichkeit.
das verwenden ;)
Grüße
Hallo
hab es jetzt so umgebaut
Zitatdefine n_heizung notify n_heizung {\
my $brauche_waerme=0;;\
my $ventile_im_leerlauf=0;;\
my $heizung_status=$fs20_c2b{ReadingsVal("heizung.*","state","off")};;\
my @@Heizung.*=devspec2array("TYPE=CUL_HM");;\
foreach(@@Heizung.*) {\
my $ventil=ReadingsVal($_, "valve", "101%");;\
$ventil=(substr($ventil, 0, (length($ventil)-1)));;\
if ($ventil > 50) {\
$brauche_waerme=1\
}\
if ($ventil < 20) {\
$ventile_im_leerlauf++\
}\
}\
if ($brauche_waerme != 0) {\
Log(3,"Wärme benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;\
fhem("set heizung on") if ($heizung_status == 00)\
}
else {\
if ($ventile_im_leerlauf == @@Heizung.*) {\
Log(3,"Keine Wärme (mehr) benoetigt. Vorheriger Heizungsstatus: " . $heizung_status);;\
fhem("set heater off") if ($heizung_status == 11)\
}
else {\
Log(3,"Heizbedarf: " . $ventile_im_leerlauf . " of " . @@fhts . " actuators are idle.")\
}\
}\
}
es kommt aber immer noch ne fehlermeldung:
wäre über jede Hilfe Dankbar da ich da irgendwie noch nicht durchsteige......
ZitatUnknown command foreach(@@Heizung.*), try help. Unknown command if, try help. Unknown command else, try help. Unknown command else, try help.
im Anhang meine Komplette Fhem.cfg
Danke
Gruß Josty
Hallo,
ok. Schleife umbauen war wohl doch keine so gute Idee von mir.
Versuch doch mal das HCS-Modul.
Grüße
japp hcs ist genau das passende ...
define meine_pumpe hcs mein_schalter
attr meine_pumpe mode valve
attr meine_pumpe valveThresholdOn 30
attr meine_pumpe valveThresholdOn 20
das wars schon
schaltet die pumpe ein wenn mindestens ein Ventil > 30 % und ab wenn ALLE Ventile <20 %
Hallo
Ja danke HSC war erstmal die Lösung.
will natürlich auch das andere Script gern verstehen Lernen......
sonst wird man ja noch öfters anecken, hab ja erst vor Kurzem Haus gekauft und möchte nach und nach umstellen auf Homematic.
Hab es jetzt so umgesetzt:
# --------- Heizungs umwälzpumpe an bei einem geöffnetem ventil--------
# variable Schalter geschaltet werden soll
define meine_pumpe HCS CUL_HM_HM_LC_SW2_FM_1FD39B_Sw_01_Heizungspumpe
attr meine_pumpe deviceCmdOff off
attr meine_pumpe deviceCmdOn on
attr meine_pumpe event-on-change-reading state,devicestate,eco,overdrive
attr meine_pumpe idleperiod 5
attr meine_pumpe interval 5
attr meine_pumpe mode valve
attr meine_pumpe thermostatThresholdOff 0.5
attr meine_pumpe thermostatThresholdOn 0.5
attr meine_pumpe valveThresholdOff 30
attr meine_pumpe valveThresholdOn 10
Danke
Gruß Josty
Hallo Josty,
ich denke in Diener Konfiguration ist ein Denkfehler.
"attr meine_pumpe valveThresholdOff 30
attr meine_pumpe valveThresholdOn 10"
bedeutet, dass bei der Ventilstellung 10% die Pumpe eingeschaltet wird und bei Ventilstellung 30% die Pumpe ausgeschaltet wird.
Diese Konstellation wird dazu führen dass Deine Pumpe nie ausgeschaltet wird, denn der Beginn der Heizphase wird ja dazu führen, dass das Ventil sich mehr und mehr schließt und somit die 30% Ventilstellung zum Abschalten nicht erreichen wird.
Von daher meine Empfehlung:
"attr meine_pumpe valveThresholdOn 30
attr meine_pumpe valveThresholdOff 10"
Meine Werte liegen übrigens zur Zeit bei:
"attr meine_pumpe valveThresholdOn 8
attr meine_pumpe valveThresholdOff 3"
Viel Erfolg
Josef
Hallo Josty,
Zitat von: jostmario am 03 November 2013, 19:01:27... will natürlich auch das andere Script gern verstehen Lernen...
Im Wiki steht seit kurzem ein Beispiel für "Heizungskontrolle einfach" mit HomeMatic-Ventilen ;)
Edit: Link => http://www.fhemwiki.de/wiki/Heizungskontrolle_Einfach_mit_HomeMatic_HM-CC-VD (http://www.fhemwiki.de/wiki/Heizungskontrolle_Einfach_mit_HomeMatic_HM-CC-VD)
Sind zwar (noch) nicht für HM-CC-RT-DN (habe erst einen), sondern
nur für HM-CC-VD, aber evtl. hilft das beim "verstehen lernen" ja weiter ;)
Das "Problem" lag vor allem bei "devspec2array", aber auch beim sinnvollen zweiten "ReadingsVal".
Gruß
Thomas
P.S. Der nächste Schritt wird sein, diese Definitionen in die 99-myUtils auszulagern