Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Io.broker.javascript WebSocket ansprechen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Io.broker.javascript WebSocket ansprechen

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

      Hallo!

      Bin im io.Broker Umfeld totaler Anfänger und brauche Hilfe. Ich habe noch eine andere Haustechnik wo ich derzeit noch alle Aktoren verdrahtet habe. CCU2 ist ein Test, diese in Zukunft abzulösen. Diese Haustechnik hat ein RS485 Bus zur Kommunikation und dieser kann über ein XPort angesprochen werden. Die Anlage selber hat einen WebServer und darüber kann ich auch per URL die Aktoren schalten, ist aber über den PI2, MySQL und Xport sehr langsam… meine Idee ist, mit dem JavaScript Modul direkt per WebSocket über das XPort zu schalten, um Aktionen auf dem Display auch schnell auszuführen. Daher kommt die Frage: Wie spreche ich WebSockets an?

      ich habe es versucht:

      //var WebSocket = require('ws');
      
      function checksumme(daten)
      {
          var l = daten.length;
          var r = 1;																								// SOT wird nicht beruecksichtigt
          var cs = 0;
          var c = null;
      
          while (r < l)
          {
          	c= ord(substr(daten,r,1));
          	cs = c + cs;
          	++r;
          }
          return (cs % 256);
      }
      
      var ws = new WebSocket('ws://192.168.178.103','99');
      
      ws.onopen = function (event) {
          var text = "ybS14291";
          var txt1 = checksumme(text);	
          var txt = text + CHR(txt1);
          log(txt);
          ws.send(txt); 
      };
      

      Dabi kommt aber folgender Fehler:

      javascript.0 script.js.dpc.dpcWebSocket: script.js.dpc.dpcWebSocket:19 var ws = new WebSocket('ws://192.168.178.103','99'); ^ ReferenceError: WebSocket is not defined at script.js.dpc.dpcWebSocket:19:14

      Es kann nicht viel sein, ich bin aber am Ende…

      Kann mir jemand aufs Pferd helfen?

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

        @dpcFan:

        Hallo!

        Bin im io.Broker Umfeld totaler Anfänger und brauche Hilfe. Ich habe noch eine andere Haustechnik wo ich derzeit noch alle Aktoren verdrahtet habe. CCU2 ist ein Test, diese in Zukunft abzulösen. Diese Haustechnik hat ein RS485 Bus zur Kommunikation und dieser kann über ein XPort angesprochen werden. Die Anlage selber hat einen WebServer und darüber kann ich auch per URL die Aktoren schalten, ist aber über den PI2, MySQL und Xport sehr langsam… meine Idee ist, mit dem JavaScript Modul direkt per WebSocket über das XPort zu schalten, um Aktionen auf dem Display auch schnell auszuführen. Daher kommt die Frage: Wie spreche ich WebSockets an?

        ich habe es versucht:

        //var WebSocket = require('ws');
        
        function checksumme(daten)
        {
            var l = daten.length;
            var r = 1;																								// SOT wird nicht beruecksichtigt
            var cs = 0;
            var c = null;
            
            while (r < l)
            {
            	c= ord(substr(daten,r,1));
            	cs = c + cs;
            	++r;
            }
            return (cs % 256);
        }
        
        var ws = new WebSocket('ws://192.168.178.103','99');
        
        ws.onopen = function (event) {
            var text = "ybS14291";
            var txt1 = checksumme(text);	
            var txt = text + CHR(txt1);
            log(txt);
            ws.send(txt); 
        };
        

        Dabi kommt aber folgender Fehler:

        javascript.0 script.js.dpc.dpcWebSocket: script.js.dpc.dpcWebSocket:19 var ws = new WebSocket('ws://192.168.178.103','99'); ^ ReferenceError: WebSocket is not defined at script.js.dpc.dpcWebSocket:19:14

        Es kann nicht viel sein, ich bin aber am Ende…

        Kann mir jemand aufs Pferd helfen? `
        Hm… Das richt natürlich mehr nach einen Adapter, aber...

        Da node.js keine eingebaute Unterstützung für WS hat, musst du ein Modul dafür benutzen.

        z.B. https://www.npmjs.com/package/websocket

        Da gibt es auch Beispiele, wie man das zu benutzen hat.

        Du solltest in den Einstellungen von javasciprt dann dieses Modul eintragen.

        1 Reply Last reply Reply Quote 0
        • D
          dpcFan last edited by

          Ich wollte mit einem Adapter ja nicht gleich nach den Sternen greifen 🙂 Finde ich auch, weil die Haustechnik ja viel mehr kann und es da gute Ansätze für einen eigenen Adapter gibt … aber erst einmal klein anfangen.

          Ich werde nun mal versuchen das Modul zu installieren .. habe ich noch nie gemacht, werde berichten.

          Danke

          1 Reply Last reply Reply Quote 0
          • D
            dpcFan last edited by

            Hallo!

            Geht, konnte das Modul installieren und auch nutzen.. schreibt schon nett den Header raus auf dem Bus. Nun geht das fummeln weiter … 1000 Danke

            Gruß

            dpcFan

            1 Reply Last reply Reply Quote 0
            • D
              dpcFan last edited by

              Hallo!

              Ich verzweifle mit dem WebSocket Zeug … ich habe nun folgendes in ein Script kopiert:

              var WebSocketClient = require('websocket').client;
              var client = new WebSocketClient();
              
              client.connect('ws://192.168.178.103:99');
              
              client.onopen = function () {
                  console.log('Sending...');
                  client.send('Ping');
              };
              
              client.onclose = function(){
                  console.log('Server offline.');
              };
              
              client.onmessage = function(msg){
                  console.log(msg.data);
              };
              
              client.onerror = function(msg){
                  console.log('Sorry but there was an error.');
              };
              
              

              per OC-console sehe ich auch etwas auf dem RS485 Bus ankommen:

              47 45 54 20 2F 20 48 54 54 50 2F 31 2E 31 0D 0A  GET / HTTP/1.1..
              55 70 67 72 61 64 65 3A 20 77 65 62 73 6F 63 6B  Upgrade: websock
              65 74 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20  et..Connection: 
              55 70 67 72 61 64 65 0D 0A 53 65 63 2D 57 65 62  Upgrade..Sec-Web
              53 6F 63 6B 65 74 2D 56 65 72 73 69 6F 6E 3A 20  Socket-Version: 
              31 33 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65  13..Sec-WebSocke
              74 2D 4B 65 79 3A 20 75 65 5A 4C 33 73 32 67 2F  t-Key: ueZL3s2g/
              61 39 30 72 67 35 58 74 2B 5A 2F 77 51 3D 3D 0D  a90rg5Xt+Z/wQ==.
              0A 48 6F 73 74 3A 20 31 39 32 2E 31 36 38 2E 31  .Host: 192.168.1
              37 38 2E 31 30 33 3A 39 39 0D 0A 0D 0A           78.103:99....
              

              Aber jetzt komme ich nicht weiter, "onopen" wird nicht ausgelöst, alle Versuche etwas zu senden gehen leer aus!!!

              Hat jemand mit io.broker JavaScript schon mal einen eigenen WebSocket Client entwickelt?

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

              Support us

              ioBroker
              Community Adapters
              Donate

              824
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              2
              5
              2298
              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