Anwendungsbeispiel JsonMod / Covid / 7-Tage-Inzidenz

Begonnen von herrmannj, 24 August 2020, 18:44:17

Vorheriges Thema - Nächstes Thema

yersinia

Ich nutze die tausender sub um mir Zahlen entsprechend in der deutschen Notation (m.nnn,nnn) anzeigen zu lassen - übergib der Funktion ein Zahlenwert und diese gibt den umgewandelten Wert zurück. Wenn ich aber selbst dies im stateFormat nutze und es zur Verfügung stelle, kann ich nicht davon ausgehen, dass andere user die tausender sub haben bzw. haben möchten - daher gibt es in #110 das ganze ohne die sub.

Mit tausender sub wäre der stateFormat:
attr Intensivregister stateFormat { my @objects = ("0","1","overallSum");;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;text-align: right;;";;\
my $highlightcolor = "DarkSlateGray";; #DodgerBlue";;\
my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br \/>";;\
$ret .= '<div style="display:table;;width:80%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:35%;;font-weight:bold;;">&nbsp;;</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;font-weight:bold;;">Covid</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;">&nbsp;;</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;font-weight:bold;;">davon beatmet</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;">&nbsp;;</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;font-weight:bold;;">freie Kapazit&auml;;ten</div>';;\
$ret .= '</div>';; #header\
for my $obj (@objects) {\
$ret .= '<div style="display:table-row;;" onmouseover="this.style.background=\''.$highlightcolor.'\';;" onmouseout="this.style.background=\'transparent\';;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:35%;;">';;\
$ret .= ReadingsVal($name,$obj."_name","-");;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;">';;\
$ret .= tausender(ReadingsVal($name,$obj."_faelleCovidAktuell","-"));;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;">';;\
$ret .= ReadingsVal($name,$obj."_covidToIntensivBettenPercent","-")."%";;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;">';;\
$ret .= tausender(ReadingsVal($name,$obj."_faelleCovidAktuellBeatmet","-"));;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;">';;\
$ret .= ReadingsVal($name,$obj."_faelleCovidAktuellBeatmetToCovidAktuellPercent","-")."%";;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;">';;\
$ret .= tausender(ReadingsVal($name,$obj."_covidKapazitaetFrei","-"));;\
$ret .= '</div>';;\
$ret .= '</div>';;\
}\
$ret .= '</div><br />';; #table\
$ret .= "Letzter API-Update-Check: ";;\
$ret .= ReadingsVal($name,"creationTimestamp","-");;\
$ret .= "</div>";;\
return $ret;;}
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Wasserwerk33

@yersinia
Du hast in einem Beitrag geschrieben das man die erste Zeile ändern muss wenn man mehrere Bundesländer Abfragen möchte.

Mein Angepassteste:
{ my @objects = ("NORDRHEIN_WESTFALEN","NIEDERSACHSEN","overallSum");

Leider stehen bei mir keine Bundesländer in Tabelle davor sondern nur Striche, habe ich etwas vergessen einzugeben?

Danke für deine Hilfe, und die coole Arbeite

yersinia

Das hängt davon ab, wie deine Readings gebaut werden.
Wenn mit BL als Schlüsselteil (wie in #109 beschrieben) via (zB)
multi(jsonPath("\$.data[?(\@.bundesland in ['NORDRHEIN_WESTFALEN','NIEDERSACHSEN'])]"), concat(property('bundesland'),'_standortAnzahl'), property('standortAnzahl'));;\
##-------------------------siehe----hier--------------------------------------------------------^

sollten alle Readings auch mit NORDRHEIN_WESTFALEN_ bzw. NIEDERSACHSEN_ (und overallSum_) beginnen, dann sollte
{ my @objects = ("NORDRHEIN_WESTFALEN","NIEDERSACHSEN","overallSum");
funktionieren.

Wenn count anstelle des BL verwendet wird (weil die Readings dann wesentlich kürzer sind - wie in #110 beschrieben) via (zB)
multi(jsonPath("\$.data[?(\@.bundesland in ['NORDRHEIN_WESTFALEN','NIEDERSACHSEN'])]"), concat(count(),'_meldebereichAnz'), property('meldebereichAnz'));;\
##-------------------------siehe----hier--------------------------------------------------------^

sollten alle Readings auch mit 0_ bzw. 1_ (und overallSum_) beginnen, dann sollte
{ my @objects = ("0","1","overallSum");
funktionieren.

Wichtig ist, dass du ein Reading mit _name erzeugst, sonst hast du keine Beschreibung für das BL:
multi(jsonPath("\$.data[?(\@.bundesland in ['NORDRHEIN_WESTFALEN','NIEDERSACHSEN'])]"), concat(count(),'_name'), ucfirst(lc(property('bundesland'))));;\
Das ist aber in #110 enthalten.

Nach den Änderungen ein reread ausführen - und auch mal prüfen, ob die JSON-Quelle auch zur Verfügung steht. ;)

Ansonsten zeig' mal ein list des Devices. ;)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Wasserwerk33

Hi

Ich habe es nach dem wie im Beitrag #110 umgebaut. Nun geht es. Dort wird auch der Name als Reading angezeigt. So wie unter overallSum.

Jetzt mit dem Klappt alles und ist so wie es sollte.

khk123

Hi yersinia,

ich hab deine Definitionen für das Intensivregister seit Wochen am Laufen. Funktionierte auch bis zum 22.10 ganz gut. Nur plötzlich hatte ich am 23.10., 26.10. und auch heute (27.10.) nach der Abfrage der Website um 03:25 Uhr einen Hänger von FHEM. FHEM läuft zwar noch, es sind aber keinerlei Events mehr zu sehen und es werden auch keine Befehle mehr ausgeführt. Die Abfrage des Intensivregister erfolgt generell nur um nachts um 03:25 Uhr. Meine Vermutung ist, das https://www.intensivregister.de/api/public/reporting/laendertabelle?format=json&onlyErwachsenenBetten=true&onlyHaupversorgerCovid19=false zwar erreichbar war, aber irgendetwas schiefgelaufen ist. Ist da etwas bekannt? Hab die Abfrage erstmal deaktiviert.

Hier die letzten Meldungen von 03:25 bis zum Restart von FHEM um 08:50 (global verbose 4 war gesetzt)

2021.10.27 03:25:03 4: monitoring (Batterie_Ueberwachung) triggered by "W_Hz_E battery: ok"
2021.10.27 03:25:04 4: https://www.intensivregister.de/api/public/reporting/laendertabelle?format=json&onlyErwachsenenBetten=true&onlyHaupversorgerCovid19=false: HTTP response code 200
2021.10.27 03:25:04 4: [Intensivregister] api encoding is , designated encoder is utf-8-strict
2021.10.27 08:50:37 1: PERL WARNING: "my" variable $out masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 420, <DATA> line 1.
2021.10.27 08:50:37 1: PERL WARNING: "my" variable $Stadtteil masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 487, <DATA> line 1.
2021.10.27 08:50:37 1: PERL WARNING: "my" variable $Stadt masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 500, <DATA> line 1.
2021.10.27 08:50:37 3: telnetPort: port 7072 opened


Hier meine Intensivregister-Definitionen:


defmod Intensivregister JsonMod https://www.intensivregister.de/api/public/reporting/laendertabelle?format=json&onlyErwachsenenBetten=true&onlyHaupversorgerCovid19=false
attr Intensivregister DbLogExclude .*
attr Intensivregister disable 0
attr Intensivregister interval 25 */3 * * *
attr Intensivregister readingList multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_name'), ucfirst(lc(property('bundesland'))));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_meldebereichAnz'), property('meldebereichAnz'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_standortAnzahl'), property('standortAnzahl'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_faelleCovidAktuell'), property('faelleCovidAktuell'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_faelleCovidAktuellBeatmet'), property('faelleCovidAktuellBeatmet'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_intensivBettenBelegt'), property('intensivBettenBelegt'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_intensivBettenFrei'), property('intensivBettenFrei'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_intensivBettenFreiProStandort'), property('intensivBettenFreiProStandort'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_intensivBettenGesamt'), property('intensivBettenGesamt'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_intensivBettenNotfall7d'), property('intensivBettenNotfall7d'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_covidKapazitaetFrei'), property('covidKapazitaetFrei'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_covidToIntensivBettenPercent'), property('covidToIntensivBettenPercent'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_faelleCovidAktuellBeatmetToCovidAktuellPercent'), property('faelleCovidAktuellBeatmetToCovidAktuellPercent'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_bettenBelegtToBettenGesamtPercent'), property('bettenBelegtToBettenGesamtPercent'));;\
multi(jsonPath("\$.data[?(\@.bundesland in ['HESSEN','BAYERN'])]"), concat(count(),'_bettenFreiToBettenGesamtPercent'), property('bettenFreiToBettenGesamtPercent'));;\
single(jsonPath('$.overallSum.name'), 'overallSum_name', 'Deutschland');;\
single(jsonPath('$.overallSum.meldebereichAnz'), 'overallSum_meldebereichAnz', '-?-');;\
single(jsonPath('$.overallSum.standortAnzahl'), 'overallSum_standortAnzahl', '-?-');;\
single(jsonPath('$.overallSum.faelleCovidAktuell'), 'overallSum_faelleCovidAktuell', '-?-');;\
single(jsonPath('$.overallSum.faelleCovidAktuellBeatmet'), 'overallSum_faelleCovidAktuellBeatmet', '-?-');;\
single(jsonPath('$.overallSum.intensivBettenBelegt'), 'overallSum_intensivBettenBelegt', '-?-');;\
single(jsonPath('$.overallSum.intensivBettenFrei'), 'overallSum_intensivBettenFrei', '-?-');;\
single(jsonPath('$.overallSum.intensivBettenFreiProStandort'), 'overallSum_intensivBettenFreiProStandort', '-?-');;\
single(jsonPath('$.overallSum.intensivBettenGesamt'), 'overallSum_intensivBettenGesamt', '-?-');;\
single(jsonPath('$.overallSum.intensivBettenNotfall7d'), 'overallSum_intensivBettenNotfall7d', '-?-');;\
single(jsonPath('$.overallSum.covidKapazitaetFrei'), 'overallSum_covidKapazitaetFrei', '-?-');;\
single(jsonPath('$.overallSum.covidToIntensivBettenPercent'), 'overallSum_covidToIntensivBettenPercent', '-?-');;\
single(jsonPath('$.overallSum.faelleCovidAktuellBeatmetToCovidAktuellPercent'), 'overallSum_faelleCovidAktuellBeatmetToCovidAktuellPercent', '-?-');;\
single(jsonPath('$.overallSum.bettenBelegtToBettenGesamtPercent'), 'overallSum_bettenBelegtToBettenGesamtPercent', '-?-');;\
single(jsonPath('$.overallSum.bettenFreiToBettenGesamtPercent'), 'overallSum_bettenFreiToBettenGesamtPercent', '-?-');;\
single(jsonPath('$.creationTimestamp'), 'creationTimestamp', '-?-');;
attr Intensivregister room Corona
attr Intensivregister stateFormat { my @objects = ("0","1","overallSum");;\
my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;text-align: right;;";;\
my $highlightcolor = "DarkSlateGray";; #DodgerBlue";;\
my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br \/>";;\
$ret .= '<div style="display:table;;width:80%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:35%;;font-weight:bold;;">&nbsp;;</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;font-weight:bold;;">Covid</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;">&nbsp;;</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;font-weight:bold;;">davon beatmet</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;font-weight:bold;;">&nbsp;;</div>';;\
  $ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;font-weight:bold;;">freie Kapazit&auml;;ten</div>';;\
$ret .= '</div>';; #header\
for my $obj (@objects) {\
$ret .= '<div style="display:table-row;;" onmouseover="this.style.background=\''.$highlightcolor.'\';;" onmouseout="this.style.background=\'transparent\';;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:35%;;">';;\
$ret .= ReadingsVal($name,$obj."_name","-");;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;">';;\
$ret .= tausender(ReadingsVal($name,$obj."_faelleCovidAktuell","-"));;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;">';;\
$ret .= ReadingsVal($name,$obj."_covidToIntensivBettenPercent","-")."%";;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;">';;\
$ret .= tausender(ReadingsVal($name,$obj."_faelleCovidAktuellBeatmet","-"));;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:10%;;">';;\
$ret .= ReadingsVal($name,$obj."_faelleCovidAktuellBeatmetToCovidAktuellPercent","-")."%";;\
$ret .= '</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:15%;;">';;\
$ret .= tausender(ReadingsVal($name,$obj."_covidKapazitaetFrei","-"));;\
$ret .= '</div>';;\
$ret .= '</div>';;\
}\
$ret .= '</div><br />';; #table\
$ret .= "Letzter API-Update-Check: ";;\
$ret .= ReadingsVal($name,"creationTimestamp","-");;\
$ret .= "</div>";;\
return $ret;;}
attr Intensivregister webCmd reread


VG
Karlheinz
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

yersinia

Ich hatte sporadisch, aber reproduzierbar, das Problem, dass bei mir (system siehe sig) das Intensivregister JSONmod Device zum FHEM-Absturz führte (gleiches Fehlerbild wie bei dem SEGV) - und da es mich eigentlich nur bedingt interessiert, habe ich es gelöscht. Seitdem ist Ruhe.

Ich weiss nicht wie dein Systemsetup ist, aber wenn FHEM bei dir auf Linux mit systemd läuft (Debian/Raspbian?), kannst du mal schauen, ob du was im Systemlog findest - gib mal in der Konsole dies ein:
journalctl --since="2021-10-27 03:24" --until="2021-10-27 03:30"
Möglicherweise stürzt dein FHEM ab und wird nicht automatisch neugestartet sodass du händisch eingreifen musst.

Ansonsten musst du den verbose level auf 5 setzen um es besser eingrenzen zu können. Und ein List des Devices, du hast "nur" die Raw-Definition geteilt.

herrmanj beschreibt weiter oben eine Lösungsoption
Zitat von: herrmannj am 08 September 2021, 12:03:32Cpanel::JSON::XS
bzw
Zitat von: yersinia am 12 Mai 2021, 08:23:01btw, als zusätzliche info:für die Debian-Derivate wie RaspiOS:
sudo apt update && sudo apt install libcpanel-json-xs-perl
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

khk123

Vielen Dank für die schnelle Antwort.

FHEM lauf auf Rasbian.

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"

FHEM läuft mit systemd, wird aber nicht automatisch restartet.

fhem.service - LSB: FHEM server
   Loaded: loaded (/etc/init.d/fhem; generated; vendor preset: enabled)
   Active: active (running) since Wed 2021-10-27 08:50:37 CEST; 4h 59min ago



journalctl --since="2021-10-27 03:21" --until="2021-10-27 03:30"

gibt keinen Eintrag aus.

Cpanel::JSON::XS ist installiert, aber nicht die aktuellste Version.

Name                       Current Version   Latest Version
Cpanel::JSON::XS     4.26                  4.27


Ich hab das Device jetzt erstmal disabled. Da ich in Kürze in Urlaub bin und erst wieder am 12.11. zurück bin, möchte ich momentan keinen Update machen. Werde ich nach dem Urlaub nachholen und auch vor dem Update mit Verbose 5 mal loggen. Ich melde mich dann hier wieder.

VG
Karlheinz
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

yersinia

Zitat von: khk123 am 27 Oktober 2021, 14:03:31FHEM lauf auf Rasbian.
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
Uih, stretch ist EOL afaik, du solltest zumindest auf buster (10), besser gleich durch auf bullseye (11), aktualisieren.

Zitat von: khk123 am 27 Oktober 2021, 14:03:31FHEM läuft mit systemd, wird aber nicht automatisch restartet.
Dann solltest du dir überlegen, hier auf restart on error zu wechseln

Zitat von: khk123 am 27 Oktober 2021, 14:03:31journalctl --since="2021-10-27 03:21" --until="2021-10-27 03:30"
gibt keinen Eintrag aus.
Interessant, ich hätte da einen Eintrag vom FHEM service erwartet.

Zitat von: khk123 am 27 Oktober 2021, 14:03:31Cpanel::JSON::XS ist installiert, aber nicht die aktuellste Version.

Name                       Current Version   Latest Version
Cpanel::JSON::XS     4.26                  4.27


Ich hab das Device jetzt erstmal disabled. Da ich in Kürze in Urlaub bin und erst wieder am 12.11. zurück bin, möchte ich momentan keinen Update machen. Werde ich nach dem Urlaub nachholen und auch vor dem Update mit Verbose 5 mal loggen. Ich melde mich dann hier wieder.
Tja, da bin ich auch überfragt - vlt fällt hermannj hierzu etwas ein. Er wird aber definitiv mehr Informationen benötigen.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

khk123

Zitat von: yersinia am 27 Oktober 2021, 15:03:57
Uih, stretch ist EOL afaik, du solltest zumindest auf buster (10), besser gleich durch auf bullseye (11), aktualisieren.
Ja, ich weiss. Nur du kennst ja auch "Never touch a running system". Aber du hast schon recht. Ist auf der Todo-Liste für nach dem Urlaub. :)

Zitat von: yersinia am 27 Oktober 2021, 15:03:57
Dann solltest du dir überlegen, hier auf restart on error zu wechseln
Wäre eine Möglichkeit, nur in dem konkreten Fall ist FHEM ja nicht abgestürzt, sondern lief eigentlich weiter und hat nur noch Events von meinem NETATMO-Device und meiner Waage entgegengenommen. Von allen anderen Devices gabe es keine Events mehr und es wurden auch keine Befehle mehr abgesetzt.

Zitat von: yersinia am 27 Oktober 2021, 15:03:57
Interessant, ich hätte da einen Eintrag vom FHEM service erwartet.
Ging mir auch so. Ich hätte da auch mehr Infos in den Logs erwartet. Aber mal sehen was verbose 5 dann bringt.

FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

yersinia

[OT]
Zitat von: khk123 am 27 Oktober 2021, 15:39:53Ja, ich weiss. Nur du kennst ja auch "Never touch a running system". Aber du hast schon recht. Ist auf der Todo-Liste für nach dem Urlaub. :)
So einen Umstieg kann man gleich mit einer zweiten (neuen) SD Karte zum Restore-üben nutzen. Auf der neuen SD Karte RaspiOS Bullseye (11) aufsetzen und einrichten inkl. FHEM Installation und dann das FHEM-Backup vom Strech-FHEM auf das neue Bullseye-FHEM übertragen. Wenn es schief geht, hat man immer noch die alte, lauffähige SD Karte und dann maximal eine Stunde ohne FHEM. So übt man das Wiederherstellen eines Backups und kann seine Dokumentation der Installationsschritte nochmals gegenprüfen. Für den Fall der Fälle.
[/OT]

Zitat von: khk123 am 27 Oktober 2021, 15:39:53Wäre eine Möglichkeit, nur in dem konkreten Fall ist FHEM ja nicht abgestürzt, sondern lief eigentlich weiter und hat nur noch Events von meinem NETATMO-Device und meiner Waage entgegengenommen. Von allen anderen Devices gabe es keine Events mehr und es wurden auch keine Befehle mehr abgesetzt.
Ging mir auch so. Ich hätte da auch mehr Infos in den Logs erwartet. Aber mal sehen was verbose 5 dann bringt.
Ok, dann warten wir mal ab, was es nach (!) deinem Urlaub mit verbose 5 ergibt. Kurioses verhalten ist es allemal.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

khk123

Danke für die Tipps zum Update. Genau so ist es geplant. Das Backup auf einer 2. SD-Karte erstelle ich regelmäßig. Man weiß ja nie... ;)
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

herrmannj

Zitatsondern lief eigentlich weiter und hat nur noch Events von meinem NETATMO-Device und meiner Waage entgegengenommen. Von allen anderen Devices gabe es keine Events mehr und es wurden auch keine Befehle mehr abgesetzt.
man soll nie "nie" sagen, aber ich sehe nicht wie das durch einen Fehler im Zusammenhang mit json entstehen sollte. SEGV macht Sinn, Fehler in perl (lib). Absturz (SEGV), Neustart.

Aber halbtot, so wie beschrieben? Theoretisch wäre es denkbar das eine Schleife endlos läuft (vereinfacht while(1) {}). Dann müsste die CPU load auf 100% hochgehen, das sollte man per htop sehen. Das steht aber im Widerspruch zu den NETATMO events ..

khk123

Eine Schleife hab ich auch vermutet. Aber wieso kommen dann Events von NETATMO? I BTW, es laufen noch weitere 9 JsonMod-Devices bisher ohne Probleme. Nur dieses eine, das https://www.intensivregister.de abfragt, verursacht dieses seltsame Verhalten. Könnte evtl. auch ein Problem mit den Daten sein. Aber wie dem auch sei, das Problem ist erstmal gebannt und auf Eis gelegt. Ich versuche nach meinem Urlaub dem Ganzen mit verbose 5 nochmal auf den Grund zu gehen und melde mich dann hier wieder.

Erstmal vielen Dank für eure Unterstützung.
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

herrmannj

Grundsätzlich rechnet das modul damit, dass der Server auch Murks zurück liefern kann (und handelt das). Wenn es sich reproduzieren lässt kann ich suchen, ansonsten fällt mir nichts theoretisches dazu ein.

Außer: perl selber (JSON::XS). Bitte schau mal das Du wirklich die aktuellste Version von JsonMod verwendest. Der Wechsel von JSON::XS auf CPANEL::JSON::XS war anlässlich der Meldung von yersinia, gefühlt noch nicht so lange her.

khk123

Zitat von: herrmannj am 27 Oktober 2021, 19:24:07
Außer: perl selber (JSON::XS). Bitte schau mal das Du wirklich die aktuellste Version von JsonMod verwendest. Der Wechsel von JSON::XS auf CPANEL::JSON::XS war anlässlich der Meldung von yersinia, gefühlt noch nicht so lange her.

Folgende Version ist aktiv:

File                    Rev     Last Change
98_JsonMod.pm 24783 2021-07-21 22:37:12Z herrmannj


Ein update check ergab nichts neueres.

Ich hoffe, dass ich es nach meinem Urlaub mit verbose 5 reproduzieren kann und melde mich nach dem 12. November wieder.

FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa