NEWS
Adapter der Http Binding wie Openhab erledigt?
-
Wenn ich den Code einfüge bekomme ich noch einen Fehler

-
@jey-cee
Hallo,
das script hab ich jetzt angepasst, und läuft jetzt//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('down_galerie', false, { read: true, write: true, desc: "Beschreibung", type: "boolean", def: false }); on({id: 'javascript.0.down_galerie', val: true}, function(){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/raff/galerie/down', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(body); // info ist ein Objekt var x = info.xy; // xy ist eine Eigenschaft des Objektes info } })});Bei den Objekten liefert er mir jetzt den Wert "false"
In der VIS habe ich mir teinen Taster erstellt der beim Drücken "true" liefertDer Rollo fährt dann runter, alles gut soweit, aber es stürzt bei Instanzen der javascript.0 Adapter ab und die Ampel geht auf Rot
Nach kurzer Zeit geht die Ampel wieder auf Grün
Im Log steht folgenden:Caught 2019-03-07 22:39:31.409 error by controller[0]: at Object.onceWrapper (events.js:313:30) Caught 2019-03-07 22:39:31.409 error by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12) Caught 2019-03-07 22:39:31.409 error by controller[0]: at Request.emit (events.js:211:7) Caught 2019-03-07 22:39:31.409 error by controller[0]: at emitOne (events.js:116:13) Caught 2019-03-07 22:39:31.409 error by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10) Caught 2019-03-07 22:39:31.409 error by controller[0]: at Request.emit (events.js:214:7) Caught 2019-03-07 22:39:31.408 error by controller[0]: at emitTwo (events.js:126:13) Caught 2019-03-07 22:39:31.408 error by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22) Caught 2019-03-07 22:39:31.408 error by controller[0]: at Request._callback (script.js.common.rollo1:38:55) Caught 2019-03-07 22:39:31.407 error by controller[0]: at JSON.parse (<anonymous>:null:null) Caught 2019-03-07 22:39:31.407 error by controller[0]: SyntaxError: Unexpected token O in JSON at position 0Wo liegt hier noch mein Fehler?
Besten Dank
Stefan -
@Jey-Cee
Die Ampel geht immer noch auf Rotjavascript.0 2019-03-08 08:53:45.285 info script.js.common.rollo1: registered 3 subscriptions and 0 schedules javascript.0 2019-03-08 08:53:45.285 info Start javascript script.js.common.rollo1 javascript.0 2019-03-08 08:53:45.285 info script.js.common.Dimplex_Meldungen: registered 3 subscriptions and 0 schedules javascript.0 2019-03-08 08:53:45.285 info Start javascript script.js.common.Dimplex_Meldungen javascript.0 2019-03-08 08:53:45.284 info script.js.common.Dimplex_Spreizung: registered 1 subscription and 0 schedules javascript.0 2019-03-08 08:53:45.284 info Start javascript script.js.common.Dimplex_Spreizung javascript.0 2019-03-08 08:53:44.890 info received all objects javascript.0 2019-03-08 08:53:42.412 info received all states javascript.0 2019-03-08 08:53:41.354 info requesting all objects javascript.0 2019-03-08 08:53:41.354 info requesting all states javascript.0 2019-03-08 08:53:41.353 info starting. Version 3.6.4 in /opt/iobroker/node_modules/iobroker.javascript, node: v8.11.1 host.ioBroker-RasPi 2019-03-08 08:53:35.630 info instance system.adapter.javascript.0 started with pid 6169 host.ioBroker-RasPi 2019-03-08 08:53:05.596 info Restart adapter system.adapter.javascript.0 because enabled host.ioBroker-RasPi 2019-03-08 08:53:05.596 error instance system.adapter.javascript.0 terminated with code 0 (OK) Caught 2019-03-08 08:53:05.596 error by controller[0]: at Object.onceWrapper (events.js:313:30) Caught 2019-03-08 08:53:05.595 error by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.emit (events.js:211:7) Caught 2019-03-08 08:53:05.595 error by controller[0]: at emitOne (events.js:116:13) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.emit (events.js:214:7) Caught 2019-03-08 08:53:05.595 error by controller[0]: at emitTwo (events.js:126:13) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22) Caught 2019-03-08 08:53:05.594 error by controller[0]: at Request._callback (script.js.common.rollo1:18:55) Caught 2019-03-08 08:53:05.594 error by controller[0]: at JSON.parse (<anonymous>:null:null) Caught 2019-03-08 08:53:05.593 error by controller[0]: SyntaxError: Unexpected token O in JSON at position 0 -
@Jey-Cee
Die Ampel geht immer noch auf Rotjavascript.0 2019-03-08 08:53:45.285 info script.js.common.rollo1: registered 3 subscriptions and 0 schedules javascript.0 2019-03-08 08:53:45.285 info Start javascript script.js.common.rollo1 javascript.0 2019-03-08 08:53:45.285 info script.js.common.Dimplex_Meldungen: registered 3 subscriptions and 0 schedules javascript.0 2019-03-08 08:53:45.285 info Start javascript script.js.common.Dimplex_Meldungen javascript.0 2019-03-08 08:53:45.284 info script.js.common.Dimplex_Spreizung: registered 1 subscription and 0 schedules javascript.0 2019-03-08 08:53:45.284 info Start javascript script.js.common.Dimplex_Spreizung javascript.0 2019-03-08 08:53:44.890 info received all objects javascript.0 2019-03-08 08:53:42.412 info received all states javascript.0 2019-03-08 08:53:41.354 info requesting all objects javascript.0 2019-03-08 08:53:41.354 info requesting all states javascript.0 2019-03-08 08:53:41.353 info starting. Version 3.6.4 in /opt/iobroker/node_modules/iobroker.javascript, node: v8.11.1 host.ioBroker-RasPi 2019-03-08 08:53:35.630 info instance system.adapter.javascript.0 started with pid 6169 host.ioBroker-RasPi 2019-03-08 08:53:05.596 info Restart adapter system.adapter.javascript.0 because enabled host.ioBroker-RasPi 2019-03-08 08:53:05.596 error instance system.adapter.javascript.0 terminated with code 0 (OK) Caught 2019-03-08 08:53:05.596 error by controller[0]: at Object.onceWrapper (events.js:313:30) Caught 2019-03-08 08:53:05.595 error by controller[0]: at IncomingMessage.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.emit (events.js:211:7) Caught 2019-03-08 08:53:05.595 error by controller[0]: at emitOne (events.js:116:13) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.<anonymous> (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.emit (events.js:214:7) Caught 2019-03-08 08:53:05.595 error by controller[0]: at emitTwo (events.js:126:13) Caught 2019-03-08 08:53:05.595 error by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22) Caught 2019-03-08 08:53:05.594 error by controller[0]: at Request._callback (script.js.common.rollo1:18:55) Caught 2019-03-08 08:53:05.594 error by controller[0]: at JSON.parse (<anonymous>:null:null) Caught 2019-03-08 08:53:05.593 error by controller[0]: SyntaxError: Unexpected token O in JSON at position 0 -
@Jey-Cee du, es geht
hab die erste änderung wieder rückgängig gemacht
jetzt fehlt mir nur noch der status wo der rollo steht wie am anfang im thema
-
@Jey-Cee ah ok

jetzt fehlt nur noch der status. hättest du da was für mich?
Vielen Dank für deine Hilfe. Ohne würds nicht gehen

-
Leg dir Objekte an sowie für down, nur muss der type "number" sein und def kann weg.
Code um den Status zu schreiben:
setState('javascript.0.status_rollo1', info[0]; setState('javascript.0.status_rollo2', info[1];und so weiter.
Soweit klar?
-
ah, ich glaub ich hab mich falsch ausgedrückt, sorry
Es geht um die Öffnungsprozente die auf diese Adresse auflaufen
http://192.168.1.117:3000/heytech/oeffnungsprozent
am Anfang im Beitrag, da war die Frage nach dem Quelltext -
hier ist mein Code
//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('prozent_galerie', { read: true, write: true, desc: "Galerie_Prozent", type: "number" }); setState('javascript.0.prozent_galerie', info[1], function(){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/heytech/oeffnungsprozent', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(JSON.stringify(body)); // info ist ein Objekt var x = info[0]; log(x); } })});und hier der Fehler
10:28:26.270 [info] javascript.0 Stop script script.js.common.prozent 10:28:26.416 [info] javascript.0 Start javascript script.js.common.prozent 10:28:26.416 [error] javascript.0 script.js.common.prozent: script.js.common.prozent:9 10:28:26.416 [error] javascript.0 at script.js.common.prozent:9:42Der Galerie Rollo ist die 2. Prozentzahl
-
//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('prozent_galerie', { read: true, write: true, desc: "Galerie_Prozent", type: "number" }); function(){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/heytech/oeffnungsprozent', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(JSON.stringify(body)); // info ist ein Objekt var x = info[0]; setState('javascript.0.prozent_galerie', info[1]) } })}; -
@Jey-Cee
fast funktioniert es
bei jeder Änderung sollen die Prozente aktualisiert werden. Es wird aber nur bei "Down" aktualisiert
"Zeile 9"//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('prozent_galerie', { read: true, write: true, desc: "Galerie_Prozent", type: "number" }); on({id: 'javascript.0.down_galerie', val: true}, on({id: 'javascript.0.up_galerie', val: true}, on({id: 'javascript.0.stop_galerie', val: true}, function(){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/heytech/oeffnungsprozent', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(JSON.stringify(body)); // info ist ein Objekt var x = info[0]; setState('javascript.0.prozent_galerie', info[1]); } })})));Unter Objekte wird ein Wert Zurückgegeben, aber nur ein Anführungszeichen "
Die Werte stehen auch so in der URL
http://192.168.1.117:3000/heytech/oeffnungsprozent
0 "100"
1 "82"
2 "3"
3 "3"
4 "100"
5 "7"
6 "100"
7 "100"
8 "" -
Wenn dann muss das so aussehen, ist aber ungetestet:
//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('prozent_galerie', { read: true, write: true, desc: "Galerie_Prozent", type: "number" }); on({id: 'javascript.0.down_galerie', val: true}, {id: 'javascript.0.up_galerie', val: true}, {id: 'javascript.0.stop_galerie', val: true}, function(){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/heytech/oeffnungsprozent', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(JSON.stringify(body)); // info ist ein Objekt var x = info[0]; setState('javascript.0.prozent_galerie', info[1]); } })}))); -
@Jey-Cee
jetzt gibt er unter objekte garnix mehr zurück//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('prozent_galerie', { read: true, write: true, desc: "Galerie_Prozent", type: "number" }); on({id: 'javascript.0.down_galerie', val: true}, {id: 'javascript.0.up_galerie', val: true}, {id: 'javascript.0.stop_galerie', val: true}, function(){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/heytech/oeffnungsprozent', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(JSON.stringify(body)); // info ist ein Objekt var x = info[0]; setState('javascript.0.prozent_galerie', info[1]); } })}); -
Sagte ja ungetestet.
//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('prozent_galerie', { read: true, write: true, desc: "Galerie_Prozent", type: "number" }); on('javascript.0.down_galerie', 'javascript.0.up_galerie', 'javascript.0.stop_galerie', function(obj){ if(obj.state.val === true){ var request = require('request'); var options = {url: 'http://192.168.1.117:3000/heytech/oeffnungsprozent', method: 'GET', headers: { 'User-Agent': 'request' }}; request(options, function(error, response, body) { //hier kann die Antwort ausgewertet werden wenn nötig if (!error && response.statusCode == 200) { var info = JSON.parse(JSON.stringify(body)); // info ist ein Objekt var x = info[0]; setState('javascript.0.prozent_galerie', info[1]); } })}}); -
@Jey-Cee
leider immer noch nicht, gibt keinen Wert zurück -
@Jey-Cee
ich hab noch eine ganze Zeit probiert, aber ich bekomme es selbst nicht hin
Haben wir da evtl noch einen Denkfehler.... für den Fall das man manuell die Rollos betätigt, also mit dem Taster direkt am Fenster, dann würde im IOBroker die Prozente wo der Rollo steht nicht aktualisiert werden.
Da bräuchte man eine Zeitschleife... alle paar Sek abfragen wo die Rollos stehen.
Wäre grundsätzlich eine eine Zeitschleife nicht die bessere Lösung? Dann wäre man nicht abhängig von den Zuständen ob im IOBroker ob geschalten worden istjavascript.0.down_galerie',
'javascript.0.up_galerie',
'javascript.0.stop_galerie',
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