From b1db99966e4bbb6d90e453fa0cc6083498781e52 Mon Sep 17 00:00:00 2001
From: "klaus.schauer" <>
Date: Sun, 20 Mar 2022 16:18:41 +0000
Subject: [PATCH] 10_EnOcean: new EEP D2-05-04, D2-05-05
git-svn-id: https://svn.fhem.de/fhem/trunk@25863 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/10_EnOcean.pm | 69 ++++++++++++++++++++---------------------
1 file changed, 34 insertions(+), 35 deletions(-)
diff --git a/fhem/FHEM/10_EnOcean.pm b/fhem/FHEM/10_EnOcean.pm
index 7e6d17462..4f766274e 100755
--- a/fhem/FHEM/10_EnOcean.pm
+++ b/fhem/FHEM/10_EnOcean.pm
@@ -393,6 +393,8 @@ my %EnO_eepConfig = (
"D2.05.00" => {attr => {subType => "blindsCtrl.00", webCmd => "opens:stop:closes:position"}, GPLOT => "EnO_position4angle4:Position/AnglePos,"},
"D2.05.01" => {attr => {subType => "blindsCtrl.01", webCmd => "opens:stop:closes:position"}},
"D2.05.02" => {attr => {subType => "blindsCtrl.00", defaultChannel => 1, webCmd => "opens:stop:closes:position"}, GPLOT => "EnO_position4angle4:Position/AnglePos,"},
+ "D2.05.04" => {attr => {subType => "blindsCtrl.00", defaultChannel => 1, webCmd => "opens:stop:closes:position"}, GPLOT => "EnO_position4angle4:Position/AnglePos,"},
+ "D2.05.05" => {attr => {subType => "blindsCtrl.01", webCmd => "opens:stop:closes:position"}},
"D2.06.01" => {attr => {subType => "multisensor.01"}, GPLOT => "EnO_temp4humi4:Temp/Humi,EnO_brightness4:Brightness,"},
"D2.06.50" => {attr => {subType => "multisensor.50"}},
"D2.10.00" => {attr => {subType => "roomCtrlPanel.00", webCmd => "setpointTemp"}, GPLOT => "EnO_D2-10-xx:Temp/SPT/Humi,"},
@@ -11809,42 +11811,38 @@ sub EnOcean_Parse($$) {
if ($cmd == 4) {
# actuator status response
if ($db[3] == 0) {
- push @event, "3:state:open";
- push @event, "3:endPosition" . sprintf('%02d', $channel) . ":open";
- push @event, "3:position" . sprintf('%02d', $channel) . ":" . $db[3];
- push @event, "3:position:" . $db[3];
+ push @event, "1:state:open";
+ push @event, "1:endPosition" . sprintf('%02d', $channel) . ":open";
+ push @event, "1:position" . sprintf('%02d', $channel) . ":" . $db[3];
+ push @event, "1:position:" . $db[3];
} elsif ($db[3] == 100) {
- push @event, "3:state:closed";
- push @event, "3:endPosition" . sprintf('%02d', $channel) . ":closed";
- push @event, "3:position" . sprintf('%02d', $channel) . ":" . $db[3];
- push @event, "3:position:" . $db[3];
+ push @event, "1:state:closed";
+ push @event, "1:endPosition" . sprintf('%02d', $channel) . ":closed";
+ push @event, "1:position" . sprintf('%02d', $channel) . ":" . $db[3];
+ push @event, "1:position:" . $db[3];
} elsif ($db[3] == 127) {
- push @event, "3:state:unknown";
- push @event, "3:endPosition" . sprintf('%02d', $channel) . ":unknown";
- push @event, "3:position" . sprintf('%02d', $channel) . ":unknown";
- push @event, "3:position:unknown";
+ push @event, "1:state:unknown";
+ push @event, "1:endPosition" . sprintf('%02d', $channel) . ":unknown";
+ push @event, "1:position" . sprintf('%02d', $channel) . ":unknown";
+ push @event, "1:position:unknown";
} else {
- push @event, "3:state:" . $db[3];
- push @event, "3:endPosition" . sprintf('%02d', $channel) . ":not_reached";
- push @event, "3:position" . sprintf('%02d', $channel) . ":" . $db[3];
- push @event, "3:position:" . $db[3];
+ push @event, "1:state:" . $db[3];
+ push @event, "1:endPosition" . sprintf('%02d', $channel) . ":not_reached";
+ push @event, "1:position" . sprintf('%02d', $channel) . ":" . $db[3];
+ push @event, "1:position:" . $db[3];
}
if ($db[2] == 127) {
- push @event, "3:anglePos" . sprintf('%02d', $channel) . ":unknown";
- push @event, "3:anglePos:unknown";
+ push @event, "1:anglePos" . sprintf('%02d', $channel) . ":unknown";
+ push @event, "1:anglePos:unknown";
} else {
- push @event, "3:anglePos" . sprintf('%02d', $channel) . ":" . $db[2];
- push @event, "3:anglePos:" . $db[2];
- }
- if ($db[1] == 0) {
- push @event, "3:block" . sprintf('%02d', $channel) . ":unlock";
- } elsif ($db[1] == 1) {
- push @event, "3:block" . sprintf('%02d', $channel) . ":lock";
- } elsif ($db[1] == 2) {
- push @event, "3:block" . sprintf('%02d', $channel) . ":alarm";
- } else {
- push @event, "3:block" . sprintf('%02d', $channel) . ":reserved";
+ push @event, "1:anglePos" . sprintf('%02d', $channel) . ":" . $db[2];
+ push @event, "1:anglePos:" . $db[2];
}
+ my %block = (0 => 'unlock', 1 => 'lock', 2 => 'alarm');
+ my $block = exists($block{$db[1] & 7}) ? $block{$db[1] & 7} : 'reserved';
+ push @event, "1:block" . sprintf('%02d', $channel) . ":" . $block;
+ my %currentRun = (0 => 'stopped', 1 => 'up', 2 => 'down', 3 => 'unknown');
+ push @event, "1:currentRun" . sprintf('%02d', $channel) . ":" . $currentRun{($db[1] & 24) >> 3};
} else {
# unknown response
@@ -20309,8 +20307,8 @@ sub EnOcean_Delete($$) {
-
set <name> <value>
get <name> <value>