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($$) {

-
  • Blind Control for Position and Angle (D2-05-00 - D2-05-01)
    - [AWAG Elektrotechnik AG OMNIO UPJ 230/12, REGJ12/04M ]
    +
  • Blind Control for Position and Angle (D2-05-00, D2-05-01, D2-05-02, D2-05-04, D2-05-05)
    + [AWAG Elektrotechnik AG OMNIO UPJ 230/12, REGJ12/04M, miniJ01]