Autor Thema: [gelöst] fhemweb.js line 743: SyntaxError: JSON.parse:  (Gelesen 956 mal)

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
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 dataKann ich etwas zur Beseitigung tun?
« Letzte Änderung: 17 Januar 2017, 17:24:42 von JoeALLb »
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16721
Zitat
Kann 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.

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Danke! Anbei die Daten:
Ich bin mir noch nicht sicher, ob es nur auf diesem Device auftritt.

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
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16721
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.

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
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.
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
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.

- 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.

- 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>"]
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Allgemeine Nachfrage:
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 ;-)
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16721
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.

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
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.
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 16721
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.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
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:

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€.
« Letzte Änderung: 17 Januar 2017, 17:32:42 von JoeALLb »
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270