Ich mach mal ausgehend von diesem Thread hier weiter:
Fehlernach FHEM-Update (//forum.fhem.de/index.php?t=msg&goto=92901&rid=118#msg_92901)
Und zwar tritt der Fehler bei der Verarbeitung des Readings "state" auf. Klar, Ein Blick in die InternalValues verrät, das diese Variable dort nicht gefplegt ist, aber warum??
2013.09.02 14:49:12 1: evaluating HZ_EG_Bad userReading state , Modifier: , Perlcode:
Use of uninitialized value $modifier in string eq at fhem.pl line 3330.
Use of uninitialized value $modifier in string eq at fhem.pl line 3332.
Use of uninitialized value $modifier in string eq at fhem.pl line 3334.
Use of uninitialized value $modifier in string eq at fhem.pl line 3340.
Use of uninitialized value $modifier in string eq at fhem.pl line 3344.
Internals:
CULMAX0_MSGCNT 6
CULMAX0_RAWMSG
CULMAX0_TIME 2013-09-02 14:50:15
DEF HeatingThermostat 01784b
IODev CULMAX0
LASTInputDev CULMAX0
MSGCNT 6
NAME HZ_EG_Bad
NR 226
RSSI -65.5
STATE 19.0 °C
TYPE MAX
addr 01784b
backend CULMAX0
dstsetting 1
mode 1
rferror 0
type HeatingThermostat
.userreadings:
Desiredtemperature:
TIME 2013-09-02 14:50:15
t 1378126215.38733
value
Dblog_dblog:
TIME 1378126152.62145
VALUE 19.0
Floorplantext:
TIME 2013-09-02 14:50:15
modifier none
perlCode {FloorplanText("FHT", $name, "")}
t 1378126215.38733
trigger
value <a href="#" onClick="ShowCmdBox(event, 'HZ_EG_Bad', 'ht-max', '19', '')"><div name="div-HZ_EG_Bad-sub" class="HeizThermostat">19.0°C</div></a>
State:
TIME 2013-09-02 14:50:15
t 1378126215.38733
value
Dblog_dblog:
TIME 1378126131.45631
VALUE windowOpenTemperature 5.0
CHANGETIME:
Readings:
2013-07-21 14:01:40 .weekProfile 44485508452045204520452045204520452045204520452045204448550845204520452045\
2045204520452045204520452045204448546c44cc55144520452045204520452045204520452045204448546c44cc55144520452045204520452\
045204520452045204448546c44cc55144520452045204520452045204520452045204448546c44cc551445204520452045204520452045204520\
45204448546c44cc5514452045204520452045204520452045204520
2013-09-02 14:36:42 LastExtTemperature 22.1
2013-07-21 14:47:28 TimeInformationHour 1
2013-09-02 14:50:15 battery ok
2013-07-21 14:01:40 boostDuration 25
2013-07-21 14:01:40 boostValveposition 80
2013-07-21 14:01:40 comfortTemperature 21.0
2013-07-21 14:01:40 decalcification Sat 12:00
2013-09-02 14:50:15 desiredTemperature 19.0
2013-07-21 14:01:40 ecoTemperature 17.0
2013-09-02 14:50:15 floorplantext <a href="#" onClick="ShowCmdBox(event, 'HZ_EG_Bad', 'ht-max', '19', '')"><div name="div-HZ_EG_Bad-sub" class="HeizThermostat">19.0°C</div></a>
2013-07-29 11:44:22 groupid 3
2013-07-21 14:01:40 maxValveSetting 100
2013-07-26 13:26:52 maximumTemperature on
2013-07-21 14:01:40 measurementOffset 0.0
2013-07-26 13:26:52 minimumTemperature off
2013-09-02 14:50:15 mode manual
2013-09-02 14:48:51 msgcnt 215
2013-09-02 14:50:15 state 19.0 °C
2013-09-02 12:00:16 temperature 22.3
2013-07-21 14:01:40 valveOffset 0
2013-09-02 12:00:16 valveposition 0
2013-07-21 14:01:40 weekprofile-0-Sat-temp 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-0-Sat-time 00:00-06:00 / 06:00-22:00 / 22:00-00:00
2013-07-21 14:01:40 weekprofile-1-Sun-temp 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-1-Sun-time 00:00-06:00 / 06:00-22:00 / 22:00-00:00
2013-07-21 14:01:40 weekprofile-2-Mon-temp 17.0 °C / 21.0 °C / 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-2-Mon-time 00:00-06:00 / 06:00-09:00 / 09:00-17:00 / 17:00-23:00 / 23:00-00:00
2013-07-21 14:01:40 weekprofile-3-Tue-temp 17.0 °C / 21.0 °C / 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-3-Tue-time 00:00-06:00 / 06:00-09:00 / 09:00-17:00 / 17:00-23:00 / 23:00-00:00
2013-07-21 14:01:40 weekprofile-4-Wed-temp 17.0 °C / 21.0 °C / 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-4-Wed-time 00:00-06:00 / 06:00-09:00 / 09:00-17:00 / 17:00-23:00 / 23:00-00:00
2013-07-21 14:01:40 weekprofile-5-Thu-temp 17.0 °C / 21.0 °C / 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-5-Thu-time 00:00-06:00 / 06:00-09:00 / 09:00-17:00 / 17:00-23:00 / 23:00-00:00
2013-07-21 14:01:40 weekprofile-6-Fri-temp 17.0 °C / 21.0 °C / 17.0 °C / 21.0 °C / 17.0 °C
2013-07-21 14:01:40 weekprofile-6-Fri-time 00:00-06:00 / 06:00-09:00 / 09:00-17:00 / 17:00-23:00 / 23:00-00:00
2013-07-21 14:01:40 windowOpenDuration 15
2013-09-02 14:50:15 windowOpenTemperature 5.0
Internals:
interfaces thermostat;battery;temperature
Attributes:
DbLogExclude (desiredTemperature|temperature|valveposition):21600,floorplantext
event-on-update-reading desiredTemperature,temperature,valveposition,floorplantext
fp_FP_EG 176,399,3,floorplantext
room MAX
userReadings floorplantext {FloorplanText("FHT", $name, "")}
mit folgender fhem.pl ist der Fehler beseitigt.
Rudi muss jetzt entscheiden ob ich an der richtigen Stelle angesetzt habe und dann den Patch einchecken.
my $modifier= $userReadings{$userReading}{modifier};
my $perlCode= $userReadings{$userReading}{perlCode};
my $oldvalue= $userReadings{$userReading}{value};
my $oldt= $userReadings{$userReading}{t};
+ $perlCode = "" if(!$perlCode);
+ $modifier = "none" if(!$modifier);
#Debug "Evaluating " . $userReadings{$userReading};
# evaluate perl code
my $value= eval $perlCode;
my $result;
# store result
if($@) {
So einfach machen wir das nicht: beim definieren von userReadings wird perlCode und modifier genau geprueft.
Ich wuesste gerne, wieso die Werte verschwunden sind.
Hi Rudi,
sag mir was ich machen soll um den Fehler zu finden.. ev. hast du eine aktuelle fhem.pl mit vielen Logeinträgen??
Ein global verbose 5 brachte irgendwie nix
Edit: ich hab mal ein wenig meine Devices angesehen. Alle "echten" Userreadings, also die ich per attr userreading angelegt habe, die haben auch einen modifier und perlcode. Alle anderen haben dazu keine Einträge (zb state)
Hilft das?
Mit userReadings habe ich bisher mich nicht wirklich befasst: was sind "unechte" userReadings? Ist unser Problemfall ein echter?
> sag mir was ich machen soll um den Fehler zu finden..
Wenn ich helfen soll: ein fhem.cfg bauen (moeglichst klein), was das Problem (moeglichst ohne Hardware) reproduziert. Dann kann ich es einfach nachstellen, notfalls mit weiteren Log versehen, und irgendwannmal kapieren, was das Problem verursacht.
Du hast den Vorteil, dass du das noetige Hardware hast. Du kannst natuerlich auch fhem.pl mit weiteren Logs zupflastern, bis du das Problem findest.
> ev. hast du eine aktuelle fhem.pl mit vielen Logeinträgen??
Sowas gibt es (natuerlich) nicht, ich verwende genau das, was du auch zur Verfuegung hast.
Zitat von: rudolfkoenig schrieb am Di, 03 September 2013 08:47Mit userReadings habe ich bisher mich nicht wirklich befasst: was sind "unechte" userReadings? Ist unser Problemfall ein echter?
Naja, die Fehlermeldung im Ursprungstopic kam bei der Verarbeitung von dem Reading "State". Dieses ist kein "echtes" userreading.
Bezogen auf den ersten Post ist aufgrund "attr <dev> userReadings floorplantext {FloorplanText("FHT", $name, "")}" nur das Reading "floorplantext" ein "echtes, von mir erzeugtes userreading.
In der Internen Variable .userreadings sind aber "floorplantext, State, Desiredtemperature" drin. Nur floorplantext enthält die zusätzlichen internen Attribute "modifier" und "perlcode". Die anderen "unechten" .userreadings "State, Desiredtemperature" enthalten diese nicht.
Da aber in
fhem.pl IMHO alle Attribute in .userreadings durchgegangen werden, gibts den Fehler bei State und Desiredtemperature.
ich denke ich habe das problem gefunden.
in der aktuellen version von dbLog wird für das neue DbLogExclude in Zeile 409 und 410 direkt auf {'.userReadings'} zugegriffen. das erzeugt natürlich dann einträge im hash mit denen die echten userReadings nicht klar kommen.
gruss
andre
Haben wir glaube ich zeitgleich gefunden. ;) ;)
Ich habe gestern eine geänderte Version des DBLog-Moduls eingecheckt