mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-04 11:26:55 +00:00
10_ZWave.pm: add neighborUpdate to each device (Forum #37149)
git-svn-id: https://svn.fhem.de/fhem/trunk@8592 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
96865aa148
commit
b91df2436b
@ -437,6 +437,7 @@ ZWave_execInits($$)
|
|||||||
my ($hash, $min) = @_; # min = 50 for model-specific stuff
|
my ($hash, $min) = @_; # min = 50 for model-specific stuff
|
||||||
my @clList = split(" ", $attr{$hash->{NAME}}{classes});
|
my @clList = split(" ", $attr{$hash->{NAME}}{classes});
|
||||||
my (@initList, %seen);
|
my (@initList, %seen);
|
||||||
|
|
||||||
foreach my $cl (@clList) {
|
foreach my $cl (@clList) {
|
||||||
next if($seen{$cl});
|
next if($seen{$cl});
|
||||||
$seen{$cl} = 1;
|
$seen{$cl} = 1;
|
||||||
@ -482,6 +483,13 @@ ZWave_Cmd($$@)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $id = $hash->{id};
|
||||||
|
my $isMc = ($id =~ m/(....)/);
|
||||||
|
if($type eq "set" && !$isMc) {
|
||||||
|
$cmdList{neighborUpdate}{fmt} = "48$id";
|
||||||
|
$cmdList{neighborUpdate}{id} = "";
|
||||||
|
}
|
||||||
|
|
||||||
if($type eq "set" && $cmd eq "rgb") {
|
if($type eq "set" && $cmd eq "rgb") {
|
||||||
if($a[0] && $a[0] =~ m/^[0-9A-F]+$/i && $a[0] =~ /^(..)(..)(..)$/) {
|
if($a[0] && $a[0] =~ m/^[0-9A-F]+$/i && $a[0] =~ /^(..)(..)(..)$/) {
|
||||||
@a = (hex($1), hex($2), hex($3));
|
@a = (hex($1), hex($2), hex($3));
|
||||||
@ -514,7 +522,6 @@ ZWave_Cmd($$@)
|
|||||||
|
|
||||||
################################
|
################################
|
||||||
# ZW_SEND_DATA,nodeId,CMD,ACK|AUTO_ROUTE
|
# ZW_SEND_DATA,nodeId,CMD,ACK|AUTO_ROUTE
|
||||||
my $id = $hash->{id};
|
|
||||||
my $cmdFmt = $cmdList{$cmd}{fmt};
|
my $cmdFmt = $cmdList{$cmd}{fmt};
|
||||||
my $cmdId = $cmdList{$cmd}{id};
|
my $cmdId = $cmdList{$cmd}{id};
|
||||||
|
|
||||||
@ -561,7 +568,7 @@ ZWave_Cmd($$@)
|
|||||||
Log3 $name, 2, "ZWave $type $name $cmd";
|
Log3 $name, 2, "ZWave $type $name $cmd";
|
||||||
|
|
||||||
my ($baseClasses, $baseHash) = ($classes, $hash);
|
my ($baseClasses, $baseHash) = ($classes, $hash);
|
||||||
if($id =~ m/(..)(..)/) { # Multi-Channel, encapsulate
|
if($isMc) { # Multi-Channel, encapsulate
|
||||||
my ($baseId,$ch) = ($1, $2);
|
my ($baseId,$ch) = ($1, $2);
|
||||||
$id = $baseId;
|
$id = $baseId;
|
||||||
$cmdFmt = "0d01$ch$cmdId$cmdFmt";
|
$cmdFmt = "0d01$ch$cmdId$cmdFmt";
|
||||||
@ -570,9 +577,17 @@ ZWave_Cmd($$@)
|
|||||||
$baseClasses = AttrVal($baseHash->{NAME}, "classes", "");
|
$baseClasses = AttrVal($baseHash->{NAME}, "classes", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
my $len = sprintf("%02x", length($cmdFmt)/2+1);
|
|
||||||
|
|
||||||
my $data = "13$id$len$cmdId${cmdFmt}05"; # 13==SEND_DATA, 05=AUTO_ROUTE+ACK
|
my $data;
|
||||||
|
if($cmd eq "neighborUpdate") {
|
||||||
|
$data = $cmdFmt;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
my $len = sprintf("%02x", length($cmdFmt)/2+1);
|
||||||
|
$data = "13$id$len$cmdId${cmdFmt}05"; # 13==SEND_DATA, 05=AUTO_ROUTE+ACK
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if($baseClasses =~ m/WAKE_UP/) {
|
if($baseClasses =~ m/WAKE_UP/) {
|
||||||
if(!$baseHash->{WakeUp}) {
|
if(!$baseHash->{WakeUp}) {
|
||||||
my @arr = ();
|
my @arr = ();
|
||||||
@ -1519,7 +1534,7 @@ ZWave_Parse($$@)
|
|||||||
|
|
||||||
my $ptr = ZWave_getHash($hash, $className, "parse");
|
my $ptr = ZWave_getHash($hash, $className, "parse");
|
||||||
if(!$ptr) {
|
if(!$ptr) {
|
||||||
Log3 $hash, 4, "$name: Unknown message ($className $arg)";
|
push @event, "UNPARSED:$className $arg";
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ SetExtensions($$@)
|
|||||||
{
|
{
|
||||||
my ($hash, $list, $name, $cmd, @a) = @_;
|
my ($hash, $list, $name, $cmd, @a) = @_;
|
||||||
|
|
||||||
|
return "Unknown argument $cmd, choose one of " if(!$list);
|
||||||
|
|
||||||
my %se_list = (
|
my %se_list = (
|
||||||
"on-for-timer" => 1,
|
"on-for-timer" => 1,
|
||||||
"off-for-timer" => 1,
|
"off-for-timer" => 1,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user