mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
MYSENSORS: fix perl-warning on unparsable data, add attribute 'last-sensorid'
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@6803 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
4e4a690554
commit
82c0aceb2b
@ -59,6 +59,7 @@ sub MYSENSORS_Initialize($) {
|
||||
"autocreate:1 ".
|
||||
"requestAck:1 ".
|
||||
"first-sensorid ".
|
||||
"last-sensorid ".
|
||||
"stateFormat";
|
||||
}
|
||||
|
||||
@ -235,7 +236,7 @@ sub Read {
|
||||
my $txt;
|
||||
($txt,$data) = split("\n", $data, 2);
|
||||
$txt =~ s/\r//;
|
||||
my $msg = parseMsg($txt);
|
||||
if (my $msg = parseMsg($txt)) {
|
||||
Log3 ($name,5,"MYSENSORS Read: ".dumpMsg($msg));
|
||||
|
||||
if ($msg->{ack}) {
|
||||
@ -266,6 +267,9 @@ sub Read {
|
||||
last;
|
||||
};
|
||||
}
|
||||
} else {
|
||||
Log3 ($name,5,"MYSENSORS Read: ".$txt."is no parsable mysensors message");
|
||||
}
|
||||
}
|
||||
$hash->{PARTIAL} = $data;
|
||||
return undef;
|
||||
@ -338,13 +342,13 @@ sub onInternalMsg($$) {
|
||||
};
|
||||
$type == I_ID_REQUEST and do {
|
||||
if ($hash->{'inclusion-mode'}) {
|
||||
my %nodes = map {$_ => 1} (AttrVal($hash->{NAME},"first-sensorid",20) ... 254);
|
||||
my %nodes = map {$_ => 1} (AttrVal($hash->{NAME},"first-sensorid",20) ... AttrVal($hash->{NAME},"last-sensorid",254));
|
||||
GP_ForallClients($hash,sub {
|
||||
my $client = shift;
|
||||
delete $nodes{$client->{radioId}};
|
||||
});
|
||||
if (keys %nodes) {
|
||||
my $newid = (keys %nodes)[0];
|
||||
my $newid = (sort keys %nodes)[0];
|
||||
sendMessage($hash,radioId => 255, childId => 255, cmd => C_INTERNAL, ack => 0, subType => I_ID_RESPONSE, payload => $newid);
|
||||
Log3($hash->{NAME},4,"MYSENSORS $hash->{NAME} assigned new nodeid $newid");
|
||||
} else {
|
||||
|
@ -12,14 +12,16 @@ use warnings;
|
||||
|
||||
sub parseMsg($) {
|
||||
my $txt = shift;
|
||||
my @fields = split(/;/,$txt);
|
||||
my $msgRef = { radioId => $fields[0],
|
||||
childId => $fields[1],
|
||||
cmd => $fields[2],
|
||||
ack => $fields[3],
|
||||
subType => $fields[4],
|
||||
payload => $fields[5] };
|
||||
return $msgRef;
|
||||
if ($txt =~ /^(\d+);(\d+);(\d+);(\d+);(\d+);(.*)$/) {
|
||||
return { radioId => $1,
|
||||
childId => $2,
|
||||
cmd => $3,
|
||||
ack => $4,
|
||||
subType => $5,
|
||||
payload => $6 };
|
||||
} else {
|
||||
return undef;
|
||||
};
|
||||
}
|
||||
|
||||
sub createMsg(%) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user