Hallo,
nach einem update gestern (fhem auf Fritzbox) kommen folgende Meldungen:
Konsole:
Use of uninitialized value in string eq at ./FHEM/10_MAX.pm line 540.
Use of uninitialized value $d in hash element at fhem.pl line 3046.
FHEM-Log:
MAX: Invalid value for READING groupid. Forcing to 0
Gruppen habe ich für alle MAX-Geräte eingerichtet.
Da diese Meldungen nur so durchlaufen, ist ein Arbeiten nicht mehr möglich.
Kann jemand helfen?
Herzliche Grüße
G. Rappel
Hallo gorax,
siehe hier (http://forum.fhem.de/index.php/topic,17551.msg115406.html#msg115406) und nimm die alte 10_MAX.pm bis Matthias Zeit für die Korrektur gefunden hat. Dann sind die Meldungen wieder weg.
Viele Grüße
Harald
Hallo Harald,
danke für den Hinweis.
Austauschen mußte ich außer der
10_MAX.pm auch die
00_MAXLAN.pm
01_FHEMWEB.pm und die
fhem.pl
Jetzt läuft es hoffentlich soweit wieder.
Viele Grüße
gorax
Hallo,
ich hatte auch diverse Probleme und habe folgendes gelernt:
der updatefhem prozess arbeitet überwiegend verlässlich, doch nun hats mir in 2 Monaten 2mal meine FHEM inst zerpflückt.
Das letzte Mal letzte Woche, vom Büro aus vormittags das update gestartet, wegen fehlender Konsole nicht gemerkt, dass das backup 0byte gross ist und dann natürlich ein shutdown restart gemacht und gewundert, das kein fhem mehr erreichbar war.
Die Fehlermeldungen betrafen ausgesprochen viele Module, sodass ich den weg der "drüberinstallation" gewählt habe, cfg und sonstige Customizations zurückgespielt und gut wars.
Im Grunde will ich nicht meckern, überwiegend läuft alles sehr stabil, nur ein update werde ich nicht mehr remote machen ;-), es sei denn ich hab ne Konsole.
Herzliche Grüße
Frank
Ich konnte mit folgendem Patch an der 10_MAX.pm das Problem umgehen:
540c540,542
< $wallthermo = 1 if((MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid")) and $shash->{type} eq "WallMountedThermostat");
---
> if ($shash->{type} eq "WallMountedThermostat") {
> $wallthermo = 1 if(MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid"));
> }
Grüße
ws
Hallo ws,
danke für den Patch.
Ich habe die Zeile 540: if ($shash->{type} eq "WallMountedThermostat") {
ergänzt auf: if ( defined $shash->{type} && $shash->{type} eq "WallMountedThermostat") {
Damit konnte ich noch die auf der Konsole durchlaufende Meldung:
'Use of uninitialized value in string eq at ./FHEM/10_MAX.pm line 541.'
wegbringen.
Herzliche Grüße
gorax
Die Konsolen-Meldungen habe ich glatt übersehen :-[
Danke :)
Zitat von: ws am 19 Dezember 2013, 23:02:54
Ich konnte mit folgendem Patch an der 10_MAX.pm das Problem umgehen:
540c540,542
< $wallthermo = 1 if((MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid")) and $shash->{type} eq "WallMountedThermostat");
---
> if ($shash->{type} eq "WallMountedThermostat") {
> $wallthermo = 1 if(MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid"));
> }
Grüße
ws
Kannst du das etwas erklären wie man den Patch einbaut ?
Hab mal versucht Ergebnis war immer das kein max Gerät mehr angezeigt wird :(
a) Zeile 540 in 10_MAX.pm auskommentieren, dann direkt darunter einfügen:
# $wallthermo = 1 if((MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid")) and $shash->{type} eq "WallMountedThermostat");
if ( defined $shash->{type} && $shash->{type} eq "WallMountedThermostat") {
$wallthermo = 1 if(MAX_ReadingsVal($shash,"groupid") eq MAX_ReadingsVal($hash,"groupid"));
}
b) beim Slider für HT/ HT+ erscheinen Einstellmöglichkeiten, die keinen Sinn machen bzw. Fehlermeldungen verursachen
c) 10_MAX.pm wurde hochgeladen von: "Setting eco, comfort, min, max for WallThermostat (by Jürgen I.)" Evtl. ist es noch nicht auf dem Radar von Matthias Gehre
Gruss
Pet22
Hab einen Fix hochgeladen, bitte testen.
Hallo Matthias,
hab's soeben heruntergeladen und aktiviert -> es gibt weder im Logfile noch auf der Konsole Fehlermeldungen.
Vielen Dank, viele Grüße und guten Rutsch
Harald
würde ich auch gerne jetzt schon testen ;)
Wie spiele ich den fix ein ? mit Update findet er ja noch nichts .
Danke
@Matthias: funktioniert!
Danke.
@ChrisW
über 800 Beiträge, aber noch nicht das Forum durchstöbert? :o
Ich fass es nicht!
Schau mal auf der Hauptseite, ob Du da soetwes wie FHEM Sourcecode findest?
Da findest du auch das, wonach Du suchst.
Gruß Joachim
bin bisher davon ausgegangen es per update zu bekommen aber das hat alles nicht geklappt.
Naja 800 Beiträge ist doch nicht gerade viel bei so einem Komplexen Thema.
@ ChrisW - unter Weblinks in der Forum Übersicht --> FHEM Source Code oder http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/
@ Matthias - das gepatchte 10_MAX.pm läuft auch bei mir ohne Probleme.
Letzter verbliebener bug in der Vor-Version von Jürgen I. und im heutigen Patch:
Die Webansicht zeigt beim WT eine Auswahlmöglichkeit für boostValveposition und boostDuration die korrekterweise einen Fehler liefert:
ZitatUnknown argument boostValveposition, choose one of ........
Vielen Dank und guten Rutsch
Pet22
pet22: ich konnte bei meinem WT keinen Fehler entdecken? Welche Ansicht meinst Du?
Hallo ws,
siehe Dateianlage.
Gruss
Pet22
Hallo zusammen,
erst mal allen ein gutes neues Jahr
ich möchte hier mal aufklären. Ist zwar schon eine weile her daß ich mich damit beschäfftigt habe aber ich hoffe ich bekomm´s noch mal hin richtig zu erkären.
@pet22
zu a) Danke für die Korrektur, bei mir kam leider keine Fehlermeldung, weder im log noch auf der Konsole (warum?). Matthias hat es ja schon commited.
zu b) Die Auswahl macht hoffentlich nach meiner Erklärung Sinn
da es Probleme beim Setzen der ECO,Comfort,Min,Max und Windowopen in Bezug auf den Temperaturoffset am Wandthermostat gibt, auch in der orginalen MAX-Software, habe ich bevor eine der oben genannten Temeraturen an einem Heizungsthermostat verändert wird diese Möglichkeit unterbunden. Wenn ein Wandthermostat in der Gruppe erkannt wird können an den Heizthermostaten bei SET keine ECO,Comfort,Min,Max und Windowopen Temperaturen geändert werden, die settings gibt es dann einfach nicht mehr. Die Temperaturen dürfen nur am Wandthermostat geändert werden, die Heizungsthermostate bekommen durch das flag 04 und groupid die Werte aber auch mit, in den Readings ist das zu sehen. Der Offset wird immer ohne flag (00) und ohne groupid (00) gesendet, so bekommt nur der Wand- oder Heizthermostat das Telegramm ohne ein anderes Gerät damit zu beeinflussen. Es war recht schwer das herauszufinden, da auch die Orginalsoftware hier nicht korrekt arbeit.
Zusammenfassend: Würde am Heizungsthermostat z.B. die ECO Temperatur verändert werden würde auch der Offset des Heizungsthermostaten an den Wandthermostaten mit geschickt werden und einen schon vorhandenen Offset im Wandthermostaten überschreiben. Durch die Änderungen geht das jetzt nur noch vom Wandthermostaten aus. Er schickt also bei Änderung der ECO,Comfort,Min,Max oder Windowopen auch seinen Offset an die Heizthermostate. Die reagieren aber nicht mehr darauf da gepairt mit Wandthermostat.
Der Fehler mit den boost Werten liegt bei mir. Ich hab vergessen Matthias noch die Änderung in 10_MAX.pm ab Zeile 304 zu senden.
Einfach das
}elsif(grep (/^\Q$setting\E$/, ("boostDuration", "boostValveposition", "decalcification","maxValveSetting","valveOffset"))
and $hash->{type} =~ /HeatingThermostat.*/){
gegen das tauschen
}elsif(grep (/^\Q$setting\E$/, ("boostDuration", "boostValveposition", "decalcification","maxValveSetting","valveOffset"))
and $hash->{type} =~ /Thermostat.*/){
danach können die boost Werte geändert werden. War mein Fehler, sorry.
der Boost wird aktuell nur im jeweiligen Gerät geändert, also nicht in der Gruppe, was dazu führt das bei unterschiedlichen Werten die Geräte auch unterschiedliches beim Betätigen von boost anzeigen. Hier gibt es also noch Optimierungspotenzial. Ziel sollte wieder der Wandthermostat sein in der Gruppe, oder ?
zu c) sollte mit b) geklärt sein. Ich kann nicht direkt Änderungen durchführen, hab keinen Zugang. Ich werde Matthias noch bitten die obere Änderung zu commiten.
Grüsse Jürgen
Hallo Jürgen,
erst mal allen ebenfalls ein gutes Neues Jahr.
Vielen Dank für deine Erläuterungen.
a) der Dank gebührt "ws" und "gorax". Nur haben die beiden es in "bits'n pieces" beschrieben, somit haben sich Einträge ... seit Tagen eine Fehlermeldung ... invalid value ... im Forum gehäuft. Matthias hat es dann als Profi eleganter gelöst.
b) so langsam versteh ich die Absicht, die dahinter steckt. Allerdings tritt/ trat das geschilderte Problem vorher bei mir nie auf:
- nur (1) WT+ und nur (1) HT sind gepaired
- beide haben die gleiche groupID
- HT hatte measurementOffset 0 - meine Annahme war WT+ ist alleine zuständig für Ist-/ Sollwert-Vergleich
- vor Einführung des measurementOffset beim WT habe ich eben die eco/comfort Temperatur entsprechend verdreht, um einen Offset zu haben.
- nachdem ich es eben im WebIF von FHEM kontrolliert habe, sehe ich, dass der gleiche measurementOffset bei WT+ und HT eingestellt ist.
Von mir gibt es keine Einwände, dass Eingaben nur noch am WT/ WT+ gemacht werden können, da es Inkonsistenzen bei der Eingabe vermeidet.
Danke und Gruss
Pet22
Fix ist committed. Danke an alle, die mitgewirkt haben :-)
Hallo Matthias und Jürgen,
war gerade am Testen, da Gäste ausgeflogen.
Der Vorschlag von Jürgen ab Zeile 304 (in der neuesten Version 306) zu ändern in:
}elsif(grep (/^\Q$setting\E$/, ("boostDuration", "boostValveposition", "decalcification","maxValveSetting","valveOffset"))
and $hash->{type} =~ /Thermostat.*/){
Erzeugt bei mir folgende Log-Meldungen für den Thermostat:
Zitat2014.01.02 12:39:16 2: MAX: Invalid value for READING decalcification. Forcing to Sat 12:00
2014.01.02 12:39:16 2: MAX: Invalid value for READING maxValveSetting. Forcing to 100
2014.01.02 12:39:16 2: MAX: Invalid value for READING valveOffset. Forcing to 0
Änderungen mit dem WebIF sind nicht möglich, da die Setter fehlen. Änderungen auf der Kommandozeile erzeugen die Fehlermeldung:
ZitatUnknown argument maxValveSetting, choose one of ......
Da mein CUL über 2 Stockwerke Entfernung "taubstumm" ist, kann ich nicht beurteilen, was die eigentliche Ursache ist.
Gruss
Pet22
Nachtrag:
der heutige Patch von Matthias:
@@ -304,7 +304,7 @@
return ($hash->{IODev}{Send})->($hash->{IODev},"SetTemperature",$hash->{addr},$payload, groupId => sprintf("%02x",$groupid), flags => ( $groupid ? "04" : "00" ));
}elsif(grep (/^\Q$setting\E$/, ("boostDuration", "boostValveposition", "decalcification","maxValveSetting","valveOffset"))
- and $hash->{type} =~ /HeatingThermostat.*/){
+ and $hash->{type} =~ /.*Thermostat.*/){
my $val = join(" ",@args); #decalcification contains a space
erzeugt keinerlei Fehlermeldungen im Log oder auf der Konsole. Per "set" gesetzte Werte bleiben erhalten.
Sieht gut aus, Gruss
Pet22
Hallo an alle,
habe gestern mittag den maxlan in FHEM integriert, hat auch alles super geklappt,
habe die ganzen Logfiles auskommentiert da ich schnell gesehen habe das meine Fritz volläuft und ich die Werte auch nicht brauche
Habe zwischenzeitlich weitergesucht und was zu verbose gefunden
hatte in der fhem.cfg
attr global verbose 5
stehen
das hab ich nun auf 2 geändert, damit sollte das unten stehende erledigt sein ?!
Bis man halt alle Kommandos als Anfänger verstanden hat :-(
Ev kann es ja doch ncoh einer überfliegen
define MAX_0a05b2 MAX WallMountedThermostat 0a05b2
attr MAX_0a05b2 alias WZ_Th
attr MAX_0a05b2 group Heizung
attr MAX_0a05b2 room MAX
#define FileLog_MAX_0a05b2 FileLog ./log/MAX_0a05b2-%Y.log MAX_0a05b2
#attr FileLog_MAX_0a05b2 logtype text
#attr FileLog_MAX_0a05b2 room MAX
So sind dann auch die ganzen Logfiles verschwunden und ich dachte alles ist ok
Kurz nach o Uhr dann wurde aber nichts mehr gelogt und alle Plots die super funktionierten waren heute morgen leer
:-(
im Explorer hab ich dann gesehen das der Speicher der Fritz voll ist :-\
Dann hab ich gesehen das die fhem.log riesig ist.
Ohne Ende Einträge von max
Alles unbrauchbares Zeug was ich da nciht haben will
Ohne Ende Einträge wie das hier
014.01.11 11:23:10 5: MAX_Parse MAX,1,ThermostatState,09932d,19081f00bb00
2014.01.11 11:23:10 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 1, valveposition 8 %, desiredTemperature 15.5, until , curTemp 18.7
2014.01.11 11:23:10 5: Triggering MAX_09932d (6 changes)
2014.01.11 11:23:10 5: Notify loop for MAX_09932d mode: manual
2014.01.11 11:23:10 5: Triggering MAX_09932d (5 changes)
2014.01.11 11:23:10 5: Notify loop for MAX_09932d MAXLAN_initialized: 1
2014.01.11 11:23:10 5: len 11, addr 09935f, initialized 1, valid 1, error 0, errCmd 09, answer 0, unkbit (0,0,0)
2014.01.11 11:23:10 5: ml dispatch MAX,1,ThermostatState,09935f,181c2a00e800
2014.01.11 11:23:10 5: MAX_Parse MAX,1,ThermostatState,09935f,181c2a00e800
2014.01.11 11:23:10 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 28 %, desiredTemperature 21, until , curTemp 23.2
2014.01.11 11:23:10 5: Triggering MAX_09935f (6 changes)
2014.01.11 11:23:10 5: Notify loop for MAX_09935f mode: auto
2014.01.11 11:23:10 5: Triggering MAX_09935f (5 changes)
2014.01.11 11:23:10 5: Notify loop for MAX_09935f MAXLAN_initialized: 1
2014.01.11 11:23:10 5: len 11, addr 0bab14, initialized 1, valid 1, error 0, errCmd 09, answer 0, unkbit (0,0,0)
2014.01.11 11:23:10 5: ml dispatch MAX,1,ThermostatState,0bab14,18182700c500
2014.01.11 11:23:10 5: MAX_Parse MAX,1,ThermostatState,0bab14,18182700c500
2014.01.11 11:23:10 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 24 %, desiredTemperature 19.5, until , curTemp 19.7
2014.01.11 11:23:10 5: Triggering MAX_0bab14 (6 changes)
2014.01.11 11:23:10 5: Notify loop for MAX_0bab14 mode: auto
Wie ihr sehr hab ich shcon gesucht und bin hier gelandet. Aber das sind ja eigentlich keine Fehlermeldungen ....
Einer einen kurzen Tip was zu tun ist?
Bin leider nur Anwender und kein IT Freak ( kann ja noch werden )
Zitatattr global verbose 5
Danach auch ein shutdown restart gemacht?
Ja
natürlich, mit verbose gleich 1 oder 2 ist jetzt auch alles ok
und die Daten die ich haben will werden auch geloggt und geplottet