FHEM Forum

FHEM => Frontends => Thema gestartet von: JoeALLb am 12 Januar 2017, 09:10:50

Titel: [gelöst] fhemweb.js line 743: SyntaxError: JSON.parse:
Beitrag von: JoeALLb am 12 Januar 2017, 09:10:50
Seit dem Update gestern erhalte ich manchmal diese Fehlermeldung als Popup;
fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Kann ich etwas zur Beseitigung tun?
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: rudolfkoenig am 12 Januar 2017, 14:14:27
ZitatKann ich etwas zur Beseitigung tun?
Ja, bitte alle Fragen beantworten:
- mit welchem Browser
- beim Aufruf welcher FHEM-Seite
- was steht in der JavaScript Konsole (insb. die letzte Rcvd: Zeile interessiert mich)
- die komplette FHEM-Definition des betroffenen Geraetes wuerde ich gerne sehen.
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: JoeALLb am 12 Januar 2017, 14:25:23
Danke! Anbei die Daten:
Ich bin mir noch nicht sicher, ob es nur auf diesem Device auftritt.

Zitat von: rudolfkoenig am 12 Januar 2017, 14:14:27
Ja, bitte alle Fragen beantworten:
- mit welchem Browser
- beim Aufruf welcher FHEM-Seite
- was steht in der JavaScript Konsole (insb. die letzte Rcvd: Zeile interessiert mich)
- die komplette FHEM-Definition des betroffenen Geraetes wuerde ich gerne sehen.
- Firefox 50.1
- /fhem?detail=whatsapp



Das betroffene Gerät: Es war disabled!
defmod whatsapp yowsup
attr whatsapp userattr acceptFrom
attr whatsapp DbLogExclude sent
attr whatsapp cmd /opt/yowsup-master/git-master/yowsup/yowsup-cli demos -c /opt/yowsup-config/yowsup.config --yowsup
attr whatsapp comment raw /presence name XXX\
https://github.com/jlguardi/yowsup\
\
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade\
sudo apt-get install python-soappy python-dateutil python-pip python-dev build-essential\
sudo pip install --upgrade pip\
sudo pip install python-axolotl\
\
cd /opt/yowsup-master/git-master/yowsup\
git pull\
\
fhem\
set whatsapp reconnect
attr whatsapp disable 1
attr whatsapp home /opt/fhem
attr whatsapp nickname XXX
attr whatsapp room Messanger

setstate whatsapp Disconnected
setstate whatsapp 2017-01-10 01:42:22 state offline


Java Console
08:35:43.049 Rcvd: ["whatsapp","no definition","<div id=\u0022whatsapp\u0022  title=\u0022Disconnected\u0022 class=\u0022col2\u0022>Disconnected</div>"...(133)  fhemweb.js:340:5
08:35:43.056 Rcvd: ["whatsapp-disable","1","1"]  fhemweb.js:340:5
08:35:43.056 Rcvd: ["whatsapp-disable-ts","2017-01-12 08:35:30","2017-01-12 08:35:30"]  fhemweb.js:340:5
08:35:53.984 Rcvd: ["#FHEMWEB:WEB_127.0.0.1_38790","$('#saveCheck').css('visibility','hidden')",""]  fhemweb.js:340:5
08:36:02.340 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:340:5
08:36:07.241 ERRMSG:<  fhemweb.js:340:5
08:36:07.355 Inform-channel opened (HTTP) with filter whatsapp  fhemweb.js:340:5
08:36:07.483 Rcvd: <html>
  fhemweb.js:340:5
08:36:07.558 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:340:5
08:36:12.459 ERRMSG:<  fhemweb.js:340:5
08:36:12.621 Inform-channel opened (HTTP) with filter whatsapp  fhemweb.js:340:5
08:36:12.666 Rcvd: <html>
  fhemweb.js:340:5
08:36:12.702 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:340:5
08:36:17.603 ERRMSG:<  fhemweb.js:340:5
08:36:17.706 Inform-channel opened (HTTP) with filter whatsapp  fhemweb.js:340:5
08:36:29.788 Rcvd:   fhemweb.js:340:5
10:37:12.436 Rcvd: ["#FHEMWEB:WEB_127.0.0.1_39786","$('#saveCheck').css('visibility','hidden')",""]  fhemweb.js:340:5
14:19:13.829 Rcvd: ["#FHEMWEB:WEB_127.0.0.1_39786","$('#saveCheck').css('visibility','visible')",""]  fhemweb.js:340:5
14:19:13.832 Rcvd: ["#FHEMWEB:WEB_127.0.0.1_39786","$('#saveCheck').css('visibility','visible')",""]  fhemweb.js:340:5
14:19:13.833 Rcvd: ["#FHEMWEB:WEB_127.0.0.1_39786","$('#saveCheck').css('visibility','visible')",""]  fhemweb.js:340:5
14:19:22.893 Rcvd: ["#FHEMWEB:WEB_127.0.0.1_39786","$('#saveCheck').css('visibility','visible')",""]  fhemweb.js:340:5
14:20:41.608 FW_cmd:/fhem?cmd=list -r whatsapp&XHR=1  fhemweb.js:340:5
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: rudolfkoenig am 14 Januar 2017, 21:54:47
Irgendwer schickt auf dem neu geoeffneten Inform-Verbindung ein <html> String. Das sollte FHEMEB tunlichst lassen, soweit ich sehe, passiert das auch nicht. Reproduzieren kann ich es nicht.

Kannst du bitte:
- mit "attr WEB longpoll websocket" versuchen
- mit HTTPS zwischen Browser und FHEM versuchen
- "attr WEB verbose 5" setzen, und Log zusammen mit einem JavaScript-Konsolen Mitschnitt anhaengen?
Wenn es nervt, gibt es im SVN ein "attr WEB confirmJSError 0" zum abschalten.
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: JoeALLb am 15 Januar 2017, 14:42:57
Danke fürs prüfen!
Ich kann es im Moment nicht nachstellen, da das yowsup-Modl aktuell nicht mehr funktioniert: Die Verbindung zum Server ist permanent nicht möglich, weshalb die Fehlermeldung
auch nicht mehr erscheint. Irgendwa an der Whatsapp-API hat sich verändert.
Ich häng es hier an, sobald es wieder funktioniert.
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: JoeALLb am 16 Januar 2017, 09:30:53
Ich habs denke ich gefunden, folgendes Device scheint den Fehler zu verursachen,
und da es auch mit HTML zu tun hat...?

Ich nutze dies um den Output eines anderen Devices "schöner" umzuformatieren, gefunden habe ich das
Codeschnipsel irgendwo im Forum, "justme-1968" war der Autor
und der Thread war: https://forum.fhem.de/index.php/topic,63114.msg543556.html#msg543556

Die Fehlermeldung kommt übrigens reproduzierbar nach einem "shutdown restart" von fhem,
unten habe ich auch nochmals das Log angehängt, das einen (vielleicht hilfreichen) Hinweis
auf das Device "showHTML" liefert.

Zitat von: rudolfkoenig am 14 Januar 2017, 21:54:47
- mit "attr WEB longpoll websocket" versuchen
Kann ich nicht! FHEM hängt bei mir hinter einer WAF (Web Application Firewall) und diese können im Preissegment von unter 10.000€ Websockets
nicht absichern und blockieren diese deshalb.

Zitat von: rudolfkoenig am 14 Januar 2017, 21:54:47
- mit HTTPS zwischen Browser und FHEM versuchen
Ich benutze ausschließlich https, da ich aus der Ferne auf fhem zugreife.


##################### Anhang
defmod showHTML cmdalias set alexa getAsHTML AS {\
  my $txt=fhem("set hm tempList verify");;\
  $txt =~ s/\n/"<br>/g;; \
  return $txt;;\
}
attr showHTML room 1

setstate showHTML defined




09:22:55.799 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:340:5
09:23:00.700 ERRMSG:<  fhemweb.js:340:5
nicht wohlgeformt  (unbekannt)
09:23:00.801 Inform-channel opened (HTTP) with filter room=1  fhemweb.js:340:5
09:23:00.847 Rcvd: <html>
  fhemweb.js:340:5
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data[Weitere Informationen]  fhemweb.js:743:13
09:23:00.884 ERRMSG:Connection lost, trying a reconnect every 5 seconds.<  fhemweb.js:340:5
09:23:05.796 ERRMSG:<  fhemweb.js:340:5
nicht wohlgeformt  (unbekannt)
09:23:05.886 Inform-channel opened (HTTP) with filter room=1  fhemweb.js:340:5
09:23:13.391 Rcvd: ["showHTML","defined","<div id=\u0022xyz\u0022  title=\u0022defined\u0022 class=\u0022col2\u0022>defined</div>"]
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: JoeALLb am 17 Januar 2017, 09:15:58
Allgemeine Nachfrage:
Zitat von: rudolfkoenig am 14 Januar 2017, 21:54:47
Kannst du bitte:
- mit "attr WEB longpoll websocket" versuchen

Funktioniert bei mir nicht, trotz versuch, die Firewall dementsprechend zu konfigurieren. Würde mich dem Test aber gerne anschließen!!!
Auf welchem Port horcht "websocket"? auf dem selben wie fhemweb?
Konnte das aus dem Code leider nicht auslesen, und einstellung scheint es keine zu geben...

Leider darf ich in
https://forum.fhem.de/index.php/topic,59713.15.html
nicht kommentieren ;-)
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: rudolfkoenig am 17 Januar 2017, 10:47:30
Websocket wird gemacht, indem man ein HTTP/HTTPS Port oeffnet, und danach ein "Upgrade-Wunsch" aeussert.

Das showHTML Beispiel loest bei mir kein Problem aus.
Da ich kein hm habe, kommt beim klick auf showHTML, dass ich kein hm habe. Mit dem Original-Beispiel von Andre kommt ein Dialog.
Warum die Definition von showHTML beim Neustart was ausloesen sollte, ist mir auch raetselhaft, bei mir passiert da nichts.

Vielleicht brauche ich aber auch nur eine genaue Intruktion.
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: JoeALLb am 17 Januar 2017, 14:37:17
Das mit Websocket ist mir zu ungenau, Port 80/443 (HTTP/HTTPS) funktioniert jedenfalls nicht. Ohne Firewall kann ich bei mir das leide rnicht testen, daher steig ich hier mal aus und verfolge dass Thema weiter.

Zur eigentlichen Fehlermeldung:
Heute bekomme ich in der Javaconsole folgende Fehlermeldung 2x beim Restart von FHEM:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data[Weitere Informationen]  fhemweb.js:744:13
FW_doUpdate https://hostname/fhem/pgm2/fhemweb.js:744:13

Die Folge ist, dass ich 2x ein Popup erhalte.

Lt. Webentwickler-Tools entsteht der Fehler beim Aufruf dieser Adresse:
fhem?XHR=1&inform=type=status;filter=room=1;since=1484654696.5112;fmt=JSON&fw_id=655&timestamp=1484654715413

Hier wird dieser Fehler (unten) zurückgegeben, da der FHEM-Server ja gerade restarted wird antwortet dieser nicht).
Wenn ich Dich richtig verstehe, könnte das der falsche "html-code" sein und damit schon des Rätsels Lösung?
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.9.10</center>
</body>
</html>


Nachdem fhem hochgestartet ist, kann diese URL wieder korrekt geladen werden.
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: rudolfkoenig am 17 Januar 2017, 17:13:24
Danke, das war der entscheidende Hinweis, das konnte ich nachstellen, habs auch gefixt. Btw, "mein" proxy mag auch keine websockets. Immerhin laesst er HTTPS durch, scheinbar ohne Zertifikat auszutauschen.
Titel: Antw:fhemweb.js line 743: SyntaxError: JSON.parse: unexpected character at line 1 col
Beitrag von: JoeALLb am 17 Januar 2017, 17:23:20
Zitat von: rudolfkoenig am 17 Januar 2017, 17:13:24
Immerhin laesst er HTTPS durch, scheinbar ohne Zertifikat auszutauschen.

... Das ist eigentlich standard, da ja sonst alle Webseiten eine Fehlermeldung bringen würden, dass das Zertifikat nicht stimmt.
Im Browser würde dadurch ein ! oder ähnliches angezeigt werden. Es gibt sehrwohl Firewalls, die SSL "unterbrechen" können und
ihr eigenes zertifikat einfügen, in solchen Installationen wird dieses Firewall-Zertifikat jedoch üblicherweise auf den Clients im Browser installiert,
um dadurch diese Warnung im Browser wieder zu umgehen.

DANKE für die Korrektur!


Edit:

Zitat von: rudolfkoenig am 17 Januar 2017, 17:13:24
Btw, "mein" proxy mag auch keine websockets.

Das lässt mich hoffen, dass Longpoll weiterhin gut unterstützt wird ;-)
Websockets sind im Bereich WAF (Web Application Firewall) ein echtes Problem, komerzielle Lösungen die das Firewalling erlauben starten bei 10000-30000€.