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. Skripten / Logik
  4. Hex an TCP Client senden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Hex an TCP Client senden

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptnode-redcommunication
11 Beiträge 2 Kommentatoren 894 Aufrufe 2 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.
  • M Malaus

    Ich habe einen Modbus fähigen Dali Controller. Leider hat das mit Modbus nicht wirklich geklappt, daher bin ich auf die Idee gekommen den ganzen Hex Wert an das Gerät zu schicken. Den Hex Wert habe ich per Wireshark ausgelesen. Nun bin ich mir nicht sicher, wie ich den Wert per JavaScript oder NodeRed an das Gerät schicke.

    Bei JavaScript sieht das immoment so aus:

    var T1 = "javascript.0.Hilfswerte.Fernbedienung.T1";
    
    on({id: T1 , change: "any"},
    schalten);
    
    var net = require('net');
    
    function schalten(){
    if (getState(T1).val==true){
          var hex_data = [0x01,0x9b,0x00,0x00,0x00,0x17,0x01,0x17,0x00,0x65,0x00,0x05,0x00,0x64,0x00,0x06,0x0c,0x12,0x8a,0x00,0x03,0x00,0x00,0x01,0xa0,0x00,0x00,0x00,0x00]
          var data = Buffer.from(hex_data);
          var ip = '192.168.178.36';
          var port = 502;
          sendMessage(ip, port, data);
          }
    
    }
    
    function sendMessage(host, port, message) {
      var client = net.connect({host:host, port: port}, function () {
        // 'connect' listener
        console.log('connected to server!');
        client.write(message);
      });
      client.on('data', function (data) {
        console.log(data.toString());
        client.end();
      });
      client.on('end', function () {
        console.log('disconnected from server');
      });
      client.on('error', function (error) {
        console.error('error: ' + error);
        client.end();
      });
    
    }
    

    Bildschirmfoto 2020-03-18 um 10.41.57.png

    Und bei NodeRed so (Hatte noch nie was mit NodeRed zu tun):
    Bildschirmfoto 2020-03-18 um 10.34.00.png

    Bildschirmfoto 2020-03-18 um 10.43.19.png

    Ich hab auch schon versucht den Hex Wert in verschiedene Formate umzuformen.
    z.B.:

    ["0x01“,"0x9b","0x00","0x00","0x00","0x17","0x01","0x17","0x00","0x65","0x00","0x05","0x00","0x64","0x00","0x06","0x0c","0x12","0x8a","0x00","0x03","0x00,"0x00","0x01","0xa0","0x00","0x00","0x00","0x00"]
    

    Oder

    \x01\x9b\x00\x00\x00\x17\x01\x17\x00\x65\x00\x05\x00\x64\x00\x06\x0c\x12\x8a\x00\x03\x00\x00\x01\xa0\x00\x00\x00\x00
    
    J.A.R.V.I.S.J Offline
    J.A.R.V.I.S.J Offline
    J.A.R.V.I.S.
    Developer
    schrieb am zuletzt editiert von J.A.R.V.I.S.
    #2

    @Malaus sagte in Hex an TCP Client senden:

    "0x01“

    Das “ ist kein " sondern ein “. Deswegen wird ein Fehler geworfen.

    Versuch es mal mit:

    ["0x01","0x9b","0x00","0x00","0x00","0x17","0x01","0x17","0x00","0x65","0x00","0x05","0x00","0x64","0x00","0x06","0x0c","0x12","0x8a","0x00","0x03","0x00","0x00","0x01","0xa0","0x00","0x00","0x00","0x00"]
    
    M 1 Antwort Letzte Antwort
    1
    • J.A.R.V.I.S.J J.A.R.V.I.S.

      @Malaus sagte in Hex an TCP Client senden:

      "0x01“

      Das “ ist kein " sondern ein “. Deswegen wird ein Fehler geworfen.

      Versuch es mal mit:

      ["0x01","0x9b","0x00","0x00","0x00","0x17","0x01","0x17","0x00","0x65","0x00","0x05","0x00","0x64","0x00","0x06","0x0c","0x12","0x8a","0x00","0x03","0x00","0x00","0x01","0xa0","0x00","0x00","0x00","0x00"]
      
      M Offline
      M Offline
      Malaus
      schrieb am zuletzt editiert von
      #3

      @J-A-R-V-I-S

      das hat funktioniert! Vielen Dank!
      Jetzt muss ich mir nur noch was ausdenken, wie ich am sinnvollsten die Helligkeit der Lampe schalte. Am besten eine Dezimal in Hex umrechnen.

      J.A.R.V.I.S.J 1 Antwort Letzte Antwort
      0
      • M Malaus

        @J-A-R-V-I-S

        das hat funktioniert! Vielen Dank!
        Jetzt muss ich mir nur noch was ausdenken, wie ich am sinnvollsten die Helligkeit der Lampe schalte. Am besten eine Dezimal in Hex umrechnen.

        J.A.R.V.I.S.J Offline
        J.A.R.V.I.S.J Offline
        J.A.R.V.I.S.
        Developer
        schrieb am zuletzt editiert von J.A.R.V.I.S.
        #4

        @Malaus sagte in Hex an TCP Client senden:

        Am besten eine Dezimal in Hex umrechnen.

        Hier, falls du das noch benötigst:

        const brightness = 60;
        
        const brightnessHex = brightness.toString(16);
        
        
        M 1 Antwort Letzte Antwort
        0
        • J.A.R.V.I.S.J J.A.R.V.I.S.

          @Malaus sagte in Hex an TCP Client senden:

          Am besten eine Dezimal in Hex umrechnen.

          Hier, falls du das noch benötigst:

          const brightness = 60;
          
          const brightnessHex = brightness.toString(16);
          
          
          M Offline
          M Offline
          Malaus
          schrieb am zuletzt editiert von Malaus
          #5

          @J-A-R-V-I-S

          nochmal Danke!
          Hab das nun eingebaut und laut log rechnet er es auch um allerdings schaltet er nur bei sehr kleinen Zahlen (1,3,6,..) und bei den größeren geht es aus. Und auch immer nur die gleiche Helligkeit. Nimm ich z.B. "0xC8" und ersetze das mit brightnessHex, geht die Lampe auf die jeweilige Helligkeit.

          function schalten(){
              const brightness = getState(T1).val;
           
              const brightnessHex = brightness.toString(16);
           
                console.log("Level " + brightnessHex);
                var hex_data = ["0x00","0x6f","0x00","0x00","0x00","0x17","0x01","0x17","0x00","0x65","0x00","0x05","0x00","0x64","0x00","0x06","0x0c","0x12","0x5f","0x00","0x03","0x00","0x00","0x00",brightnessHex,"0x00","0x00","0x00","0x00"] 
          
                var data = Buffer.from(hex_data);
                var ip = '192.168.178.36';
                var port = 502;
                sendMessage(ip, port, data);
          }
          

          Bildschirmfoto 2020-03-18 um 15.27.17.png

          Edit: Hab das problem beim absenden erkannt :D es fehlt 0x also so:

          const brightness = getState(T1).val;
          const brightnessHex = brightness.toString(16);
          const level = "0x" + brightnessHex
          
          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Malaus
            schrieb am zuletzt editiert von
            #6

            Durch:

            client.on('data', function (data) {
                console.log(data.toString());
                client.end();
              });
            

            Erhalte ich ja eine Antwort vom Client. Wie kann ich diese auswerten? Im Log bekomme ich nur seltsame Zeichen:
            Bildschirmfoto 2020-03-19 um 14.47.39.png

            J.A.R.V.I.S.J 1 Antwort Letzte Antwort
            0
            • M Malaus

              Durch:

              client.on('data', function (data) {
                  console.log(data.toString());
                  client.end();
                });
              

              Erhalte ich ja eine Antwort vom Client. Wie kann ich diese auswerten? Im Log bekomme ich nur seltsame Zeichen:
              Bildschirmfoto 2020-03-19 um 14.47.39.png

              J.A.R.V.I.S.J Offline
              J.A.R.V.I.S.J Offline
              J.A.R.V.I.S.
              Developer
              schrieb am zuletzt editiert von
              #7

              @Malaus ich weiß nicht genau was da ankommt, vermutlich ein Array? Dann versuch mal folgendes:

              log(JSON.stringify(data));
              
              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                Malaus
                schrieb am zuletzt editiert von
                #8

                Ja das funktioniert soweit:

                Bildschirmfoto 2020-03-19 um 15.26.46.png

                Jetzt kann ich doch mit

                JSON.parse();
                

                das in Number umwandeln und danach wieder in Hex. Also mein Ziel wäre, es mit der gesendeten Hex Datei zu vergleichen.
                Nur leider spuckt er mir nur [object][object] aus.
                Wo ist da mein Denkfehler?

                J.A.R.V.I.S.J 1 Antwort Letzte Antwort
                0
                • M Malaus

                  Ja das funktioniert soweit:

                  Bildschirmfoto 2020-03-19 um 15.26.46.png

                  Jetzt kann ich doch mit

                  JSON.parse();
                  

                  das in Number umwandeln und danach wieder in Hex. Also mein Ziel wäre, es mit der gesendeten Hex Datei zu vergleichen.
                  Nur leider spuckt er mir nur [object][object] aus.
                  Wo ist da mein Denkfehler?

                  J.A.R.V.I.S.J Offline
                  J.A.R.V.I.S.J Offline
                  J.A.R.V.I.S.
                  Developer
                  schrieb am zuletzt editiert von J.A.R.V.I.S.
                  #9

                  @Malaus wenn du ein Buffer in ein JSON Object umwandeln möchtest, dann versuch mal folgendes:

                  const obj = JSON.parse(data.toString());
                  

                  bzw.

                  const obj = data.toJSON().data;
                  
                  M 1 Antwort Letzte Antwort
                  1
                  • J.A.R.V.I.S.J J.A.R.V.I.S.

                    @Malaus wenn du ein Buffer in ein JSON Object umwandeln möchtest, dann versuch mal folgendes:

                    const obj = JSON.parse(data.toString());
                    

                    bzw.

                    const obj = data.toJSON().data;
                    
                    M Offline
                    M Offline
                    Malaus
                    schrieb am zuletzt editiert von
                    #10

                    @J-A-R-V-I-S ich hätte da noch eine Frage:
                    Gibt es eine simple Möglichkeit ein bestimmtes Modbus Register per Javascript abzufragen? Also das ich den Modbus Adapter umgehe.

                    J.A.R.V.I.S.J 1 Antwort Letzte Antwort
                    0
                    • M Malaus

                      @J-A-R-V-I-S ich hätte da noch eine Frage:
                      Gibt es eine simple Möglichkeit ein bestimmtes Modbus Register per Javascript abzufragen? Also das ich den Modbus Adapter umgehe.

                      J.A.R.V.I.S.J Offline
                      J.A.R.V.I.S.J Offline
                      J.A.R.V.I.S.
                      Developer
                      schrieb am zuletzt editiert von
                      #11

                      @Malaus mit Modbus habe ich leider nichts am Hut, da kann ich die leider nicht weiterhelfen.

                      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

                      704

                      Online

                      32.7k

                      Benutzer

                      82.4k

                      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