Heizungs umwälzpumpe nur an wenn ein ventil geöffnet ist

Begonnen von jostmario, 03 November 2013, 12:29:15

Vorheriges Thema - Nächstes Thema

jostmario

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
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

Puschel74

Hallo,

Zitatmüsste doch irgendwie mit Notify oder so gehen ?

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

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

jostmario

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
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

stromer-12

Wäre für dich nicht das HCS Modul ein Möglichkeit.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

jostmario

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
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

Puschel74

Hallo,

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

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Icebear

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 %
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

jostmario

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
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

HJosefL

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

Rohan

#10
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

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
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor