Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. HEX in RGB Umwandeln?

    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

    HEX in RGB Umwandeln?

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

      Hallo, ich habe hyperion ng Installiert und alles klappt auch soweit. Ich möchte die farebn auch über alexa steuern können nur leider kann sie nur hex werte schreiben. Kann man die hex Werte irgendwie in RGB werte umwandeln?

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @denjo last edited by mickym

        @denjo
        Hier gibts doch mehrere Lösungen (unter Zweitens) - einmal als String oder als Integer mit Bitshift.

        D 2 Replies Last reply Reply Quote 0
        • D
          denjo @mickym last edited by

          @mickym könntest du mir das genauer erklären, verstehe das nicht so ganz?

          1 Reply Last reply Reply Quote 0
          • D
            denjo @mickym last edited by

            @mickym also ich bräuchte zb wenn der wert #00868B kommt das er in
            0,134,139 umgewandelt wird. ein script oder sonst was.

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @denjo last edited by

              @denjo sagte in HEX in RGB Umwandeln?:

              #00868B

              Nun genau das macht doch die Funktion - ich habs gerade in Node-Red nachgebildet:

              Du übergibst der Funktion, die in dem Thread stand Deinen HexString:

              function hex_to_RGB(hex) {
                  var m = hex.match(/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);
                  return {
                      r: parseInt(m[1], 16),
                      g: parseInt(m[2], 16),
                      b: parseInt(m[3], 16)
                  };
              }
              

              Zurück bekommst Du ein Objekt mit den RGB werten:

              ae83620f-4117-4d80-bc57-a8c6d5f73d0c-image.png

              6b1cf0f4-73c3-4993-b5af-736cda3f12f9-image.png

              Als einfach diese Funktion als Javascript abspeichern und dem deinen String übergeben und Du bekommst das Objekt mit den Werten zurück.

              D 2 Replies Last reply Reply Quote 0
              • D
                denjo @mickym last edited by

                @mickym okay ich versuchs mal

                1 Reply Last reply Reply Quote 0
                • D
                  denjo @mickym last edited by

                  @mickym Screenshot 2021-03-14 004025.jpg

                  so soll ich das machen oder wie?

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @denjo last edited by mickym

                    @denjo DU hast node-Red drauf -sehe ich gerade - da könnte ich Dir nun ganz easy helfen.

                    Im Prinzip macht die Funktion die Umrechnung. Wo kommt denn Dein String raus - in einem Datenpunkt oder wie greifst Du den von Alexa ab?

                    Dann musst Dir halt über legen was Du machen willst? Du bekommst von Alexa den String - dann rufst Du die Funktion auf und dann musst Du ja was weiter machen. Arbeitest Du sonst mit Blockly? Da kann man doch auch Funktionen definieren.

                    Sonst macht das in Node Red und ich mach Dir den Flow fertig. 😉

                    Ansonsten habe ich gerade gesehen - dass es auch im Blockly so einen Block gibt

                    adebf8dd-4f18-4afb-b0cc-06d30800bbdc-image.png

                    Wenn man auf die ... klickt kann man auch die Funktion definieren:

                    2d1f4f4b-8a79-4279-9eed-3a4d65ed9f76-image.png

                    aber wie man diesem Block den String übergibt oder sich das Ergebnis abholt weiß ich nicht - ich bin einfach kein Blockly Fan. 😉

                    D 2 Replies Last reply Reply Quote 0
                    • D
                      denjo @mickym last edited by

                      @mickym also ich erstelle mir natürlich noch ein objekt was alexa dann füttert mit zb
                      #00868B und wenn das objekt aktualisiert wird soll der wert halt umgewandelt werden in 0,134,139 und in das richtige objekt geschrieben werden. ja ich habe mir gerade node.red rauf gemacht und arbeite sonst nur mit blockly

                      mickym 1 Reply Last reply Reply Quote 0
                      • D
                        denjo @mickym last edited by

                        @mickym aber bin auch kein blockly profi 😄

                        1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @denjo last edited by mickym

                          @denjo sagte in HEX in RGB Umwandeln?:

                          @mickym also ich erstelle mir natürlich noch ein objekt was alexa dann füttert mit zb
                          #00868B und wenn das objekt aktualisiert wird soll der wert halt umgewandelt werden in 0,134,139 und in das richtige objekt geschrieben werden. ja ich habe mir gerade node.red rauf gemacht und arbeite sonst nur mit blockly

                          Na entweder hilft Dir als Blockly Kundiger mein Tipp, dass muss man dann halt in so einen Trigger Block irgendwie einbinden

                          152592d4-7061-4fe7-9eb1-77baa665e96a-image.png

                          Na ich geb auf was Blockly betrifft.

                          Ansonsten können wir wenn Deine Datenpunkte klar sind das halt in NodeRed zuammen machen.

                          Sag mir in welchem Datenpunkt Du den String von Alexa schreiben willst und wo das Objekt oder der JSON String mit den RGB Werten hin soll?

                          Dann mache ich den Flow fertig und Du kannst das dann schon testen - brauchst den Flow dann nur mit Copy & Paste importieren!
                          Ich kann ja mal 2 Datenpunkte erstellen und Du importierst einfach den Flow.

                          D 1 Reply Last reply Reply Quote 0
                          • D
                            denjo @mickym last edited by

                            @mickym ich mach eben ein datenpunkt

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @denjo last edited by

                              @denjo OK und noch einen 2. für die Ausgabe 😉

                              D 1 Reply Last reply Reply Quote 0
                              • D
                                denjo @mickym last edited by

                                @mickym eingabe ist: javascript.0.hyperionng
                                und ausgabe ist: hyperion_ng.0.general.control.setColorRGB

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @denjo last edited by mickym

                                  @denjo sagte in HEX in RGB Umwandeln?:

                                  hyperion_ng.0.general.control.setColorRGB

                                  So das ist es dann:

                                  6b6c2810-1d34-4719-bad3-f781d0bc82bb-image.png

                                  [
                                      {
                                          "id": "c9bd97db.0bd1c8",
                                          "type": "function",
                                          "z": "6e170384.60c96c",
                                          "name": "HEX zu RGB",
                                          "func": "msg.payload=hex_to_RGB(msg.payload)\n\n\nreturn msg;\n\nfunction hex_to_RGB(hex) {\n    var m = hex.match(/^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/i);\n    return {\n        r: parseInt(m[1], 16),\n        g: parseInt(m[2], 16),\n        b: parseInt(m[3], 16)\n    };\n}",
                                          "outputs": 1,
                                          "noerr": 0,
                                          "initialize": "",
                                          "finalize": "",
                                          "x": 1410,
                                          "y": 3180,
                                          "wires": [
                                              [
                                                  "62344cad.180284"
                                              ]
                                          ]
                                      },
                                      {
                                          "id": "28743d11.362b72",
                                          "type": "ioBroker in",
                                          "z": "6e170384.60c96c",
                                          "name": "",
                                          "topic": "javascript.0.hyperionng",
                                          "payloadType": "value",
                                          "onlyack": "",
                                          "func": "all",
                                          "gap": "",
                                          "fireOnStart": "false",
                                          "x": 1140,
                                          "y": 3180,
                                          "wires": [
                                              [
                                                  "c9bd97db.0bd1c8"
                                              ]
                                          ]
                                      },
                                      {
                                          "id": "32bd27af.6eff68",
                                          "type": "ioBroker out",
                                          "z": "6e170384.60c96c",
                                          "name": "",
                                          "topic": "hyperion_ng.0.general.control.setColorRGB",
                                          "ack": "false",
                                          "autoCreate": "false",
                                          "stateName": "",
                                          "role": "",
                                          "payloadType": "",
                                          "readonly": "",
                                          "stateUnit": "",
                                          "stateMin": "",
                                          "stateMax": "",
                                          "x": 1870,
                                          "y": 3180,
                                          "wires": []
                                      },
                                      {
                                          "id": "62344cad.180284",
                                          "type": "json",
                                          "z": "6e170384.60c96c",
                                          "name": "",
                                          "property": "payload",
                                          "action": "",
                                          "pretty": false,
                                          "x": 1590,
                                          "y": 3180,
                                          "wires": [
                                              [
                                                  "32bd27af.6eff68"
                                              ]
                                          ]
                                      }
                                  ]
                                  

                                  Zum Importieren:

                                  1. Den Code hier in die Zwischenablage kopieren.
                                  2. In Node Red - das Menü mit den 3 Strichen rechts oben öffne und auf Import klicken.
                                  3. Inhalt der Zwischenablage in das rosa Fenster
                                  4. Auf Import klicken und den Flow plazieren.
                                  5. dann auf den roten Deploy Button klicken und das wars.

                                  Test einfach - in dem Du dann in javascript.0.hyperionng den hex-String einträgst und schaust was dann in dem Ausgabepunkt ankommt.

                                  Habs gerade mit eigenen Datenpunkten getestet. Das schaut in meinen Augen gut aus. 😉

                                  b4352ac2-036c-4610-b005-f7a0cfa14922-image.png

                                  D B 3 Replies Last reply Reply Quote 0
                                  • D
                                    denjo @mickym last edited by

                                    @mickym ja wird bestimmt laufen ich muss nur den eingabe datenpunkt anpassen eben

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      denjo @mickym last edited by

                                      @mickym nee er schreibt das falsch

                                      {"r":0,"g":0,"b":255} und soll eigentlich 0,0,255

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @denjo last edited by mickym

                                        @denjo

                                        so hier function Node geändert:

                                        [
                                            {
                                                "id": "c9bd97db.0bd1c8",
                                                "type": "function",
                                                "z": "6e170384.60c96c",
                                                "name": "HEX zu RGB",
                                                "func": "msg.payload=hex_to_RGB(msg.payload)\n\n\nreturn msg;\n\nfunction hex_to_RGB(hex) {\n    var m = hex.match(/^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/i);\n    return (parseInt(m[1], 16)).toString() + ',' + (parseInt(m[2], 16)).toString() + ',' + (parseInt(m[3], 16)).toString(); \n}",
                                                "outputs": 1,
                                                "noerr": 0,
                                                "initialize": "",
                                                "finalize": "",
                                                "x": 1290,
                                                "y": 3180,
                                                "wires": [
                                                    [
                                                        "32bd27af.6eff68"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "28743d11.362b72",
                                                "type": "ioBroker in",
                                                "z": "6e170384.60c96c",
                                                "name": "",
                                                "topic": " javascript.0.hyperionng",
                                                "payloadType": "value",
                                                "onlyack": "",
                                                "func": "all",
                                                "gap": "",
                                                "fireOnStart": "false",
                                                "x": 1080,
                                                "y": 3180,
                                                "wires": [
                                                    [
                                                        "c9bd97db.0bd1c8"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "32bd27af.6eff68",
                                                "type": "ioBroker out",
                                                "z": "6e170384.60c96c",
                                                "name": "",
                                                "topic": "hyperion_ng.0.general.control.setColorRGB",
                                                "ack": "false",
                                                "autoCreate": "false",
                                                "stateName": "",
                                                "role": "",
                                                "payloadType": "",
                                                "readonly": "",
                                                "stateUnit": "",
                                                "stateMin": "",
                                                "stateMax": "",
                                                "x": 1570,
                                                "y": 3180,
                                                "wires": []
                                            }
                                        ]
                                        

                                        Jetzt schaut der Flow nur noch so aus

                                        cd9dd48f-7bd4-44f9-abd8-a5bfc2d9239f-image.png

                                        Die Funktion ist auch geschrumpft - falls Du die doch noch in Blockly verwenden willst:

                                        function hex_to_RGB(hex) {
                                            var m = hex.match(/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);
                                            return (parseInt(m[1], 16)).toString() + ',' + (parseInt(m[2], 16)).toString() + ',' + (parseInt(m[3], 16)).toString(); 
                                        }
                                        

                                        274ff6a3-ae7e-4771-be3a-8b350d4024a8-image.png

                                        und das nächste Mal wäre es natürlich hilfreich, wenn man exakt weiß was rauskommen soll. 😉

                                        D 1 Reply Last reply Reply Quote 0
                                        • D
                                          denjo @mickym last edited by

                                          @mickym sorry aber jetzt macht ändert er das ausgabe objekt nicht

                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @denjo last edited by mickym

                                            @denjo Dann stimmt sehr wahrscheinlich an der Eingabe was nicht.

                                            das muss genau 6 Zeichen sein - entweder mit oder ohne #.

                                            Wenn nichts rauskommt - musst mal im Log schauen, ob so was drin steht:

                                            node-red.0	2021-03-14 01:55:14.221	error	(2144) 14 Mar 01:55:14 - [error] [function:HEX zu RGB] TypeError: Cannot read property '1' of null
                                            node-red.0	2021-03-14 01:53:23.582	error	(2144) 14 Mar 01:53:23 - [error] [function:HEX zu RGB] TypeError: Cannot read property '1' of null
                                            

                                            Falls man die Eingaben nicht genau so sind, dann wird das viel aufwändiger.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            864
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            88
                                            4921
                                            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