Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Gelöst] Discovery Adapter

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] Discovery Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • unltdnetworx
      unltdnetworx Developer last edited by

      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.
      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        Timeout vom discover bedeutet das der callback nicht aufgerufen wurde. Bau einfach logging ein und schaue ones genau klemmt.

        Gesendet vom Handy …

        1 Reply Last reply Reply Quote 0
        • unltdnetworx
          unltdnetworx Developer last edited by

          Mein "logging" ist ja diese Meldung. Weiter kann ichs nicht einschränken. Der Fehler kommt ja meines Erachtens aus der Funktion httpGet.

          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            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.

            1 Reply Last reply Reply Quote 0
            • unltdnetworx
              unltdnetworx Developer last edited by

              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.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              788
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              3
              5
              500
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo