Hauptmenü

Absturz FHEM vermutlich durch FHEMapp

Begonnen von Doogy, 15 August 2024, 15:35:06

Vorheriges Thema - Nächstes Thema

Doogy

Hallo zusammen,

FHEMapp läuft bei mir jetzt schon seit längerem. Heute Nacht hat sich allerdings FHEM in einer Bootschleife befunden (FHEM startete 23x neu, im Minutentakt) und ist dauernd abgestürzt. Erst ein Reboot des Linux konnte Abhilfe schaffen. Könnte mir eventuell dazu jemand helfen, damit es nicht wieder passiert.

Meldung im logfile:
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "\r\n<...") at ./FHEM/02_FHEMAPP.pm line 937.
VG Felix

Otto123

Hallo Felix,

Zitat von: Doogy am 15 August 2024, 15:35:06Könnte mir eventuell dazu jemand helfen, damit es nicht wieder passiert.
der Modulauthor sollte eine Prüfung der JSON Strings einbauen. Das ist ein bekanntes Problem bei der Verwendung von decode_json.

Beispiel:
sub decode_j {
# decode_json() croaks on error, this function should prevent fhem crashes
# https://metacpan.org/pod/Perl::Critic::Policy::ErrorHandling::RequireCheckingReturnValueOfEval
  use JSON qw(decode_json);
  my $maybe_json = shift;
  my $data;
  if ( eval { $data = decode_json($maybe_json); 1 } ) { return $data }
  Log3(undef, 1, "JSON decoding error, >$maybe_json< seems not to be valid JSON data: $@");
  return q{}
}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

jemu75

Hallo Felix,

die Anpassung in dem Modul müsste sich @Benni mal ansehen. Unabhängig davon würde ich mir deine Konfiguration gern mal ansehen. Im Normalfall wird diese ja in FHEMApp erzeugt und dann an FHEM übergeben. Das FHEM Modul übernimmt hier hauptsächlich das Speichern bzw. Laden der Konfiguration auf dem FHEM-Server.

Also sende mir gern mal deine Konfiguration (unter /home/jens/extfhem/opt/fhem/conf/ xxx_config.fhemapp.json) zu finden.

Beste Grüße
Jens :)

Doogy

Hallo Jens,

hier die gewünschte Datei.

Nochmal festzuhalten, bis jetzt war es ein einmaliges "Event". Seit dem kompletten Neustart läuft erstmal wieder alles.

VG Felix

Himbi777

#4
Zitat von: Doogy am 15 August 2024, 15:35:06Hallo zusammen,

FHEMapp läuft bei mir jetzt schon seit längerem. Heute Nacht hat sich allerdings FHEM in einer Bootschleife befunden (FHEM startete 23x neu, im Minutentakt) und ist dauernd abgestürzt. Erst ein Reboot des Linux konnte Abhilfe schaffen. Könnte mir eventuell dazu jemand helfen, damit es nicht wieder passiert.

Meldung im logfile:
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "\r\n<...") at ./FHEM/02_FHEMAPP.pm line 937.
VG Felix

Hallo Jens
Bei mir war es genauso, Fhem hat in der gleichen Nacht von 1:12 bis 1:37 auch 22x neu gestartet, lief aber ab dann wieder normal weiter.
Ich habe die gleiche Fehlermeldung im LOG-File gefunden.

Gruß Gerhard
Raspberry Pi4, OMV, FHEM, FHEM-App // Tasmota-Geräte, Zigbee2Tasmota, 433Mhz Funksender, WLED-Stripes, AI-on-the-edge Wasserzähler, Nuki-Türschlösser

Doogy


OliS.

Jupp, bei mir auch. Derselbe Zeitraum, dasselbe Verhalten.

LG
Oli
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

Benni

Sorry, dass ich mich erst jetzt dazu melde! Aber wie so viele, befinde ich mich aktuell eher im Sommer-Urlaubs-Modus ;)

Das wichtigste zuerst: Das Problem wurde NICHT durch die FHEMApp-Config ausgelöst, sondern durch eine ungültige JSON-Antwort bei der (zyklischen) Abfrage der Releases von github.

Das erklärt woh auch die scheinbare Gleichzeitigkeit bei verschiedenen Usern. Wahrscheinlich war auch weder ein reboot die Problemlösung sondern github hat einfach ab einem bestimmten Zeitpunkt wieder eine gültige json-Antwort ausgeliefert.

Btw.: Das Modul verarbeitet die FHEMApp-Config bisher überhaupt nicht. Warum auch?

@Otto123: Danke für den Hinweis! Das werde ich in die nächste Version aufnehmen. Kann aber noch ein paar Tage dauern ... Developer machen eben eher Sommerschlaf, als Winterschlaf :D

gb#

PS: Um das in der Zwischenzeit zu verhindern, kann das Modul per attribut disabled davon abgehalten werden, zyklisch die Release-Daten bei github abzurufen, um auf updates zu prüfen.