Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Frage] WEB-Instanz/-Schnittstelle in eigenem Adapter?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage] WEB-Instanz/-Schnittstelle in eigenem Adapter?

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

      Ich habe eine NodeJS-Anwendung die einen eigenen HTTP-Server bereitstellt und so verschiedene Ansichten/Einstellungen ermöglicht. In Zukunft würde ich die gerne in einen ioBroker-Adapter migrieren, um wie in den Admin-Tabs auf SocketIO setzen zu können.

      Da gibt es ja schon ioBroker.web, das auch LetsEncrypt, integrierten SocketIO etc. unterstützt. Kann ich darauf irgendwie aufbauen mit einer Schnittstelle, sodass ich nur noch die Hintergrundlogik implementieren muss?

      Simple-API scheint das Tandem aus HTTP-Server und Extra-Logik auch irgendwie zu machen. Nur ist mir mangels Doku (oder war ich blind) nicht 100% klar, was hier an Schnittstellen existiert, und wie viel vom Server ich selbst programmieren muss.

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

        Wenn Du schon einen http-Server laufen hast (z.B. node.js + für etwas mehr Komfort vielleicht Express), dann kannst Du den Code einfach in den Adapter (z.B. in main.js) mit aufnehmen (z.B. für eine REST-API). Wenn es Dir um bidirektionale-Kommunikation via Sockets geht, dann ist ein guter Einstieg das Beispiel beim socketio-Adapter. Den solltest Du immer laufen haben, wenn Du Änderungen von Datenpunkten Realtime mitbekommen möchtest, um diese z.B. in Deinem Web-FE immer aktuell anzuzeigen, oder wenn Du Datenpunkte selber im FE ändern möchtest, um Aktionen im iobroker auszulösen (Szenen, Skripte oder was auch immer). Welche Funktionen der Socket dann serverside zur Verfügung stellt, findest Du in der Datei:

        https://github.com/ioBroker/ioBroker.so … /socket.js

        Hier insbesondere alles was mit socket.on('… anfängt. Clientseitig kannst Du dann wie im Beispiel gezeigt conn.js einbinden. Hier sind dann schon eine ganze menge Funktionen vordefiniert, die Du nutzen kannst. Im ersten Augenblick ist die Anzahl der Funktionen ziemlich erschlagend, weswegen Du clientseitig auch ersteimal zum "reinkommen" ganz easy anfangen kannst.

        In dem Quellcode-Schnipsel habe ich mal reingeschrieben, wie Du z.B. starten könntest (verdeutlicht nur das Prinzip):

        War das in etwa das was Du wissen wolltest? Ansonsten noch einmal genauer beschreiben.

        Grüße

        Carsten

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

          Also der Simply-API-Adapter als Beispiel macht das so …

          Ich bin immer noch nicht 100% durchgestiegen, aber grob was ich gefunden habe:

          In io-package.json gibt es in "common":

                  "webExtension":             "lib/simpleapi.js",
          
          

          Das verweist auf eine Klasse die die echte Logik enthält.

          Der Konstruktor bekommt einige Parameter:

          SimpleAPI(server, webSettings, adapter, instanceSettings, app) {
          

          Und der letzte ist nur gesetzt wenn das ganze im web-Adapter eingebunden ist und dafür gibts dann Sondercode der das behandelt.

          adapter.log.info('Install extension on /' + that.namespace + '/');
                      that.app.use('/' + that.namespace + '/', function (req, res, next) {
                          that.restApi.call(that, req, res);
                      });
          

          So als Ansatz vllt mal ein erster Schritt zum ausprobieren.

          Vllt kann ja @Bluefox noch was dazu sagen 🙂

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

            Zuzüglich zu simple-api, kann man noch iobroker.proxy https://github.com/ioBroker/ioBroker.proxy

            anschauen.

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

              @carsten04:

              War das in etwa das was Du wissen wolltest? Ansonsten noch einmal genauer beschreiben. `
              Nicht so ganz. Die einzelnen Bestandteile sind mir bekannt. Ebenfalls wollte ich vermeiden, selbst den Server zu starten und eine externe Socket.IO-Instanz zu verwenden. Mit dem Web-Adapter geht ja irgendwie alles in einem, und auch noch HTTPS.

              @apollon77:

              "webExtension":             "lib/simpleapi.js",
              ```` `  
              

              Das sorgt also dafür, dass der Web-Adapter einen HTTPS-Server für meinen Adapter bereitstellt? Muss ich noch irgendwas für die socketio-Instanz machen?

              @Bluefox:

              iobroker.proxy https://github.com/ioBroker/ioBroker.proxy

              anschauen. `
              Danke, da schau ich mal rein.

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

                Das zusammen mit dem genannten Code gibt an unter welcher URL dann dein Code erreichbar ist (Route ) und gibt den request weiter. So habe ich es verstanden.

                Eigentlich schreibe das nach nem "Web Extension Adapter Template" 😉

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

                  @AlCalzone:

                  @carsten04:

                  War das in etwa das was Du wissen wolltest? Ansonsten noch einmal genauer beschreiben. `
                  Nicht so ganz. Die einzelnen Bestandteile sind mir bekannt. Ebenfalls wollte ich vermeiden, selbst den Server zu starten und eine externe Socket.IO-Instanz zu verwenden. Mit dem Web-Adapter geht ja irgendwie alles in einem, und auch noch HTTPS.

                  @apollon77:

                  "webExtension":             "lib/simpleapi.js",
                  ```` `  
                  

                  Das sorgt also dafür, dass der Web-Adapter einen HTTPS-Server für meinen Adapter bereitstellt? Muss ich noch irgendwas für die socketio-Instanz machen?

                  @Bluefox:

                  iobroker.proxy https://github.com/ioBroker/ioBroker.proxy

                  anschauen. Danke, da schau ich mal rein.
                  Socket.io ist schon da. Allerdings es werden natürlich nur die Befehle unterstützt die schon vorprogrammiert sind. Aber falls irgendwas fehlt, das kann man nachbauen.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  800
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  1545
                  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