Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Konfiguration fremder Adapter / Instanzen anderer Adapter

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    783

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.4k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.6k

Konfiguration fremder Adapter / Instanzen anderer Adapter

Geplant Angeheftet Gesperrt Verschoben Entwicklung
adapter
5 Beiträge 3 Kommentatoren 1.2k Aufrufe 3 Beobachtet
  • Ä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.
  • ZefauZ Offline
    ZefauZ Offline
    Zefau
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    für einen meiner Adapter habe ich den MQTT Adapter als Dependency definiert. Ich will meine gesamte Kommunikation über den MQTT Adapter lenken und in meinem Adapter nur die Daten auswerten und States verwalten.

    Für diesen Zweck möchte ich mit meinem Adapter die MQTT Instanzen auslesen und wissen, ob die Instanz als Broker oder Client definiert wurde.

    Wie kann ich das anstellen?
    Mit adapter.getForeignObjects('system.adapter.mqtt', function(err, objects) { . .. }) führte zu keinem Erfolg.

    Jemand eine Idee?

    Cheers,
    Zefau

    Meine Adapter: https://zefau.github.io/iobroker/

    paul53P 1 Antwort Letzte Antwort
    0
    • ZefauZ Zefau

      Hallo zusammen,

      für einen meiner Adapter habe ich den MQTT Adapter als Dependency definiert. Ich will meine gesamte Kommunikation über den MQTT Adapter lenken und in meinem Adapter nur die Daten auswerten und States verwalten.

      Für diesen Zweck möchte ich mit meinem Adapter die MQTT Instanzen auslesen und wissen, ob die Instanz als Broker oder Client definiert wurde.

      Wie kann ich das anstellen?
      Mit adapter.getForeignObjects('system.adapter.mqtt', function(err, objects) { . .. }) führte zu keinem Erfolg.

      Jemand eine Idee?

      Cheers,
      Zefau

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @Zefau
      system.adapter.mqtt ist kein Objekt !

      adapter.getForeignObject('system.adapter.mqtt.0', function(err, object) { . .. })
      

      bzw. weitere Instanzen.

      adapter.getForeignObjects() lässt sich so nicht anwenden. Aus dem Skript des js-controllers:

         /**
          * Get objects by pattern, by specific type and resolve their enums.
          *
          * Get all objects in the system of specified type. E.g.:
          *
          *        <pre><code>
          *            adapter.getForeignObjects('hm-rega.0.*', 'state', ['rooms', 'functions'], function (err, objs) {
          *              if (err) adapter.log.error('Cannot get object: ' + err);
          *              // objs look like:
          *              // {
          *              //    "hm-rega.0.ABC0000.1.STATE": {
          *              //        common: {...},
          *              //        native: {},
          *              //        type: 'state',
          *              //        enums: {
          *              //           'enums.rooms.livingroom': 'Living room',
          *              //           'enums.functions.light': 'Light'
          *              //       }
          *              //    },
          *              //    "hm-rega.0.ABC0000.2.STATE": {
          *              //        common: {...},
          *              //        native: {},
          *              //        type: 'state',
          *              //        enums: {
          *              //           'enums.rooms.sleepingroom': 'Sleeping room',
          *              //           'enums.functions.window': 'Windows'
          *              //       }
          *              //    }
          *            }
          *        </code></pre>
          *
          * @alias getForeignObjects
          * @memberof Adapter
          * @param {string} pattern object ID/wildchars
          * @param {string} type type of object: 'state', 'channel' or 'device'. Default - 'state'
          * @param {string|string[]} enums object ID, that must be overwritten or created.
          * @param {object} options optional user context
          * @param {function} callback return result
          *        <pre><code>
          *            function (err, obj) {
          *              if (err) adapter.log.error('Cannot get object: ' + err);
          *            }
          *        </code></pre>
          */
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      ZefauZ 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Zefau
        system.adapter.mqtt ist kein Objekt !

        adapter.getForeignObject('system.adapter.mqtt.0', function(err, object) { . .. })
        

        bzw. weitere Instanzen.

        adapter.getForeignObjects() lässt sich so nicht anwenden. Aus dem Skript des js-controllers:

           /**
            * Get objects by pattern, by specific type and resolve their enums.
            *
            * Get all objects in the system of specified type. E.g.:
            *
            *        <pre><code>
            *            adapter.getForeignObjects('hm-rega.0.*', 'state', ['rooms', 'functions'], function (err, objs) {
            *              if (err) adapter.log.error('Cannot get object: ' + err);
            *              // objs look like:
            *              // {
            *              //    "hm-rega.0.ABC0000.1.STATE": {
            *              //        common: {...},
            *              //        native: {},
            *              //        type: 'state',
            *              //        enums: {
            *              //           'enums.rooms.livingroom': 'Living room',
            *              //           'enums.functions.light': 'Light'
            *              //       }
            *              //    },
            *              //    "hm-rega.0.ABC0000.2.STATE": {
            *              //        common: {...},
            *              //        native: {},
            *              //        type: 'state',
            *              //        enums: {
            *              //           'enums.rooms.sleepingroom': 'Sleeping room',
            *              //           'enums.functions.window': 'Windows'
            *              //       }
            *              //    }
            *            }
            *        </code></pre>
            *
            * @alias getForeignObjects
            * @memberof Adapter
            * @param {string} pattern object ID/wildchars
            * @param {string} type type of object: 'state', 'channel' or 'device'. Default - 'state'
            * @param {string|string[]} enums object ID, that must be overwritten or created.
            * @param {object} options optional user context
            * @param {function} callback return result
            *        <pre><code>
            *            function (err, obj) {
            *              if (err) adapter.log.error('Cannot get object: ' + err);
            *            }
            *        </code></pre>
            */
        
        ZefauZ Offline
        ZefauZ Offline
        Zefau
        schrieb am zuletzt editiert von
        #3

        @paul53 Habe inzwischen mehrere Adapter entwickelt (nello, nuki2, plex) und muss leider sagen, dass die Doku für Entwickler wirklich mist ist.

        Habe als Quelle bisher immer https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/adapterdev.md#how-to-read-object genutzt.
        Dort war adapter.getForeignObject('otherAdapter.X.someState', function (err, obj) { angegeben.

        Vielen Dank für die Rückmeldung. Ich probier das mal und werde zukünftig direkt in die Doku des Quelltextes des js-controllers gucken :-)

        Cheers,
        Zefau

        Meine Adapter: https://zefau.github.io/iobroker/

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • ZefauZ Offline
          ZefauZ Offline
          Zefau
          schrieb am zuletzt editiert von
          #4

          @paul53 Nochmal danke für die Hilfe.

          Ich habe im ioBroker.discovery Adapter zufällig gefunden, was ich gesucht habe:

          function getMQTTInstances(callback)
          {
          	adapter.objects.getObjectView('system', 'instance', {startkey: 'system.adapter.mqtt.', endkey: 'system.adapter.mqtt.\u9999'}, (err, instances) =>
          	{
          		if (instances && instances.rows)
          		{
          			let result = [];
          			instances.rows.forEach(row => {
          				result.push({id: row.id.replace('system.adapter.', ''), config: row.value.native.type})
          			});
          			
          			callback(null, result);
          		}
          		else
          			callback('Could not retrieve MQTT instances!');
          	});
          }
          

          Damit erhalte ich eine Auflistung der Instanzen des MQTT Adapters.
          An dieser Stelle nur zur Vollständigkeit, falls mal jemand über die Suche hierher findet.

          Meine Adapter: https://zefau.github.io/iobroker/

          1 Antwort Letzte Antwort
          0
          • ZefauZ Zefau

            @paul53 Habe inzwischen mehrere Adapter entwickelt (nello, nuki2, plex) und muss leider sagen, dass die Doku für Entwickler wirklich mist ist.

            Habe als Quelle bisher immer https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/adapterdev.md#how-to-read-object genutzt.
            Dort war adapter.getForeignObject('otherAdapter.X.someState', function (err, obj) { angegeben.

            Vielen Dank für die Rückmeldung. Ich probier das mal und werde zukünftig direkt in die Doku des Quelltextes des js-controllers gucken :-)

            Cheers,
            Zefau

            AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #5

            @Zefau sagte in Konfiguration fremder Adapter / Instanzen anderer Adapter:

            Dort war adapter.getForeignObject angegeben

            Mit adapter.getForeignObjects [...] führte zu keinem Erfolg.

            Das sind auch zwei unterschiedliche Methoden. Mit "s" (Mehrzahl) vs. ohne "s" (Singular).

            @Zefau sagte in Konfiguration fremder Adapter / Instanzen anderer Adapter:

            muss leider sagen, dass die Doku für Entwickler wirklich mist ist.

            Da muss ich dir zustimmen. Ich habe einen Mittelweg gelöst, der IMO zwei Fliegen mit einer Klappe schlägt. Bei Verwendung eines aktuellen Templates mit einem Editor der TypeScript versteht (VSCode / WebStorm) solltest du zumindest anhand der Syntaxhilfe Unterstützung beim Aufruf der Funktionen bekommen. Mit der richtigen Option wird auch gemeckert, wenn du Funktionen falsch verwendest.

            Zugegeben, die aus dem Quellcode kopierte Beschreibung der Funktion ist auch nicht wirklich gut:

            Get foreign objects by pattern, by specific type and resolve their enums.

            Wenn du hierzu Verbesserungsvorschläge hast, immer her damit. Am besten Issues in https://github.com/ioBroker/adapter-core eröffnen.

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Antwort Letzte Antwort
            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
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            393

            Online

            33.0k

            Benutzer

            83.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2026
            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