Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Adapter Socket.IO Benötige Hilfe zum Updateverhalten

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    211

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Adapter Socket.IO Benötige Hilfe zum Updateverhalten

Adapter Socket.IO Benötige Hilfe zum Updateverhalten

Scheduled Pinned Locked Moved Entwicklung
javascript adapter.io updatessocketiojavascriptupdate
7 Posts 2 Posters 314 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mischu
    wrote on last edited by
    #1

    Hallo Zusammen,
    ich versuche mich gerade in den Adapter Socket.io einzuarbeiten. Soweit läuft er und sendet Updates. Im file conn.js habe ich die Stelle ausgemacht, an welcher eine Wildcard definiert ist, dass von allen Objekten ein Update übertragen wird. Da dies eine Flut an Daten bedeutet, versuche ich gerade die Datenmenge über eine Auswahl zu reduzieren. Ich komme diesbezüglich nicht weiter. Versucht habe ich ein Beispiel aus dem Forum (funktioniert leider nicht):

    let myState = 'hm-rpc.0.NEQ1684242.1.STATE';
    servConn._socket.emit('subscribe', myState); 
    
    

    Gibt es eine Möglichkeit, das Update auf selektierte Adapter zu reduzieren? Z.B. hue.0., hue.1. usw.? Aus den Adapter Updates meine ich herausgelesen zu haben, dass dafür eine Array Lösung gesetzt wurde. Wenn ja würde ich mich über Hilfe freuen. Wie muss ich dies in dem auf GitHub als Beispiel hinterlegten Code einfügen? Das müsste doch aus der index.html heraus gehen...

    Vielen Dank!

    Grüße
    Michael

    UncleSamU 1 Reply Last reply
    0
    • M mischu

      Hallo Zusammen,
      ich versuche mich gerade in den Adapter Socket.io einzuarbeiten. Soweit läuft er und sendet Updates. Im file conn.js habe ich die Stelle ausgemacht, an welcher eine Wildcard definiert ist, dass von allen Objekten ein Update übertragen wird. Da dies eine Flut an Daten bedeutet, versuche ich gerade die Datenmenge über eine Auswahl zu reduzieren. Ich komme diesbezüglich nicht weiter. Versucht habe ich ein Beispiel aus dem Forum (funktioniert leider nicht):

      let myState = 'hm-rpc.0.NEQ1684242.1.STATE';
      servConn._socket.emit('subscribe', myState); 
      
      

      Gibt es eine Möglichkeit, das Update auf selektierte Adapter zu reduzieren? Z.B. hue.0., hue.1. usw.? Aus den Adapter Updates meine ich herausgelesen zu haben, dass dafür eine Array Lösung gesetzt wurde. Wenn ja würde ich mich über Hilfe freuen. Wie muss ich dies in dem auf GitHub als Beispiel hinterlegten Code einfügen? Das müsste doch aus der index.html heraus gehen...

      Vielen Dank!

      Grüße
      Michael

      UncleSamU Offline
      UncleSamU Offline
      UncleSam
      Developer
      wrote on last edited by
      #2

      @mischu sagte in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

      Ich komme diesbezüglich nicht weiter. Versucht habe ich ein Beispiel aus dem Forum (funktioniert leider nicht):

      let myState = 'hm-rpc.0.NEQ1684242.1.STATE';
      servConn._socket.emit('subscribe', myState); 
      

      Du solltest niemals auf etwas zugreifen, das mit _ beginnt. Das sind internals.

      Gibt es eine Möglichkeit, das Update auf selektierte Adapter zu reduzieren? Z.B. hue.0., hue.1. usw.? Aus den Adapter Updates meine ich herausgelesen zu haben, dass dafür eine Array Lösung gesetzt wurde. Wenn ja würde ich mich über Hilfe freuen. Wie muss ich dies in dem auf GitHub als Beispiel hinterlegten Code einfügen? Das müsste doch aus der index.html heraus gehen...

      Wenn du nicht alle Updates bekommen willst, musst du im init() den Wert von autoSubscribe auf false setzen.
      Siehe hier: https://github.com/ioBroker/ioBroker.socketio/blob/919a467121e673590377a4fd1023f99ee38656b5/example/conn.js#L180

      Danach kannst du die Methode subscribe() verwenden. Die Akzeptiert State Namen, Arrays und Wildcards. Also z.B. servConn.subscribe('hue.*').

      Und stelle sicher, dass du Port 8084 verwendest, siehe auch hier: https://forum.iobroker.net/topic/41118/socket-io-eigene-visualisierung

      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
      ♡-lichen Dank an meine Sponsoren

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mischu
        wrote on last edited by
        #3

        @unclesam said in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

        autoSubscribe

        Danke für die schnelle Antwort!

        Um im conn.js autoSubscribe auf false zu stellen habe ich folgendes gemacht:

        init:             function (connOptions, connCallbacks, objectsRequired, autoSubscribe) {
              autoSubscribe = false;
        

        Die Updates haben gestoppt.

        In der index.html habe ich folgendes eingefügt:

        servConn.namespace   = 'myapp';
        servConn.subscribe('hue.*');
        servConn._useStorage = false;
        
        var states = [];
        servConn.init({
          name:          'myapp',  // optional - default 'vis.0'
          connLink:      'http://localhost:8084',  // optional URL of the socket.io adapter
          socketSession: '',           // optional - used by authentication
        

        Leider bekomme ich keine updates...😕

        UncleSamU 1 Reply Last reply
        0
        • M mischu

          @unclesam said in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

          autoSubscribe

          Danke für die schnelle Antwort!

          Um im conn.js autoSubscribe auf false zu stellen habe ich folgendes gemacht:

          init:             function (connOptions, connCallbacks, objectsRequired, autoSubscribe) {
                autoSubscribe = false;
          

          Die Updates haben gestoppt.

          In der index.html habe ich folgendes eingefügt:

          servConn.namespace   = 'myapp';
          servConn.subscribe('hue.*');
          servConn._useStorage = false;
          
          var states = [];
          servConn.init({
            name:          'myapp',  // optional - default 'vis.0'
            connLink:      'http://localhost:8084',  // optional URL of the socket.io adapter
            socketSession: '',           // optional - used by authentication
          

          Leider bekomme ich keine updates...😕

          UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          wrote on last edited by
          #4

          @mischu sagte in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

          @unclesam said in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

          autoSubscribe

          Danke für die schnelle Antwort!

          Um im conn.js autoSubscribe auf false zu stellen habe ich folgendes gemacht:

          init:             function (connOptions, connCallbacks, objectsRequired, autoSubscribe) {
                autoSubscribe = false;
          

          Moment, was? Nein, du sollst beim Aufruf von init() den vierten Parameter auf false setzen, nicht das conn.js ändern. Bitte daran nie etwas ändern, weil du dann weder Updates machen kannst noch dir irgendjemand helfen kann (da wir meistens den offiziellen Source anschauen).

          In der index.html habe ich folgendes eingefügt:

          servConn.namespace   = 'myapp';
          servConn.subscribe('hue.*');
          servConn._useStorage = false;
          
          var states = [];
          servConn.init({
            name:          'myapp',  // optional - default 'vis.0'
            connLink:      'http://localhost:8084',  // optional URL of the socket.io adapter
            socketSession: '',           // optional - used by authentication
          

          Leider bekomme ich keine updates...😕

          Ich habe nicht gerne angebissene Sachen... kannst du bitte das ganze init() posten? Am besten gleich den ganzen JS Code aus deiner HTML Datei.

          Und ich würde nichts machen, bevor du das init() aufgerufen hast.

          Die Verbindung zum Server funktioniert (in den Developer Tools nachschauen - F12)? Der socket.io Adapter läuft?

          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
          ♡-lichen Dank an meine Sponsoren

          M 1 Reply Last reply
          0
          • UncleSamU UncleSam

            @mischu sagte in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

            @unclesam said in Adapter Socket.IO Benötige Hilfe zum Updateverhalten:

            autoSubscribe

            Danke für die schnelle Antwort!

            Um im conn.js autoSubscribe auf false zu stellen habe ich folgendes gemacht:

            init:             function (connOptions, connCallbacks, objectsRequired, autoSubscribe) {
                  autoSubscribe = false;
            

            Moment, was? Nein, du sollst beim Aufruf von init() den vierten Parameter auf false setzen, nicht das conn.js ändern. Bitte daran nie etwas ändern, weil du dann weder Updates machen kannst noch dir irgendjemand helfen kann (da wir meistens den offiziellen Source anschauen).

            In der index.html habe ich folgendes eingefügt:

            servConn.namespace   = 'myapp';
            servConn.subscribe('hue.*');
            servConn._useStorage = false;
            
            var states = [];
            servConn.init({
              name:          'myapp',  // optional - default 'vis.0'
              connLink:      'http://localhost:8084',  // optional URL of the socket.io adapter
              socketSession: '',           // optional - used by authentication
            

            Leider bekomme ich keine updates...😕

            Ich habe nicht gerne angebissene Sachen... kannst du bitte das ganze init() posten? Am besten gleich den ganzen JS Code aus deiner HTML Datei.

            Und ich würde nichts machen, bevor du das init() aufgerufen hast.

            Die Verbindung zum Server funktioniert (in den Developer Tools nachschauen - F12)? Der socket.io Adapter läuft?

            M Offline
            M Offline
            mischu
            wrote on last edited by
            #5

            @unclesam

            Hier der HTML code. Ich stehe gerade komplett auf dem Schlauch... was muss ich eintragen, dass ich spezifische Updates bekomme und diese im console.log angezeigt werden? ioBroker läuft und Verbindung zum Server wird aufgebaut. Das ist bis auf meine Ergänzung

            servConn.subscribe('hue.*');
            

            der aktuelle Beispielcode von GitHub. Mehr habe ich noch nicht aufgebaut, da ich erst das Autoupdate zum laufen bekommen möchte.

            servConn.namespace   = 'myapp';
            servConn.subscribe('hue.*');
            servConn._useStorage = false;
            
            var states = [];
            servConn.init({
              name:          'myapp',  // optional - default 'vis.0'
              connLink:      'http://192.168.178.43:8084',  // optional URL of the socket.io adapter
              socketSession: '',           // optional - used by authentication   
            }, {
              onConnChange: function (isConnected) {
            	if (isConnected) {
            	  console.log('connected');
            	  servConn.getStates(function (err, _states) {
            		var count = 0;
            		for (var id in _states) {
            		  count++;
            		}
            		console.log('Received ' + count + ' states.');
            		states = _states;
            	  });
            	} else {
            	  console.log('disconnected');
            	}
              },
              onRefresh: function () {
            	window.location.reload();
              },
              onUpdate: function (id, state) {
            	setTimeout(function () {
            	  console.log('NEW VALUE of ' + id + ': ' + JSON.stringify(state));
            	  states[id] = state;
            	}, 0);
              },
              onError: function (err) {
            	window.alert(_('Cannot execute %s for %s, because of insufficient permissions', err.command, err.arg), _('Insufficient permissions'), 'alert', 600);
              }
            });
            
            UncleSamU 1 Reply Last reply
            0
            • M mischu

              @unclesam

              Hier der HTML code. Ich stehe gerade komplett auf dem Schlauch... was muss ich eintragen, dass ich spezifische Updates bekomme und diese im console.log angezeigt werden? ioBroker läuft und Verbindung zum Server wird aufgebaut. Das ist bis auf meine Ergänzung

              servConn.subscribe('hue.*');
              

              der aktuelle Beispielcode von GitHub. Mehr habe ich noch nicht aufgebaut, da ich erst das Autoupdate zum laufen bekommen möchte.

              servConn.namespace   = 'myapp';
              servConn.subscribe('hue.*');
              servConn._useStorage = false;
              
              var states = [];
              servConn.init({
                name:          'myapp',  // optional - default 'vis.0'
                connLink:      'http://192.168.178.43:8084',  // optional URL of the socket.io adapter
                socketSession: '',           // optional - used by authentication   
              }, {
                onConnChange: function (isConnected) {
              	if (isConnected) {
              	  console.log('connected');
              	  servConn.getStates(function (err, _states) {
              		var count = 0;
              		for (var id in _states) {
              		  count++;
              		}
              		console.log('Received ' + count + ' states.');
              		states = _states;
              	  });
              	} else {
              	  console.log('disconnected');
              	}
                },
                onRefresh: function () {
              	window.location.reload();
                },
                onUpdate: function (id, state) {
              	setTimeout(function () {
              	  console.log('NEW VALUE of ' + id + ': ' + JSON.stringify(state));
              	  states[id] = state;
              	}, 0);
                },
                onError: function (err) {
              	window.alert(_('Cannot execute %s for %s, because of insufficient permissions', err.command, err.arg), _('Insufficient permissions'), 'alert', 600);
                }
              });
              
              UncleSamU Offline
              UncleSamU Offline
              UncleSam
              Developer
              wrote on last edited by
              #6

              @mischu Also, die ersten zwei Argumente von init() hast du ja schon: die Config und die Callbacks, das dritte ist, ob du Objektänderungen willst, das kannst du auf false setzen und das vierte eben auch auf false.

              Damit sieht dann dein init() etwa so aus (Optionen und Callbacks habe ich rausgekürzt):

              servConn.init({
                // options
              }, {
                // callbacks
              }, false, false);
              

              Und nun würde ich das subscribe() eben erst nach dem Aufruf von init() machen. Also ganz zuunterst im Script.

              Wenn jetzt etwas nicht geht, wäre das Konsolen-Log interessant. Welche Meldungen kommen? Wo gibt es vielleicht noch Fehlermeldungen?

              Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
              ♡-lichen Dank an meine Sponsoren

              M 1 Reply Last reply
              0
              • UncleSamU UncleSam

                @mischu Also, die ersten zwei Argumente von init() hast du ja schon: die Config und die Callbacks, das dritte ist, ob du Objektänderungen willst, das kannst du auf false setzen und das vierte eben auch auf false.

                Damit sieht dann dein init() etwa so aus (Optionen und Callbacks habe ich rausgekürzt):

                servConn.init({
                  // options
                }, {
                  // callbacks
                }, false, false);
                

                Und nun würde ich das subscribe() eben erst nach dem Aufruf von init() machen. Also ganz zuunterst im Script.

                Wenn jetzt etwas nicht geht, wäre das Konsolen-Log interessant. Welche Meldungen kommen? Wo gibt es vielleicht noch Fehlermeldungen?

                M Offline
                M Offline
                mischu
                wrote on last edited by mischu
                #7

                @unclesam
                Nochmals Dankeschön für Deinen Einsatz! Ok, wenn ich das false bei autoSubscribe weglasse rennen Updates.

                Mit dem false bei autoSubscribe ist Stille. Hier die logs:

                ioBroker:
                socketio.0 2021-01-20 16:19:13.301 info (5112) ==>Connected system.user.admin from ::ffff:192.168.178.20

                console chrome:
                conn.js:150 Trying connect...
                16:19:11.965 conn.js:296 2021-01-20T15:19:11.965Z Connected => authenticate
                16:19:12.037 conn.js:317 2021-01-20T15:19:12.037Z Authenticated: true
                16:19:12.044 socketTest.js:14 connected
                16:19:13.804 socketTest.js:20 Received 10926 states.

                Also er verbindet, lädt die States aber es findet kein traffic beim update statt. Somit gehe ich davon aus, dass ein Problem im Bereich der Definition des gewünschten Updates herrscht. Also bei:

                servConn.subscribe('hue.*')
                

                Ich habe dies wie empfohlen ganz am Ende platziert.

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                83

                Online

                32.4k

                Users

                81.3k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe