Hallo zusammen,
habe ein Problem:
- von mehreren Geräten aus ist FHEM über FHEMWEB / FTUI erreichbar.
- Parallelzugriffe erzeugen neue FHEMWEB-Instanzen (WEB_..., WEBphone_..., etc.)
=> Nun kommt es häufiger vor, dass in einer Instanz in das Internal BUF (aus mir unerklärlichen Gründen) "komische Zeichen" geschrieben werden.
Bsp.:
BUF
FBA{1��d'�x�}E��</̵���iĆ��~Ń�?Hl�������耔���kи�L��@�/�[@�k��<���0N JZ��� �na5�-�,�,4���0� Z\nH�@p`ƱJ�Y�S���F�G����
Wenn dies der Fall ist, ist ein Zugriff über FTUI z.B. nicht mehr möglich.
Folgende Meldung wird im FTUI angezeigt:
Error
ShortPoll Request Failed
parsererror, SyntaxError: JSON.parse: bad control character in string literal at line 2389 column 15 of the JSON data
In diesem Fall ist Zeile 2389 der JSON data genau der Inhalt von BUF.
Ein shutdown+restart löscht alle Instanzen und das Problem ist vorübergehend "gelöst".
Leider kann ich meiner besseren Hälfte schlecht sagen, dass wenn es im FTUI eine Fehlermeldung gibt, sie erstmal in die FHEM Oberfläche gehen soll, um einen Restart von FHEM auszulösen :S
Woher kommt der "Fehler" bzw. wie kann dieser vor allem vermieden werden?
Erstens sollte der "Binaer-BUF" Modulautor ermahnt werden, nur "druckbare" Zeichen in oeffentlich einsehbare Felder zu schreiben.
Zweitens sollte man dem JsonList2 Autor (das waere ich) einen Beispieldatensatz (fhem.save + fhem.cfg Auszug) zur Verfuegung stellen, damit er daraus einen ordentlichen Json baut. Es sei denn, FTUI verwendet nicht JsonList2, dann bin ich fein raus. :)
Hallo ehrenwerter Herr König,
habe Ihnen die Daten per PN zugesendet ;)
Leider ist mir der "Binaer-BUF" Modulautor nicht bekannt... ebenfalls nicht, wie dieser zu ermitteln ist ^^
Ich vermute mal, dass FTUI JsonList2 benutzt .... habe mal in den Tiefen von GitHub gesucht und folgenden Code gefunden:
...
//Request all devices from FHEM
$.getJSON(ftui.fhem_dir,
{cmd: 'jsonlist2',
XHR:1,
timeout: 30000}, function (data) {
// function to convert results
function DevicesJSON(fhemJSON) {
this.length = fhemJSON.Results.length;
var results = fhemJSON.Results;
for(var i = 0; i < this.length; i++)
this[results[i].Name] = results[i];
}
....
Quelle: https://github.com/knowthelist/fhem-tablet-ui/blob/eval/www/tablet_eval/js/fhem-tablet-ui.js (https://github.com/knowthelist/fhem-tablet-ui/blob/eval/www/tablet_eval/js/fhem-tablet-ui.js)
Ich hoffe, dass ich weiterhelfen konnte.... wenn noch Informationen fehlen sollten, kann ich diese gerne nachliefern.
Hallo,
das Thema wurde auch schon einmal im Thread zu FTUI 2.2 besprochen
https://forum.fhem.de/index.php/topic,50945.msg460156/topicseen.html#msg460156 (https://forum.fhem.de/index.php/topic,50945.msg460156/topicseen.html#msg460156)
https://forum.fhem.de/index.php/topic,50945.msg460126/topicseen.html#msg460126 (https://forum.fhem.de/index.php/topic,50945.msg460126/topicseen.html#msg460126)
https://forum.fhem.de/index.php/topic,50945.msg456351/topicseen.html#msg456351 (https://forum.fhem.de/index.php/topic,50945.msg456351/topicseen.html#msg456351)
Ich hatte angenommen, dass es einen entsprechenden Request in Bezug auf jsonlist2 bereits gibt.
Ich habe bei mir auch solche Probleme, da mein eigenes Modul unter Nutzung von HTTPMOD aus einer Webseite Readings mit z.B. solchem Inhalt erzeugt
Sanierungsarbeiten an drei Brücken
jsonlint springt darauf an und FTUI kommt mit solchen Inhalten nicht klar.
Gruß & schonmal Danke für etwaige Verbesserungen oder Tipps,
Mario
Hallo Mario,
Ich kenne den Thread.... Dort wurde das Problem in Readings festgestellt... die zum Teil manuell überschrieben werden könnten.
Leider habe ich keinen Einfluss auf das Internal BUF und ganz ohne FHEMWEB ist auch blöd ^^
Bei mir tritt momentan das Problem mehrmals täglich auf...... :/
Nach einem FHEM Restart sind die FHEMWEB Instanzen weg und es funktioniert wieder für paar Stunden... bis zum nächsten fehlerhaften Abruf mit Jsonlist2...
Ein Internal "BUF" kenne ich nur im Modul HTTPMOD. Verwendest Du das? Wenn ja stammen die Zeichen ja aus dem zu parsenden Webinhalt.
Gruß,
Mario
Hallo Mario,
Wie eingangs beschrieben....das Internal BUF wird manchmal in einer der FHEMWEB Instanzen gesetzt (einfach mal unter "everything" schauen)... In den anderen Instanzen ist BUF leer.
@n4rrOx: danke fuers fhem.cfg/fhem.save, hilft mir aber nicht: BUF ist vmtl. ein Internal, das wird nicht in fhem.save/fhem.cfg gespeichert. Tut mir leid, habe wohl nicht nachgedacht.
Ich habe jetzt selbst Binaerdaten eingefuegt, und JsonList2 so geaendert, dass in der Ausgabe nicht-utf8 durch <BINARY> ersetzt wird. Bitte testen. Bin auf Nebeneffekte gespannt.
Hi,
kein Problem ;)
Bin sogar froh, dass sich die Leute hier im Forum so engagieren!
Zum Thema:
Da ich leider den "Fehler" nicht nachstellen kann bzw. auch nicht weiß wovon er genau ausgelöst wird, werde ich wohl heute / morgen einfach mal FHEM / FTUI öfters aufrufen und schauen, ob ich was Neues entdecke ^^
Werde berichten ;)
/Edit:
Die Änderungen werden erst heute Nacht aktiv? Daher erst morgen updaten?
Gruß
Mathias
Update gemacht...... und was soll ich sagen .... es funktioniert :D ... zumindest für mich ;D
Nebeneffekte: bis jetzt konnten keine festgestellt werden ... wenn ich aber mal wieder was verbockt habe und etwas nicht funktioniert, werde ich mich hier als erstes melden ;) 8)
Vielen Dank für die Unterstützung!