diff --git a/fhem/FHEM/34_SWAP.pm b/fhem/FHEM/34_SWAP.pm index 4241749ce..832946763 100755 --- a/fhem/FHEM/34_SWAP.pm +++ b/fhem/FHEM/34_SWAP.pm @@ -363,6 +363,16 @@ SWAP_Set($@) return "\"set $name $cmd\" needs one argument" if( $cnt < 2 && ( $cmd eq 'regGet' ) ); return "\"set $name $cmd\" needs two arguments" if( $cnt < 3 && ( $cmd eq 'regSet' ) ); + if( ($cmd eq "regSet" || $cmd eq "regGet") && $arg !~ m/^[\da-f]{2}(\.([\da-f]+))?$/i ) { + foreach my $reg ( sort { $a <=> $b } keys ( %default_registers ) ) { + my $register = $default_registers{$reg}; + if( $register->{name} =~ m/^$arg$/i ) { + $arg = sprintf("%02X", $reg); + last; + } + } + } + if( $cmd eq "regSet" ) { $arg =~ m/^([\da-f]{2})(\.([\da-f]+))?$/i; return "$arg is not a valid register name for $cmd" if( !defined($1) ); @@ -993,11 +1003,13 @@ SWAP_Attr(@) Set