NEWS
Adapter der Http Binding wie Openhab erledigt?
-
Hallo,
ich habe ein Projekt von einer Rolladensteuerung am laufen.https://github.com/ansgarschulte/heytech_rest_endpoint
alles läuft soweit und der Rolladen ist dann über z.B. http://SERVER-IP:3000/rolladen/kueche/down ansprechbar
Leider wurde die Umsetzung in Openhab weitergeführt und mit "HTTP Binding" erledigt
Welchen Adapter benötige ich hier beim IObroker um es steuern zu können?
Besten Dank
Stefan -
Was du suchst nennt sich http request. Ich weiss gerade nicht ob das Modul request schon standardmässig mit dem JS Adapter kommt falls nicht muss es noch in der Konfiguration unter Zusätzliche Module eingetragen werden.
//Erzeugt beim start des Skripts ein objekt down in javascript.x, x gibt die Instanz nummer an createState('down', false, { read: true, write: true, desc: "Beschreibung", type: "boolean", def: false }); on({id: 'javascript.x.down', val: true}, function(){ var request = require('request'); var options = {url: 'http://SERVER-IP:3000/rolladen/kueche/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 } }); -
Danke für die schnelle antwort :-)
aber steh grad irgendwie am schlauch? Wo kann ich die zusätzlichen Module eintragen?
-
Ah ok, verstehe.
unter Skripte lege ich mir jeweils für jeden Befehl ein angepasstes Skript an... up ,down, stop usw...
und das ganze noch für jeden Rolloich bekomme auch noch den Status zurück, wo der Rollo gerade steht (8Kanäle)
[ "100", "50", "0", "100", "100", "100", "100", "100" ]
rollo 1 ist 100 (komplett offen)
rollo 2 ist 50 (50% offen)
rollo 3 ist 0 (komplett geschlossen)Wie ich bekomme ich diese werte einzeln als Variable?
Danke
Stefan -
Ah ok, verstehe.
unter Skripte lege ich mir jeweils für jeden Befehl ein angepasstes Skript an... up ,down, stop usw...
und das ganze noch für jeden Rolloich bekomme auch noch den Status zurück, wo der Rollo gerade steht (8Kanäle)
[ "100", "50", "0", "100", "100", "100", "100", "100" ]
rollo 1 ist 100 (komplett offen)
rollo 2 ist 50 (50% offen)
rollo 3 ist 0 (komplett geschlossen)Wie ich bekomme ich diese werte einzeln als Variable?
Danke
Stefan@stefantaust Du kannst das auch alles in ein Skript packen.
Du musst den "body" parsen, wie du das am besten machen kannst hängt davon ab was dein Rolladen zurück liefert.
Wenn es JSON ist, ist es ziemlich einfach.
Zeig mal den Quellcode aus dem Browser wenn du die URL aufrufst. -



-
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]) } })};
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
