FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: abc2006 am 21 Mai 2013, 11:10:14

Titel: Heizungskontrolle_Einfach
Beitrag von: abc2006 am 21 Mai 2013, 11:10:14
Moinmoin,

ich habe von hier http://www.fhemwiki.de/wiki/Heizungskontrolle_Einfach (//www.fhemwiki.de/wiki/Heizungskontrolle_Einfach) den Code kopiert.
Darin findet sich folgende Zeile:

fhem("set K101_THERME on") if ($heizung_status == 00)\

Ich habe noch nie eine If-abfrage gesehen (was nichts heissen muss), bei der zuerst der Code und dann die Bedingung kommt ..
Leider funktioniert der Code nicht wie er soll, sonst hätte ich mich ja vielleicht sogar damit zufrieden gegeben ..

Wenn eines meiner Ventile über 20% ist, setzt er die K101 auf on.
Wenn aber alle unter 20% sind, setzt er K101 nicht auf off.

Ich würde das ändern, aber wollte nochmal fragen, ob es nicht vielleicht doch einen Sinn hat :-)

Danke und lg
stephan
Titel: Aw: Heizungskontrolle_Einfach
Beitrag von: MisterEltako am 21 Mai 2013, 11:25:20
Sinn erschliesst sich mir auch nicht, bringt mich immer durcheinander. Es soll wohl einfacher, kürzer und übersichtlicher Sein. ;o)

ich würde z.B. alle 30min Test auf Ventilstellung prüfen (aber auch abwandelbar auf dein Proiblem):

define Testung der Ventile at +00:30:00 {
my @@fhts=devspec2array("TYPE=FHT");
 foreach(@@fhts) {
   my $ventil=ReadingsVal($_, "actuator", "101%");
   $ventil=(substr($ventil, 0, (length($ventil)-1)));
 }
 if ((Value("K101_THERME") eq "off") && ($ventil > 20)) {
     fhem("set K101_THERME on");
 }elsif ((Value("K101_THERME") eq "on") && ($ventil < 20)) {
     fhem("set K101_THERME off");
 }
}

MfG, MisterEltako.
Titel: Aw: Heizungskontrolle_Einfach
Beitrag von: abc2006 am 21 Mai 2013, 12:23:22
Ja, sowas macht auf jeden Fall mehr Sinn und ist einfacher ...
Oder ist jemand anderer Meinung ?

lg
stephan
Titel: Aw: Heizungskontrolle_Einfach
Beitrag von: borsti67 am 21 Mai 2013, 14:32:25
ob's vorne oder hinten steht ist perl egal. ;)

Du hast nur die EINSCHALT-Zeile zitiert, die aber Deinen Worten nach funktioniert; viel interessanter ist also die AUSSCHALT-Zeile...?
In meinem Codebeispiel sind Log-Zeilen drum herum, an denen Du sehen müsstest, wie weit der Code kommt bzw. was er tut...?
Leider sind im WIKI nicht mehr alle Einträge aktuell, so ist da z.B. an einer Stelle noch (bzw. wieder) "set heater off" statt "set heizung off". Hast Du alle Einträge - incl der richtigen Groß-/Kleinschreibung) auf Deine Devices angepasst?
Titel: Aw: Heizungskontrolle_Einfach
Beitrag von: abc2006 am 21 Mai 2013, 15:57:28
Hey,

die Ausschaltzeile ist identisch, nur dass halt Status 11 und off drin stehen/standen.
Bei mir läufts jetzt mittlerweile so:


define n_heizung notify n_heizung {\
   my $brauche_waerme=0;;\
   my $ventile_im_leerlauf=0;;\
   my @@fhts=devspec2array("TYPE=FHT");;\
   my $thermenstatus=Value("K101_THERME");;\
     foreach(@@fhts) {\
       my $ventil=ReadingsVal($_, "actuator", "101%");;\
       Log(5,"HZG:" . $_ . ":" . $ventil);;\
       $ventil=(substr($ventil, 0, (length($ventil)-1)));;\
       if ($ventil > 50) {\
         $brauche_waerme=1\
       }\
       if ($ventil < 20) {\
         $ventile_im_leerlauf++\
       }\
     }\
  if ($brauche_waerme != 0) {\
    Log(5,"HZG: Waerme benoetigt. Thermenstatus: " . $thermenstatus);;\
if (Value("K101_THERME") eq "off") {\
          Log(3,"HZG: Waerme benötigt. Schalte Therme ein");;\
 fhem("set K101_THERME on");;\
} else {\
Log(5,"HZG: Therme ist bereits eingeschaltet");;\
}\
  } elsif ($ventile_im_leerlauf == @@fhts) {\
          Log(5,"HZG: Keine Waerme benoetigt. Thermenstatus: " . $thermenstatus);;\
if (Value("K101_THERME") eq "on") {\
          Log(3,"HZG: Keine Waerme benoetigt. Schalte Therme aus");;\
          fhem("set K101_THERME off");;\
} else {\
Log(5,"HZG: Therme ist bereits ausgeschaltet");;\
}\
  }\
}



Das macht nach bisherigen Tests das, was ich will und produziert auch noch aussagekräftige Fehlermeldungen bzw. Logeinträge.

lg
stephan
Titel: Aw: Heizungskontrolle_Einfach
Beitrag von: MisterEltako am 21 Mai 2013, 16:36:19
Wenn es dauerhaft funktioniert, dann bitte ins Wiki stellen.

MfG, MisterEltako.
Titel: Aw: Heizungskontrolle_Einfach
Beitrag von: abc2006 am 22 Mai 2013, 12:20:22
Gerne - wer schaltet mich frei?

Hatte schon Kontakt mit Jörg - er hat z.Zt. keine Berechtigung ...

lg
stephan

PS: deins ersetzen oder dazu tun ?