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