Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Hex zu RGB

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Hex zu RGB

    This topic has been deleted. Only users with topic management privileges can see it.
    • falke69
      falke69 last edited by 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

      Codierknecht 1 Reply Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @falke69 last edited by

        @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);
        });
        
        falke69 1 Reply Last reply Reply Quote 0
        • falke69
          falke69 @Codierknecht last edited by

          @codierknecht

          Vielen Dank.

          leider bekomme ich immer noch den selben Fehler. 😞

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @falke69 last edited by

            @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

            falke69 1 Reply Last reply Reply Quote 0
            • falke69
              falke69 @OliverIO last edited by

              @oliverio, @Codierknecht

              vielen Dank für Eure Unterstützung.👍

              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. 😢

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @falke69 last edited by 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.

                falke69 1 Reply Last reply Reply Quote 0
                • falke69
                  falke69 @OliverIO last edited by

                  @oliverio

                  ok. Werde ich machen. 🙂

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  845
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  blockly javascript
                  3
                  7
                  228
                  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