Hauptmenü

Fehler in MAX.pm

Begonnen von Killermike007, 11 April 2015, 12:37:11

Vorheriges Thema - Nächstes Thema

Killermike007

Hallo,

habe seit heute einige Fehler im Log stehen, und weiß nicht weiter.

2015.04.11 12:33:34 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886, <GEN28> line 138.
2015.04.11 11:51:49 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886.
2015.04.11 11:40:56 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886, <GEN28> line 82.
2015.04.11 11:38:20 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886, <GEN28> line 71.
2015.04.11 11:37:12 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886, <GEN28> line 66.
2015.04.11 11:20:37 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886, <GEN28> line 9.


Vielleicht kann ja einer Abhilfe schaffen.

Danke

Gruß Mike
Cubieboard 3
Cul V3-868,Cul V3-433,JeeLink-868,HM-Lan
MAX Thermostat, MAX Thermostat+, MAX Fensterkontakt, MAX ECO-Taster,HM-Fensterdrehgriff/Klingelsignalsensor/Rolladenaktor,
IT-Funksteckdosen, Wandschalter, Rolladenaktoren, Funkschalter,LaCrosse,YoulessStromzähler,GPIOGaszähler+Türkontakt


ws

Matthias: jetzt hast Du mit dem Verlinken einen Loop erzeugt  :D ;)

Wenn wir schon beim korrigieren sind...
Ich habe seit der Umstellung auf CUL (früher Cube) immer wieder derartige Meldungen:

2015.04.10 23:48:21 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886.
2015.04.10 23:53:50 1: PERL WARNING: Use of uninitialized value $args[0] in numeric eq (==) at ./FHEM/10_MAX.pm line 692.
2015.04.10 23:53:50 1: PERL WARNING: Use of uninitialized value $args[0] in numeric ge (>=) at ./FHEM/10_MAX.pm line 695.
2015.04.10 23:53:50 1: PERL WARNING: Use of uninitialized value $desiredTemperatureRaw in bitwise and (&) at ./FHEM/10_MAX.pm line 726.


und bei der Kommunikation zwischen MAX-Heizkörperthermostat und MAX-Wandthermostat auch mal

2015.04.10 23:44:25 1: CUL_MAX_Parse: len mismatch

Kann man da evtl. etwas machen?

Gruß
ws

juniormajor

@Killermike007 & ws: Könnt Ihr mir bitte noch sagen in welcher Situation ihr die Fehler in der Zeile 886 bekommt?

ws

juniormajor: Ich habe mal im Logfile gesucht. Die Meldung kommt bei mir immer ausschließlich nach dem Server (Neu-) Start. Es dauert nach dem Start immer ein paar Minuten (manchmal bisschen länger) und dann ist sie einmalig da.
Die anderen Warnungen waren vor Deinem Patch auch vorhanden...

Gruß
ws

ws

#5
Hier noch ein wenig genauer:

2015.04.11 21:28:42 4: CUL_Parse: nanoCULMax Z0B820630073A5506A6E30010D7 -94.5
2015.04.11 21:28:42 5: nanoCULMax dispatch Z0B820630073A5506A6E30010
2015.04.11 21:28:42 5: CUL_MAX_Parse: len 11, msgcnt 82, msgflag 06, msgTypeRaw ShutterContactState, src 073a55, dst 06a6e3, groupid 0, payload 10
2015.04.11 21:28:42 5: CUL_MAX_Parse: rssi: -94.5
2015.04.11 21:28:43 1: PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 886.
2015.04.11 21:29:33 5: CUL/RAW: /Z0C3604
2015.04.11 21:29:33 5: CUL/RAW: Z0C3604/420317020AF62D002CE541


und die anderen Warnungen:

2015.04.11 21:35:10 4: CUL_Parse: nanoCULMax Z0BE7000204B16A061D610000EA -85
2015.04.11 21:35:10 5: nanoCULMax dispatch Z0BE7000204B16A061D610000
2015.04.11 21:35:10 5: CUL_MAX_Parse: len 11, msgcnt E7, msgflag 00, msgTypeRaw Ack, src 04b16a, dst 061d61, groupid 0, payload 00
2015.04.11 21:35:10 5: CUL_MAX_Parse: rssi: -85
2015.04.11 21:35:10 1: PERL WARNING: Use of uninitialized value $args[0] in numeric eq (==) at ./FHEM/10_MAX.pm line 692.
2015.04.11 21:35:10 1: PERL WARNING: Use of uninitialized value $args[0] in numeric ge (>=) at ./FHEM/10_MAX.pm line 695.
2015.04.11 21:35:10 1: PERL WARNING: Use of uninitialized value $desiredTemperatureRaw in bitwise and (&) at ./FHEM/10_MAX.pm line 726.
2015.04.11 21:35:34 5: CUL/RAW: /Z0CCF044208
2015.04.11 21:35:34 5: CUL/RAW: Z0CCF044208/87340AEF98002ADF0D

juniormajor

@ws: danke!

@killermike007: bei dir scheint es nicht nur nach Serverstart zu kommen. Mich würde interessieren welche Logs/Readings geschrieben werden wenn der Fehler auftritt und was logst du alles auf den devices?

Killermike007

#7
@juniormajor:  Ich versuche das mal darzustellen:-[

Update von heute morgen, nach Anpassung.

Die Log :

2015.04.14 05:51:20 5: battery 0, rferror 0, panel 1, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 19, until , curTemp
2015.04.14 05:51:20 5: MAX_Parse MAX,0,ThermostatState,0aff56,380026
2015.04.14 05:51:20 5: MAX_Parse MAX,0,Ack,0aff56,01380026
2015.04.14 05:51:20 5: cm dispatch MAX,0,Ack,0aff56,01380026
2015.04.14 05:51:20 5: desiredTemperature 19, temperature 20.9
2015.04.14 05:51:20 5: MAX_Parse MAX,0,WallThermostatControl,070f6c,26D1
2015.04.14 05:51:20 5: cm dispatch MAX,0,WallThermostatControl,070f6c,26D1
2015.04.14 05:50:49 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:50:48 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 4.5, until , curTemp
2015.04.14 05:50:48 5: MAX_Parse MAX,1,ThermostatState,0780db,180009
2015.04.14 05:50:48 5: MAX_Parse MAX,1,Ack,0780db,01180009
2015.04.14 05:50:48 5: cm dispatch MAX,1,Ack,0780db,01180009
2015.04.14 05:50:48 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:50:48 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:50:47 5: needPreamble: 1, necessaryCredit: 110, credit10ms: xxxx
2015.04.14 05:50:47 1: CUL_MAX_Parse: len mismatch
2015.04.14 05:50:47 1: CUL_MAX_Parse: len mismatch
2015.04.14 05:50:47 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:50:47 5: CUL_MAX_Send: enqueuing 0bcc00401234560780db0000
2015.04.14 05:49:31 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:30 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 4.5, until , curTemp
2015.04.14 05:49:30 5: MAX_Parse MAX,1,ThermostatState,0780db,180009
2015.04.14 05:49:30 5: MAX_Parse MAX,1,Ack,0780db,01180009
2015.04.14 05:49:30 5: cm dispatch MAX,1,Ack,0780db,01180009
2015.04.14 05:49:30 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:29 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:29 5: needPreamble: 1, necessaryCredit: 110, credit10ms: xxxx
2015.04.14 05:49:29 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:29 5: CUL_MAX_SendQueueHandler: 2 items in queue
2015.04.14 05:49:29 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 4.5, until , curTemp
2015.04.14 05:49:29 5: MAX_Parse MAX,1,ThermostatState,0780db,180009
2015.04.14 05:49:29 5: MAX_Parse MAX,1,Ack,0780db,01180009
2015.04.14 05:49:29 5: cm dispatch MAX,1,Ack,0780db,01180009
2015.04.14 05:49:28 5: CUL_MAX_SendQueueHandler: 2 items in queue
2015.04.14 05:49:28 5: CUL_MAX_Send: enqueuing 0bcb00401234560780db0000
2015.04.14 05:49:28 5: needPreamble: 1, necessaryCredit: 110, credit10ms: xxxx
2015.04.14 05:49:28 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:28 5: CUL_MAX_Send: enqueuing 0bca00401234560780db0000
2015.04.14 05:49:16 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 12, until , curTemp
2015.04.14 05:49:16 5: MAX_Parse MAX,0,ThermostatState,038ca4,180018
2015.04.14 05:49:16 5: MAX_Parse MAX,0,Ack,038ca4,01180018
2015.04.14 05:49:16 5: cm dispatch MAX,0,Ack,038ca4,01180018
2015.04.14 05:49:16 5: desiredTemperature 12, temperature 21
2015.04.14 05:49:16 5: MAX_Parse MAX,0,WallThermostatControl,070cea,18D2
2015.04.14 05:49:16 5: cm dispatch MAX,0,WallThermostatControl,070cea,18D2
2015.04.14 05:49:14 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:14 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 4.5, until , curTemp
2015.04.14 05:49:14 5: MAX_Parse MAX,1,ThermostatState,0780db,180009
2015.04.14 05:49:14 5: MAX_Parse MAX,1,Ack,0780db,01180009
2015.04.14 05:49:14 5: cm dispatch MAX,1,Ack,0780db,01180009
2015.04.14 05:49:14 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:13 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:13 5: needPreamble: 1, necessaryCredit: 110, credit10ms: xxxx
2015.04.14 05:49:13 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:49:05 5: CUL_MAX_SendQueueHandler: 2 items in queue
2015.04.14 05:49:05 5: battery 0, rferror 0, panel 1, langateway 1, dstsetting 1, mode 0, valveposition 16 %, desiredTemperature 21, until , curTemp
2015.04.14 05:49:05 5: MAX_Parse MAX,0,ThermostatState,0863f5,38102A
2015.04.14 05:49:05 5: MAX_Parse MAX,0,Ack,0863f5,0138102A
2015.04.14 05:49:05 5: cm dispatch MAX,0,Ack,0863f5,0138102A
2015.04.14 05:49:05 5: desiredTemperature 21, temperature 20.4
2015.04.14 05:49:05 5: MAX_Parse MAX,0,WallThermostatControl,070d68,2ACC
2015.04.14 05:49:05 5: cm dispatch MAX,0,WallThermostatControl,070d68,2ACC
2015.04.14 05:49:05 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 4.5, until , curTemp
2015.04.14 05:49:05 5: MAX_Parse MAX,1,ThermostatState,0780db,180009
2015.04.14 05:49:05 5: MAX_Parse MAX,1,Ack,0780db,01180009
2015.04.14 05:49:05 5: cm dispatch MAX,1,Ack,0780db,01180009
2015.04.14 05:49:05 5: CUL_MAX_Send: enqueuing 0bc900401234560780db0000
2015.04.14 05:48:58 5: CUL_MAX_SendQueueHandler: Retry 0780db for 0bc800401234560780db0000 count: 3
2015.04.14 05:48:58 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:48:43 5: needPreamble: 1, necessaryCredit: 110, credit10ms: xxxx
2015.04.14 05:48:43 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:48:43 5: CUL_MAX_Send: enqueuing 0bc800401234560780db0000
2015.04.14 05:48:36 3: delete tmp_time_gas : Please define tmp_time_gas first
2015.04.14 05:48:32 5: battery 0, rferror 0, panel 1, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 19, until , curTemp
2015.04.14 05:48:32 5: MAX_Parse MAX,0,ThermostatState,0aff56,380026
2015.04.14 05:48:32 5: MAX_Parse MAX,0,Ack,0aff56,01380026
2015.04.14 05:48:32 5: cm dispatch MAX,0,Ack,0aff56,01380026
2015.04.14 05:48:31 5: desiredTemperature 19, temperature 21
2015.04.14 05:48:31 5: MAX_Parse MAX,0,WallThermostatControl,070f6c,26D2
2015.04.14 05:48:31 5: cm dispatch MAX,0,WallThermostatControl,070f6c,26D2
2015.04.14 05:47:51 5: battery 0, rferror 0, panel 1, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 19, until , curTemp
2015.04.14 05:47:51 5: MAX_Parse MAX,0,ThermostatState,08187f,380026
2015.04.14 05:47:51 5: MAX_Parse MAX,0,Ack,08187f,01380026
2015.04.14 05:47:51 5: cm dispatch MAX,0,Ack,08187f,01380026
2015.04.14 05:47:51 5: desiredTemperature 19, temperature 20.3
2015.04.14 05:47:51 5: MAX_Parse MAX,0,WallThermostatControl,070d0c,26CB
2015.04.14 05:47:51 5: cm dispatch MAX,0,WallThermostatControl,070d0c,26CB
2015.04.14 05:46:21 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:46:21 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 4.5, until , curTemp
2015.04.14 05:46:21 5: MAX_Parse MAX,1,ThermostatState,0780db,180009
2015.04.14 05:46:21 5: MAX_Parse MAX,1,Ack,0780db,01180009
2015.04.14 05:46:21 5: cm dispatch MAX,1,Ack,0780db,01180009
2015.04.14 05:46:21 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:46:20 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:46:20 5: needPreamble: 1, necessaryCredit: 110, credit10ms: xxxx
2015.04.14 05:46:20 1: CUL_MAX_Parse: len mismatch
2015.04.14 05:46:20 1: CUL_MAX_Parse: len mismatch
2015.04.14 05:46:20 1: CUL_MAX_Parse: len mismatch
2015.04.14 05:46:20 1: CUL_MAX_Parse: len mismatch
2015.04.14 05:46:20 5: CUL_MAX_SendQueueHandler: 1 items in queue
2015.04.14 05:46:20 5: CUL_MAX_Send: enqueuing 0bc700401234560780db0000
2015.04.14 05:46:12 3: delete tmp_time_gas : Please define tmp_time_gas first
2015.04.14 05:45:39 5: battery 0, rferror 0, panel 1, langateway 1, dstsetting 1, mode 0, valveposition 0 %, desiredTemperature 19, until , curTemp
2015.04.14 05:45:39 5: MAX_Parse MAX,0,ThermostatState,0aff56,380026
2015.04.14 05:45:39 5: MAX_Parse MAX,0,Ack,0aff56,01380026
2015.04.14 05:45:39 5: cm dispatch MAX,0,Ack,0aff56,01380026
2015.04.14 05:45:39 5: desiredTemperature 19, temperature 21
2015.04.14 05:45:39 5: MAX_Parse MAX,0,WallThermostatControl,070f6c,26D2
2015.04.14 05:45:39 5: cm dispatch MAX,0,WallThermostatControl,070f6c,26D2


Geloggt wird seit gestern nur noch temperature, desiredTemperature, valveposition,state
Cubieboard 3
Cul V3-868,Cul V3-433,JeeLink-868,HM-Lan
MAX Thermostat, MAX Thermostat+, MAX Fensterkontakt, MAX ECO-Taster,HM-Fensterdrehgriff/Klingelsignalsensor/Rolladenaktor,
IT-Funksteckdosen, Wandschalter, Rolladenaktoren, Funkschalter,LaCrosse,YoulessStromzähler,GPIOGaszähler+Türkontakt

gero

Das Problem mit dem "len mismatch" wird durch die Funktion CUL_ReadAnswer (in 00_CUL.pm) erzeugt. Diese Funktion wird z.B. aufgerufen, wenn die credits vom CUL abgefragt werden. Werden in der Antwort zufällig noch andere Nachrichten gelesen, so werden sie am Ende der Funktion an CUL_Parse stückweise weitergeleitet. Leider fehlt vorher das Entfernen der Zeilenumbrüche:
Zitat# Dispatch data in the buffer before the proper answer.
    while(($mculdata =~ m/^([^\n]*\n)(.*)/s) || $anydata) {
      my $line = ($anydata ? $mculdata : $1);
      $mculdata = $2;
      (undef, $line) = CUL_prefix(0, $ohash, $line); # Delete prefix
      if($regexp && $line !~ m/$regexp/) {
        $line =~ s/[\n\r]+//g;
        CUL_Parse($ohash, $hash, $ohash->{NAME}, $line);
      } else {
        return (undef, $line);
      }
    }

Achtung der Code ist nicht wirklich ausreichend getestet, weil ich das Problem, das ich früher auch schon mal hatte, zur Zeit nicht mehr nachstellen kann.
Eigentlich reicht auch das Ersetzen von \r, da \n in $line nicht mehr vorkommen kann.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Matthias Gehre

@gero: Hast du diesen Patch an den CUL Maintainer (im Forum) weitergeleitet?

gero

Noch nicht. Ich wollte noch bis morgen testen, ob nicht noch eine weitere Änderung notwendig ist.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

gero

#11
Alle meine Tests scheinen erfolgreich zu sein. Also anbei nochmal der Fix als Patchfile.

Ich bin mir immer noch nicht sicher, wie man Fixes am besten den Maintainern zukommen läßt, da man an PNs keine Dateien hängen kann. Und teilweise ist es schwierig den richtigen Forenbereich für einen Fehlerreport zu finden.

Kümmert sich eigentlich noch jemand um die Warning
PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 893.
Die spammt mir nämlich meine Logs zu.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

krikan

http://www.fhemwiki.de/wiki/How_to_write_a_patch unter "Submit the Patch" wurde mal festgehalten, wo und wie ein Patch veröffentlicht werden sollte. Hoffe, das ist noch aktueller Stand.
Gruß, Christian

gero

Danke. Man lernt immer noch was dazu.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Matthias Gehre

Zitat von: gero am 22 April 2015, 08:40:48
Kümmert sich eigentlich noch jemand um die Warning
PERL WARNING: Use of uninitialized value $value in lc at ./FHEM/10_MAX.pm line 893.
Die spammt mir nämlich meine Logs zu.

Gruß,
Gero

Der Fehler entsteht wenn in Zeile 895 das Array @parts nur 0 oder 1 Element besitzt. Leider
weiß ich nicht, was DbLog in diesem Fall für eine Rückgabe erwartet.
Du könntest hinter der 'my @parts = ...' Zeile z.B.
return ($reading, $value, $unit) if(@parts < 2);
versuchen. Ich kanns hier ohne DbLog nicht testen.