From a80c474e0d08daf1551a5f2653df96585090be0d Mon Sep 17 00:00:00 2001
From: klaus-schauer <>
Date: Thu, 27 Feb 2014 14:14:07 +0000
Subject: [PATCH] 10_EnOcean - readings dimValue changed to dim - new
Manufacturer IDs added
git-svn-id: https://svn.fhem.de/fhem/trunk@5064 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/10_EnOcean.pm | 102 ++++++++++++++++++++++++++--------------
1 file changed, 66 insertions(+), 36 deletions(-)
diff --git a/fhem/FHEM/10_EnOcean.pm b/fhem/FHEM/10_EnOcean.pm
index 5996ac19b..332aaea42 100755
--- a/fhem/FHEM/10_EnOcean.pm
+++ b/fhem/FHEM/10_EnOcean.pm
@@ -43,6 +43,7 @@ my %EnO_gwCmd = (
# Some Manufacturers (e.g. Jaeger Direkt) also sell EnOcean products without an entry in the table below.
my %EnO_manuf = (
+ "000" => "Reserved",
"001" => "Peha",
"002" => "Thermokon",
"003" => "Servodan",
@@ -68,10 +69,40 @@ my %EnO_manuf = (
"017" => "S+S Regeltechnik GmbH",
"018" => "Masco Corporation",
"019" => "Intesis Software SL",
- "01A" => "Res.",
+ "01A" => "Viessmann",
"01B" => "Lutuo Technology",
- "01C" => "CAN2GO",
+ "01C" => "Schneider Electric",
+ "01D" => "Sauter",
+ "01E" => "Boot-Up",
+ "01F" => "Osram Sylvania",
+ "020" => "Unotech",
+ "021" => "Delta Controls Inc",
+ "022" => "Unitronic AG",
+ "023" => "NanoSense",
+ "024" => "The S4 Group",
+ "025" => "MSR Solutions",
+ "026" => "GE",
+ "027" => "Maico",
+ "028" => "Ruskin Company",
+ "029" => "Magnum Engery Solutions",
+ "02A" => "KM Controls",
+ "02B" => "Ecologix Controls",
+ "02C" => "Trio 2 Sys",
+ "02D" => "Afriso-Euro-Index",
+ "030" => "NEC AccessTechnica Ltd",
+ "031" => "ITEC Corporation",
+ "032" => "Simix Co Ltd",
+ "034" => "Eurotronic Technology GmbH",
+ "035" => "Art Japan Co Ltd",
+ "036" => "Tiansu Automation Control System Co Ltd",
+ "038" => "Gruppo Giordano Idea Spa",
"039" => "alphaEOS AG",
+ "03A" => "Tag Technologies",
+ "03C" => "Cloud Buildings Ltd",
+ "03E" => "GIGA Concept",
+ "03F" => "Sensortec",
+ "040" => "Jaeger Direkt",
+ "041" => "Air System Components Inc",
"7FF" => "Multi user Manufacturer ID",
);
@@ -1473,17 +1504,17 @@ EnOcean_Set($@)
$channel = shift(@a);
if (!defined $channel || $channel eq "all") {
CommandDeleteReading(undef, "$name channel.*");
- CommandDeleteReading(undef, "$name dimValue.*");
+ CommandDeleteReading(undef, "$name dim.*");
readingsSingleUpdate($hash, "channelAll", "on", 1);
- readingsSingleUpdate($hash, "dimValueAll", $outputVal, 1);
+ readingsSingleUpdate($hash, "dim", $outputVal, 1);
$channel = 30;
} elsif ($channel eq "input") {
readingsSingleUpdate($hash, "channelInput", "on", 1);
- readingsSingleUpdate($hash, "dimValueInput", $outputVal, 1);
+ readingsSingleUpdate($hash, "dimInput", $outputVal, 1);
$channel = 31;
} elsif ($channel >= 0 && $channel <= 29) {
readingsSingleUpdate($hash, "channel" . $channel, "on", 1);
- readingsSingleUpdate($hash, "dimValue" . $channel, $outputVal, 1);
+ readingsSingleUpdate($hash, "dim" . $channel, $outputVal, 1);
} else {
return "$cmd $channel wrong, choose 0...39|all|input.";
}
@@ -1497,17 +1528,17 @@ EnOcean_Set($@)
$channel = shift(@a);
if (!defined $channel || $channel eq "all") {
CommandDeleteReading(undef, "$name channel.*");
- CommandDeleteReading(undef, "$name dimValue.*");
+ CommandDeleteReading(undef, "$name dim.*");
readingsSingleUpdate($hash, "channelAll", "off", 1);
- readingsSingleUpdate($hash, "dimValueAll", $outputVal, 1);
+ readingsSingleUpdate($hash, "dim", $outputVal, 1);
$channel = 30;
} elsif ($channel eq "input") {
readingsSingleUpdate($hash, "channelInput", "off", 1);
- readingsSingleUpdate($hash, "dimValueInput", $outputVal, 1);
+ readingsSingleUpdate($hash, "dimInput", $outputVal, 1);
$channel = 31;
} elsif ($channel >= 0 && $channel <= 29) {
readingsSingleUpdate($hash, "channel" . $channel, "off", 1);
- readingsSingleUpdate($hash, "dimValue" . $channel, $outputVal, 1);
+ readingsSingleUpdate($hash, "dim" . $channel, $outputVal, 1);
} else {
return "$cmd $channel wrong, choose 0...39|all|input.";
}
@@ -1524,24 +1555,24 @@ EnOcean_Set($@)
$channel = shift(@a);
if (!defined $channel) {
CommandDeleteReading(undef, "$name channel.*");
- CommandDeleteReading(undef, "$name dimValue.*");
+ CommandDeleteReading(undef, "$name dim.*");
if ($outputVal == 0) {
readingsSingleUpdate($hash, "channelAll", "off", 1);
} else {
readingsSingleUpdate($hash, "channelAll", "on", 1);
}
- readingsSingleUpdate($hash, "dimValueAll", $outputVal, 1);
+ readingsSingleUpdate($hash, "dim", $outputVal, 1);
$channel = 30;
} else {
if ($channel eq "all") {
CommandDeleteReading(undef, "$name channel.*");
- CommandDeleteReading(undef, "$name dimValue.*");
+ CommandDeleteReading(undef, "$name dim.*");
if ($outputVal == 0) {
readingsSingleUpdate($hash, "channelAll", "off", 1);
} else {
readingsSingleUpdate($hash, "channelAll", "on", 1);
}
- readingsSingleUpdate($hash, "dimValueAll", $outputVal, 1);
+ readingsSingleUpdate($hash, "dim", $outputVal, 1);
$channel = 30;
} elsif ($channel eq "input") {
if ($outputVal == 0) {
@@ -1549,7 +1580,7 @@ EnOcean_Set($@)
} else {
readingsSingleUpdate($hash, "channelInput", "on", 1);
}
- readingsSingleUpdate($hash, "dimValueInput", $outputVal, 1);
+ readingsSingleUpdate($hash, "dimInput", $outputVal, 1);
$channel = 31;
} elsif ($channel >= 0 && $channel <= 29) {
if ($outputVal == 0) {
@@ -1557,7 +1588,7 @@ EnOcean_Set($@)
} else {
readingsSingleUpdate($hash, "channel" . $channel, "on", 1);
}
- readingsSingleUpdate($hash, "dimValue" . $channel, $outputVal, 1);
+ readingsSingleUpdate($hash, "dim" . $channel, $outputVal, 1);
} else {
return "Usage: $cmd $channel wrong, choose 0...39|all|input.";
}
@@ -2281,7 +2312,7 @@ EnOcean_Parse($$)
# bidirectional Teach-In for EEP A5-20-01 (MD15)
$attr{$name}{comMode} = "biDir";
$attr{$name}{destinationID} = "unicast";
- # SenderID = BaseID
+ # SenderID = ChipID
$attr{$name}{subDef} = "00000000";
# next commands will be sent with a delay, max 10 s
select(undef, undef, undef, 0.1);
@@ -3051,7 +3082,7 @@ EnOcean_Parse($$)
# $db[0]_bit_0 is the Power Relay state where 0 = off, 1 = on
push @event, "3:brightness:" . ($db[3] << 1);
push @event, "3:illum:$db[2]";
- push @event, "3:dimValue:$db[1]";
+ push @event, "3:dim:$db[1]";
push @event, "3:powerRelayTimer:" . ($db[0] & 0x80 ? "enabled" : "disabled");
push @event, "3:repeater:" . ($db[0] & 0x40 ? "enabled" : "disabled");
push @event, "3:daylightHarvesting:" . ($db[0] & 0x20 ? "enabled" : "disabled");
@@ -3188,7 +3219,7 @@ EnOcean_Parse($$)
my $mode = ($db[0] & 6) >> 1;
if ($mode == 0) {
# dimmer value and lamp operating hours
- push @event, "3:dimValue:$db[3]";
+ push @event, "3:dim:$db[3]";
if ($db[0] & 40) {
push @event, "3:lampOpHours:" . ($db[2] << 8 | $db[1]);
} else {
@@ -3650,7 +3681,7 @@ EnOcean_Parse($$)
push @event, "3:channel" . $channel . ":on";
push @event, "3:state:on";
}
- push @event, "3:dimValue" . $channel . ":" . $dimValue;
+ push @event, "3:dim" . $channel . ":" . $dimValue;
} elsif ($cmd == 7) {
# actuator measurement response
@@ -4105,16 +4136,16 @@ EnOcean_Undef($$)
IO device, see TCM BaseID, LastID. For this first query the
TCM with the get <tcm> baseID
command
for the BaseID. You can use up to 127 IDs starting with the BaseID + 1 shown there.
- The BaseID is used for A5 devices with a bidectional teach-in only. If you
+ The BaseID is used for 4BS devices with a bidectional teach-in only. If you
are using an Fhem SenderID outside of the allowed range, you will see an
- ERR_ID_RANGE message in the Fhem log.
- In order to control bidirectional RPS devices (switches, actors) with
- additional SenderIDs you can use the attributes subDef,
- subDef0 and subDefI.
- Fhem communicates unicast with the BaseID, if the 4BS devices are teached-in with the
+ ERR_ID_RANGE message in the Fhem log.
+ Fhem communicates unicast with the ChipID or BaseID, if the 4BS devices are teached-in with the
Bidirectional Teach-In / Teach-Out procedure. In this case
- Fhem send telegrams with its SenderID (BaseID) and the DestinationID of the
- device.
+ Fhem send telegrams with its SenderID (ChipID or BaseID) and the DestinationID of the
+ device.
+ Newer devices send acknowledge telegrams. In order to control this devices (switches, actors) with
+ additional SenderIDs you can use the attributes subDef,
+ subDef0 and subDefI.
@@ -4669,10 +4700,9 @@ EnOcean_Undef($$)
get <tcm> idbase
" command. You can use
@@ -5307,7 +5337,7 @@ EnOcean_Undef($$)