FHEM stürzt gelegentlich beim Aufruf vom SmartVISU Grafen ab

Begonnen von Saphora, 18 September 2020, 11:20:16

Vorheriges Thema - Nächstes Thema

Saphora

Hallo Zusammen,
derzeit tritt bei mir ein Problem mit FHEM in Kombination von SmartVISU auf.
Bei Aufruf von Seiten im SmartVISU Framework mit Grafen stürzt gelegentlich immer FHEM ab mit dem folgenden Log Einträgen:


2020.09.17 21 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: 192.168.2.254)          // Raspberry Pi mit NGINX und SmartVisu
2020.09.17 21 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: 192.168.2.254)          // Raspberry Pi mit NGINX und SmartVisu

Can't use an undefined value as an ARRAY reference at ./FHEM/31_fronthemDevice.pm line 632.

Undefined subroutine &main called at /opt/fhem/FHEM/lib/HM485/HM485d/../../../TcpServerUtils.pm line 220.
2020.09.17 21 1: PERL WARNING: Subroutine fronthemUtils_Initialize redefined at ./FHEM/99_myfronthemUtils.pm line 11.
2020.09.17 21 1: PERL WARNING: Subroutine fronthem_decodejson redefined at ./FHEM/99_myfronthemUtils.pm line 15.
2020.09.17 21 1: PERL WARNING: Subroutine fronthem_encodejson redefined at ./FHEM/99_myfronthemUtils.pm line 19.
2020.09.17 21 1: PERL WARNING: Prototype mismatch: sub main ($$;$) vs ($$) at ./FHEM/99_myfronthemUtils.pm line 63.
2020.09.17 21 1: PERL WARNING: Subroutine UZSU_execute redefined at ./FHEM/99_myfronthemUtils.pm line 30.
2020.09.17 21 1: PERL WARNING: Subroutine UZSU redefined at ./FHEM/99_myfronthemUtils.pm line 77.
2020.09.17 21 1: PERL WARNING: Subroutine AnAus redefined at ./FHEM/99_myfronthemUtils.pm line 122.
2020.09.17 21 1: Including fhem.cfg
2020.09.17 21 1: PERL WARNING: Subroutine Trigger redefined at ./FHEM/99_fhconverter.pm line 14, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine Attribute redefined at ./FHEM/99_fhconverter.pm line 54, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine ReadingsTimestamp redefined at ./FHEM/99_fhconverter.pm line 94, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine Direct redefined at ./FHEM/99_fhconverter.pm line 134, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine NumDirect redefined at ./FHEM/99_fhconverter.pm line 179, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine Level_0_100 redefined at ./FHEM/99_fhconverter.pm line 244, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine NumDisplay redefined at ./FHEM/99_fhconverter.pm line 288, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine RGBCombined redefined at ./FHEM/99_fhconverter.pm line 335, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 15, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine randomRGB redefined at ./FHEM/99_myUtils.pm line 20, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine HM_Rollo_Stop redefined at ./FHEM/99_myUtils.pm line 30, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine HM_Rollo_Up_Down redefined at ./FHEM/99_myUtils.pm line 69, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine fronthemUtils_Initialize redefined at ./FHEM/99_myfronthemUtils.pm line 11, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine fronthem_decodejson redefined at ./FHEM/99_myfronthemUtils.pm line 15, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine fronthem_encodejson redefined at ./FHEM/99_myfronthemUtils.pm line 19, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine UZSU_execute redefined at ./FHEM/99_myfronthemUtils.pm line 30, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine UZSU redefined at ./FHEM/99_myfronthemUtils.pm line 77, <$fh> line 8.
2020.09.17 21 1: PERL WARNING: Subroutine AnAus redefined at ./FHEM/99_myfronthemUtils.pm line 122, <$fh> line 8.
2020.09.17 21 3: WEB: port 8083 opened
2020.09.17 21 2: eventTypes: loaded 13871 events from ./log/eventTypes.txt
2020.09.17 21 3: HM485: HM485: Converting device files
2020.09.17 21 3: HM485: ==============================
2020.09.17 21 3: HM485: hbw_lc4_in4_dr.xml up to date
2020.09.17 21 3: HM485: hbw_lc_dim8_dr.xml up to date
2020.09.17 21 3: HM485: hbw_sd6_multikey.xml up to date
2020.09.17 21 3: HM485: hmw_central.xml up to date
2020.09.17 21 3: HM485: hmw_generic.xml up to date
....


Der Fehler tritt nicht auf, wenn keine Seiten mit Grafen innerhalb von SmartVISU aufgerufen werden.
Ich hatte die aktuelle 31_fronthemDevice.pm aus GITHUB eingespielt, da tritt der Fehler nicht mehr auf, jedoch werden da auch keine Daten mehr der Grafen angezeigt.

FHEM ist aktuell.
SmartVisu 2.9 wird genutzt.

Kennt jemand das Problem und die Lösung :)

Großen Dank.

Martin

herrmannj

ok, das erklärt. Fronthem hat Plots nicht implementiert - dass bedeutet das Verhalten tritt mit einer modifizierten Version auf?

Saphora

Was heißt modifiziert?
Die PM-Dateien hatte ich mal aus dem FHEM Forum so aktualisiert, dass alles funktionierte. Bis auf den Absturz von FHEM bei Plots.
Was wäre die Empfehlung, um eine saubere SmartVISU Lösung in kombination mit FHEM zu erhalten?

herrmannj

die Version mit den Plots kommt nicht von mir - daher weiß ich nicht was den Fehler verursacht.

Besagt Zeile in der Original Fronthem device ist diese:
$hash->{helper}->{monitor} = $msg->{message}->{items};

Damit dort der besagt Fehler auftritt müsste $msg ohne den key "message" ankommen (was eben "eigentlich" gar nicht vorkommt).

Vorschlag: nimm doch wieder die modifizierte Version und ändere _dort_ die Zeile #632 zu

eval {
  $hash->{helper}->{monitor} = $msg->{message}->{items};
} or do {
  use Data::Dumper;
  say "der komische Fehler war da:";
  say Dumper $msg;
  return;
};


Das ist erstmal nur ein workaround, der führt aber zu a) kein Absturz, b) 'ner Meldung im Log die vielleicht hilft herauszufinden warum.

vg
Joerg

Saphora

Die Zeile #632 in der 31_fronthemDevice.pm sieht wie folgt aus:

@{$msg->{message}->{items}} = @{$param->{gads}}?@{$param->{gads}}:($param->{gad}, $param->{gadval});


Passt das dann mit dem Code von dir?

herrmannj

ach siehste ..

Dann so, der Effekt ist der gleiche:

eval {
  @{$msg->{message}->{items}} = @{$param->{gads}}?@{$param->{gads}}:($param->{gad}, $param->{gadval});
} or do {
  use Data::Dumper;
  say "der komische Fehler war da:";
  say Dumper $msg;
  return;
};


Code ist ungetestet, mach vorher vernünftig Backups

Saphora

Mit dieser Änderung kann FHEM das Module fronthemDevice nicht mehr laden.

define SV_TAB fronthemDevice 192.168.2.55 => FHEM Ausgabe: Cannot load module fronthemDevice

herrmannj


Saphora

Sieht nach Syntaxfehler aus:


2020.09.18 14 1: reload: Error 31_fronthemDevice deactivated:
syntax error at ./FHEM/31_fronthemDevice.pm line 639, near "say "der komische Fehler war da

2020.09.18 14 0: syntax error at ./FHEM/31_fronthemDevice.pm line 639, near "say "der komische Fehler war da

herrmannj

Sieht eigentlich ok aus. dann mach mal ein "print" aus den beiden "say". Oder wirf die drei Zeilen ganz raus, bis zum return; das muss bleiben.

Saphora

Mit print wird das Modul geladen und funktioniert-
Ich beobachte mal und berichte.
Danke :)

Saphora

Also abstürzen tut jetzt nichts mehr.
Das ist der Logeintrag, wenn der Fehler auftritt:


der komische Fehler war da = {
          'message' => {
                         'cmd' => 'plot'
                       },
          'receiver' => 'SV_Tab'
        };


Kann ich da etwas tun?
Plots werden angezeigt.

herrmannj

ne, da müsste der plot autor wohl ran. Aber wenn es läuft kannst du es ignorieren.

Saphora

Alles klar. Dann großen Dank für die Funktionserweiterung, dass FHEM nicht mehr abstürzt :)

87insane

Hey zusammen,

gibt es hier was neues? Ich nutze aktuell auch noch den Workaround.