diff --git a/FHEM/10_EnOcean.pm b/FHEM/10_EnOcean.pm
index 8cc558af5..764dcd3d5 100755
--- a/FHEM/10_EnOcean.pm
+++ b/FHEM/10_EnOcean.pm
@@ -200,6 +200,8 @@ my %EnO_subType = (
"A5.10.1D" => "roomSensorControl.1D",
"A5.10.1E" => "roomSensorControl.1B",
"A5.10.1F" => "roomSensorControl.1F",
+ "A5.10.20" => "roomSensorControl.20",
+ "A5.10.21" => "roomSensorControl.20",
"A5.11.01" => "lightCtrlState.01",
"A5.11.02" => "tempCtrlState.01",
"A5.11.03" => "shutterCtrlState.01",
@@ -3301,7 +3303,7 @@ EnOcean_Parse($$)
# $db[0]_bit_6 ... $db[0]_bit_4 is the fan speed
# $db[0]_bit_1 is Occupany enable where 0 = enabled, 1 = disabled
# $db[0]_bit_0 is Occupany Button where 0 = pressed, 1 = released
- my $humi = $db[3] / 2.5;
+ my $humi = sprintf "%d", $db[3] / 2.5;
my $setpoint = $db[2] / 2.5;
my $temp = sprintf "%0.1f", 40 - $db[1] * 40 / 250;
my $fanSpeed;
@@ -3360,6 +3362,41 @@ EnOcean_Parse($$)
push @event, "3:setpointScaled:" . $setpointScaled;
}
+ } elsif ($st eq "roomSensorControl.20") {
+ # Room Operation Panel (A5-10-20, A5-10-21)
+ # [untested]
+ # $db[3] is the setpoint where 0 = 0 ... 255 = 255
+ # $db[2] is the humidity setpoint where min 0x00 = 0 %rH, max 0xFA = 10 %rH
+ # $db[1] is the temperature where 250 = 0 °C ... 0 = 40 °C
+ # $db[0]_bit_6 ... $db[0]_bit_5 is setpoint mode
+ # $db[0]_bit_4 is battery state 0 = ok, 1 = low
+ # $db[0]_bit_0 is user activity where 0 = no, 1 = yes
+ my $humi = sprintf "%d", $db[2] / 2.5;
+ my $setpoint = $db[3];
+ my $temp = sprintf "%0.1f", 40 - $db[1] * 40 / 250;
+ my $setpointMode;
+ if ((($db[0] & 0x60) >> 5) == 3) {
+ $setpointMode = "reserved";
+ } elsif ((($db[0] & 0x60) >> 5) == 2) {
+ $setpointMode = "auto";
+ } elsif ((($db[0] & 0x60) >> 1) == 1){
+ $setpointMode = "frostProtection";
+ } else {
+ $setpointMode = "setpoint";
+ }
+ my $battery = ($db[0] & 0x10) ? "low" : "ok";
+ push @event, "3:activity:" . (($db[0] & 1) ? "yes" : "no");
+ push @event, "3:battery:$battery";
+ push @event, "3:humidity:$humi";
+ push @event, "3:setpoint:$setpoint";
+ push @event, "3:setpointMode:$setpointMode";
+ push @event, "3:temperature:$temp";
+ push @event, "3:state:T: $temp H: $humi SP: $setpoint B: $battery";
+ my $setpointScaled = EnOcean_ReadingScaled($hash, $db[3], 0, 255);
+ if (defined $setpointScaled) {
+ push @event, "3:setpointScaled:" . $setpointScaled;
+ }
+
} elsif ($st eq "tempHumiSensor.02") {
# Temperatur and Humidity Sensor(EEP A5-04-02)
# [Eltako FAFT60, FIFT63AP]
@@ -7970,6 +8007,29 @@ EnOcean_Undef($$)
+