mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 09:16:53 +00:00
00_TCM: changes see EnOcean forum
git-svn-id: https://svn.fhem.de/fhem/trunk@23389 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
551d31416a
commit
fe49645fa3
@ -2933,7 +2933,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsEndUpdate($hash, 0);
|
readingsEndUpdate($hash, 0);
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd $a[1]";
|
Log3 $name, 3, "EnOcean set $name $cmd $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -2952,7 +2952,7 @@ sub EnOcean_Set($@) {
|
|||||||
# PID regulator active
|
# PID regulator active
|
||||||
my $activatePID = AttrVal($name, 'pidCtrl', 'off') eq 'on' ? 'start' : 'stop';
|
my $activatePID = AttrVal($name, 'pidCtrl', 'off') eq 'on' ? 'start' : 'stop';
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, $activatePID, undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, $activatePID, undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd $setpointTemp";
|
Log3 $name, 3, "EnOcean set $name $cmd $setpointTemp";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -2967,8 +2967,8 @@ sub EnOcean_Set($@) {
|
|||||||
readingsEndUpdate($hash, 0);
|
readingsEndUpdate($hash, 0);
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd";
|
Log3 $name, 3, "EnOcean set $name $cmd";
|
||||||
$updateState = 2;
|
$updateState = 2;
|
||||||
|
|
||||||
@ -2991,7 +2991,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsEndUpdate($hash, 0);
|
readingsEndUpdate($hash, 0);
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd $a[1]";
|
Log3 $name, 3, "EnOcean set $name $cmd $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -3010,7 +3010,7 @@ sub EnOcean_Set($@) {
|
|||||||
# PID regulator active
|
# PID regulator active
|
||||||
my $activatePID = AttrVal($name, 'pidCtrl', 'on') eq 'on' ? 'start' : 'stop';
|
my $activatePID = AttrVal($name, 'pidCtrl', 'on') eq 'on' ? 'start' : 'stop';
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, $activatePID, undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, $activatePID, undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd $setpointTemp";
|
Log3 $name, 3, "EnOcean set $name $cmd $setpointTemp";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -3024,8 +3024,8 @@ sub EnOcean_Set($@) {
|
|||||||
readingsEndUpdate($hash, 0);
|
readingsEndUpdate($hash, 0);
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd";
|
Log3 $name, 3, "EnOcean set $name $cmd";
|
||||||
$updateState = 2;
|
$updateState = 2;
|
||||||
|
|
||||||
@ -3050,7 +3050,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsEndUpdate($hash, 0);
|
readingsEndUpdate($hash, 0);
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd $a[1]";
|
Log3 $name, 3, "EnOcean set $name $cmd $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -3069,7 +3069,7 @@ sub EnOcean_Set($@) {
|
|||||||
# PID regulator active
|
# PID regulator active
|
||||||
my $activatePID = AttrVal($name, 'pidCtrl', 'off') eq 'on' ? 'start' : 'stop';
|
my $activatePID = AttrVal($name, 'pidCtrl', 'off') eq 'on' ? 'start' : 'stop';
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, $activatePID, undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, $activatePID, undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd $setpointTemp";
|
Log3 $name, 3, "EnOcean set $name $cmd $setpointTemp";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -3084,9 +3084,9 @@ sub EnOcean_Set($@) {
|
|||||||
readingsEndUpdate($hash, 0);
|
readingsEndUpdate($hash, 0);
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd";
|
Log3 $name, 3, "EnOcean set $name $cmd";
|
||||||
$updateState = 2;
|
$updateState = 2;
|
||||||
@ -4096,12 +4096,12 @@ sub EnOcean_Set($@) {
|
|||||||
$updateState = 0;
|
$updateState = 0;
|
||||||
} elsif ($ctrlFuncID == 1) {
|
} elsif ($ctrlFuncID == 1) {
|
||||||
# off
|
# off
|
||||||
CommandDeleteReading(undef, "$name scene");
|
readingsDelete($hash, "scene");
|
||||||
SetExtensionsCancel($hash);
|
SetExtensionsCancel($hash);
|
||||||
$updateState = 0;
|
$updateState = 0;
|
||||||
} elsif ($ctrlFuncID == 2) {
|
} elsif ($ctrlFuncID == 2) {
|
||||||
# on
|
# on
|
||||||
CommandDeleteReading(undef, "$name scene");
|
readingsDelete($hash, "scene");
|
||||||
SetExtensionsCancel($hash);
|
SetExtensionsCancel($hash);
|
||||||
$updateState = 0;
|
$updateState = 0;
|
||||||
} elsif ($ctrlFuncID == 3 || $ctrlFuncID == 4) {
|
} elsif ($ctrlFuncID == 3 || $ctrlFuncID == 4) {
|
||||||
@ -4119,12 +4119,12 @@ sub EnOcean_Set($@) {
|
|||||||
$ctrlParam3 = $rampTime & 0xFF;
|
$ctrlParam3 = $rampTime & 0xFF;
|
||||||
$ctrlParam2 = ($rampTime & 0xFF00) >> 8;
|
$ctrlParam2 = ($rampTime & 0xFF00) >> 8;
|
||||||
readingsSingleUpdate($hash, "rampTime", $rampTime, 1);
|
readingsSingleUpdate($hash, "rampTime", $rampTime, 1);
|
||||||
CommandDeleteReading(undef, "$name scene");
|
readingsDelete($hash, "scene");
|
||||||
SetExtensionsCancel($hash);
|
SetExtensionsCancel($hash);
|
||||||
$updateState = 0;
|
$updateState = 0;
|
||||||
} elsif ($ctrlFuncID == 5) {
|
} elsif ($ctrlFuncID == 5) {
|
||||||
# stop
|
# stop
|
||||||
CommandDeleteReading(undef, "$name scene");
|
readingsDelete($hash, "scene");
|
||||||
SetExtensionsCancel($hash);
|
SetExtensionsCancel($hash);
|
||||||
$updateState = 0;
|
$updateState = 0;
|
||||||
} elsif ($ctrlFuncID == 6) {
|
} elsif ($ctrlFuncID == 6) {
|
||||||
@ -4147,7 +4147,7 @@ sub EnOcean_Set($@) {
|
|||||||
}
|
}
|
||||||
$ctrlParam3 = $rampTime & 0xFF;
|
$ctrlParam3 = $rampTime & 0xFF;
|
||||||
$ctrlParam2 = ($rampTime & 0xFF00) >> 8;
|
$ctrlParam2 = ($rampTime & 0xFF00) >> 8;
|
||||||
CommandDeleteReading(undef, "$name scene");
|
readingsDelete($hash, "scene");
|
||||||
readingsSingleUpdate($hash, "rampTime", $rampTime, 1);
|
readingsSingleUpdate($hash, "rampTime", $rampTime, 1);
|
||||||
SetExtensionsCancel($hash);
|
SetExtensionsCancel($hash);
|
||||||
$updateState = 0;
|
$updateState = 0;
|
||||||
@ -4383,8 +4383,8 @@ sub EnOcean_Set($@) {
|
|||||||
} elsif ($cmd eq "stop") {
|
} elsif ($cmd eq "stop") {
|
||||||
# stop
|
# stop
|
||||||
# delete readings, as they are undefined
|
# delete readings, as they are undefined
|
||||||
CommandDeleteReading(undef, "$name anglePos");
|
readingsDelete($hash, "anglePos");
|
||||||
CommandDeleteReading(undef, "$name position");
|
readingsDelete($hash, "position");
|
||||||
readingsSingleUpdate($hash, "endPosition", "not_reached", 1);
|
readingsSingleUpdate($hash, "endPosition", "not_reached", 1);
|
||||||
readingsSingleUpdate($hash, "state", "stop", 1);
|
readingsSingleUpdate($hash, "state", "stop", 1);
|
||||||
$shutCmd = 0;
|
$shutCmd = 0;
|
||||||
@ -5836,7 +5836,7 @@ sub EnOcean_Set($@) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} elsif ($cmd eq "clearCmds") {
|
} elsif ($cmd eq "clearCmds") {
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
Log3 $name, 3, "EnOcean set $name $cmd";
|
Log3 $name, 3, "EnOcean set $name $cmd";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -5902,7 +5902,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsBulkUpdate($hash, "state", "T: $temperature H: $humidity SPT: $setpointTemp F: $fanSpeed");
|
readingsBulkUpdate($hash, "state", "T: $temperature H: $humidity SPT: $setpointTemp F: $fanSpeed");
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 1);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 1);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name setpointTemp $a[1]";
|
Log3 $name, 3, "EnOcean set $name setpointTemp $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -5926,7 +5926,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsBulkUpdate($hash, "setpointShiftMax", $setpointShiftMax);
|
readingsBulkUpdate($hash, "setpointShiftMax", $setpointShiftMax);
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 2);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 2);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name setpointShiftMax $a[1]";
|
Log3 $name, 3, "EnOcean set $name setpointShiftMax $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -5944,7 +5944,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsBulkUpdate($hash, "setpointType", $setpointType);
|
readingsBulkUpdate($hash, "setpointType", $setpointType);
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x80);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x80);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name setpointType $a[1]";
|
Log3 $name, 3, "EnOcean set $name setpointType $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -5963,7 +5963,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsBulkUpdate($hash, "state", "T: $temperature H: $humidity SPT: $setpointTemp F: $fanSpeed");
|
readingsBulkUpdate($hash, "state", "T: $temperature H: $humidity SPT: $setpointTemp F: $fanSpeed");
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 4);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 4);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name fanSpeed $a[1]";
|
Log3 $name, 3, "EnOcean set $name fanSpeed $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -5985,7 +5985,7 @@ sub EnOcean_Set($@) {
|
|||||||
}
|
}
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x20);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x20);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name cooling $a[1]";
|
Log3 $name, 3, "EnOcean set $name cooling $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -6007,7 +6007,7 @@ sub EnOcean_Set($@) {
|
|||||||
}
|
}
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x40);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x40);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name heating $a[1]";
|
Log3 $name, 3, "EnOcean set $name heating $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -6025,7 +6025,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsBulkUpdate($hash, "occupancy", $a[1]);
|
readingsBulkUpdate($hash, "occupancy", $a[1]);
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 8);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 8);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name occupancy $a[1]";
|
Log3 $name, 3, "EnOcean set $name occupancy $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -6043,7 +6043,7 @@ sub EnOcean_Set($@) {
|
|||||||
readingsBulkUpdate($hash, "window", $a[1]);
|
readingsBulkUpdate($hash, "window", $a[1]);
|
||||||
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x10);
|
readingsBulkUpdate($hash, "waitingCmds", $waitingCmds |= 0x10);
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
CommandDeleteReading(undef, "$name smartAckMailbox");
|
readingsDelete($hash, "smartAckMailbox");
|
||||||
Log3 $name, 3, "EnOcean set $name window $a[1]";
|
Log3 $name, 3, "EnOcean set $name window $a[1]";
|
||||||
shift(@a);
|
shift(@a);
|
||||||
} else {
|
} else {
|
||||||
@ -7827,7 +7827,7 @@ sub EnOcean_Parse($$) {
|
|||||||
EnOcean_CommandSave(undef, undef);
|
EnOcean_CommandSave(undef, undef);
|
||||||
}
|
}
|
||||||
push @event, "3:state:" . ($db[0] & 1 ? "closed" : "open");
|
push @event, "3:state:" . ($db[0] & 1 ? "closed" : "open");
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
if (AttrVal($name, "signOfLife", 'off') eq 'on') {
|
if (AttrVal($name, "signOfLife", 'off') eq 'on') {
|
||||||
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
||||||
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'dead_sensor', 1, 5);
|
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'dead_sensor', 1, 5);
|
||||||
@ -8034,7 +8034,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:energyStorage:$energyStorage";
|
push @event, "3:energyStorage:$energyStorage";
|
||||||
my $roomTemp = ReadingsVal($name, "roomTemp", 20);
|
my $roomTemp = ReadingsVal($name, "roomTemp", 20);
|
||||||
if ($db[2] & 4) {
|
if ($db[2] & 4) {
|
||||||
CommandDeleteReading(undef, "$name roomTemp");
|
readingsDelete($hash, "roomTemp");
|
||||||
} else {
|
} else {
|
||||||
$roomTemp = $db[1] * 40 / 255;
|
$roomTemp = $db[1] * 40 / 255;
|
||||||
push @event, "3:roomTemp:" . sprintf "%0.1f", $roomTemp;
|
push @event, "3:roomTemp:" . sprintf "%0.1f", $roomTemp;
|
||||||
@ -8055,13 +8055,13 @@ sub EnOcean_Parse($$) {
|
|||||||
my $functionSelect = 0;
|
my $functionSelect = 0;
|
||||||
my $setpointSelect = 0;
|
my $setpointSelect = 0;
|
||||||
my $setpointSet = ReadingsVal($name, "setpointSetRestore", ReadingsVal($name, "setpointSet", $setpoint));
|
my $setpointSet = ReadingsVal($name, "setpointSetRestore", ReadingsVal($name, "setpointSet", $setpoint));
|
||||||
CommandDeleteReading(undef, "$name setpointSetRestore");
|
readingsDelete($hash, "setpointSetRestore");
|
||||||
my $setpointTemp = ReadingsVal($name, "setpointTemp", 20);
|
my $setpointTemp = ReadingsVal($name, "setpointTemp", 20);
|
||||||
my $setpointTempSet = ReadingsVal($name, "setpointTempSet", $setpointTemp);
|
my $setpointTempSet = ReadingsVal($name, "setpointTempSet", $setpointTemp);
|
||||||
my $temperature = ReadingsVal($name, 'temperature', $roomTemp);
|
my $temperature = ReadingsVal($name, 'temperature', $roomTemp);
|
||||||
if (!defined(AttrVal($name, "temperatureRefDev", undef))) {
|
if (!defined(AttrVal($name, "temperatureRefDev", undef))) {
|
||||||
if ($db[2] & 4) {
|
if ($db[2] & 4) {
|
||||||
CommandDeleteReading(undef, "$name temperature");
|
readingsDelete($hash, "temperature");
|
||||||
} else {
|
} else {
|
||||||
$temperature = $roomTemp;
|
$temperature = $roomTemp;
|
||||||
readingsSingleUpdate($hash, 'temperature', sprintf("%0.1f", $temperature), 1);
|
readingsSingleUpdate($hash, 'temperature', sprintf("%0.1f", $temperature), 1);
|
||||||
@ -8093,7 +8093,7 @@ sub EnOcean_Parse($$) {
|
|||||||
# ignore all commands
|
# ignore all commands
|
||||||
if ($waitingCmds ne "summerMode") {
|
if ($waitingCmds ne "summerMode") {
|
||||||
$waitingCmds = "no_change";
|
$waitingCmds = "no_change";
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
}
|
}
|
||||||
if ($manufID eq '049') {
|
if ($manufID eq '049') {
|
||||||
$wakeUpCycle = 28800;
|
$wakeUpCycle = 28800;
|
||||||
@ -8103,7 +8103,7 @@ sub EnOcean_Parse($$) {
|
|||||||
}
|
}
|
||||||
readingsSingleUpdate($hash, 'wakeUpCycle', $wakeUpCycle, 1);
|
readingsSingleUpdate($hash, 'wakeUpCycle', $wakeUpCycle, 1);
|
||||||
# set alarm timer
|
# set alarm timer
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
||||||
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'no_response_from_actuator', 1, 3);
|
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'no_response_from_actuator', 1, 3);
|
||||||
InternalTimer(gettimeofday() + $wakeUpCycle * 1.1, "EnOcean_readingsSingleUpdate", $hash->{helper}{timer}{alarm}, 0);
|
InternalTimer(gettimeofday() + $wakeUpCycle * 1.1, "EnOcean_readingsSingleUpdate", $hash->{helper}{timer}{alarm}, 0);
|
||||||
@ -8166,10 +8166,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:valveOpend:runInit";
|
push @event, "3:maintenanceMode:valveOpend:runInit";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$functionSelect = 1;
|
$functionSelect = 1;
|
||||||
$waitingCmds = 0x20;
|
$waitingCmds = 0x20;
|
||||||
|
|
||||||
@ -8191,15 +8191,15 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:valveClosed";
|
push @event, "3:maintenanceMode:valveClosed";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$functionSelect = 1;
|
$functionSelect = 1;
|
||||||
$waitingCmds = 0x10;
|
$waitingCmds = 0x10;
|
||||||
}
|
}
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
|
|
||||||
} elsif ($waitingCmds eq "runInit") {
|
} elsif ($waitingCmds eq "runInit") {
|
||||||
# deactivate PID regulator
|
# deactivate PID regulator
|
||||||
@ -8213,10 +8213,10 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:maintenanceMode:runInit";
|
push @event, "3:maintenanceMode:runInit";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
push @event, "3:waitingCmds:$operationMode";
|
push @event, "3:waitingCmds:$operationMode";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTemp");
|
#readingsDelete($hash, "setpointTemp");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$functionSelect = 1;
|
$functionSelect = 1;
|
||||||
$waitingCmds = 0x80;
|
$waitingCmds = 0x80;
|
||||||
|
|
||||||
@ -8232,10 +8232,10 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:maintenanceMode:listSet";
|
push @event, "3:maintenanceMode:listSet";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
push @event, "3:waitingCmds:$operationMode";
|
push @event, "3:waitingCmds:$operationMode";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTemp");
|
#readingsDelete($hash, "setpointTemp");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$functionSelect = 1;
|
$functionSelect = 1;
|
||||||
$waitingCmds = 0x40;
|
$waitingCmds = 0x40;
|
||||||
|
|
||||||
@ -8254,9 +8254,9 @@ sub EnOcean_Parse($$) {
|
|||||||
$db[2] = (40 - $temperature) * 255 / 40;
|
$db[2] = (40 - $temperature) * 255 / 40;
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpoint";
|
push @event, "3:operationMode:setpoint";
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8288,7 +8288,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:setpointTemp:" . sprintf("%0.1f", $setpointTemp);
|
push @event, "3:setpointTemp:" . sprintf("%0.1f", $setpointTemp);
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpointTemp";
|
push @event, "3:operationMode:setpointTemp";
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8303,10 +8303,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:summerMode";
|
push @event, "3:operationMode:summerMode";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
} elsif ($operationMode eq "setpoint") {
|
} elsif ($operationMode eq "setpoint") {
|
||||||
@ -8376,10 +8376,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:valveOpend:runInit";
|
push @event, "3:maintenanceMode:valveOpend:runInit";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTemp");
|
#readingsDelete($hash, "setpointTemp");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$functionSelect = 1;
|
$functionSelect = 1;
|
||||||
$waitingCmds = 0x20;
|
$waitingCmds = 0x20;
|
||||||
|
|
||||||
@ -8391,10 +8391,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:valveClosed";
|
push @event, "3:maintenanceMode:valveClosed";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTemp");
|
#readingsDelete($hash, "setpointTemp");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$functionSelect = 1;
|
$functionSelect = 1;
|
||||||
$waitingCmds = 0x10;
|
$waitingCmds = 0x10;
|
||||||
|
|
||||||
@ -8447,7 +8447,7 @@ sub EnOcean_Parse($$) {
|
|||||||
} else {
|
} else {
|
||||||
if ($db[0] & 0x80) {
|
if ($db[0] & 0x80) {
|
||||||
# temperature measurement inactive
|
# temperature measurement inactive
|
||||||
CommandDeleteReading(undef, "$name feedTemp");
|
readingsDelete($hash, "feedTemp");
|
||||||
} else {
|
} else {
|
||||||
$feedTemp = $db[2] * 60 / 255 + 20;
|
$feedTemp = $db[2] * 60 / 255 + 20;
|
||||||
push @event, "3:feedTemp:" . sprintf("%0.1f", $feedTemp);
|
push @event, "3:feedTemp:" . sprintf("%0.1f", $feedTemp);
|
||||||
@ -8459,17 +8459,17 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:alarm:" . $failureCode{$db[1]};
|
push @event, "3:alarm:" . $failureCode{$db[1]};
|
||||||
$battery = "empty" if ($db[1] == 18);
|
$battery = "empty" if ($db[1] == 18);
|
||||||
} else {
|
} else {
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($db[0] & 0x80) {
|
if ($db[0] & 0x80) {
|
||||||
# temperature measurement inactive
|
# temperature measurement inactive
|
||||||
CommandDeleteReading(undef, "$name roomTemp");
|
readingsDelete($hash, "roomTemp");
|
||||||
} else {
|
} else {
|
||||||
# room temperature
|
# room temperature
|
||||||
$roomTemp = sprintf("%0.1f", ($db[1] * 20 / 255 + 10));
|
$roomTemp = sprintf("%0.1f", ($db[1] * 20 / 255 + 10));
|
||||||
push @event, "3:roomTemp:$roomTemp";
|
push @event, "3:roomTemp:$roomTemp";
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!defined(AttrVal($name, "temperatureRefDev", undef))) {
|
if (!defined(AttrVal($name, "temperatureRefDev", undef))) {
|
||||||
@ -8514,7 +8514,7 @@ sub EnOcean_Parse($$) {
|
|||||||
} elsif ($summerMode eq 'on') {
|
} elsif ($summerMode eq 'on') {
|
||||||
if ($waitingCmds ne "summerMode") {
|
if ($waitingCmds ne "summerMode") {
|
||||||
$waitingCmds = "no_change";
|
$waitingCmds = "no_change";
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
}
|
}
|
||||||
$setpointSet = 100;
|
$setpointSet = 100;
|
||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
@ -8553,10 +8553,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:valveOpend:runInit";
|
push @event, "3:maintenanceMode:valveOpend:runInit";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 1;
|
$waitingCmds = 1;
|
||||||
|
|
||||||
} elsif ($waitingCmds eq "valveCloses") {
|
} elsif ($waitingCmds eq "valveCloses") {
|
||||||
@ -8571,14 +8571,14 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:valveClosed";
|
push @event, "3:maintenanceMode:valveClosed";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 3;
|
$waitingCmds = 3;
|
||||||
}
|
}
|
||||||
# stop PID regulator
|
# stop PID regulator
|
||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
|
|
||||||
} elsif ($waitingCmds eq "runInit") {
|
} elsif ($waitingCmds eq "runInit") {
|
||||||
# deactivate PID regulator
|
# deactivate PID regulator
|
||||||
@ -8587,10 +8587,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:runInit";
|
push @event, "3:maintenanceMode:runInit";
|
||||||
push @event, "3:operationMode:off";
|
push @event, "3:operationMode:off";
|
||||||
CommandDeleteReading(undef, "$name setpointSet");
|
readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 2;
|
$waitingCmds = 2;
|
||||||
|
|
||||||
} elsif ($waitingCmds eq "setpoint") {
|
} elsif ($waitingCmds eq "setpoint") {
|
||||||
@ -8605,10 +8605,10 @@ sub EnOcean_Parse($$) {
|
|||||||
} else {
|
} else {
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpoint";
|
push @event, "3:operationMode:setpoint";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8629,9 +8629,9 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:setpointTemp:$setpointTemp";
|
push @event, "3:setpointTemp:$setpointTemp";
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpointTemp";
|
push @event, "3:operationMode:setpointTemp";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8642,10 +8642,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:summerMode";
|
push @event, "3:operationMode:summerMode";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
} elsif ($operationMode eq "setpoint") {
|
} elsif ($operationMode eq "setpoint") {
|
||||||
@ -8660,10 +8660,10 @@ sub EnOcean_Parse($$) {
|
|||||||
} else {
|
} else {
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpoint";
|
push @event, "3:operationMode:setpoint";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTemp");
|
#readingsDelete($hash, "setpointTemp");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8683,9 +8683,9 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:setpointTemp:$setpointTemp";
|
push @event, "3:setpointTemp:$setpointTemp";
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpointTemp";
|
push @event, "3:operationMode:setpointTemp";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8696,10 +8696,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:summerMode";
|
push @event, "3:operationMode:summerMode";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
#CommandDeleteReading(undef, "$name setpointTemp");
|
#readingsDelete($hash, "setpointTemp");
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
#CommandDeleteReading(undef, "$name waitingCmds");
|
#readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -8737,11 +8737,11 @@ sub EnOcean_Parse($$) {
|
|||||||
if ($db[0] & 0x80) {
|
if ($db[0] & 0x80) {
|
||||||
$feedTemp = $db[1] / 2;
|
$feedTemp = $db[1] / 2;
|
||||||
push @event, "3:feedTemp:" . sprintf "%0.1f", $db[1] / 2;
|
push @event, "3:feedTemp:" . sprintf "%0.1f", $db[1] / 2;
|
||||||
CommandDeleteReading(undef, "$name roomTemp");
|
readingsDelete($hash, "roomTemp");
|
||||||
} else {
|
} else {
|
||||||
$roomTemp = $db[1] / 2;
|
$roomTemp = $db[1] / 2;
|
||||||
push @event, "3:roomTemp:" . sprintf "%0.1f", $db[1] / 2;
|
push @event, "3:roomTemp:" . sprintf "%0.1f", $db[1] / 2;
|
||||||
CommandDeleteReading(undef, "$name feedTemp");
|
readingsDelete($hash, "feedTemp");
|
||||||
}
|
}
|
||||||
my $setpoint = $db[3];
|
my $setpoint = $db[3];
|
||||||
push @event, "3:setpoint:$setpoint";
|
push @event, "3:setpoint:$setpoint";
|
||||||
@ -8753,7 +8753,7 @@ sub EnOcean_Parse($$) {
|
|||||||
my $functionSelect = 0;
|
my $functionSelect = 0;
|
||||||
my $setpointSelect = 0;
|
my $setpointSelect = 0;
|
||||||
my $setpointSet = ReadingsVal($name, "setpointSetRestore", ReadingsVal($name, "setpointSet", $setpoint));
|
my $setpointSet = ReadingsVal($name, "setpointSetRestore", ReadingsVal($name, "setpointSet", $setpoint));
|
||||||
CommandDeleteReading(undef, "$name setpointSetRestore");
|
readingsDelete($hash, "setpointSetRestore");
|
||||||
my $setpointTemp = ReadingsVal($name, "setpointTemp", 20);
|
my $setpointTemp = ReadingsVal($name, "setpointTemp", 20);
|
||||||
my $setpointTempSet = ReadingsVal($name, "setpointTempSet", $setpointTemp);
|
my $setpointTempSet = ReadingsVal($name, "setpointTempSet", $setpointTemp);
|
||||||
my %setpointTempOffset = (0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 0x7B => -5, 0x7C => -4, 0x7D => -3, 0x7E => -2, 0x7F => -1);
|
my %setpointTempOffset = (0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 0x7B => -5, 0x7C => -4, 0x7D => -3, 0x7E => -2, 0x7F => -1);
|
||||||
@ -8774,7 +8774,7 @@ sub EnOcean_Parse($$) {
|
|||||||
my $temperature = ReadingsVal($name, 'temperature', $roomTemp);
|
my $temperature = ReadingsVal($name, 'temperature', $roomTemp);
|
||||||
if (!defined(AttrVal($name, "temperatureRefDev", undef))) {
|
if (!defined(AttrVal($name, "temperatureRefDev", undef))) {
|
||||||
if ($db[0] & 0x80) {
|
if ($db[0] & 0x80) {
|
||||||
CommandDeleteReading(undef, "$name temperature");
|
readingsDelete($hash, "temperature");
|
||||||
} else {
|
} else {
|
||||||
$temperature = $roomTemp;
|
$temperature = $roomTemp;
|
||||||
readingsSingleUpdate($hash, 'temperature', sprintf("%0.1f", $temperature), 1);
|
readingsSingleUpdate($hash, 'temperature', sprintf("%0.1f", $temperature), 1);
|
||||||
@ -8806,13 +8806,13 @@ sub EnOcean_Parse($$) {
|
|||||||
# ignore all commands
|
# ignore all commands
|
||||||
if ($waitingCmds ne "summerMode") {
|
if ($waitingCmds ne "summerMode") {
|
||||||
$waitingCmds = "no_change";
|
$waitingCmds = "no_change";
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
}
|
}
|
||||||
$wakeUpCycle = 28800;
|
$wakeUpCycle = 28800;
|
||||||
}
|
}
|
||||||
readingsSingleUpdate($hash, 'wakeUpCycle', $wakeUpCycle, 1);
|
readingsSingleUpdate($hash, 'wakeUpCycle', $wakeUpCycle, 1);
|
||||||
# set alarm timer
|
# set alarm timer
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
if ($waitingCmds ne "standby") {
|
if ($waitingCmds ne "standby") {
|
||||||
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
||||||
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'no_response_from_actuator', 1, 3);
|
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'no_response_from_actuator', 1, 3);
|
||||||
@ -8898,9 +8898,9 @@ sub EnOcean_Parse($$) {
|
|||||||
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
($err, $logLevel, $response) = EnOcean_setPID(undef, $hash, 'stop', undef, 'temperature', 'setpoint', 'Temp');
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpoint";
|
push @event, "3:operationMode:setpoint";
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
} elsif ($waitingCmds eq "setpointTemp") {
|
} elsif ($waitingCmds eq "setpointTemp") {
|
||||||
@ -8919,8 +8919,8 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:setpointTemp:" . sprintf("%0.1f", $setpointTemp);
|
push @event, "3:setpointTemp:" . sprintf("%0.1f", $setpointTemp);
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:setpointTemp";
|
push @event, "3:operationMode:setpointTemp";
|
||||||
#CommandDeleteReading(undef, "$name setpointTempSet");
|
#readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
} elsif ($waitingCmds eq "summerMode") {
|
} elsif ($waitingCmds eq "summerMode") {
|
||||||
@ -8933,10 +8933,10 @@ sub EnOcean_Parse($$) {
|
|||||||
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
readingsSingleUpdate($hash, 'setpointSet', $setpointSet, 1);
|
||||||
push @event, "3:maintenanceMode:off";
|
push @event, "3:maintenanceMode:off";
|
||||||
push @event, "3:operationMode:summerMode";
|
push @event, "3:operationMode:summerMode";
|
||||||
#CommandDeleteReading(undef, "$name setpointSet");
|
#readingsDelete($hash, "setpointSet");
|
||||||
CommandDeleteReading(undef, "$name setpointTemp");
|
readingsDelete($hash, "setpointTemp");
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
} elsif ($operationMode eq "setpoint") {
|
} elsif ($operationMode eq "setpoint") {
|
||||||
@ -9211,7 +9211,6 @@ sub EnOcean_Parse($$) {
|
|||||||
|
|
||||||
} elsif ($st eq "vocSensor.01") {
|
} elsif ($st eq "vocSensor.01") {
|
||||||
# Gas Sensor, VOC Sensor (EEP A5-09-05, A5-09-0C)
|
# Gas Sensor, VOC Sensor (EEP A5-09-05, A5-09-0C)
|
||||||
# [untested]
|
|
||||||
# $db[3]_bit_7 ... $db[2]_bit_0 is the VOC concentration where 0 = 0 ppb ... 65535 = 65535 ppb
|
# $db[3]_bit_7 ... $db[2]_bit_0 is the VOC concentration where 0 = 0 ppb ... 65535 = 65535 ppb
|
||||||
# $db[1] is the VOC identification
|
# $db[1] is the VOC identification
|
||||||
# $db[0]_bit_1 ... $db[0]_bit_0 is the scale multiplier
|
# $db[0]_bit_1 ... $db[0]_bit_0 is the scale multiplier
|
||||||
@ -9270,7 +9269,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:vocName:unknown";
|
push @event, "3:vocName:unknown";
|
||||||
}
|
}
|
||||||
push @event, "3:concentration:$vocConc";
|
push @event, "3:concentration:$vocConc";
|
||||||
push @event, "3:concentrationUnit:" . $db[0] & 4 ? 'ug/m3' : 'ppb';
|
push @event, "1:concentrationUnit:" . ($db[0] & 4 ? 'ug/m3' : 'ppb');
|
||||||
push @event, "3:state:$vocConc";
|
push @event, "3:state:$vocConc";
|
||||||
|
|
||||||
} elsif ($st eq "particlesSensor.01") {
|
} elsif ($st eq "particlesSensor.01") {
|
||||||
@ -9792,7 +9791,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:humidity:$humi";
|
push @event, "3:humidity:$humi";
|
||||||
push @event, "3:temperature:$temp";
|
push @event, "3:temperature:$temp";
|
||||||
push @event, "3:telegramType:" . ($db[0] & 1 ? "event" : "heartbeat");
|
push @event, "3:telegramType:" . ($db[0] & 1 ? "event" : "heartbeat");
|
||||||
CommandDeleteReading(undef, "$name alarm");
|
readingsDelete($hash, "alarm");
|
||||||
if (AttrVal($name, "signOfLife", 'off') eq 'on') {
|
if (AttrVal($name, "signOfLife", 'off') eq 'on') {
|
||||||
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
RemoveInternalTimer($hash->{helper}{timer}{alarm}) if(exists $hash->{helper}{timer}{alarm});
|
||||||
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'dead_sensor', 1, 5);
|
@{$hash->{helper}{timer}{alarm}} = ($hash, 'alarm', 'dead_sensor', 1, 5);
|
||||||
@ -9878,7 +9877,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:temperature:$temperature";
|
push @event, "3:temperature:$temperature";
|
||||||
} else {
|
} else {
|
||||||
$temperature = '-';
|
$temperature = '-';
|
||||||
CommandDeleteReading(undef, "$name temperature");
|
readingsDelete($hash, "temperature");
|
||||||
}
|
}
|
||||||
my $brightness;
|
my $brightness;
|
||||||
if ($db[0] & 1) {
|
if ($db[0] & 1) {
|
||||||
@ -9886,7 +9885,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:brightness:$brightness";
|
push @event, "3:brightness:$brightness";
|
||||||
} else {
|
} else {
|
||||||
$brightness = '-';
|
$brightness = '-';
|
||||||
CommandDeleteReading(undef, "$name brightness");
|
readingsDelete($hash, "brightness");
|
||||||
}
|
}
|
||||||
my $energyStorage = sprintf "%d", ($db[0] >> 4) * 100 / 15;
|
my $energyStorage = sprintf "%d", ($db[0] >> 4) * 100 / 15;
|
||||||
my $battery;
|
my $battery;
|
||||||
@ -11770,7 +11769,7 @@ sub EnOcean_Parse($$) {
|
|||||||
$blinkInterval = $blinkInterval =~ m/^\d+$/ ? $blinkInterval : 0;
|
$blinkInterval = $blinkInterval =~ m/^\d+$/ ? $blinkInterval : 0;
|
||||||
CommandDeleteReading(undef, "$name .*Set");
|
CommandDeleteReading(undef, "$name .*Set");
|
||||||
}
|
}
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
$data = sprintf "80%02X%04X%02X", $waitingCmds, $updateInterval, $blinkInterval;
|
$data = sprintf "80%02X%04X%02X", $waitingCmds, $updateInterval, $blinkInterval;
|
||||||
EnOcean_SndRadio(undef, $hash, $packetType, "D2", $data, AttrVal($name, "subDef", "00000000"), "00", $hash->{DEF});
|
EnOcean_SndRadio(undef, $hash, $packetType, "D2", $data, AttrVal($name, "subDef", "00000000"), "00", $hash->{DEF});
|
||||||
#EnOcean_multisensor_01Snd($ctrl, $hash, $packetType);
|
#EnOcean_multisensor_01Snd($ctrl, $hash, $packetType);
|
||||||
@ -12309,14 +12308,14 @@ sub EnOcean_Parse($$) {
|
|||||||
if ($airQuatity <= 100) {
|
if ($airQuatity <= 100) {
|
||||||
push @event, "3:airQuality1:$airQuatity";
|
push @event, "3:airQuality1:$airQuatity";
|
||||||
} else {
|
} else {
|
||||||
CommandDeleteReading(undef, "$name airQuality1");
|
readingsDelete($hash, "airQuality1");
|
||||||
}
|
}
|
||||||
push @event, "3:deviceMode:" . ($db[9] & 0x80 ? 'slave' : 'master');
|
push @event, "3:deviceMode:" . ($db[9] & 0x80 ? 'slave' : 'master');
|
||||||
$airQuatity = $db[9] & 0x7F;
|
$airQuatity = $db[9] & 0x7F;
|
||||||
if ($airQuatity <= 100) {
|
if ($airQuatity <= 100) {
|
||||||
push @event, "3:airQuality2:$airQuatity";
|
push @event, "3:airQuality2:$airQuatity";
|
||||||
} else {
|
} else {
|
||||||
CommandDeleteReading(undef, "$name airQuality2");
|
readingsDelete($hash, "airQuality2");
|
||||||
}
|
}
|
||||||
my $outdoorTemp = ($db[8] & 0xFE) >> 1;
|
my $outdoorTemp = ($db[8] & 0xFE) >> 1;
|
||||||
#$outdoorTemp -= $outdoorTemp if ($outdoorTemp & 0x40);
|
#$outdoorTemp -= $outdoorTemp if ($outdoorTemp & 0x40);
|
||||||
@ -12410,7 +12409,7 @@ sub EnOcean_Parse($$) {
|
|||||||
push @event, "3:loadLink:" . ($db[1] & 16 ? "connected" : "disconnected");
|
push @event, "3:loadLink:" . ($db[1] & 16 ? "connected" : "disconnected");
|
||||||
push @event, "3:loadOperation:3-wire";
|
push @event, "3:loadOperation:3-wire";
|
||||||
push @event, "3:loadState:" . ($db[1] & 64 ? "on" : "off");
|
push @event, "3:loadState:" . ($db[1] & 64 ? "on" : "off");
|
||||||
CommandDeleteReading(undef, "$name getParam");
|
readingsDelete($hash, "getParam");
|
||||||
} elsif ($getParam == 7) {
|
} elsif ($getParam == 7) {
|
||||||
if ($db[0] & 4) {
|
if ($db[0] & 4) {
|
||||||
push @event, "3:devTempState:warning";
|
push @event, "3:devTempState:warning";
|
||||||
@ -12425,17 +12424,17 @@ sub EnOcean_Parse($$) {
|
|||||||
} else {
|
} else {
|
||||||
push @event, "3:devTemp:" . $db[1];
|
push @event, "3:devTemp:" . $db[1];
|
||||||
}
|
}
|
||||||
CommandDeleteReading(undef, "$name getParam");
|
readingsDelete($hash, "getParam");
|
||||||
} elsif ($getParam == 9) {
|
} elsif ($getParam == 9) {
|
||||||
push @event, "3:voltage:" . sprintf("%.2f", (hex(substr($data, 4, 4)) * 0.01));
|
push @event, "3:voltage:" . sprintf("%.2f", (hex(substr($data, 4, 4)) * 0.01));
|
||||||
CommandDeleteReading(undef, "$name getParam");
|
readingsDelete($hash, "getParam");
|
||||||
} elsif ($getParam == 0x81) {
|
} elsif ($getParam == 0x81) {
|
||||||
$hash->{READINGS}{serialNumber}{VAL} = substr($data, 4, 4);
|
$hash->{READINGS}{serialNumber}{VAL} = substr($data, 4, 4);
|
||||||
$hash->{READINGS}{getParam}{VAL} = 0x82;
|
$hash->{READINGS}{getParam}{VAL} = 0x82;
|
||||||
EnOcean_SndRadio(undef, $hash, $packetType, "D1", "033182", AttrVal($name, "subDef", "00000000"), "00", $hash->{DEF});
|
EnOcean_SndRadio(undef, $hash, $packetType, "D1", "033182", AttrVal($name, "subDef", "00000000"), "00", $hash->{DEF});
|
||||||
} elsif ($getParam == 0x82) {
|
} elsif ($getParam == 0x82) {
|
||||||
push @event, "3:serialNumber:" . $hash->{READINGS}{serialNumber}{VAL} . substr($data, 4, 4);
|
push @event, "3:serialNumber:" . $hash->{READINGS}{serialNumber}{VAL} . substr($data, 4, 4);
|
||||||
CommandDeleteReading(undef, "$name getParam");
|
readingsDelete($hash, "getParam");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elsif ($manufID eq "046") {
|
} elsif ($manufID eq "046") {
|
||||||
@ -14629,7 +14628,7 @@ sub EnOcean_Notify(@) {
|
|||||||
$modules{EnOcean}{defptr}{$attr{$name}{remoteID}} = $hash;
|
$modules{EnOcean}{defptr}{$attr{$name}{remoteID}} = $hash;
|
||||||
}
|
}
|
||||||
if (AttrVal($name ,"subType", "") eq "roomCtrlPanel.00") {
|
if (AttrVal($name ,"subType", "") eq "roomCtrlPanel.00") {
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
}
|
}
|
||||||
if (exists $attr{$name}{subType}) {
|
if (exists $attr{$name}{subType}) {
|
||||||
if ($attr{$name}{subType} =~ m/^hvac\.0(1|4|6)$/) {
|
if ($attr{$name}{subType} =~ m/^hvac\.0(1|4|6)$/) {
|
||||||
@ -14657,7 +14656,7 @@ sub EnOcean_Notify(@) {
|
|||||||
$modules{EnOcean}{defptr}{$attr{$name}{remoteID}} = $hash;
|
$modules{EnOcean}{defptr}{$attr{$name}{remoteID}} = $hash;
|
||||||
}
|
}
|
||||||
if (AttrVal($name ,"subType", "") eq "roomCtrlPanel.00") {
|
if (AttrVal($name ,"subType", "") eq "roomCtrlPanel.00") {
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
}
|
}
|
||||||
if (exists $attr{$name}{subType}) {
|
if (exists $attr{$name}{subType}) {
|
||||||
if ($attr{$name}{subType} =~ m/^hvac\.0(1|4|6)$/) {
|
if ($attr{$name}{subType} =~ m/^hvac\.0(1|4|6)$/) {
|
||||||
@ -15202,7 +15201,6 @@ sub EnOcean_calcPID($) {
|
|||||||
my $dPortion = ReadingsVal($name, 'p_d', "");
|
my $dPortion = ReadingsVal($name, 'p_d', "");
|
||||||
my $stateStr = "";
|
my $stateStr = "";
|
||||||
readingsDelete($hash, 'pidAlarm');
|
readingsDelete($hash, 'pidAlarm');
|
||||||
#CommandDeleteReading(undef, "$name pidAlarm");
|
|
||||||
my $deltaOld = ReadingsVal($name, 'delta', 0);
|
my $deltaOld = ReadingsVal($name, 'delta', 0);
|
||||||
my $delta = "";
|
my $delta = "";
|
||||||
my $deltaGradient = $hash->{helper}{deltaGradient} ? $hash->{helper}{deltaGradient} : 0;
|
my $deltaGradient = $hash->{helper}{deltaGradient} ? $hash->{helper}{deltaGradient} : 0;
|
||||||
@ -15552,9 +15550,7 @@ EnOcean_roomCtrlPanel_00Snd($$$$$$$$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# generate command to Room Control Panel (EEP D2-10-xx)
|
# generate command to Room Control Panel (EEP D2-10-xx)
|
||||||
sub
|
sub EnOcean_roomCtrlPanel_00Cmd($$$$) {
|
||||||
EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|
||||||
{
|
|
||||||
my ($ctrl, $hash, $mcf, $messagePart) = @_;
|
my ($ctrl, $hash, $mcf, $messagePart) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $data = "0000";
|
my $data = "0000";
|
||||||
@ -15581,22 +15577,22 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
if (defined ReadingsVal($name, "setpointComfortTempSet", undef)) {
|
if (defined ReadingsVal($name, "setpointComfortTempSet", undef)) {
|
||||||
$db1 = ReadingsVal($name, "setpointComfortTempSet", 0) * 255 / 40;
|
$db1 = ReadingsVal($name, "setpointComfortTempSet", 0) * 255 / 40;
|
||||||
$db0 = $db0 | 1;
|
$db0 = $db0 | 1;
|
||||||
CommandDeleteReading(undef, "$name setpointComfortTempSet");
|
readingsDelete($hash, "setpointComfortTempSet");
|
||||||
}
|
}
|
||||||
if (defined ReadingsVal($name, "setpointEconomyTempSet", undef)) {
|
if (defined ReadingsVal($name, "setpointEconomyTempSet", undef)) {
|
||||||
$db2 = ReadingsVal($name, "setpointEconomyTempSet", 0) * 255 / 40;
|
$db2 = ReadingsVal($name, "setpointEconomyTempSet", 0) * 255 / 40;
|
||||||
$db0 = $db0 | 2;
|
$db0 = $db0 | 2;
|
||||||
CommandDeleteReading(undef, "$name setpointEconomyTempSet");
|
readingsDelete($hash, "setpointEconomyTempSet");
|
||||||
}
|
}
|
||||||
if (defined ReadingsVal($name, "setpointPreComfortTempSet", undef)) {
|
if (defined ReadingsVal($name, "setpointPreComfortTempSet", undef)) {
|
||||||
$db3 = ReadingsVal($name, "setpointPreComfortTempSet", 0) * 255 / 40;
|
$db3 = ReadingsVal($name, "setpointPreComfortTempSet", 0) * 255 / 40;
|
||||||
$db0 = $db0 | 4;
|
$db0 = $db0 | 4;
|
||||||
CommandDeleteReading(undef, "$name setpointPreComfortTempSet");
|
readingsDelete($hash, "setpointPreComfortTempSet");
|
||||||
}
|
}
|
||||||
if (defined ReadingsVal($name, "setpointBuildingProtectionTempSet", undef)) {
|
if (defined ReadingsVal($name, "setpointBuildingProtectionTempSet", undef)) {
|
||||||
$db4 = ReadingsVal($name, "setpointBuildingProtectionTempSet", 0) * 255 / 40;
|
$db4 = ReadingsVal($name, "setpointBuildingProtectionTempSet", 0) * 255 / 40;
|
||||||
$db0 = $db0 | 8;
|
$db0 = $db0 | 8;
|
||||||
CommandDeleteReading(undef, "$name setpointBuildingProtectionTempSet");
|
readingsDelete($hash, "setpointBuildingProtectionTempSet");
|
||||||
}
|
}
|
||||||
$data = sprintf "%02X%02X%02X%02X%02X%02X", $db5, $db4, $db3, $db2, $db1, $db0;
|
$data = sprintf "%02X%02X%02X%02X%02X%02X", $db5, $db4, $db3, $db2, $db1, $db0;
|
||||||
# clear command
|
# clear command
|
||||||
@ -15688,7 +15684,7 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
if (defined ReadingsVal($name, "setpointTempSet", undef)) {
|
if (defined ReadingsVal($name, "setpointTempSet", undef)) {
|
||||||
$db1 = ReadingsVal($name, "setpointTempSet", 0) * 255 / 40;
|
$db1 = ReadingsVal($name, "setpointTempSet", 0) * 255 / 40;
|
||||||
$db2 |= 2;
|
$db2 |= 2;
|
||||||
CommandDeleteReading(undef, "$name setpointTempSet");
|
readingsDelete($hash, "setpointTempSet");
|
||||||
}
|
}
|
||||||
|
|
||||||
my $heatingSet;
|
my $heatingSet;
|
||||||
@ -15707,7 +15703,7 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
$heatingSet = 3;
|
$heatingSet = 3;
|
||||||
}
|
}
|
||||||
$db2 |= $heatingSet << 4;
|
$db2 |= $heatingSet << 4;
|
||||||
CommandDeleteReading(undef, "$name heatingSet");
|
readingsDelete($hash, "heatingSet");
|
||||||
|
|
||||||
my $coolingSet;
|
my $coolingSet;
|
||||||
if (defined ReadingsVal($name, "coolingSet", undef)) {
|
if (defined ReadingsVal($name, "coolingSet", undef)) {
|
||||||
@ -15725,7 +15721,7 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
$coolingSet = 3;
|
$coolingSet = 3;
|
||||||
}
|
}
|
||||||
$db2 |= $coolingSet << 6;
|
$db2 |= $coolingSet << 6;
|
||||||
CommandDeleteReading(undef, "$name coolingSet");
|
readingsDelete($hash, "coolingSet");
|
||||||
|
|
||||||
my $roomCtrlModeSet;
|
my $roomCtrlModeSet;
|
||||||
if (defined ReadingsVal($name, "roomCtrlModeSet", undef)) {
|
if (defined ReadingsVal($name, "roomCtrlModeSet", undef)) {
|
||||||
@ -15743,7 +15739,7 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
$roomCtrlModeSet = 3;
|
$roomCtrlModeSet = 3;
|
||||||
}
|
}
|
||||||
$db2 |= $roomCtrlModeSet << 2;
|
$db2 |= $roomCtrlModeSet << 2;
|
||||||
CommandDeleteReading(undef, "$name roomCtrlModeSet");
|
readingsDelete($hash, "roomCtrlModeSet");
|
||||||
|
|
||||||
my $windowSet;
|
my $windowSet;
|
||||||
if (defined ReadingsVal($name, "windowSet", undef)) {
|
if (defined ReadingsVal($name, "windowSet", undef)) {
|
||||||
@ -15761,7 +15757,7 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
$windowSet = 3;
|
$windowSet = 3;
|
||||||
}
|
}
|
||||||
$db4 |= $windowSet;
|
$db4 |= $windowSet;
|
||||||
CommandDeleteReading(undef, "$name windowSet");
|
readingsDelete($hash, "windowSet");
|
||||||
|
|
||||||
my $fanSpeedModeSet;
|
my $fanSpeedModeSet;
|
||||||
if (defined ReadingsVal($name, "fanSpeedModeSet", undef)) {
|
if (defined ReadingsVal($name, "fanSpeedModeSet", undef)) {
|
||||||
@ -15770,12 +15766,12 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
$fanSpeedModeSet = ReadingsVal($name, "fanSpeedMode", 0);
|
$fanSpeedModeSet = ReadingsVal($name, "fanSpeedMode", 0);
|
||||||
}
|
}
|
||||||
$db4 |= 64 if ($fanSpeedModeSet eq "local");
|
$db4 |= 64 if ($fanSpeedModeSet eq "local");
|
||||||
CommandDeleteReading(undef, "$name fanSpeedModeSet");
|
readingsDelete($hash, "fanSpeedModeSet");
|
||||||
|
|
||||||
if (defined ReadingsVal($name, "fanSpeedSet", undef)) {
|
if (defined ReadingsVal($name, "fanSpeedSet", undef)) {
|
||||||
$db5 = ReadingsVal($name, "fanSpeedSet", 0);
|
$db5 = ReadingsVal($name, "fanSpeedSet", 0);
|
||||||
$db4 |= 128;
|
$db4 |= 128;
|
||||||
CommandDeleteReading(undef, "$name fanSpeedSet");
|
readingsDelete($hash, "fanSpeedSet");
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = sprintf "%02X%02X%02X%02X%02X%02X%02X%02X", $db7, $db6, $db5, $db4, $db3, $db2, $db1, $db0;
|
$data = sprintf "%02X%02X%02X%02X%02X%02X%02X%02X", $db7, $db6, $db5, $db4, $db3, $db2, $db1, $db0;
|
||||||
@ -15884,7 +15880,7 @@ EnOcean_roomCtrlPanel_00Cmd($$$$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($waitingCmds == 0) {
|
if ($waitingCmds == 0) {
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
readingsDelete($hash, "waitingCmds");
|
||||||
} else {
|
} else {
|
||||||
readingsSingleUpdate($hash, "waitingCmds", $waitingCmds, 0);
|
readingsSingleUpdate($hash, "waitingCmds", $waitingCmds, 0);
|
||||||
}
|
}
|
||||||
@ -16358,8 +16354,7 @@ sub EnOcean_ReadingScaled($$$$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Reorganize Strings
|
# Reorganize Strings
|
||||||
sub EnOcean_ReorgList($)
|
sub EnOcean_ReorgList($) {
|
||||||
{
|
|
||||||
my ($list) = @_;
|
my ($list) = @_;
|
||||||
my @list = split("[ \t][ \t]*", $list);
|
my @list = split("[ \t][ \t]*", $list);
|
||||||
my %list;
|
my %list;
|
||||||
@ -16369,15 +16364,13 @@ sub EnOcean_ReorgList($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# EnOcean_Set called from sub InternalTimer()
|
# EnOcean_Set called from sub InternalTimer()
|
||||||
sub EnOcean_TimerSet($)
|
sub EnOcean_TimerSet($) {
|
||||||
{
|
|
||||||
my ($par) = @_;
|
my ($par) = @_;
|
||||||
EnOcean_Set($par->{hash}, @{$par->{timerCmd}});
|
EnOcean_Set($par->{hash}, @{$par->{timerCmd}});
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_InternalTimer($$$$$)
|
sub EnOcean_InternalTimer($$$$$) {
|
||||||
{
|
|
||||||
my ($modifier, $tim, $callback, $hash, $waitIfInitNotDone) = @_;
|
my ($modifier, $tim, $callback, $hash, $waitIfInitNotDone) = @_;
|
||||||
my $mHash = {};
|
my $mHash = {};
|
||||||
my $timerName = "$hash->{NAME}_$modifier";
|
my $timerName = "$hash->{NAME}_$modifier";
|
||||||
@ -16399,8 +16392,7 @@ sub EnOcean_InternalTimer($$$$$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_RemoveInternalTimer($$)
|
sub EnOcean_RemoveInternalTimer($$) {
|
||||||
{
|
|
||||||
my ($modifier, $hash) = @_;
|
my ($modifier, $hash) = @_;
|
||||||
my $mHash = {};
|
my $mHash = {};
|
||||||
my $timerName = "$hash->{NAME}_$modifier";
|
my $timerName = "$hash->{NAME}_$modifier";
|
||||||
@ -16418,8 +16410,7 @@ sub EnOcean_RemoveInternalTimer($$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_observeInit($$@)
|
sub EnOcean_observeInit($$@) {
|
||||||
{
|
|
||||||
#init observe
|
#init observe
|
||||||
my ($ctrl, $hash, @cmdValue) = @_;
|
my ($ctrl, $hash, @cmdValue) = @_;
|
||||||
my ($err, $name) = (undef, $hash->{NAME});
|
my ($err, $name) = (undef, $hash->{NAME});
|
||||||
@ -16456,8 +16447,7 @@ sub EnOcean_observeInit($$@)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_observeParse($$@)
|
sub EnOcean_observeParse($$@) {
|
||||||
{
|
|
||||||
# observe acknowledge
|
# observe acknowledge
|
||||||
my ($ctrl, $hash, @cmdValue) = @_;
|
my ($ctrl, $hash, @cmdValue) = @_;
|
||||||
my ($err, $name) = (undef, $hash->{NAME});
|
my ($err, $name) = (undef, $hash->{NAME});
|
||||||
@ -16515,8 +16505,7 @@ sub EnOcean_observeParse($$@)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_observeRepeat($)
|
sub EnOcean_observeRepeat($) {
|
||||||
{
|
|
||||||
#timer expires without acknowledgment telegram, repeat command
|
#timer expires without acknowledgment telegram, repeat command
|
||||||
my ($functionHash) = @_;
|
my ($functionHash) = @_;
|
||||||
my $hash = $functionHash->{hash};
|
my $hash = $functionHash->{hash};
|
||||||
@ -16736,15 +16725,14 @@ sub EnOcean_RLTResult($$$$) {
|
|||||||
readingsBulkUpdate($hash, 'rssiMasterAvg', (sprintf "%0.1f", $rssiMasterAvg / $msgCntr));
|
readingsBulkUpdate($hash, 'rssiMasterAvg', (sprintf "%0.1f", $rssiMasterAvg / $msgCntr));
|
||||||
readingsEndUpdate($hash, 1);
|
readingsEndUpdate($hash, 1);
|
||||||
} else {
|
} else {
|
||||||
CommandDeleteReading(undef, "$name msgLost");
|
readingsDelete($hash, "msgLost");
|
||||||
CommandDeleteReading(undef, "$name rssiMasterAvg");
|
readingsDelete($hash, "rssiMasterAvg");
|
||||||
}
|
}
|
||||||
return ($err, $logLevel, $response);
|
return ($err, $logLevel, $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_energyManagement_01Parse($@)
|
sub EnOcean_energyManagement_01Parse($@) {
|
||||||
{
|
|
||||||
my ($hash, @db) = @_;
|
my ($hash, @db) = @_;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
# [drLevel] = 15 : no requests for reduction in power consumptions
|
# [drLevel] = 15 : no requests for reduction in power consumptions
|
||||||
@ -16793,7 +16781,7 @@ sub EnOcean_energyManagement_01Parse($@)
|
|||||||
$month = $month < 10 ? $ month = "0". $month : $month;
|
$month = $month < 10 ? $ month = "0". $month : $month;
|
||||||
readingsBulkUpdate($hash, "timeout", "$year-$month-$day $hour:$min:$sec");
|
readingsBulkUpdate($hash, "timeout", "$year-$month-$day $hour:$min:$sec");
|
||||||
} else {
|
} else {
|
||||||
CommandDeleteReading(undef, "$name timeout");
|
readingsDelete($hash, "timeout");
|
||||||
}
|
}
|
||||||
if ($randomStart eq "yes" && ReadingsVal($name, "level", 15) == 15) {
|
if ($randomStart eq "yes" && ReadingsVal($name, "level", 15) == 15) {
|
||||||
readingsBulkUpdate($hash, "state", "waiting_for_start");
|
readingsBulkUpdate($hash, "state", "waiting_for_start");
|
||||||
@ -16811,8 +16799,7 @@ sub EnOcean_energyManagement_01Parse($@)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_demandResponseExec($)
|
sub EnOcean_demandResponseExec($) {
|
||||||
{
|
|
||||||
my ($functionHash) = @_;
|
my ($functionHash) = @_;
|
||||||
my $function = $functionHash->{function};
|
my $function = $functionHash->{function};
|
||||||
my $hash = $functionHash->{hash};
|
my $hash = $functionHash->{hash};
|
||||||
@ -16862,8 +16849,7 @@ sub EnOcean_demandResponseExec($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
sub EnOcean_demandResponseTimeout($)
|
sub EnOcean_demandResponseTimeout($) {
|
||||||
{
|
|
||||||
my ($functionHash) = @_;
|
my ($functionHash) = @_;
|
||||||
my $function = $functionHash->{function};
|
my $function = $functionHash->{function};
|
||||||
my $hash = $functionHash->{hash};
|
my $hash = $functionHash->{hash};
|
||||||
@ -16872,7 +16858,7 @@ sub EnOcean_demandResponseTimeout($)
|
|||||||
my $data;
|
my $data;
|
||||||
my $timeoutLevel = AttrVal($name, "demandRespTimeoutLevel", "max");
|
my $timeoutLevel = AttrVal($name, "demandRespTimeoutLevel", "max");
|
||||||
RemoveInternalTimer($functionHash);
|
RemoveInternalTimer($functionHash);
|
||||||
CommandDeleteReading(undef, "$name timeout");
|
readingsDelete($hash, "timeout");
|
||||||
my $drLevel = 15;
|
my $drLevel = 15;
|
||||||
my $powerUsage = 100;
|
my $powerUsage = 100;
|
||||||
my $powerUsageLevel = "max";
|
my $powerUsageLevel = "max";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user