[gelöst] readingsgroup: Anzeige der MAC-Adresse mit ":"

Begonnen von gestein, 08 Januar 2021, 10:05:42

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich würde gerne in einer readingsGroup die MAC-Adressen mit einem ":" als Trennzeichen anzeigen lassen.
In den Readings stehen die Adressen so "8CAAB5058CB0".

Also dachte ich mir, ich nehme das Attribut "valueFormat" und frage dort einfach die Spalte "mac" ab:
if ($READING eq "mac") { my $mac=~ s/([[:xdigit:]]{2})\B/$VALUE:/g; return $mac;}

Den Code für das regex habe ich von da: https://www.perlmonks.org/?node_id=947917
Das scheint richtig zu sein, da es auf https://regex101.com/ funktioniert.

Leider klappt das aber bei mir nicht, in der readingsGroup wird dann ein Leerstring angezeigt.

Weiß jemand, wie man das richtig machen kann bzw. warum die obige regex nicht funktioniert?

Danke im Voraus
lg, Gerhard

Otto123

Hallo gerhard,

Mal in der Kommandozeile getestet:
{my $mac="8CAAB5058CB0";; $mac=~ s/([[:xdigit:]]{2})\B/$1:/g;; return $mac}

noch nicht ganz Dein Code - aber ein Ansatz?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

gestein

Hallo Otto,

Wenn ich das in der Befehlszeile eingebe, dann kommt das richtige Ergebnis.
Scheint also zu stimmen.
Nur in der readingsGroup mag es noch nicht klappen.

lg, Gerhard

gestein

Hallo,

mit dem obigen Ansatz habe ich es einfach nicht geschafft.
Auch nicht, als ich das in eine Sub in 99_myUtils.pm ausgelagert habe.

Aber damit klappt es, falls es mal jemand brauchen kann:
return join(":", unpack "(A2)*", $VALUE) if ($READING eq "mac");
Das ist auch aus dem genannten Thread.

lg, Gerhard