NEWS
[Gelöst] Discovery Adapter
-
Hallo zusammen,
ich habe eine Frage zur Entwicklung mit dem Discovery Adapter. Versuche gerade für den energymanager-Adapter eine Erkennung zu schreiben und habe schon diverse Versuche hinter mir. Da der Adapter noch nicht im Repo veröffentlicht ist, habe ich zuerst die Erkennung ausgeklammert und dann folgenden Versuch unternommen:
var errorMeldung; var tools = require(__dirname + '/../tools.js'); function detect(ip, device, options, callback) { // options.newInstances // options.existingInstances // device - additional info about device // options.log - logger // options.enums - { // enum.rooms: { // enum.rooms.ROOM1: { // common: name // } // }, // enum.functions: {} // } var name = ip + (device._name ? (' - ' + device._name) : ''); tools.httpGet('http://' + ip + '/rest/kiwigrid/wizard/devices', function (err, data) { if (data) { var instance = tools.findInstance(options, 'energymanager', function (obj) { return (obj.native.managerAddress === ip); }); if (!instance) { instance = { _id: tools.getNextInstanceID('energymanager', options), common: { name: 'energymanager', title: 'energymanager (' + ip + (device._name ? (' - ' + device._name) : '') + ')' }, native: { managerAddress: ip }, comment: { add: ['energymanager (' + ip + ')'] } }; options.newInstances.push(instance); callback(null, true, ip); } else { callback(null, false, ip); } } else { errorMeldung = err; callback(null, false, ip); } }); options.log.info("IP: " + ip + " Fehler: " + errorMeldung); } exports.detect = detect; exports.type = ['ip'];// make type=serial for USB sticks
Mein Problem ist jetzt, dass ich bei der richtigen IP den Fehler "timeout" bekomme. Wenn ich````
tools.httpGet('http://' + ip + '/rest/kiwigrid/wizard/devices', 10000, function (err, data)Hat jemand eine Idee dazu? Vielen Dank schon mal für eure Hilfe.
-
Timeout vom discover bedeutet das der callback nicht aufgerufen wurde. Bau einfach logging ein und schaue ones genau klemmt.
Gesendet vom Handy …
-
Mein "logging" ist ja diese Meldung. Weiter kann ichs nicht einschränken. Der Fehler kommt ja meines Erachtens aus der Funktion httpGet.
-
Defaultmäßig es wird 500ms gewartet.
Um wirklich 10000 Sekunden zu setzten (Nur wegen test) solltest du noch als letzte Zeile:
exports.timeout = 11000;
schreiben.
Aber 10000 es ist zu viel. Beim Suchen wird dann so viel Geräte (bei mir z.B. 30) mal 10 Sekunden gewartet (bei mir dann mindestens 5 Minuten), was viel zu lang ist.
-
Ich habe das o.g. Problem jetzt anders gelöst.
Die vorgerfertige Function "tools.httpGet" brachte mich leider zu keinem Ergebnis, daher habe ich "http.get" direkt eingebunden.