Hallo,
seit einigen Wochen erhalte ich immer folgende Fehlermeldung im Log und HEATING-CONTROL.pm kann keine Temperaturen mehr setzen:
2015.11.27 14:13:47 2: MAX MaxScan: MaxScan_SetTemp.242 @ not defined
Hier die Konfiguration für das entprechende Thermostat/Gerät (Info: Diese Konfiguration hat 2 Jahre einwandfrei funktioniert?!)
define HC_FOR_Heizung_Bad.here Heating_Control Heizung_Bad 00:05|18 04:30|20 08:00|20 17:00|20 22:00|18 {MaxScan_SetTemp("@","%");;}
Leider wird der Befehl jetzt nicht mehr ausgeführt und die Bude bleibt Morgens kalt.... ::)
Dies hier habe ich auch schon probiert, geht aber auch nicht....
define HC_FOR_Heizung_Bad.here Heating_Control Heizung_Bad 00:05|18 04:30|20 08:00|20 17:00|20 22:00|18 {MaxScan_SetTemp("$NAME","$EVENT")}
Wer kann helfen?
Gruß,
Yogi
{MaxScan_SetTemp("$NAME","$EVENT")}
Wo befindet sich diese Funktion. 99_myUtils? Schau mal was da als Übergabe erwartet wird und pass das entsprechend an.
Ansonsten ist die Umstellung so korrekt. Muß halt die Funktion noch angepasst werden.
Grüße
Zitat von: CoolTux am 27 November 2015, 14:28:22
{MaxScan_SetTemp("$NAME","$EVENT")}
Wo befindet sich diese Funktion. 99_myUtils? Schau mal was da als Übergabe erwartet wird und pass das entsprechend an.
Ansonsten ist die Umstellung so korrekt. Muß halt die Funktion noch angepasst werden.
Grüße
Hmm, die Funktion tut schon seit 1 Jahr ohne Probleme. Ich habe sie auch schon ohne die VAriablen $NAME und $EVENT getestet. Dann geht es wunderbar. Für mich sieht es so aus, als ob die Übergabevariablen nicht richtig übergeben werden.
{MaxScan_SetTemp("Heizung_Bad","20")}
Diese Zeile funktioniert.
Ich kann aus dem Sourcecode einfach nicht feststellen. Wo in Perl-Code des Heating-Control-Moduls diese Variablen $NAME und $EVENT definiert werden. Ferner kapiere ich nicht, wieso es früher immer mit den Platzhaltern @ oder % funktioniert hat. Wurde am Heating-Control-Modul etwas verändert?
Gruß,
Yogi
Mit dem Featurelevel 5.7 gab es so einige Änderungen. Eventuell ist Deine Funktion davon betroffen. Aber ohne sie zu sehen kann ich da nichts weiter zu sagen.
Grüße
Okay, danke für die Info.
Hier kommt die Funktion. Diese stammt aus dem MAX-Temperaturscanner und liegt in der Datei "99_UtilsMaxScan.pm":
# --------------------------------------------------
# Sollwert-Setter fuer Heating_Control (deprecated)
# HC unterstuetzt kein WindowOpen
# HC unterstuetzt kein Umschalten des Modes
# Aufruf am HC-Define via
# define HC.BAD Heating_Control HT.BAD 00:05|eco 1234567|23:00|eco 567|18:00|eco {HT_SetByHC("@","%");;}
# --------------------------------------------------
sub MaxScan_SetTemp($$) {
my($strTherm,$newTemp) = @_;
my $strMode=ReadingsVal($strTherm,"mode","manual"); # betriebsart
my $strNewMode="";
my $hash=$defs{$strTherm};
if ( ! defined($hash) ) # thermostat muss definiert sein
{
MaxScan_Log undef,2,"$strTherm not defined";
return;
}
if ($defs{$strTherm}{type} !~ m/^HeatingThermostat.*/) # muss ein max thermostat sein
{
MaxScan_Log undef,2,"$strTherm is no Thermostat";
return;
}
my $ecoTemp = ReadingsVal($strTherm,"ecoTemperature","16");
my $comfortTemp = ReadingsVal($strTherm,"comfortTemperature","18");
my $windowOpenTemp = ReadingsVal($strTherm,"windowOpenTemperature","18");
my $desiTemp = ReadingsVal($strTherm,"desiredTemperature","19");
my $strShutterName = ReadingsVal($strTherm,"watchShutter","?"); # 1.04a
my $numWinIsOpen = ReadingsVal($strShutterName,"onoff",0); # zustand des shutter windowOpen besorgen
my $numForceAuto = ReadingsVal($strTherm,"onlyAutoMode","0") eq "1";
MaxScan_Log $hash,($MaxScanDEBUGCommon)?2:4,
"ecoTemp:$ecoTemp comfortTemp:$comfortTemp WinIsOpen:$numWinIsOpen desiTemp:$desiTemp";
# aliase in numerische werte wandeln
$newTemp = $ecoTemp if ($newTemp eq "eco");
$newTemp = $comfortTemp if ($newTemp eq "comfort");
# wenn fenster offen ist, beenden
if ( $numWinIsOpen == 1) {
$hash->{helper}{TempBeforeWindOpen}=$newTemp; # temp wird ueber scanner nachtraeglich gesetzt
MaxScan_Log $hash,($MaxScanDEBUGShutter)?2:3,
"no action due open window, but store to TempBeforeWindOpen:$newTemp ";
return;
}
# wenn scantemp aktiviert ist, dann mode umschaltung
my $numScanTemp=AttrVal($strTherm,"scanTemp","?"); # wenn scantemp aktiv, mode umschalten
if ( $numScanTemp eq "1")
{
$strNewMode = (!$numForceAuto && ($strMode eq "manual")) ? "auto":"";
}
MaxScan_Log $hash,($MaxScanDEBUGCommon)?2:4,"NewTemp:$newTemp Mode:$strMode newMode:$strNewMode";
# nur ausfuehren, wenn sich temperatur geaendert hat
my $desi = ReadingsVal($strTherm,"desiredTemperature",""); # neue temperatur nur setzen wenn noetig
if ($desi eq $newTemp) {
MaxScan_Log $hash,($MaxScanDEBUGCommon)?2:3,"nothing to do: no desiredTemperature change";
return;
}
# commando vorbereiten und ausfuheren
my $cmd = "set $strTherm desiredTemperature";
$cmd .= " $strNewMode" if ($strNewMode ne "");
$cmd .= " $newTemp";
fhem($cmd);
MaxScan_Log $hash,($MaxScanDEBUGCommon)?2:3,"$cmd ";
}
Sieht erstmal ok aus. Frage mal bitte Dietmar63. Er ist der Modulentwickler von HeatingControl. Eventuell wurde was geändert.
Ich gehe mal davon aus das Die in Update bereits getan hast. Wenn nicht bitte unbedingt nachholen.
Anfrage läuft.
Zur Info: Sobald ich per global attr "Featurelevel 5.6" einschalte, geht wieder alles....
In Deiner Sub kann ich erstmal nichts sehen was da störend sein könnte.
Hast Du denn ein aktuelles FHEM?
Ich habe
define HC_FOR_Heizung_Bad.here Heating_Control Heizung_Bad 00:05|18 04:30|20 08:00|20 20:31|20 22:00|18 {MaxScan_SetTemp("$NAME","$EVENT")}
mal schnell bei mit mit
sub MaxScan_SetTemp($$) {
my($strTherm,$newTemp) = @_;
Log 3, "strTherm------------>$strTherm";
Log 3, "newTemp------------>$newTemp";
}
laufen lassen und folgendes bekommen:
2015.11.29 20:31:00 3: newTemp------------>20
2015.11.29 20:31:00 3: strTherm------------>Heizung_Bad
2015.11.29 20:30:54 3: [HC_FOR_Heizung_Bad.here] device <Heizung_Bad> in fhem not defined, but accepted
2015.11.29 20:28:12 3: [HC_FOR_Heizung_Bad.here] device <Heizung_Bad> in fhem not defined, but accepted
Also übergabe funktioniert. Es mus irgendwie sonstworan liegen.
Übernimm bei dir mal die Logs und füge weitere ein.
Ähem... Danke für die Hilfe.... Witzigerweise geht es nun....Sonderbar. Seit einer Woche kämpfe ich damit und nun, wenn ich um Hilfe frage geht es...
Dennoch danke für Eure Unterstützung. Sorry, für dei Umstände...
Gruß,
Yogi