From 4ac2e090bf0513b9d5ce368dbad1b49b574c75db Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Thu, 26 Mar 2015 11:38:50 +0000 Subject: [PATCH] 10_ZWave.pm: ALARM V4 additions (Forum #35178) git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@8287 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/10_ZWave.pm | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/FHEM/10_ZWave.pm b/FHEM/10_ZWave.pm index 974e552cf..24293cb7d 100755 --- a/FHEM/10_ZWave.pm +++ b/FHEM/10_ZWave.pm @@ -26,7 +26,8 @@ my %zwave_class = ( BASIC => { id => '20', set => { basicValue => "01%02x", }, get => { basicStatus => "02", }, - parse => { "..200.(.*)"=> '"basicReport:$1"',}, }, + parse => { "..2001(.*)"=> '"basicReport:$1"', + "..2002" => "state:basicGet" }}, CONTROLLER_REPLICATION => { id => '21', }, APPLICATION_STATUS => { id => '22', }, ZIP_SERVICES => { id => '23', }, @@ -48,7 +49,10 @@ my %zwave_class = ( get => { swmStatus => "02", }, parse => { "032603(.*)"=> '($1 eq "00" ? "state:off" : ($1 eq "ff" ? "state:on" : - "state:dim ".hex($1)))',}, }, + "state:dim ".hex($1)))', + "..260420" => "state:swmBeginUp", + "..260460" => "state:swmBeginDown", + "..2605" => "state:swmEnd" } }, SWITCH_ALL => { id => '27', set => { swaIncludeNone => "0100", swaIncludeOff => "0101", @@ -280,7 +284,15 @@ my %zwave_class = ( TIME_PARAMETERS => { id => '8b', }, GEOGRAPHIC_LOCATION => { id => '8c', }, COMPOSITE => { id => '8d', }, - MULTI_CHANNEL_ASSOCIATION=> { id => '8e', }, # aka MULTI_INSTANCE_ASSOCIATION + MULTI_CHANNEL_ASSOCIATION=> { id => '8e', # aka MULTI_INSTANCE_ASSOCIATION + set => { mcaAdd => "01%02x%02x*", + mcaRemove => "04%02x%02x*" }, + get => { mca => "02%02x", + mcaGroupings=> "05" }, + parse => { "..8e03(..)(..)(.*)" + => '"mca_$1:max:$2 param:$3"', + "..8e06(.*)"=> '"mcaSupportedGroupings:".hex($1)' } }, + MULTI_CMD => { id => '8f', }, # Handled in Parse ENERGY_PRODUCTION => { id => '90', }, MANUFACTURER_PROPRIETARY => { id => '91', }, # see also zwave_deviceSpecial @@ -516,7 +528,7 @@ ZWave_Cmd($$@) } else { push @{$baseHash->{WakeUp}}, $data.$id; - return ($type eq "get" && AttrVal($name,"verbose",3) > 2 ? + return (AttrVal($name,"verbose",3) > 2 ? "Scheduled for sending after WAKEUP" : undef); } @@ -1103,6 +1115,10 @@ ZWave_alarmParse($$$) { my ($t,$l,$r) = @_; + if($t=="00" && $r && $r =~ m/^..(..)(..)/) { # Forum #35178 + $l = $1; $t = $2; + } + if(!$r || $r !~ m/......(..)(.*)/ || !$zwave_alarmType{$t}) { # V1 or unknown return "alarm_type_$t:level $l"; } @@ -1336,7 +1352,7 @@ ZWave_Parse($$@) } foreach my $k (keys %{$ptr}) { - if($arg =~ m/$k/) { + if($arg =~ m/^$k/) { my $val = $ptr->{$k}; $val = eval $val if(index($val, '$') >= 0); push @event, $val; @@ -1858,6 +1874,7 @@ s2Hex($)
Class BASIC
  • basicReport:XY
  • +
  • state:basicGet:XY


  • Class BATTERY
  • battery:chargelevel %
  • @@ -1949,6 +1966,9 @@ s2Hex($)
  • state:on
  • state:off
  • state:dim value
  • +
  • state:swmBeginUp
  • +
  • state:swmBeginDown
  • +
  • state:swmEnd


  • Class SCENE_ACTIVATION
  • scene_Id:level finalValue