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 sticksMein 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. -
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.
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