10_ZWave.pm: ccsOverride from Andreas (Forum #58651)

git-svn-id: https://svn.fhem.de/fhem/trunk@12758 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2016-12-12 20:34:02 +00:00
parent 40871110f6
commit 31792a9fe1

View File

@@ -207,7 +207,8 @@ my %zwave_class = (
THERMOSTAT_FAN_MODE => { id => '44' },
THERMOSTAT_FAN_STATE => { id => '45' },
CLIMATE_CONTROL_SCHEDULE => { id => '46',
set => { ccs => 'ZWave_ccsSet("%s")' },
set => { ccs => 'ZWave_ccsSet("%s")' ,
ccsOverride => 'ZWave_ccsSetOverride("%s")'},
get => { ccs => 'ZWave_ccsGet("%s")',
ccsAll => 'ZWave_ccsAllGet($hash)',
ccsChanged => "04",
@@ -2269,6 +2270,34 @@ ZWave_ccsSet($)
return ("", "01$ret");
}
sub
ZWave_ccsSetOverride($)
{
my ($arg) = @_;
my $override_type;
my $override_state;
my $err = "wrong arguments, see commandref for details";
if ($arg =~ m/(no|temporary|permanent) (.*)/) {
$override_type = (lc($1) eq "no" ? 0 : (lc($1) eq "temporary" ? 1 : 2));
my $state = $2;
if ($state =~ m/(frost|energy)/) {
$override_state = (lc($state) eq "frost" ? 0x79 : 0x7a);
} elsif ($state =~ m/[-+]?[0-9]*\.?[0-9]+/) {
$state *= 10;
$state = 120 if ($state > 120);
$state = -128 if ($state < -128);
$state += 256 if ($state < 0);
$override_state = $state;
} else {
return($err, "");
}
return ("", sprintf("06%02x%02x", $override_type, $override_state));
}
return($err, "");
}
sub
ZWave_ccsGet($)
{
@@ -4845,6 +4874,15 @@ s2Hex($)
If only a weekday is specified without any time and tempDiff, then the
complete schedule for the specified day is removed and marked as unused.
</li>
<li>cssSetOverride (no|temporary|permanent) (frost|energy|$tempOffset) <br>
set the override state<br>
no: switch the override off<br>
temporary: override the current schedule only<br>
permanent: override all schedules<br>
frost/energy: set override mode to frost protection or engergy saving<br>
$tempOffset: the temperature setback (offset to setpoint) in 1/10 degrees<br>
range from -12.8 to 12.0, values will be limited to this range.
</li>
<br><br><b>Class CLOCK</b>
<li>clock<br>