diff --git a/contrib/HMCCU/FHEM/88_HMCCU.pm b/contrib/HMCCU/FHEM/88_HMCCU.pm
index 0ed80d4af..5669d9c62 100644
--- a/contrib/HMCCU/FHEM/88_HMCCU.pm
+++ b/contrib/HMCCU/FHEM/88_HMCCU.pm
@@ -4,7 +4,7 @@
#
# $Id: 88_HMCCU.pm 18745 2019-02-26 17:33:23Z zap $
#
-# Version 4.4.051
+# Version 4.4.052
#
# Module for communication between FHEM and Homematic CCU2/3.
#
@@ -41,22 +41,23 @@ use SetExtensions;
use HMCCUConf;
# Import configuration data
-my $HMCCU_STATECONTROL = \%HMCCUConf::HMCCU_STATECONTROL;
-my $HMCCU_READINGS = \%HMCCUConf::HMCCU_READINGS;
-my $HMCCU_ROLECMDS = \%HMCCUConf::HMCCU_ROLECMDS;
-my $HMCCU_GETROLECMDS = \%HMCCUConf::HMCCU_GETROLECMDS;
-my $HMCCU_ATTR = \%HMCCUConf::HMCCU_ATTR;
-my $HMCCU_CONVERSIONS = \%HMCCUConf::HMCCU_CONVERSIONS;
-my $HMCCU_CHN_DEFAULTS = \%HMCCUConf::HMCCU_CHN_DEFAULTS;
-my $HMCCU_DEV_DEFAULTS = \%HMCCUConf::HMCCU_DEV_DEFAULTS;
-my $HMCCU_SCRIPTS = \%HMCCUConf::HMCCU_SCRIPTS;
+my $HMCCU_CONFIG_VERSION = $HMCCUConf::HMCCU_CONFIG_VERSION;
+my $HMCCU_STATECONTROL = \%HMCCUConf::HMCCU_STATECONTROL;
+my $HMCCU_READINGS = \%HMCCUConf::HMCCU_READINGS;
+my $HMCCU_ROLECMDS = \%HMCCUConf::HMCCU_ROLECMDS;
+my $HMCCU_GETROLECMDS = \%HMCCUConf::HMCCU_GETROLECMDS;
+my $HMCCU_ATTR = \%HMCCUConf::HMCCU_ATTR;
+my $HMCCU_CONVERSIONS = \%HMCCUConf::HMCCU_CONVERSIONS;
+my $HMCCU_CHN_DEFAULTS = \%HMCCUConf::HMCCU_CHN_DEFAULTS;
+my $HMCCU_DEV_DEFAULTS = \%HMCCUConf::HMCCU_DEV_DEFAULTS;
+my $HMCCU_SCRIPTS = \%HMCCUConf::HMCCU_SCRIPTS;
# Custom configuration data
my %HMCCU_CUST_CHN_DEFAULTS;
my %HMCCU_CUST_DEV_DEFAULTS;
# HMCCU version
-my $HMCCU_VERSION = '4.4.051';
+my $HMCCU_VERSION = '4.4.052';
# Timeout for CCU requests (seconds)
my $HMCCU_TIMEOUT_REQUEST = 4;
@@ -460,6 +461,7 @@ sub HMCCU_Define ($$)
}
$hash->{version} = $HMCCU_VERSION;
+ $hash->{config} = $HMCCU_CONFIG_VERSION;
$hash->{ccutype} = 'CCU2/3';
$hash->{RPCState} = 'inactive';
$hash->{NOTIFYDEV} = 'global,TYPE=(HMCCU|HMCCUDEV|HMCCUCHN)';
@@ -3354,7 +3356,7 @@ sub HMCCU_GetChannelRole ($;$)
else {
my ($sc, $sd, $cc, $cd) = HMCCU_GetSpecialDatapoints ($clHash);
$chnNo = $cc;
- }
+ }
}
if (defined($chnNo) && $chnNo ne '') {
foreach my $role (split(',', $clHash->{hmccu}{role})) {
@@ -3587,8 +3589,10 @@ sub HMCCU_DeviceDescToStr ($$)
$devDesc = HMCCU_GetDeviceDesc ($ioHash, $a, $iface);
return undef if (!defined($devDesc));
+ my $channelType = $devDesc->{TYPE};
+ my $status = exists($HMCCU_STATECONTROL->{$channelType}) ? ' known' : '';
$result .= $a eq $devAddr ? "Device $a" : "Channel $a";
- $result .= " $devDesc->{_name} [$devDesc->{TYPE}]\n";
+ $result .= " $devDesc->{_name} [$channelType]$status\n";
foreach my $n (sort keys %{$devDesc}) {
next if ($n =~ /^_/ || $n =~ /^(ADDRESS|TYPE|INDEX|VERSION)$/ ||
!defined($devDesc->{$n}) || $devDesc->{$n} eq '');
@@ -6123,6 +6127,7 @@ sub HMCCU_GetAttribute ($$$$)
######################################################################
# Set default attributes for client device.
+# Optionally delete obsolete attributes.
######################################################################
sub HMCCU_SetDefaultAttributes ($;$)
@@ -6133,9 +6138,10 @@ sub HMCCU_SetDefaultAttributes ($;$)
$parRef //= { mode => 'update', role => undef, ctrlChn => undef };
my $role = $parRef->{role} // HMCCU_GetChannelRole ($clHash, $parRef->{ctrlChn});
- if ($role ne '' && exists($HMCCU_ATTR->{$role})) {
- HMCCU_Log ($clHash, 2, "Default attributes found for role $role");
+ if ($role ne '') {
$clHash->{hmccu}{semDefaults} = 1;
+
+ # Delete obsolete attributes
if ($parRef->{mode} eq 'reset') {
my @removeAttr = ('ccureadingname', 'ccuscaleval', 'eventMap',
'substitute', 'webCmd', 'widgetOverride'
@@ -6144,9 +6150,14 @@ sub HMCCU_SetDefaultAttributes ($;$)
CommandDeleteAttr (undef, "$clName $a") if (exists($attr{$clName}{$a}));
}
}
- foreach my $a (keys %{$HMCCU_ATTR->{$role}}) {
- CommandAttr (undef, "$clName $a ".$HMCCU_ATTR->{$role}{$a});
+
+ # Set additional attributes
+ if (exists($HMCCU_ATTR->{$role})) {
+ foreach my $a (keys %{$HMCCU_ATTR->{$role}}) {
+ CommandAttr (undef, "$clName $a ".$HMCCU_ATTR->{$role}{$a});
+ }
}
+
$clHash->{hmccu}{semDefaults} = 0;
return 1;
}
@@ -8922,10 +8933,11 @@ sub HMCCU_MaxHashEntries ($$)
format identifiers which are substituted by corresponding values of the CCU device or
channel:
%n = CCU object name (channel or device)
- %d = CCU device name, %a = CCU address
+ %d = CCU device name
+ %a = CCU address
In addition a list of default attributes for the created client devices can be specified.
If option 'defattr' is specified HMCCU tries to set default attributes for device.
- This is not necessary of HMCCU is able to detect the role of a device or channel.
+ This is not necessary because HMCCU is able to detect the role of a device or channel.
With option 'duplicates' HMCCU will overwrite existing devices and/or create devices
for existing device addresses. Option 'save' will save FHEM config after device definition.
diff --git a/contrib/HMCCU/FHEM/HMCCUConf.pm b/contrib/HMCCU/FHEM/HMCCUConf.pm
index 98f88fbb6..9d88d832f 100644
--- a/contrib/HMCCU/FHEM/HMCCUConf.pm
+++ b/contrib/HMCCU/FHEM/HMCCUConf.pm
@@ -4,7 +4,7 @@
#
# $Id: HMCCUConf.pm 18552 2019-02-10 11:52:28Z zap $
#
-# Version 4.8.007
+# Version 4.8.010
#
# Configuration parameters for HomeMatic devices.
#
@@ -17,6 +17,7 @@ package HMCCUConf;
use strict;
use warnings;
+use vars qw($HMCCU_CONFIG_VERSION);
use vars qw(%HMCCU_STATECONTROL);
use vars qw(%HMCCU_READINGS);
use vars qw(%HMCCU_ROLECMDS);
@@ -26,6 +27,8 @@ use vars qw(%HMCCU_CHN_DEFAULTS);
use vars qw(%HMCCU_DEV_DEFAULTS);
use vars qw(%HMCCU_SCRIPTS);
+$HMCCU_CONFIG_VERSION = '4.8.010';
+
######################################################################
# Channel roles with state and control datapoints
# F: 1=Channel/HMCCUCHN, 2=Device/HMCCUDEV, 3=Both
@@ -84,8 +87,14 @@ use vars qw(%HMCCU_SCRIPTS);
'DIMMER_VIRTUAL_RECEIVER' => {
F => 3, S => 'LEVEL', C => 'LEVEL', V => 'on:100,off:0'
},
+ 'WEATHER' => {
+ F => 3, S => 'TEMPERATURE', C => 'TEMPERATURE', V => ''
+ },
'WEATHER_TRANSMIT' => {
- F => 1, S => 'TEMPERATURE', C => 'TEMPERATURE', V => ''
+ F => 3, S => 'TEMPERATURE', C => 'TEMPERATURE', V => ''
+ },
+ 'CLIMATE_TRANSCEIVER' => {
+ F => 3, S => 'ACTUAL_TEMPERATURE', C => 'ACTUAL_TEMPERATURE', V => ''
},
'THERMALCONTROL_TRANSMIT' => {
F => 3, S => 'ACTUAL_TEMPERATURE', C => 'SET_TEMPERATURE', V => 'on:30.5,off:4.5'
@@ -115,8 +124,15 @@ use vars qw(%HMCCU_SCRIPTS);
'(CC#\.)?LEVEL$:+pct;(CC#\.)?LEVEL$:+pct',
'DIMMER_VIRTUAL_RECEIVER' =>
'(CC#\.)?LEVEL$:+pct;(CC#\.)?LEVEL$:+pct',
+ 'WEATHER' =>
+ '(SC#\.)?TEMPERATURE$:+measured-temp;'.
+ '(SC#\.)?HUMIDITY$:+humidity',
'WEATHER_TRANSMIT' =>
- '(SC#\.)?TEMPERATURE$:+measured-temp',
+ '(SC#\.)?TEMPERATURE$:+measured-temp;'.
+ '(SC#\.)?HUMIDITY$:+humidity',
+ 'CLIMATE_TRANSCEIVER' =>
+ '(SC#\.)?ACTUAL_TEMPERATURE$:+measured-temp;'.
+ '(SC#\.)?ACTUAL_HUMIDITY$:+humidity',
'THERMALCONTROL_TRANSMIT' =>
'(SC#\.)?ACTUAL_TEMPERATURE$:+measured-temp;'.
'(SC#\.)?ACTUAL_HUMIDITY$:+humidity;'.
@@ -268,16 +284,19 @@ use vars qw(%HMCCU_SCRIPTS);
%HMCCU_ATTR = (
'BLIND' => {
'substexcl' => 'pct',
+ 'cmdIcon' => 'open:fts_shutter_up stop:fts_shutter_manual close:fts_shutter_down',
'webCmd' => 'open:close:stop:pct',
'widgetOverride' => 'pct:slider,0,10,100'
},
'BLIND_VIRTUAL_RECEIVER' => {
'substexcl' => 'pct',
+ 'cmdIcon' => 'open:fts_shutter_up stop:fts_shutter_manual close:fts_shutter_down',
'webCmd' => 'open:close:stop:pct',
'widgetOverride' => 'pct:slider,0,10,100'
},
'SHUTTER_VIRTUAL_RECEIVER' => {
'substexcl' => 'pct',
+ 'cmdIcon' => 'open:fts_shutter_up stop:fts_shutter_manual close:fts_shutter_down',
'webCmd' => 'open:close:stop:pct',
'widgetOverride' => 'pct:slider,0,10,100'
},
diff --git a/contrib/HMCCU/controls_HMCCU.txt b/contrib/HMCCU/controls_HMCCU.txt
index 398b64df7..59b21ffd3 100644
--- a/contrib/HMCCU/controls_HMCCU.txt
+++ b/contrib/HMCCU/controls_HMCCU.txt
@@ -1,5 +1,5 @@
-UPD 2020-11-08_17:25:29 102657 FHEM/88_HMCCURPCPROC.pm
-UPD 2020-11-08_17:25:44 75793 FHEM/HMCCUConf.pm
-UPD 2020-11-08_17:23:47 39378 FHEM/88_HMCCUCHN.pm
-UPD 2020-11-08_17:23:36 302150 FHEM/88_HMCCU.pm
-UPD 2020-11-08_17:23:59 30769 FHEM/88_HMCCUDEV.pm
+UPD 2020-11-12_19:39:34 102657 FHEM/88_HMCCURPCPROC.pm
+UPD 2020-11-12_19:40:01 76540 FHEM/HMCCUConf.pm
+UPD 2020-11-12_19:39:14 39378 FHEM/88_HMCCUCHN.pm
+UPD 2020-11-12_19:39:06 302472 FHEM/88_HMCCU.pm
+UPD 2020-11-12_19:39:22 30769 FHEM/88_HMCCUDEV.pm