mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 20:17:45 +00:00
10_EnOcean: profile hvac.06 changed
git-svn-id: https://svn.fhem.de/fhem/trunk@18405 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
8d7196caef
commit
d421c9a208
@ -301,7 +301,7 @@ my %EnO_eepConfig = (
|
|||||||
#"A5.20.02" => {attr => {subType => "hvac.02"}},
|
#"A5.20.02" => {attr => {subType => "hvac.02"}},
|
||||||
#"A5.20.03" => {attr => {subType => "hvac.03"}},
|
#"A5.20.03" => {attr => {subType => "hvac.03"}},
|
||||||
"A5.20.04" => {attr => {subType => "hvac.04", webCmd => "setpointTemp"}, GPLOT => "EnO_A5-20-04:Temp/FeedTemp,EnO_A5-20-04_2:SetpointTemp/Setpoint,EnO_A5-20-04_3:PID,"},
|
"A5.20.04" => {attr => {subType => "hvac.04", webCmd => "setpointTemp"}, GPLOT => "EnO_A5-20-04:Temp/FeedTemp,EnO_A5-20-04_2:SetpointTemp/Setpoint,EnO_A5-20-04_3:PID,"},
|
||||||
"A5.20.06" => {attr => {subType => "hvac.06", webCmd => "setpointTemp"}, GPLOT => "EnO_A5-20-06:Temp/SetpointTemp/FeetTemp/RoomTemp/Setpoint,EnO_A5-20-06_2:PID,"},
|
"A5.20.06" => {attr => {subType => "hvac.06", webCmd => "setpointTemp"}, GPLOT => "EnO_A5-20-06:Temp/SetpointTemp/FeedTemp/RoomTemp/Setpoint,EnO_A5-20-06_2:PID,"},
|
||||||
"A5.20.10" => {attr => {subType => "hvac.10", comMode => "biDir", destinationID => "unicast", subDef => "getNextID"}, GPLOT => "EnO_A5-20-10:FanSpeed,"},
|
"A5.20.10" => {attr => {subType => "hvac.10", comMode => "biDir", destinationID => "unicast", subDef => "getNextID"}, GPLOT => "EnO_A5-20-10:FanSpeed,"},
|
||||||
"A5.20.11" => {attr => {subType => "hvac.11", comMode => "biDir", destinationID => "unicast", subDef => "getNextID"}},
|
"A5.20.11" => {attr => {subType => "hvac.11", comMode => "biDir", destinationID => "unicast", subDef => "getNextID"}},
|
||||||
#"A5.20.12" => {attr => {subType => "hvac.12"}},
|
#"A5.20.12" => {attr => {subType => "hvac.12"}},
|
||||||
@ -705,7 +705,7 @@ EnOcean_Initialize($)
|
|||||||
"displayContent:default,humidity,off,setpointTemp,tempertureExtern,temperatureIntern,time,no_change " .
|
"displayContent:default,humidity,off,setpointTemp,tempertureExtern,temperatureIntern,time,no_change " .
|
||||||
"displayOrientation:0,90,180,270 " .
|
"displayOrientation:0,90,180,270 " .
|
||||||
"eep gpDef gwCmd:" . join(",", sort @EnO_gwCmd) . " humitity humidityRefDev " .
|
"eep gpDef gwCmd:" . join(",", sort @EnO_gwCmd) . " humitity humidityRefDev " .
|
||||||
"keyRcv keySnd macAlgo:no,3,4 measurementCtrl:disable,enable " .
|
"keyRcv keySnd macAlgo:no,3,4 measurementCtrl:disable,enable measurementTypeSelect:feed,room " .
|
||||||
"manufID:" . join(",", sort keys %EnO_manuf) . " " .
|
"manufID:" . join(",", sort keys %EnO_manuf) . " " .
|
||||||
"model:" . join(",", sort keys %EnO_models) . " " .
|
"model:" . join(",", sort keys %EnO_models) . " " .
|
||||||
"observe:on,off observeCmdRepetition:1,2,3,4,5 observeErrorAction observeInterval observeLogic:and,or " .
|
"observe:on,off observeCmdRepetition:1,2,3,4,5 observeErrorAction observeInterval observeLogic:and,or " .
|
||||||
@ -8303,15 +8303,19 @@ sub EnOcean_Parse($$)
|
|||||||
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);
|
||||||
my $setpointTempLocal = $db[2] & 0x7F;
|
my $setpointTempLocal = $db[2] & 0x7F;
|
||||||
if ($db[2] & 0x80) {
|
if ($setpointTempSet == $setpointTemp) {
|
||||||
$setpointTempLocal = $setpointTempLocal / 2;
|
# setpointTempSet has not been changed by Fhem
|
||||||
} else {
|
if ($db[2] & 0x80) {
|
||||||
$setpointTempLocal = $setpointTempSet + $setpointTempOffset{$setpointTempLocal};
|
$setpointTempLocal = $setpointTempLocal / 2;
|
||||||
}
|
} else {
|
||||||
if (AttrVal($name, "blockKey", 'no') eq 'no') {
|
$setpointTempLocal = $setpointTempSet + $setpointTempOffset{$setpointTempLocal};
|
||||||
$setpointTempSet = $setpointTempLocal;
|
}
|
||||||
readingsSingleUpdate($hash, 'setpointTempSet', $setpointTempSet, 1);
|
if (AttrVal($name, "blockKey", 'no') eq 'no') {
|
||||||
|
$setpointTempSet = $setpointTempLocal;
|
||||||
|
readingsSingleUpdate($hash, 'setpointTempSet', $setpointTempSet, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
@ -8460,6 +8464,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 setpointTempSet");
|
||||||
CommandDeleteReading(undef, "$name waitingCmds");
|
CommandDeleteReading(undef, "$name waitingCmds");
|
||||||
$waitingCmds = 0;
|
$waitingCmds = 0;
|
||||||
|
|
||||||
@ -8541,17 +8546,17 @@ sub EnOcean_Parse($$)
|
|||||||
} else {
|
} else {
|
||||||
$wakeUpCycle = 0x70;
|
$wakeUpCycle = 0x70;
|
||||||
}
|
}
|
||||||
my $measurementCtrl = 0;
|
my $measurementTypeSelect = 0;
|
||||||
if (AttrVal($name, "measurementCtrl", "enable") eq 'disable') {
|
if (AttrVal($name, "measurementTypeSelect", "room") eq 'feed') {
|
||||||
if (AttrVal($name, "pidCtrl", 'on') eq 'on' && defined AttrVal($name, "temperatureRefDev", undef)) {
|
if (AttrVal($name, "pidCtrl", 'on') eq 'on' && defined(AttrVal($name, "temperatureRefDev", undef))) {
|
||||||
$measurementCtrl = 2;
|
$measurementTypeSelect = 2;
|
||||||
} elsif (AttrVal($name, "pidCtrl", 'on') eq 'off') {
|
} elsif (AttrVal($name, "pidCtrl", 'on') eq 'off') {
|
||||||
$measurementCtrl = 2;
|
$measurementTypeSelect = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
push @event, "3:state:T: " . sprintf("%0.1f", $temperature) . " SPT: " . sprintf("%.1f", $setpointTemp) . " SP: $setpoint";
|
push @event, "3:state:T: " . sprintf("%0.1f", $temperature) . " SPT: " . sprintf("%.1f", $setpointTemp) . " SP: $setpoint";
|
||||||
# sent message to the actuator
|
# sent message to the actuator
|
||||||
$data = sprintf "%02X%02X%02X08", $setpointSet, $db[2], $waitingCmds | $wakeUpCycle | $summerMode | $setpointSelect | $measurementCtrl | $functionSelect;
|
$data = sprintf "%02X%02X%02X08", $setpointSet, $db[2], $waitingCmds | $wakeUpCycle | $summerMode | $setpointSelect | $measurementTypeSelect | $functionSelect;
|
||||||
EnOcean_SndRadio(undef, $hash, $packetType, "A5", $data, $subDef, "00", $hash->{DEF});
|
EnOcean_SndRadio(undef, $hash, $packetType, "A5", $data, $subDef, "00", $hash->{DEF});
|
||||||
|
|
||||||
} elsif ($st eq "hvac.10") {
|
} elsif ($st eq "hvac.10") {
|
||||||
@ -13042,6 +13047,13 @@ sub EnOcean_Attr(@)
|
|||||||
$err = "attribute-value [$attrName] = $attrVal wrong";
|
$err = "attribute-value [$attrName] = $attrVal wrong";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} elsif ($attrName eq "measurementTypeSelect") {
|
||||||
|
if (!defined $attrVal){
|
||||||
|
|
||||||
|
} elsif ($attrVal !~ m/^feed|room$/) {
|
||||||
|
$err = "attribute-value [$attrName] = $attrVal wrong";
|
||||||
|
}
|
||||||
|
|
||||||
} elsif ($attrName eq "observe") {
|
} elsif ($attrName eq "observe") {
|
||||||
if (!defined $attrVal){
|
if (!defined $attrVal){
|
||||||
|
|
||||||
@ -13913,11 +13925,11 @@ sub EnOcean_Notify(@)
|
|||||||
if (defined(AttrVal($name, "temperatureRefDev", undef)) &&
|
if (defined(AttrVal($name, "temperatureRefDev", undef)) &&
|
||||||
$devName eq AttrVal($name, "temperatureRefDev", "") &&
|
$devName eq AttrVal($name, "temperatureRefDev", "") &&
|
||||||
$parts[0] eq "temperature") {
|
$parts[0] eq "temperature") {
|
||||||
if (AttrVal($name, "subType", "") eq "hvac.01") {
|
if (AttrVal($name, "subType", "") =~ m/^hvac\.0(1|6)$/) {
|
||||||
readingsSingleUpdate($hash, "temperature", $parts[1], 1);
|
readingsSingleUpdate($hash, "temperature", $parts[1], 1);
|
||||||
#Log3 $name, 2, "EnOcean $name <notify> $devName $s";
|
#Log3 $name, 2, "EnOcean $name <notify> $devName $s";
|
||||||
}
|
}
|
||||||
if (AttrVal($name, "subType", "") =~ m/^hvac\.0(4|6)$/ && AttrVal($name, "measurementCtrl", "enable") eq 'disable') {
|
if (AttrVal($name, "subType", "") eq "hvac.04" && AttrVal($name, "measurementCtrl", "enable") eq 'disable') {
|
||||||
readingsSingleUpdate($hash, "temperature", $parts[1], 1);
|
readingsSingleUpdate($hash, "temperature", $parts[1], 1);
|
||||||
#Log3 $name, 2, "EnOcean $name <notify> $devName $s";
|
#Log3 $name, 2, "EnOcean $name <notify> $devName $s";
|
||||||
}
|
}
|
||||||
@ -17848,7 +17860,7 @@ EnOcean_Delete($$)
|
|||||||
The Heating Radiator Actuating Drive is configured using the following attributes:<br>
|
The Heating Radiator Actuating Drive is configured using the following attributes:<br>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#EnOcean_blockKey">blockKey</a></li>
|
<li><a href="#EnOcean_blockKey">blockKey</a></li>
|
||||||
<li><a href="#EnOcean_measurementCtrl">measurementCtrl</a></li>
|
<li><a href="#EnOcean_measurementTypeSelect">measurementTypeSelect</a></li>
|
||||||
<li><a href="#model">model</a></li>
|
<li><a href="#model">model</a></li>
|
||||||
<li><a href="#EnOcean_pidActorCallBeforeSetting">pidActorCallBeforeSetting</a></li>
|
<li><a href="#EnOcean_pidActorCallBeforeSetting">pidActorCallBeforeSetting</a></li>
|
||||||
<li><a href="#EnOcean_pidActorErrorAction">pidActorErrorAction</a></li>
|
<li><a href="#EnOcean_pidActorErrorAction">pidActorErrorAction</a></li>
|
||||||
@ -17878,6 +17890,8 @@ EnOcean_Delete($$)
|
|||||||
The attr subType must be hvac.06. This is done if the device was
|
The attr subType must be hvac.06. This is done if the device was
|
||||||
created by autocreate. To control the device, it must be bidirectional paired,
|
created by autocreate. To control the device, it must be bidirectional paired,
|
||||||
see <a href="#EnOcean_teach-in">Teach-In / Teach-Out</a>.<br>
|
see <a href="#EnOcean_teach-in">Teach-In / Teach-Out</a>.<br>
|
||||||
|
The actuator has an internal PID controller. This function is activated by
|
||||||
|
attr <device> pidCtrl off.<br>
|
||||||
The command is not sent until the device wakes up and sends a message, usually
|
The command is not sent until the device wakes up and sends a message, usually
|
||||||
every 2 to 10 minutes.
|
every 2 to 10 minutes.
|
||||||
</li>
|
</li>
|
||||||
@ -19090,10 +19104,15 @@ EnOcean_Delete($$)
|
|||||||
Manufacturer ID number
|
Manufacturer ID number
|
||||||
</li>
|
</li>
|
||||||
<li><a name="EnOcean_measurementCtrl">measurementCtrl</a> enable|disable<br>
|
<li><a name="EnOcean_measurementCtrl">measurementCtrl</a> enable|disable<br>
|
||||||
Enable or disable the temperature measurements (room temperature) of the actuator. If the temperature
|
Enable or disable the temperature measurements of the actuator. If the temperature
|
||||||
measurements are turned off, the foot temperature may be displayed and an external temperature sensor must be exists, see attribute
|
measurements are turned off, the foot temperature may be displayed and an external temperature sensor must be exists, see attribute
|
||||||
<a href="#temperatureRefDev">temperatureRefDev</a>.
|
<a href="#temperatureRefDev">temperatureRefDev</a>.
|
||||||
</li>
|
</li>
|
||||||
|
<li><a name="EnOcean_measurementTypeSelect">measurementTypeSelect</a> foot|room<br>
|
||||||
|
Select the temperature measurements type displayed by the actuator. If the temperature
|
||||||
|
measurements are turned to foot, the foot temperature may be displayed and an external
|
||||||
|
temperature sensor must be exists, see attribute <a href="#temperatureRefDev">temperatureRefDev</a>.
|
||||||
|
</li>
|
||||||
<li><a href="#model">model</a></li>
|
<li><a href="#model">model</a></li>
|
||||||
<li><a name="EnOcean_observe">observe</a> off|on, [observe] = off is default.<br>
|
<li><a name="EnOcean_observe">observe</a> off|on, [observe] = off is default.<br>
|
||||||
Observing and repeating the execution of set commands
|
Observing and repeating the execution of set commands
|
||||||
|
Loading…
x
Reference in New Issue
Block a user