[gelöst] Dezimalzahl aus hex-Wert ableiten in Userreadings

Begonnen von dirk.k, 01 September 2017, 21:57:56

Vorheriges Thema - Nächstes Thema

dirk.k

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?

JensS

#1
{ 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
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

dirk.k

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))},
...

JensS

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
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.