FHEM Forum

FHEM => Automatisierung => Thema gestartet von: marc_do am 13 Januar 2016, 16:58:40

Titel: Heizungssteuerung
Beitrag von: marc_do am 13 Januar 2016, 16:58:40
Hallo zusammen,
vor einigen Wochen habe ich mir mit Hilfe des WIKIs (http://www.fhemwiki.de/wiki/Heizungskontrolle_Einfach)
folgendes zusammengestrickt:

define n_Therme notify n_Therme {\
   my $brauche_waerme=0;;\
   my $ventile_im_leerlauf=0;;\
   my $Therme_status=ReadingsVal("Therme","state","off");;\
   my @@fhts=devspec2array("TYPE=FHT");;\
   foreach(@@fhts) {\
      my $ventil=ReadingsVal($_, "actuator", "101%");;\
      $ventil=(substr($ventil, 0, (length($ventil)-1)));;\
                Log(3, $ventil . "  " . $_ );;\
      if ($ventil > 40) {\
        $brauche_waerme=1\
      }\
      if ($ventil < 25) {\
        $ventile_im_leerlauf++\
      }\
     }\
   if ($brauche_waerme != 0) {\
    Log(3,"Wärme benoetigt. Vorheriger Thermesstatus: " . $Therme_status);;\
    fhem("set Therme on") if ($Therme_status eq "off")\
   } else {\
    if ($ventile_im_leerlauf == @@fhts) {\
      Log(3,"Keine Wärme (mehr) benoetigt. Vorheriger Thermesstatus: " . $Therme_status);;\
      fhem("set Therme off") if ($Therme_status eq "on")\
    } else {\
      Log(3,"Heizbedarf: " . $ventile_im_leerlauf . " von " . @@fhts . " Ventile geschlossen.")\
    }\
  }\
}

define a_Therme at +*00:05:00 trigger n_Therme


Da ich zu der Zeit keinen passenden Schaltaktor hatte, der die Therme schaltet, habe ich es ein paar Tage laufen lassen und mir die Ergebnisse im Log angeguckt. Ein paar Tage später hab ich es dann deaktiviert - funktionierte ja...
Jetzt, ein paar Wochen später, habe ich die Therme mit einem passenden Aktor bestückt und das Ganze wieder aktiviert, mit folgendem Ergebnis:

2016.01.13 16:45:12 1: PERL WARNING: Bareword found where operator expected at (eval 30) line 5, near "@@fhts"
2016.01.13 16:45:12 3: eval: my $TYPE='notify';my $SELF='n_Therme';my $EVENT='';my $NAME='n_Therme';{
   
2016.01.13 16:45:12 1: PERL WARNING:    (Missing operator before fhts?)
2016.01.13 16:45:12 1: PERL WARNING: Bareword found where operator expected at (eval 30) line 6, near "@@fhts"
2016.01.13 16:45:12 3: eval: my $TYPE='notify';my $SELF='n_Therme';my $EVENT='';my $NAME='n_Therme';{
   
2016.01.13 16:45:12 1: PERL WARNING: "my" variable $ventil masks earlier declaration in same scope at (eval 30) line 8.
2016.01.13 16:45:12 3: eval: my $TYPE='notify';my $SELF='n_Therme';my $EVENT='';my $NAME='n_Therme';{

2016.01.13 16:45:12 1: PERL WARNING: "my" variable $ventil masks earlier declaration in same statement at (eval 30) line 8.
2016.01.13 16:45:12 3: eval: my $TYPE='notify';my $SELF='n_Therme';my $EVENT='';my $NAME='n_Therme';{
   
2016.01.13 16:45:12 1: PERL WARNING: "my" variable $ventil masks earlier declaration in same scope at (eval 30) line 9.
2016.01.13 16:45:12 3: eval: my $TYPE='notify';my $SELF='n_Therme';my $EVENT='';my $NAME='n_Therme';{


Die "Leerzeilen" sind im Log mit Codeschnippseln gefüllt, die sich wiederholen (insges. 215 Zeilen, die ich mir [erstmal?] gespart habe zu kopieren).
Ich vermute, dass da irgendwas Perlmässiges mit dem letzten Update geändert wurde, aber Perl ist nicht meine Stärke, von daher...

...würde ich mich echt freuen, wenn mir jemand auf die Sprünge helfen könnte.

Besten Dank schon mal.
Marc
Titel: Antw:Heizungssteuerung
Beitrag von: krikan am 13 Januar 2016, 17:06:48
Hallo Marc!
Das sieht nach 5.7 Updateproblem aus. Im Wiki ist das geändert (@@->@). Details unter obigen roten Link "FHEM 5.7 ist am 15.11.2015 erschienen: Update- und Anpassungshinweise".
Gruß, Christian

Titel: Antw:Heizungssteuerung
Beitrag von: marc_do am 13 Januar 2016, 17:20:56
Hallo Christian,
oh Mann, bin ich blind! Genau das war's. Alle @@ -> @ und es läuft!
Vielen Dank und einen schönen Abend noch.

Viele Grüße
Marc
Titel: Antw:Heizungssteuerung
Beitrag von: Puschel74 am 13 Januar 2016, 17:30:06
Im Wiki wurde es aber bereits angepasst.
Das nächste Mal bitte Code-Tags #