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. [Frage] WEB-Instanz/-Schnittstelle in eigenem Adapter?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

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

Geplant Angeheftet Gesperrt Verschoben Entwicklung
7 Beiträge 4 Kommentatoren 1.7k 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.
  • AlCalzoneA Offline
    AlCalzoneA Offline
    AlCalzone
    Developer
    schrieb am zuletzt editiert von
    #1

    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.

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

    1 Antwort Letzte Antwort
    0
    • carsten04C Online
      carsten04C Online
      carsten04
      Developer
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • apollon77A Offline
        apollon77A Offline
        apollon77
        schrieb am zuletzt editiert von
        #3

        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 :-)

        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
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

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

          anschauen.

          1 Antwort Letzte Antwort
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #5

            @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.

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

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

              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" ;-)

              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
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                schrieb am zuletzt editiert von
                #7

                @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 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

                322

                Online

                32.6k

                Benutzer

                82.3k

                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