mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-15 22:26:04 +00:00
HMCCU: Fixed toggle bug
git-svn-id: https://svn.fhem.de/fhem/trunk@13589 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
6dcf0cf635
commit
c25d5574cd
@ -1,5 +1,6 @@
|
||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||
# Do not insert empty lines here, update check depends on it.
|
||||
- bugfix: 88_HMCCU: Fixed toggle bug
|
||||
- bugfix: 60_allergy.pm: fixed error handling for server replies
|
||||
- update: 38_netatmo.pm: 3 stations minimum for PUBLIC statistics
|
||||
- update: 74_AMAD: new Version 2.6.11, add startDaydream and more media
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Version 3.9.005
|
||||
# Version 3.9.006
|
||||
#
|
||||
# Module for communication between FHEM and Homematic CCU2.
|
||||
# Supports BidCos-RF, BidCos-Wired, HmIP-RF, virtual CCU channels,
|
||||
@ -104,7 +104,7 @@ my %HMCCU_CUST_CHN_DEFAULTS;
|
||||
my %HMCCU_CUST_DEV_DEFAULTS;
|
||||
|
||||
# HMCCU version
|
||||
my $HMCCU_VERSION = '3.9.005';
|
||||
my $HMCCU_VERSION = '3.9.006';
|
||||
|
||||
# RPC Ports and URL extensions
|
||||
my %HMCCU_RPC_NUMPORT = (
|
||||
@ -2025,6 +2025,7 @@ sub HMCCU_UpdateDevices ($$$)
|
||||
######################################################################
|
||||
# Update a single client device datapoint considering
|
||||
# scaling, reading format and value substitution.
|
||||
# Return stored value.
|
||||
######################################################################
|
||||
|
||||
sub HMCCU_UpdateSingleDatapoint ($$$$)
|
||||
@ -2039,7 +2040,8 @@ sub HMCCU_UpdateSingleDatapoint ($$$$)
|
||||
my ($devaddr, $chnnum) = HMCCU_SplitChnAddr ($hash->{ccuaddr});
|
||||
$objects{$devaddr}{$chn}{$dpt} = $value;
|
||||
|
||||
return HMCCU_UpdateSingleDevice ($hmccu_hash, $hash, \%objects);
|
||||
my $rc = HMCCU_UpdateSingleDevice ($hmccu_hash, $hash, \%objects);
|
||||
return (ref ($rc)) ? $rc->{$devaddr}{$dpt} : $value;
|
||||
}
|
||||
|
||||
######################################################################
|
||||
@ -2049,9 +2051,12 @@ sub HMCCU_UpdateSingleDatapoint ($$$$)
|
||||
# {devaddr}
|
||||
# {devaddr}{channelno}
|
||||
# {devaddr}{channelno}{datapoint}
|
||||
# {devaddr}{channelno}{datapoint}{value}
|
||||
# {devaddr}{channelno}{datapoint} = value
|
||||
# If client device is virtual device group: check if group members are
|
||||
# affected by updates and update readings in virtual group device.
|
||||
# Return a hash reference with datapoints and new values:
|
||||
# {devaddr}
|
||||
# {devaddr}{datapoint} = value
|
||||
######################################################################
|
||||
|
||||
sub HMCCU_UpdateSingleDevice ($$$)
|
||||
@ -2094,6 +2099,9 @@ sub HMCCU_UpdateSingleDevice ($$$)
|
||||
}
|
||||
}
|
||||
|
||||
# Store the resulting readings
|
||||
my %results;
|
||||
|
||||
# Update datapoint readings and control/state readings
|
||||
readingsBeginUpdate ($clthash);
|
||||
|
||||
@ -2123,6 +2131,9 @@ sub HMCCU_UpdateSingleDevice ($$$)
|
||||
my $cvalue = HMCCU_Substitute ($fvalue, $substitute, 0, $chnnum, $dpt);
|
||||
my %calcs = HMCCU_CalculateReading ($clthash, $chnnum, $dpt);
|
||||
|
||||
# Store the resulting value after scaling, formatting and substitution
|
||||
$results{$dev}{$dpt} = $cvalue;
|
||||
|
||||
Log3 $ccuname, 2, "HMCCU: $fnc device=$cltname, readings=".join(',', @readings).
|
||||
", orgvalue=$value value=$cvalue" if ($cltflags =~ /trace/);
|
||||
|
||||
@ -2149,7 +2160,7 @@ sub HMCCU_UpdateSingleDevice ($$$)
|
||||
|
||||
readingsEndUpdate ($clthash, 1);
|
||||
|
||||
return 1;
|
||||
return \%results;
|
||||
}
|
||||
|
||||
######################################################################
|
||||
@ -2183,7 +2194,8 @@ sub HMCCU_UpdateMultipleDevices ($$)
|
||||
# Filter devices
|
||||
next if ($ct ne 'HMCCUDEV' && $ct ne 'HMCCUCHN');
|
||||
|
||||
$c++ if (HMCCU_UpdateSingleDevice ($hash, $ch, $objects));
|
||||
my $rc = HMCCU_UpdateSingleDevice ($hash, $ch, $objects);
|
||||
$c++ if (ref ($rc));
|
||||
}
|
||||
|
||||
return $c;
|
||||
|
Loading…
x
Reference in New Issue
Block a user