Fehlermeldung im Logfile seit update

Begonnen von stromer-12, 09 Februar 2013, 14:25:05

Vorheriges Thema - Nächstes Thema

stromer-12

Hallo,

ich habe vorgestern ein Update gemacht und habe jetzt viele Zeilen mit folgenden Wortlaut im Log von FHEM.


Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.


Das letzte mal wurde am 21.1. ein update gemacht, da waren noch keine Einträge zu sehen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rudolfkoenig

Einer der Module packt undefined in die Liste der events rein, sowas gehoert verboten.
Kannst Du bitte "attr global verbose 5" setzen, und 10-20 Zeilen vor der Fehlermeldung hier posten (oder mir direkt schicken).

stromer-12

es ist das ESA2000 Modul, da hatte ich etwas angepasst (LAST: xxxx eingefügt, da CUR falsches anzeigt, wenn Übertragungen ausgelassen wurden)


2013.02.09 19:07:24 5: CUL/RAW: /S035E42011E000082AF0003000000020610

2013.02.09 19:07:24 5: CUL_0: S035E42011E000082AF00030000000206 -66
2013.02.09 19:07:24 5: CUL_0 dispatch S035E42011E000082AF00030000000206
2013.02.09 19:07:24 5: ESA2000 msg s035e42011e000082af00030000000206
2013.02.09 19:07:24 5: ESA2000 seq 03
2013.02.09 19:07:24 5: ESA2000 device 5e42
2013.02.09 19:07:24 5: ESA2000 code 011e
2013.02.09 19:07:24 4: ESA2000 em.hz.st: CNT: 3- CUM: 42.725 CUR: 0.106 LAST: 0.106 TICKS: 600 LR
2013.02.09 19:07:24 5: Triggering em.hz.st (29 changes)
2013.02.09 19:07:24 5: Notify loop for em.hz.st repeat: -
Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.
Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.
Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.
Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.
Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.
Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2513.
Use of uninitialized value $state in concatenation (.) or string at /usr/bin/fhem.pl line 2317.
Use of uninitialized value $state in concatenation (.) or string at /usr/bin/fhem.pl line 2317.
Use of uninitialized value $state in concatenation (.) or string at /usr/bin/fhem.pl line 2317.
Use of uninitialized value $state in concatenation (.) or string at /usr/bin/fhem.pl line 2317.
Use of uninitialized value $state in concatenation (.) or string at /usr/bin/fhem.pl line 2317.
Use of uninitialized value $state in concatenation (.) or string at /usr/bin/fhem.pl line 2317.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rudolfkoenig

Ich vermute das Problem tritt ohne deine Aenderungen nicht auf. Leider haben wir keinen aktive ESA2000 Maintainer (Freiwillige vor!), und ich selbst habe weder Geraete, noch Ambitionen, den Code zu uebernehmen.

stromer-12

Ich würde mich ja gerne um das Modul kümmern, aber im Moment sehe ich da nicht durch, ich habe 3 Zeilen geändert und schon kommt der Fehler:


Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2539.


Meine Änderung bezieht sich auf auf folgende Zeilen:


Zeile 16:
original:
  "19fa" => "ESA2000_LED",
neu:
  "011e" => "ESA2000_LED",

Zeilen 75 und 76:
original:
  my $cde = substr($msg, 3, 4);
  my $dev = substr($msg, 7, 4);
neu:
  my $dev = substr($msg, 3, 4);
  my $cde = substr($msg, 7, 4);



# 0123456789012345678901234567890123456789

Diese Zeile stand im Programm, sicherlich die vom Autor.
# S0119FA011E00007D6E003100000007C9F9 ESA2000_LED      Zählerkonstante = 2000?


Das sind meine 3 ESA2000
# S125E42011E000000300002000000020615 ESA2000_LED      Zählerkonstante = 600
# S486062011E000000610001000000002B0F ESA2000_LED      Zählerkonstante = 75
# S665DDA011E000041800000000000020611 ESA2000_LED      Zählerkonstante = 600

Die Gemeinsamkeit ist bei allen 4 Geräten "011e"

Vielleicht kann mir einer auf die Sprünge helfen.

Gruß
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Johannes

Ich bin da grad mal drübergeflogen.
Meine Codes am Anfang sehen folgendermaßen aus:

my %codes = (
  "19fa" => "ESA2000_LED",
  "63E0" => "ESA2000_LED",
  "011e" => "ESA2000_LED",
  "6461" => "ESA2000_LED",
);

Es ist sinnvoll, den eigenen Code hinzuzufügen anstatt bestehende zu ersetzen.

Dein Umdrehen der Device und Code Angabe ist gefährlich,


  my $dev = substr($msg, 3, 4);
  my $cde = substr($msg, 7, 4);

da diese Deklaration für alle Geräte gilt. Wenn es in deinem Fall passt, sollte ein Gerätespezifischer Bereich hinzugefügt werden, wo diese Dinge getan werden und nicht global.
Bei meinem Gerät ESA2000LED führt das wie zu erwarten zu Fehlermeldungen, aber nur, dass das Device unbekannt ist.
Fehler wie
uninitialized value in pattern match (m//)
oder
Use of uninitialized value $state in concatenation (.) or string
bekomme ich mit deinen genannten Änderungen nicht. Kann es sein, dass da noch mehr geändert wurde?


Die Frage ist, was genau ist bei dir falsch, und tritt es immer auf oder nur manchmal?

stromer-12

Ich habe jetzt noch etwas getestet, dabei hatte fhem die Zähler plötzlich neu angelernt.
Ich hatte auch ein "update force" gemacht. Jetzt ist die Meldung weg, obwohl ich meine veränderte Datei einsetze.
Vielleicht war irgendwo noch eine Variable die geklemmt hat, welche durch das neue anlegen korrigiert wurde.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

stromer-12

Zitat von: Johannes schrieb am Do, 14 Februar 2013 20:26Ich bin da grad mal drübergeflogen.
Meine Codes am Anfang sehen folgendermaßen aus:

my %codes = (
  "19fa" => "ESA2000_LED",
  "63E0" => "ESA2000_LED",
  "011e" => "ESA2000_LED",
  "6461" => "ESA2000_LED",
);



So hat das bei mir nicht geklappt, da ich dann 3 Geräte mit 011e in der Konfig hatte, damit hatte sich fhem beschwert.
Deswegen meine Änderung damit nicht für jeden Zähler die pm-Datei geändert werden muss.

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

stromer-12

Ich habe ein paar Sachen gefunden.

1.
Ein Rückgabewert in der 64_ESA2000.pm ist in "(..)" geschrieben.

2.
Einzelne Variablen sind nicht gesetzt, und erzeugen in der FHEMWEB Fehlermeldungen

Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2410.
Fehler hier (Logausgabe in FHEMWEB eingebaut:
Log 1, "Readings  $i $max $dn $dev->{CHANGED}[$i]";

2013.03.02 15:10:35 1: Readings  23 27 month_lr_kwh: 0.1444
2013.03.02 15:10:35 1: Readings  22 27
2013.03.02 15:10:35 1: Readings  21 27 day_lr_kwh: 0.1444
2013.03.02 15:10:35 1: Readings  20 27

FHEMWEB erwartet ein READING und es ist nichts da.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

stromer-12

Zitat von: str0mer schrieb am Sa, 02 März 2013 15:21Ich habe ein paar Sachen gefunden.

1.
Ein Rückgabewert in der 64_ESA2000.pm ist in "(..)" geschrieben.

2.
Einzelne Variablen sind nicht gesetzt, und erzeugen in der FHEMWEB Fehlermeldungen

Use of uninitialized value in pattern match (m//) at /usr/share/fhem/FHEM/01_FHEMWEB.pm line 2410.

FHEMWEB erwartet ein READING und es ist nichts da.

Habe die Fehler beseitigt und etwas die kWh differenz Berechnung, da bei fehlenden Übertragungen, der kWh Wert zu gering ausfiel.
Sowie die Berechnung mit Base1/2.
Der Umdrehungen je kWh Teiler wird auch korrekt ermittelt.

Mit meinen 3 ESA2000 mit Drehscheibenabtastung habe ich keine Probleme.
Vielleicht wird sie ja eingecheckt.

Edit: Doch noch ein kleiner Fehler.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL