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. Konfiguration fremder Adapter / Instanzen anderer Adapter

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    699

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Konfiguration fremder Adapter / Instanzen anderer Adapter

Geplant Angeheftet Gesperrt Verschoben Entwicklung
adapter
5 Beiträge 3 Kommentatoren 940 Aufrufe 3 Watching
  • Ä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: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

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


            Support us

            ioBroker
            Community Adapters
            Donate

            742

            Online

            32.6k

            Benutzer

            82.0k

            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