From 6df8fc44c6ca6a844375f4f2a37e98d4dc8c481e Mon Sep 17 00:00:00 2001 From: klaus-schauer Date: Thu, 20 Mar 2014 19:17:13 +0000 Subject: [PATCH] 10_EnOcean: # subType autoMeterReading.01 corrected # internals added # commandref: further explanations added git-svn-id: https://svn.fhem.de/fhem/trunk@5264 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_EnOcean.pm | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/10_EnOcean.pm b/fhem/FHEM/10_EnOcean.pm index 79dc124b1..946d8f5c1 100755 --- a/fhem/FHEM/10_EnOcean.pm +++ b/fhem/FHEM/10_EnOcean.pm @@ -1,5 +1,6 @@ ############################################## # $Id$ + package main; use strict; @@ -400,7 +401,7 @@ EnOcean_Set($@) return "no set value specified" if (@a < 2); my $name = $hash->{NAME}; if (IsDisabled($name)) { - Log3 $name, 4, "EnOcean set $name commands disabled."; + Log3 $name, 4, "EnOcean $name set commands disabled."; return; } my $data; @@ -3304,13 +3305,14 @@ EnOcean_Parse($$) if ($db[0] == 0x8F && $manufID eq "00D") { # Eltako, read meter serial number my $serialNumber; - if ($db[0] == 0) { + if ($db[1] == 0) { # first 2 digits of the serial number - $serialNumber = printf "S-%01x%01x", $db[3] >> 4, $db[3] & 0x0F; + $serialNumber = substr(ReadingsVal($name, "serialNumber", "S-------"), 4, 4); + $serialNumber = sprintf "S-%01x%01x%4s", $db[3] >> 4, $db[3] & 0x0F, $serialNumber; } else { # last 4 digits of the serial number $serialNumber = substr(ReadingsVal($name, "serialNumber", "S---"), 0, 4); - $serialNumber = printf "%4c%01x%01x%01x%01x", $serialNumber, + $serialNumber = sprintf "%4s%01x%01x%01x%01x", $serialNumber, $db[2] >> 4, $db[2] & 0x0F, $db[3] >> 4, $db[3] & 0x0F; } push @event, "3:serialNumber:$serialNumber"; @@ -4166,6 +4168,26 @@ EnOcean_Undef($$) additional SenderIDs you can use the attributes subDef, subDef0 and subDefI.

+ + + Internals + Set