Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. [Gelöst] Discovery Adapter

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[Gelöst] Discovery Adapter

Geplant Angeheftet Gesperrt Verschoben Entwicklung
5 Beiträge 3 Kommentatoren 572 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • unltdnetworxU Offline
    unltdnetworxU Offline
    unltdnetworx
    Developer
    schrieb am zuletzt editiert von
    #1

    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.

    Gruß, Michael
    Weitere Infos im Profil.
    Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

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

      Gesendet vom Handy …

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • unltdnetworxU Offline
        unltdnetworxU Offline
        unltdnetworx
        Developer
        schrieb am zuletzt editiert von
        #3

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

        Gruß, Michael
        Weitere Infos im Profil.
        Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          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 Antwort Letzte Antwort
          0
          • unltdnetworxU Offline
            unltdnetworxU Offline
            unltdnetworx
            Developer
            schrieb am zuletzt editiert von
            #5

            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.

            Gruß, Michael
            Weitere Infos im Profil.
            Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            881

            Online

            32.4k

            Benutzer

            81.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe