Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. socket.io States via Kotlin/Java abgreifen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    socket.io States via Kotlin/Java abgreifen

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

      Hey zusammen,

      ich bin gerade dabei eine Android App, die den socket.io Adapter nutzt, zu erstellen. Dabei kann ich mit den Sockets Dinge schalten und States abgreifen.

      Leider kann ich nicht wie in der Javascriptversion mit dem "onUpdate" bzw. "stateChange" Event nach Änderungen der Stati horchen.

      Beispiel:

       mSocket.on("connect", Emitter.Listener { args ->
                      Log.e(
                          "CUSTOM",
                          "connected to ioBroker"
                      )
                  })
      

      Das funktioniert, bin ich connected, wird die Funktion aktiv.

      Wenn ich jedoch

      mSocket.on("stateChange", Emitter.Listener { args ->
                      Log.e(
                          "CUSTOM",
                          "hier sollte was stehen, wenn was geändert wird"
                      )
                  })
      

      abgebe, werden keine Objectchanges geloggt..

      Hat einer vielleicht eine Idee?

      Grüße

      UncleSam 1 Reply Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer @scripz last edited by UncleSam

        @scripz Was ist mSocket? Ist es das socket-io Objekt? Dann wird das nicht gehen, da socket-io nur die darunterliegende Verbindung herstellt. Du musst selber Nachrichten verschicken und auf Nachrichten hören.

        Hier findest du den entsprechenden JavaScript Code:
        https://github.com/ioBroker/ioBroker.socketio/blob/master/example/conn.js

        Dies musst du mehr oder weniger so nach Kotlin oder Java portieren.

        S 1 Reply Last reply Reply Quote 0
        • S
          scripz @UncleSam last edited by

          @unclesam genau, das ist ein socket-io Objekt. Die conn.js habe ich schon bei meiner Webapp genutzt, da konnte man eben auf "onUpdate" horchen, deshalb dachte ich gibts da sowas auch 😞 Aber dann muss ich wohl alle x milisekunden eine Nachricht schicken und den Output verarbeiten. Schade.

          Danke für Deine Antwort! 🙂

          UncleSam 1 Reply Last reply Reply Quote 0
          • UncleSam
            UncleSam Developer @scripz last edited by

            @scripz sagte in socket.io States via Kotlin/Java abgreifen:

            dann muss ich wohl alle x milisekunden eine Nachricht schicken und den Output verarbeiten. Schade.

            Was, weshalb? Nein, du kannst doch auf mSocket.on(xxx) auf die Sachen hören, aber dafür must du natürlich auch ein subscribe oder getState, oder sonst etwas machen. Siehe all die this._socket.emit() im oben genannten conn.js.

            Von selbst kommen bei socket-io keine Daten - zum Glück, sonst würde bei grossen ioBroker Installationen die Verbindung komplett überfordert.

            Im conn.js wird das in diesen zwei Zeilen gemacht - aber das kann ich nicht empfehlen, da das sehr viele Daten sein können:

                    this._autoSubscribe && this._socket.emit('subscribe', '*');
                    objectsRequired && this._socket.emit('subscribeObjects', '*');
            

            Damit erhälst du jede Änderung von irgendetwas in ioBroker.

            S 1 Reply Last reply Reply Quote 1
            • S
              scripz @UncleSam last edited by

              @unclesam Perfekt! Vielen Dank! Ich habe mich zu sehr auf das onUpdate und stateChanged konzentriert. Auch war mir das Konzept von socketIO nicht ganz klar. Dein Tipp "Von selbst kommen bei socket-io keine Daten" hat mich dann erst in die richtige Richtung gestoßen. Das wusste ich so nicht 🙂

              Vielen Dank, jetzt kann ich weiter "basteln" 🙂

              Grüße

              benj1m4n 1 Reply Last reply Reply Quote 0
              • benj1m4n
                benj1m4n @scripz last edited by benj1m4n

                @scripz Hi, ich versuche gerade das gleiche umzusetzen und eine kleine Android App zur Steuerung aufzusetzen. allerdings scheitere ich shcon am connect. Wie hast du das damals hinbekommen?

                        val uri = URI.create("http://<meineip>")
                        mSocket = IO.socket(uri)
                        mSocket?.on("connect", {Log.i("CUSTOM","connected to ioBroker")})
                        mSocket?.connect();
                

                Der connect Befehl wird aber nicht ausgeführt, ich sehe auch keine Fehlermeldungen im Debugger.
                Die IP kann ich im Browser ohne Probleme aufrufen, also auch kein Tipp Fehler.
                Hast du einen Tipp wie du damals vorgegangen bist?

                UncleSam 1 Reply Last reply Reply Quote 0
                • UncleSam
                  UncleSam Developer @benj1m4n last edited by UncleSam

                  @benj1m4n sagte in socket.io States via Kotlin/Java abgreifen:

                  Die IP kann ich im Browser ohne Probleme aufrufen, also auch kein Tipp Fehler.

                  Und du kannst die IP ohne Portnummer aufrufen? Oder hast du etwa den Port vergessen? Du kannst entweder den im Web-Adapter zur Verfügung gestellten Socket.io Port verwenden (meistens 8082) oder du installierst den Socket.io Adapter und stellst dort einen Port ein, den du dann verwendest.

                  Und wahrscheinlich (auch wenn ich die Android/Java Version von Socket.io nicht kenne), solltest du mal ein mSocket?.on("error", ...); oder ähnliches versuchen. Klar gibt die asynchrone Methode connect() nichts zurück, wenn du eine falsche URI verwendest - die Methode ist ja eben asynchron.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  752
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  422
                  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