From 31792a9fe1c9c7a64d702ed906cccd8375f9fdf0 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Mon, 12 Dec 2016 20:34:02 +0000 Subject: [PATCH] 10_ZWave.pm: ccsOverride from Andreas (Forum #58651) git-svn-id: https://svn.fhem.de/fhem/trunk@12758 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_ZWave.pm | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/fhem/FHEM/10_ZWave.pm b/fhem/FHEM/10_ZWave.pm index d28811c63..5a50dc24f 100755 --- a/fhem/FHEM/10_ZWave.pm +++ b/fhem/FHEM/10_ZWave.pm @@ -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. +
  • cssSetOverride (no|temporary|permanent) (frost|energy|$tempOffset)
    + set the override state
    + no: switch the override off
    + temporary: override the current schedule only
    + permanent: override all schedules
    + frost/energy: set override mode to frost protection or engergy saving
    + $tempOffset: the temperature setback (offset to setpoint) in 1/10 degrees
    + range from -12.8 to 12.0, values will be limited to this range. +


  • Class CLOCK
  • clock