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. Visualisierung
  4. socket.IO - Daten verarbeiten und subscribe

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    20
    1
    750

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

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

socket.IO - Daten verarbeiten und subscribe

Geplant Angeheftet Gesperrt Verschoben Visualisierung
2 Beiträge 2 Kommentatoren 268 Aufrufe 3 Watching
  • Ä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.
  • C Offline
    C Offline
    chefffe
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,
    ich bin derzeit dran über HTML/CSS/JS meine eigene Visualisierung zu erstellen.
    Dabei möchte ich die Datenpunkte per socket.io beim web Adapter abfragen was initial auch funktioniert und ich bekomme es auch hin Lampen zu steuern.
    Da ich noch Anfänger bin fehlt mir im Moment noch das Verständnis dafür wie ich am besten mit den ankommenden Daten per socket.io umgehe.
    Hab da in einem Beitrag gelesen das man Datenpunkte mit folgendem Code "subsrciben" kann:

    servConn._socket.emit('subscribe', subscriptions)
    

    Das bekannte Beispiel aus dem Forum läuft bei mir erstmal, jedoch kann ich die Daten nur einmalig per "getStates" abholen:

    <!doctype html>
    <html>
    <head>
        <!-- Replace "localhost" with real IP address of controller, if default port changed, correct it too -->
        <script type="text/javascript" src="http://192.168.178.53:8082/socket.io/socket.io.js"></script>
        <script type="text/javascript" src="conn.js"></script>
        <script type="text/javascript" src="licht.js"></script>
    </head>
    <body>
    
    <b id="luftdruckWert">unbekannt</b><br>
    
    <script type="text/javascript">
        servConn.namespace   = 'mobile.0';
        servConn._useStorage = false;
    
        var states = [];
        // STELLE 1
        servConn.init({
            name:          'mobile.0',  // optional - default 'vis.0'
            connLink:      'http://192.168.178.53:8082',  // 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++;
                        }
                        // STELLE2
                        states = _states;
                        servConn.getStates("mqtt.0.Wetter.Luftdruck", (error, states) => {
                        document.getElementById("luftdruckWert").innerHTML = states["mqtt.0.Wetter.Luftdruck"].val + "mbar";
                        });
    
                    });
    
                } else {
                    console.log('disconnected');
                }
            },
    
            onRefresh: function () {
                window.location.reload();
                },
    
            onUpdate: function (id, state) {
                // STELLE 3
                },
    
            onError: function (err) {
                window.alert(_('Cannot execute %s for %s, because of insufficient permissions', err.command, err.arg), _('Insufficient permissions'), 'alert', 600);
            }
        });
    // STELLE 4
    </script>
    </body>
    

    Meine Fragen dazu:
    Bekomme ich beim subscribe nur noch die "abonnierten" Datenpunkte geschickt vom Server?
    An welcher Stelle (1/2/3/4) im Code müsste dieser subscribe rein?
    Geht es auch ohne subscribe mit Filterung aller ankommenden Daten? (auch hinsichtlich Performance gesehen)
    Wie kann ich die ankommenden Daten (JSON) am besten weiter verarbeiten?

    Ein Beispiel von jemand der das selber gemacht hat würde mir schon sehr helfen!

    R 1 Antwort Letzte Antwort
    0
    • C chefffe

      Hallo zusammen,
      ich bin derzeit dran über HTML/CSS/JS meine eigene Visualisierung zu erstellen.
      Dabei möchte ich die Datenpunkte per socket.io beim web Adapter abfragen was initial auch funktioniert und ich bekomme es auch hin Lampen zu steuern.
      Da ich noch Anfänger bin fehlt mir im Moment noch das Verständnis dafür wie ich am besten mit den ankommenden Daten per socket.io umgehe.
      Hab da in einem Beitrag gelesen das man Datenpunkte mit folgendem Code "subsrciben" kann:

      servConn._socket.emit('subscribe', subscriptions)
      

      Das bekannte Beispiel aus dem Forum läuft bei mir erstmal, jedoch kann ich die Daten nur einmalig per "getStates" abholen:

      <!doctype html>
      <html>
      <head>
          <!-- Replace "localhost" with real IP address of controller, if default port changed, correct it too -->
          <script type="text/javascript" src="http://192.168.178.53:8082/socket.io/socket.io.js"></script>
          <script type="text/javascript" src="conn.js"></script>
          <script type="text/javascript" src="licht.js"></script>
      </head>
      <body>
      
      <b id="luftdruckWert">unbekannt</b><br>
      
      <script type="text/javascript">
          servConn.namespace   = 'mobile.0';
          servConn._useStorage = false;
      
          var states = [];
          // STELLE 1
          servConn.init({
              name:          'mobile.0',  // optional - default 'vis.0'
              connLink:      'http://192.168.178.53:8082',  // 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++;
                          }
                          // STELLE2
                          states = _states;
                          servConn.getStates("mqtt.0.Wetter.Luftdruck", (error, states) => {
                          document.getElementById("luftdruckWert").innerHTML = states["mqtt.0.Wetter.Luftdruck"].val + "mbar";
                          });
      
                      });
      
                  } else {
                      console.log('disconnected');
                  }
              },
      
              onRefresh: function () {
                  window.location.reload();
                  },
      
              onUpdate: function (id, state) {
                  // STELLE 3
                  },
      
              onError: function (err) {
                  window.alert(_('Cannot execute %s for %s, because of insufficient permissions', err.command, err.arg), _('Insufficient permissions'), 'alert', 600);
              }
          });
      // STELLE 4
      </script>
      </body>
      

      Meine Fragen dazu:
      Bekomme ich beim subscribe nur noch die "abonnierten" Datenpunkte geschickt vom Server?
      An welcher Stelle (1/2/3/4) im Code müsste dieser subscribe rein?
      Geht es auch ohne subscribe mit Filterung aller ankommenden Daten? (auch hinsichtlich Performance gesehen)
      Wie kann ich die ankommenden Daten (JSON) am besten weiter verarbeiten?

      Ein Beispiel von jemand der das selber gemacht hat würde mir schon sehr helfen!

      R Offline
      R Offline
      rewenode
      schrieb am zuletzt editiert von
      #2

      @chefffe Stelle 3
      Kannst du z.B. so testen:

      onUpdate: function(id, state) {
                  setTimeout(function() {
                      console.log('NEW VALUE of ' + id + ': ' + JSON.stringify(state));
                      states[id] = state;
                  }, 0);
              },
      

      Gruß
      Reiner

      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

      859

      Online

      32.5k

      Benutzer

      81.6k

      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