Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Closed] REST-Ergebnis für Instanz-Vorbelegung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Closed] REST-Ergebnis für Instanz-Vorbelegung

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

      Hallo,

      ich habe einen (NUKI) Adapter gebaut, für den ich bei der Instanzerzeugung für einen der Eingabeparameter eine Auswahlliste erzeugen möchte. Die Werte der Auswahlliste sollen dynamisch über einen RESTful-Aufruf als JSON abgerufen werden*. Ich habe in den Anleitungen nicht gefunden, wie bzw. ob so etwas machbar ist.

      Kann mir jemand einen Tipp geben, an welcher Stelle ich ansetzen muss/kann um 1. die URL aufzurufen und 2. die empfangene Liste als Selekt-Werteliste im Parameterfeld der index_m.html anzubinden?

      *Es handelt sich bei der URL um die Bridge-Discovery URL von NUKI (https://api.nuki.io/discover/bridges). Nix Schlimmes 😉

      Wäre wirklich toll, wenn mir da jemand auf die Sprünge helfen könnte.

      Gruß,

      Sven

      1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer last edited by

        Zum Abrufen kannst du https://nodejs.org/api/http.html#http_http_get_options_callback verwenden.

        Um das ganze in die Config zu bekommen kannst du hier Spicken:

        https://github.com/Jey-Cee/ioBroker.eno … .html#L132

        https://github.com/Jey-Cee/ioBroker.eno … .html#L493

        https://github.com/Jey-Cee/ioBroker.eno … in.js#L552

        Ich hoffe das bringt dich weiter.

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

          Vielen Dank Jey!

          Ich hatte bisher noch keine Zeit, Deine Lösung auszuprobieren, aber ich werde berichten, wenn ich dazu komme.

          Gruß,

          Sven

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

            Hallo nochmal,

            danke Dir Jey Cee, die Links waren sehr hilfreich, und ich habe verstanden, wie ich eine Werteliste aufbauen und auch an den Adapter senden kann.

            Leider habe ich den HTTP-Aufruf bisher nicht hinbekommen. Es handelt sich bei der aufzurufenden URL um eine HTTPS-Adresse, die laut Doku der normale http.get nicht unterstützt wird. Deshalb hab ich zwei Ansätze versucht:
            <list type="1.">* Ich habe mit require("https") versucht, einen https.get auszuführen.
            <list type="2.">* Ich habe das Ganze über request versucht (was im Adapter selbst auch wunderbar funktioniert) und dazu ein require("request") eingefügt.
            Leider war beides erfolglos. Offenbar verursacht der Require-Befehl bereits einen Fehler und die HTML-Seite wird nicht vollständig aufgebaut.

            Da es mir bislang nicht gelungen ist, eine funktionierende Debugging-Umgebung hinzustellen :roll: , ist das für mich Trial-and-Error, ich erhalte auch keine Konsolen-Messages 😞

            Wahrscheinlich sollte der ganze Aufruf eher in ein Adapter-Js im Discovery-Adapter, aber ich hätte wirklich gern gewusst, wie dieses Problem zu lösen ist, weil ich dadurch in nur einer einzigen Instanz sämtliche Nuki-Bridges und somit alle im LAN verfügbaren Nuki-Schlösser steuern könnte.

            Vielen Dank für Eure Hilfe.

            Gruß,

            Sven

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              @smaragdschlange:

              Deshalb hab ich zwei Ansätze versucht:

              Ich habe mit require("https") versucht, einen https.get auszuführen.

              Ich habe das Ganze über request versucht (was im Adapter selbst auch wunderbar funktioniert) und dazu ein require("request") eingefügt.

              Leider war beides erfolglos. Offenbar verursacht der Require-Befehl bereits einen Fehler und die HTML-Seite wird nicht vollständig aufgebaut. ` Kannst du mal den Code zeigen?

              @smaragdschlange:

              Da es mir bislang nicht gelungen ist, eine funktionierende Debugging-Umgebung hinzustellen , ist das für mich Trial-and-Error, ich erhalte auch keine Konsolen-Messages ` Welche IDE oder Editor verwendest du?

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

                Hi,

                hier der Code des https.get-Ansatzes:

                function getNukiBridges() {
                        const https = require('https');
                
                        https.get('https://api.nuki.io/discover/bridges', (resp) => {
                        let data = '';
                
                        // A chunk of data has been recieved.
                        resp.on('data', (chunk) => {
                            data += chunk;
                        });
                
                        // The whole response has been received. Print out the result.
                        resp.on('end', () => {
                            console.log(JSON.parse(data).explanation);
                        });
                
                        }).on("error", (err) => {
                        console.log("Error: " + err.message);
                        });
                }
                

                Und hier der request-Ansatz:

                function getNukiBridges() {
                	const request = require('request');
                
                	request('https://api.nuki.io/discover/bridges', { json: true }, (err, res, body) => {
                            if (err) { return console.log(err); }
                            console.log(body.url);
                            console.log(body.explanation);
                        });
                }
                

                Bei der Fehlersuche habe ich nach und nach immer mehr Code auskommentiert, bis jeweils nur noch derconst https = require('https');bzw.````
                const request = require('request');

                
                Ich verwende Visual Studio Code unter Windows 10 zum Entwickeln. Ich hab aber auch versucht eine Entwicklungsumgebung in der VM (erst Linux Mint, dann Ubuntu) mit Visual Studio Code und unter Ubuntu auch mit Webstorm einzurichten. Entwickeln geht wunderbar in allen Fällen, aber der Debugger streikt in jedem Fall.
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                643
                Online

                31.9k
                Users

                80.2k
                Topics

                1.3m
                Posts

                rest
                2
                6
                463
                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