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
-
@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
-
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. -
ok. Werde ich machen.