FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jostmario am 03 November 2013, 12:29:15

Titel: Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: jostmario am 03 November 2013, 12:29:15
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
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: Puschel74 am 03 November 2013, 12:30:47
Hallo,

Zitatmüsste doch irgendwie mit Notify oder so gehen ?

Jep. Dazu gibt es auch einen Wiki-Beitrag.
Heizungssteuerung_einfach.

Grüße
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: jostmario am 03 November 2013, 12:56:10
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
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: stromer-12 am 03 November 2013, 13:06:08
Wäre für dich nicht das HCS Modul ein Möglichkeit.
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: Puschel74 am 03 November 2013, 13:19:50
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
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: jostmario am 03 November 2013, 13:34:04
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
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: Puschel74 am 03 November 2013, 13:51:48
Hallo,

ok. Schleife umbauen war wohl doch keine so gute Idee von mir.
Versuch doch mal das HCS-Modul.

Grüße
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: Icebear am 03 November 2013, 14:33:33
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 %
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: jostmario am 03 November 2013, 19:01:27
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
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: HJosefL am 06 November 2013, 11:14:40
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
Titel: Antw:Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist
Beitrag von: Rohan am 07 November 2013, 22:06:54
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