NEWS
[gelöst] Hex zu RGB
-
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
-
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
@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
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
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 direktdu 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
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 direktdu 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
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.

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

@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
ä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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden