2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-23 14:46:24 +00:00

10_EnOcean: profil hvac.01 changed

git-svn-id: https://svn.fhem.de/fhem/trunk@24382 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
klaus.schauer 2021-05-04 18:31:41 +00:00
parent cd3c6b4e2b
commit 10ba2e48f3

View File

@ -8055,6 +8055,7 @@ sub EnOcean_Parse($$) {
$st = "raw";
}
#####*
# signal telegram learn mode status
my $signalData = EnOcean_signalLearnModeStatus(0, 1, 0, $attr{$name}{eep} eq 'raw' ? 1 : 0, 0, $hash->{DEF}, $attr{$name}{eep} eq 'raw' ? 'FF-FF-FF' : $attr{$name}{eep});
EnOcean_SndRadio(undef, $hash, 1, 'D0', $signalData, defined($attr{$name}{subDef}) ? $attr{$name}{subDef} : '0' x 8, '00', 'F' x 8);
@ -8067,20 +8068,11 @@ sub EnOcean_Parse($$) {
} elsif ($st eq "hvac.01" || $st eq "MD15") {
# Battery Powered Actuator (EEP A5-20-01)
# [Kieback&Peter MD15-FTL-xx]
push @event, "3:energyInput:" . (($db[2] & 0x40) ? "enabled" : "disabled");
push @event, "1:energyInput:" . (($db[2] & 0x40) ? "enabled" : "disabled");
my $battery = ($db[2] & 0x10) ? "ok" : "low";
my $energyStorage;
if ($db[2] & 0x20) {
$energyStorage = 'charged';
$battery = 'ok';
} else {
$energyStorage = 'empty';
}
if (!exists($hash->{helper}{battery}) || $hash->{helper}{battery} ne $battery) {
push @event, "3:battery:$battery";
$hash->{helper}{battery} = $battery;
}
push @event, "3:energyStorage:$energyStorage";
push @event, "1:battery:$battery";
my $energyStorage = ($db[2] & 0x20) ? 'charged' : 'empty';
push @event, "1:energyStorage:$energyStorage";
my $roomTemp = ReadingsVal($name, "roomTemp", 20);
if ($db[2] & 4) {
readingsDelete($hash, "roomTemp");
@ -8096,11 +8088,11 @@ sub EnOcean_Parse($$) {
# } else {
# $maintenanceMode = 'off';
# }
push @event, "3:cover:" . (($db[2] & 8) ? "open" : "closed");
push @event, "1:cover:" . (($db[2] & 8) ? "open" : "closed");
my $window = ($db[2] & 2) ? "open" : "closed";
push @event, "3:window:$window";
push @event, "3:actuatorState:". (($db[2] & 1) ? "obstructed" : "ok");
push @event, "3:selfCtrl:" . (($db[0] & 4) ? "on" : "off");
push @event, "1:window:$window";
push @event, "1:actuatorState:". (($db[2] & 1) ? "obstructed" : "ok");
push @event, "1:selfCtrl:" . (($db[0] & 4) ? "on" : "off");
my $functionSelect = 0;
my $setpointSelect = 0;
my $setpointSet = ReadingsVal($name, "setpointSetRestore", ReadingsVal($name, "setpointSet", $setpoint));
@ -8213,8 +8205,8 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:valveOpend:runInit";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:valveOpend:runInit";
push @event, "1:operationMode:off";
readingsDelete($hash, "setpointSet");
readingsDelete($hash, "setpointTemp");
readingsDelete($hash, "setpointTempSet");
@ -8230,16 +8222,16 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:runInit";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:runInit";
push @event, "1:operationMode:off";
$functionSelect = 1;
$waitingCmds = 0x80;
} else {
$setpointSet = 0;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:valveClosed";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:valveClosed";
push @event, "1:operationMode:off";
readingsDelete($hash, "waitingCmds");
$functionSelect = 1;
$waitingCmds = 0x10;
@ -8259,9 +8251,9 @@ sub EnOcean_Parse($$) {
$setpointSet = 0;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:runInit";
push @event, "3:operationMode:off";
push @event, "3:waitingCmds:$operationMode";
push @event, "1:maintenanceMode:runInit";
push @event, "1:operationMode:off";
push @event, "1:waitingCmds:$operationMode";
#readingsDelete($hash, "setpointSet");
#readingsDelete($hash, "setpointTemp");
#readingsDelete($hash, "setpointTempSet");
@ -8278,9 +8270,9 @@ sub EnOcean_Parse($$) {
$setpointSet = 0;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:listSet";
push @event, "3:operationMode:off";
push @event, "3:waitingCmds:$operationMode";
push @event, "1:maintenanceMode:listSet";
push @event, "1:operationMode:off";
push @event, "1:waitingCmds:$operationMode";
#readingsDelete($hash, "setpointSet");
#readingsDelete($hash, "setpointTemp");
#readingsDelete($hash, "setpointTempSet");
@ -8295,14 +8287,14 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:runInit";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:runInit";
push @event, "1:operationMode:off";
$functionSelect = 1;
$waitingCmds = 0x80;
} else {
$db[2] = (40 - $temperature) * 255 / 40;
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:setpoint";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:setpoint";
readingsDelete($hash, "setpointTemp");
readingsDelete($hash, "setpointTempSet");
readingsDelete($hash, "waitingCmds");
@ -8316,8 +8308,8 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:runInit";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:runInit";
push @event, "1:operationMode:off";
$functionSelect = 1;
$waitingCmds = 0x80;
} else {
@ -8335,8 +8327,8 @@ sub EnOcean_Parse($$) {
$setpointTemp = $setpointTempSet;
$db[2] = (40 - $temperature) * 255 / 40;
push @event, "3:setpointTemp:" . sprintf("%0.1f", $setpointTemp);
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:setpointTemp";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:setpointTemp";
readingsDelete($hash, "waitingCmds");
$waitingCmds = 0;
}
@ -8350,8 +8342,8 @@ sub EnOcean_Parse($$) {
$setpointSet = $setpointSummerMode;
$db[2] = (40 - $temperature) * 255 / 40;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:summerMode";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:summerMode";
#readingsDelete($hash, "setpointSet");
readingsDelete($hash, "setpointTemp");
readingsDelete($hash, "setpointTempSet");
@ -8365,14 +8357,14 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:setpoint";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:setpoint";
$functionSelect = 1;
$waitingCmds = 0x80;
} else {
$db[2] = (40 - $temperature) * 255 / 40;
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:setpoint";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:setpoint";
$waitingCmds = 0;
}
@ -8383,8 +8375,8 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:setpointTemp";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:setpointTemp";
$functionSelect = 1;
$waitingCmds = 0x80;
} else {
@ -8402,8 +8394,8 @@ sub EnOcean_Parse($$) {
$db[2] = (40 - $temperature) * 255 / 40;
$setpointTemp = $setpointTempSet;
push @event, "3:setpointTemp:" . sprintf("%.1f", $setpointTemp);
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:setpointTemp";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:setpointTemp";
$waitingCmds = 0;
}
@ -8413,8 +8405,8 @@ sub EnOcean_Parse($$) {
$setpointSet = $setpointSummerMode;
$db[2] = (40 - $temperature) * 255 / 40;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:off";
push @event, "3:operationMode:summerMode";
push @event, "1:maintenanceMode:off";
push @event, "1:operationMode:summerMode";
$waitingCmds = 0;
} elsif ($maintenanceMode eq "valveOpend:runInit") {
@ -8423,8 +8415,8 @@ sub EnOcean_Parse($$) {
$setpointSet = 100;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:valveOpend:runInit";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:valveOpend:runInit";
push @event, "1:operationMode:off";
#readingsDelete($hash, "setpointSet");
#readingsDelete($hash, "setpointTemp");
#readingsDelete($hash, "setpointTempSet");
@ -8438,8 +8430,8 @@ sub EnOcean_Parse($$) {
$setpointSet = 0;
$db[2] = 0x20;
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
push @event, "3:maintenanceMode:valveClosed";
push @event, "3:operationMode:off";
push @event, "1:maintenanceMode:valveClosed";
push @event, "1:operationMode:off";
#readingsDelete($hash, "setpointSet");
#readingsDelete($hash, "setpointTemp");
#readingsDelete($hash, "setpointTempSet");
@ -8451,7 +8443,7 @@ sub EnOcean_Parse($$) {
$db[2] = (40 - $temperature) * 255 / 40;
$waitingCmds = 0;
}
push @event, "3:state:T: " . sprintf("%0.1f", $temperature) . " SPT: " . sprintf("%.1f", $setpointTemp) . " SP: $setpoint";
push @event, "1:state:T: " . sprintf("%0.1f", $temperature) . " SPT: " . sprintf("%.1f", $setpointTemp) . " SP: $setpoint";
# sent message to the actuator
$data = sprintf "%02X%02X%02X08", $setpointSet, $db[2], $waitingCmds | $summerMode | $setpointSelect | $functionSelect;
EnOcean_SndRadio(undef, $hash, $packetType, "A5", $data, $subDef, "00", $hash->{DEF});