From 503f7fff96758069f20d3664ff73edbe532857ff Mon Sep 17 00:00:00 2001 From: justme-1968 Date: Thu, 1 Aug 2013 19:13:55 +0000 Subject: [PATCH] show single bit endpoints in readings git-svn-id: https://svn.fhem.de/fhem/trunk@3573 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/34_SWAP.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fhem/FHEM/34_SWAP.pm b/fhem/FHEM/34_SWAP.pm index 893b04b4d..e3f746dde 100755 --- a/fhem/FHEM/34_SWAP.pm +++ b/fhem/FHEM/34_SWAP.pm @@ -688,8 +688,16 @@ SWAP_updateReadings($$$) readingsBeginUpdate($hash); foreach my $endpoint (@{$hash->{product}->{registers}->{$reg}->{endpoints}}) { my $position = 0; - $position = $endpoint->{position} * 2 if( defined($endpoint->{position}) ); - my $value = substr($data, $position, $endpoint->{size}*2); + my $value = ""; + $position = $endpoint->{position} if( defined($endpoint->{position}) ); + if( $position =~ m/^(\d+)\.(\d+)$/ ) { + my $byte = hex( substr( $data, length($data) - 2 - $1*2, 2 ) ); + my $mask = 0x01 << $2; + $value = "0"; + $value = "1" if( $byte & $mask ); + } else { + $value = substr($data, $position*2, $endpoint->{size}*2); + } readingsBulkUpdate($hash, SWAP_regName($rid,$i,$endpoint), $value); ++$i; }