Hallo,
ich habe einen RGB-Wert in der Form AABBCC und benötige 3 einzelne Dezimalwerte
dez1 = AA
dez2 = BB
dez3 = CC
Beispiel:
RGB=AA0BFF
RGB1=170
RGB2=11
RGB3=255
Das ganze soll mittels userreadings passieren, da ESP Easy per MQTT nur Dezimalzahlen erlaubt.
Kann mir da jemand helfen?
{ my $RGB="AA0BFF";; my $RGB1=hex(substr($RGB,0,2));;my $RGB2=hex(substr($RGB,2,2));;my $RGB3=hex(substr($RGB,4,2)) }
Dazu gibt es diverse Perl-Anleitungen.
Gruß Jens
Danke,
mit den Hinweisen habe ich es hinbekommen.
Mit den perl-Hinweisen bin ich nicht weitergekommen. Ich habe anfangs immer "mid" zum Splitten versucht, substr habe ich dort nicht gefunden. Auch das Setzen der Klammern bereitet mir als Anfänger einige Probleme.
Hier meine variante der userreadings:
RGBr {hex(substr(ReadingsVal("WeMos_S3","RGB",0),1,2))},
RGBg {hex(substr(ReadingsVal("WeMos_S3","RGB",0),3,2))},
RGBb {hex(substr(ReadingsVal("WeMos_S3","RGB",0),5,2))},
...
Wenn dein Wemos-Wert sechs Zeichen umfasst, ist die richtige substr-Zählung 0,2 - 2,2 - 4,2.
Die Klammersetzung ist gar nicht so schwer. Alles (außer eine Wurst) hat ein Anfang und ein Ende. Wenn du irgendwo eine Anfangsklammer setzt, musst du nur die dazugehörige Endklammer setzen.
Gruß Jens