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. JavaScript
  5. [gelöst] Hex zu RGB

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[gelöst] Hex zu RGB

Geplant Angeheftet Gesperrt Verschoben JavaScript
blocklyjavascript
7 Beiträge 3 Kommentatoren 365 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.
  • falke69F Offline
    falke69F Offline
    falke69
    schrieb am zuletzt editiert von falke69
    #1

    Hallo zusammen,

    ich möchte gerne den Farbwert, den ich in HEX erhalte gerne in RGB umwandeln um so meine LED über eine Vernbedienung steuern zu können.

    function hexToRgb(hex) {
    
      var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    
      return result ? {
    
        r: parseInt(result[1], 16),
    
        g: parseInt(result[2], 16),
    
        b: parseInt(result[3], 16)
    
      } : null;
    
    }
    
    
    on({id: "0_userdata.0.Test.led.farbe", change: "ne"}, function (obj) {
    
       setState("0_userdata.0.Test.led.farbe1",
    
       hexToRgb(getState("0_userdata.0.Test.led.farbe").val).r + ',' +
    
       hexToRgb(getState("0_userdata.0.Test.led.farbe").val).g + ',' +
    
       hexToRgb(getState("0_userdata.0.Test.led.farbe").val).b);
    
    });
    
    

    Im JS-Adapter habe ich schon "hex-rgb" hinzugefügt.
    Das Script reagiert zumindest schonmal auf den zu ändernden Datenpunkt "0_userdata.0.Test.led.farbe" in den der Hexwert ankommen soll.

    Problem ist, dass mit im Log immer dieser Fehler:

    Error in callback: TypeError: Cannot read properties of null (reading 'r')
    

    ausgegeben wird.
    Ich habe leider nicht viel Ahnung von JS.

    Vielleicht köe mir jemand bei diesem Problem helfen.
    Gerne auch über Blockly.

    Danke

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • falke69F falke69

      Hallo zusammen,

      ich möchte gerne den Farbwert, den ich in HEX erhalte gerne in RGB umwandeln um so meine LED über eine Vernbedienung steuern zu können.

      function hexToRgb(hex) {
      
        var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
      
        return result ? {
      
          r: parseInt(result[1], 16),
      
          g: parseInt(result[2], 16),
      
          b: parseInt(result[3], 16)
      
        } : null;
      
      }
      
      
      on({id: "0_userdata.0.Test.led.farbe", change: "ne"}, function (obj) {
      
         setState("0_userdata.0.Test.led.farbe1",
      
         hexToRgb(getState("0_userdata.0.Test.led.farbe").val).r + ',' +
      
         hexToRgb(getState("0_userdata.0.Test.led.farbe").val).g + ',' +
      
         hexToRgb(getState("0_userdata.0.Test.led.farbe").val).b);
      
      });
      
      

      Im JS-Adapter habe ich schon "hex-rgb" hinzugefügt.
      Das Script reagiert zumindest schonmal auf den zu ändernden Datenpunkt "0_userdata.0.Test.led.farbe" in den der Hexwert ankommen soll.

      Problem ist, dass mit im Log immer dieser Fehler:

      Error in callback: TypeError: Cannot read properties of null (reading 'r')
      

      ausgegeben wird.
      Ich habe leider nicht viel Ahnung von JS.

      Vielleicht köe mir jemand bei diesem Problem helfen.
      Gerne auch über Blockly.

      Danke

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @falke69
      Versuch's mal so:

      on({id: "0_userdata.0.Test.led.farbe", change: "ne"}, function (obj) {
        var rgb = hexToRgb(obj.state.val);
        setState("0_userdata.0.Test.led.farbe1", rgb.r + ',' + rgb.g + ',' + rgb.b);
      });
      

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      falke69F 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @falke69
        Versuch's mal so:

        on({id: "0_userdata.0.Test.led.farbe", change: "ne"}, function (obj) {
          var rgb = hexToRgb(obj.state.val);
          setState("0_userdata.0.Test.led.farbe1", rgb.r + ',' + rgb.g + ',' + rgb.b);
        });
        
        falke69F Offline
        falke69F Offline
        falke69
        schrieb am zuletzt editiert von
        #3

        @codierknecht

        Vielen Dank.

        leider bekomme ich immer noch den selben Fehler. :-(

        OliverIOO 1 Antwort Letzte Antwort
        0
        • falke69F falke69

          @codierknecht

          Vielen Dank.

          leider bekomme ich immer noch den selben Fehler. :-(

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #4

          @falke69
          dann stimmt am ausgangswert etwas nicht.
          wenn ich es grob überschaue, geht das regex vom folgenden format aus

          #010203

          das erstes zeichen darf eine raute sein, ansonsten muss es direkt mit dem ersten farbwert losgehen. hinten darf keinerlei extra zeichen mehr sein, auch kein leerzeichen
          wenn du was anderes hast, musst du mal ein beispiel benennen.
          denke daran, wenn hinten noch ein leerzeichen dran ist, siehst du es nicht direkt

          du könntest auch die eine zeile mal gegen folgende version tauschen

           var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/i.exec(hex);
          

          die ist hinten nicht so empfindlich was da steht

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          falke69F 1 Antwort Letzte Antwort
          0
          • OliverIOO OliverIO

            @falke69
            dann stimmt am ausgangswert etwas nicht.
            wenn ich es grob überschaue, geht das regex vom folgenden format aus

            #010203

            das erstes zeichen darf eine raute sein, ansonsten muss es direkt mit dem ersten farbwert losgehen. hinten darf keinerlei extra zeichen mehr sein, auch kein leerzeichen
            wenn du was anderes hast, musst du mal ein beispiel benennen.
            denke daran, wenn hinten noch ein leerzeichen dran ist, siehst du es nicht direkt

            du könntest auch die eine zeile mal gegen folgende version tauschen

             var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/i.exec(hex);
            

            die ist hinten nicht so empfindlich was da steht

            falke69F Offline
            falke69F Offline
            falke69
            schrieb am zuletzt editiert von
            #5

            @oliverio, @Codierknecht

            vielen Dank für Eure Unterstützung.:+1:

            Ich glaube , dass ich den Fehler gefunden habe.

            Der Befehl der Fernbedienung kam als "0x40BFB04F" an. Ich bin davon ausgegangen, dass dies der Farbwert ist. Aus diesem Grund hatte das ganze nicht funktiniert.

            Wenn ich z.B. "#FF39A6313E" eingebe funktioniert das ganze.

            Ich war davon ausgegangen, dass mir bei dem IR-Signal der Farbwert der entsprechenden Taste von der Fernbediehnung angezeigt wird. :cry:

            OliverIOO 1 Antwort Letzte Antwort
            0
            • falke69F falke69

              @oliverio, @Codierknecht

              vielen Dank für Eure Unterstützung.:+1:

              Ich glaube , dass ich den Fehler gefunden habe.

              Der Befehl der Fernbedienung kam als "0x40BFB04F" an. Ich bin davon ausgegangen, dass dies der Farbwert ist. Aus diesem Grund hatte das ganze nicht funktiniert.

              Wenn ich z.B. "#FF39A6313E" eingebe funktioniert das ganze.

              Ich war davon ausgegangen, dass mir bei dem IR-Signal der Farbwert der entsprechenden Taste von der Fernbediehnung angezeigt wird. :cry:

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              schrieb am zuletzt editiert von OliverIO
              #6

              @falke69
              äh, ne
              ich gehe davon aus jede taste hat einen code
              mit farbe hat das höchstwahrscheinlich nix zu tun
              es ist eine zahl in headezimaler darstellung, also in deiem beispiel 5 bytes
              farben im web haben 3 Zahlen (Rot, Grün, Blau), anderweitig noch einen 4 Wert für einen Alphakanal (Transparenz)
              bei den tasten die dich interessieren musst du beim ausprobieren den code aufschreiben und dann kannst du darauf reagieren und aktionen ausführen.

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              falke69F 1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @falke69
                äh, ne
                ich gehe davon aus jede taste hat einen code
                mit farbe hat das höchstwahrscheinlich nix zu tun
                es ist eine zahl in headezimaler darstellung, also in deiem beispiel 5 bytes
                farben im web haben 3 Zahlen (Rot, Grün, Blau), anderweitig noch einen 4 Wert für einen Alphakanal (Transparenz)
                bei den tasten die dich interessieren musst du beim ausprobieren den code aufschreiben und dann kannst du darauf reagieren und aktionen ausführen.

                falke69F Offline
                falke69F Offline
                falke69
                schrieb am zuletzt editiert von
                #7

                @oliverio

                ok. Werde ich machen. :-)

                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

                769

                Online

                32.6k

                Benutzer

                82.2k

                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