NEWS
[gelöst] Bei HTTP request "exception: Parse Error"
-
Ich habe mir auf Arduino Basis eine Rollladensteuerung gebaut. Diese wird via TCP gesteuert. Um den Status abzufragen kann ich einen HTTP-Request absetzen mit folgendem einfachen Skript:
var request = require('request'); request('http://10.0.0.5/?blind_status!2');Problem dabei ist, dass ich eine "Parse error"-Exception bekomme.
! ````
host-YAHM-CCU2 2016-07-02 08:07:58.995 error instance system.adapter.javascript.0 terminated with code 0 (OK)
Error: 2016-07-02 08:07:58.950 error at TCP._onclose (net.js:477:12)
Error: 2016-07-02 08:07:58.950 error at Socket.emit (events.js:169:7)
Error: 2016-07-02 08:07:58.950 error at emitOne (events.js:82:20)
Error: 2016-07-02 08:07:58.950 error at Socket.socketCloseListener (_http_client.js:243:23)
Error: 2016-07-02 08:07:58.950 error at createHangUpError (_http_client.js:211:15)
Error: 2016-07-02 08:07:58.950 error socket hang up
uncaught 2016-07-02 08:07:58.948 error exception: socket hang up
Error: 2016-07-02 08:07:58.944 error at TCP.onread (net.js:531:20)
Error: 2016-07-02 08:07:58.944 error at Socket.Readable.push (_stream_readable.js:111:10)
Error: 2016-07-02 08:07:58.944 error at readableAddChunk (_stream_readable.js:153:18)
Error: 2016-07-02 08:07:58.944 error at Socket.emit (events.js:169:7)
Error: 2016-07-02 08:07:58.944 error at emitOne (events.js:77:13)
Error: 2016-07-02 08:07:58.944 error at Socket.socketOnData (_http_client.js:320:20)
Error: 2016-07-02 08:07:58.944 error at Error (native)
Error: 2016-07-02 08:07:58.944 error Parse Error
uncaught 2016-07-02 08:07:58.934 error exception: Parse ErrorHat jemand eine Idee woran es liegen kann? Eventuell an der URL, weil quasi nach dem Slash gleich ein Fragezeichen kommt? Nachtrag: Die zurückgelieferten Daten sehen so aus: >! ```` <title>Arduino blind control</title> >! > ``` > ArduinoBlind status Nr. 2 > Current level: 50.00 > Target level: 50.00 > Direction: Stopped > Switch time: 0.50 > Drive time: 35.00 > Status delay: 4.00 / 3.00 > > ``` >! ```` -
Hier ist ja ein Skript verlinkt, das einen Fehler bringt:
http://forum.iobroker.net/viewtopic.php … 293#p10611
var Url = ""; //createState ("Regenwasser.Gartenpumpe", true); request = require('request'); on("javascript.0.Regenwasser.Gartenpumpe"/*Regenwasser.Gartenpumpe*/, function(obj) { log("Test"); if (obj.State === true) { log('Gartenpumpe einschalten ausgelöst'); Url = "http://192.168.137.20/?setpin:3:"; request(Url); } else{ log('Gartenpumpe ausschalten ausgelöst'); Url = "http://192.168.137.20/?resetpin:3:"; request(Url); } });Die if-Abfrage ist nicht ganz sauber: statt
if (obj.State === true) { ````lieber```` if (obj.state.val === true) { ````oder kurz```` if (obj.state.val) {Dann würde ich den Inhalt der Variable Url vielleicht http://meyerweb.com/eric/tools/dencoder/ übergeben.
Gruß
Pix
-
Danke für deine Tipps, werde ich heute Abend ausprobieren.
Lösung: Es lag nicht am Skript oder an der URL-Codierung, sondern ich hatte bei meinem Rollladenaktor keine HTTP-Standard Response geschickt.
curl, wget & co sind da offenbar etwas toleranter als das request Modul von npm. Also hatte ich einfach in der Antwort folgendes vorne eingefügt:
"HTTP/1.1 200 OK" "Content-Type: text/html" "Connection: close" ""
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden