In der 10_EnOcean.pm steht:
} elsif ($st eq "roomSensorControl.01") {
# Room Sensor and Control Unit (EEP A5-04-01, A5-10-10 ... A5-10-14)
# [Thermokon SR04 * rH, Thanus SR *, untested]
# $db[3] is the setpoint where 0x00 = min ... 0xFF = max
# $db[2] is the humidity where 0x00 = 0%rH ... 0xFA = 100%rH
# $db[1] is the temperature where 0x00 = 0�C ... 0xFA = +40�C
# $db[0] bit D0 is the occupy button, pushbutton or slide switch
my $temp = sprintf "%0.1f", $db[1] * 40 / 250;
my $humi = sprintf "%d", $db[2] / 2.5;
my $switch = $db[0] & 1;
push @event, "3:state:T: $temp H: $humi SP: $db[2] SW: $switch";
push @event, "3:humidity:$humi";
push @event, "3:switch:$switch";
push @event, "3:setpoint:$db[2]";
push @event, "3:temperature:$temp";
my $setpointScaled = EnOcean_ReadingScaled($hash, $db[2], 0, 255);
if (defined $setpointScaled) {
push @event, "3:setpointScaled:" . $setpointScaled;
}
Explizit geht es mir um diese Zeile:
push @event, "3:state:T: $temp H: $humi SP: $db[2] SW: $switch";
SP: soll den Wert db[2] nehmen. Der steht aber, wie in den Kommentaren beschrieben und von Eltako beschrieben, im Databyte 3 und nicht 2.
Und die Umrechnung fehlt auch.
Es müsste doch heißen...
my $settemp = sprintf "%0.1f", $db[3] * 40 / 250;
push @event, "3:state:T: $temp H: $humi SP: $settemp SW: $switch";
push @event, "3:setpoint:$settemp";
In der Doku von Eltako steht zwar bei EEP 05-10-12, dass Max FA wäre, aber mit FF als Max komme ich näher an die Werte.