mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
MySensors: add disable option, forum #114657
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@23202 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1cf2b68808
commit
07f3731ba5
@ -75,6 +75,7 @@ sub Initialize {
|
|||||||
last-sensorid
|
last-sensorid
|
||||||
stateFormat
|
stateFormat
|
||||||
OTA_firmwareConfig
|
OTA_firmwareConfig
|
||||||
|
disable:0,1
|
||||||
);
|
);
|
||||||
$hash->{AttrList} = $hash->{AttrList} = join(" ", @attrList);
|
$hash->{AttrList} = $hash->{AttrList} = join(" ", @attrList);
|
||||||
return;
|
return;
|
||||||
@ -98,6 +99,7 @@ BEGIN {GP_Import(qw(
|
|||||||
AttrVal
|
AttrVal
|
||||||
Log3
|
Log3
|
||||||
FileRead
|
FileRead
|
||||||
|
IsDisabled
|
||||||
))};
|
))};
|
||||||
|
|
||||||
my %sensorAttr = (
|
my %sensorAttr = (
|
||||||
@ -466,6 +468,11 @@ sub Attr {
|
|||||||
if ($attribute eq "OTA_firmwareConfig") {
|
if ($attribute eq "OTA_firmwareConfig") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ($attribute eq "disable") {
|
||||||
|
return Stop($hash) if $command eq "set" && $value;
|
||||||
|
InternalTimer(time(), "MYSENSORS::Start", $hash,0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -476,6 +483,7 @@ sub Start {
|
|||||||
if (!AttrVal($hash->{NAME},"stateFormat",0)) {
|
if (!AttrVal($hash->{NAME},"stateFormat",0)) {
|
||||||
CommandAttr(undef, "$hash->{NAME} stateFormat connection")
|
CommandAttr(undef, "$hash->{NAME} stateFormat connection")
|
||||||
}
|
}
|
||||||
|
return if IsDisabled( $hash->{NAME} );
|
||||||
DevIo_CloseDev($hash);
|
DevIo_CloseDev($hash);
|
||||||
return DevIo_OpenDev($hash, 0, "MYSENSORS::Init");
|
return DevIo_OpenDev($hash, 0, "MYSENSORS::Init");
|
||||||
}
|
}
|
||||||
@ -532,7 +540,7 @@ sub Init {
|
|||||||
sub GetConnectStatus {
|
sub GetConnectStatus {
|
||||||
my $hash = shift // return;
|
my $hash = shift // return;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
Log3 $name, 4, "MySensors: GetConnectStatus called ...";
|
Log3( $name, 4, "MySensors: GetConnectStatus called ..." );
|
||||||
|
|
||||||
# neuen Timer starten in einem konfigurierten Interval.
|
# neuen Timer starten in einem konfigurierten Interval.
|
||||||
InternalTimer(gettimeofday()+300, "MYSENSORS::GetConnectStatus", $hash);# Restart check in 5 mins again
|
InternalTimer(gettimeofday()+300, "MYSENSORS::GetConnectStatus", $hash);# Restart check in 5 mins again
|
||||||
@ -627,12 +635,14 @@ sub onPresentationMsg {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onPresentationMessage($client,$msg);
|
return MYSENSORS::DEVICE::onPresentationMessage($client,$msg);
|
||||||
};
|
};
|
||||||
|
|
||||||
sub onSetMsg {
|
sub onSetMsg {
|
||||||
my ($hash,$msg) = @_;
|
my ($hash,$msg) = @_;
|
||||||
if (my $client = matchClient($hash,$msg)) {
|
if (my $client = matchClient($hash,$msg)) {
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onSetMessage($client,$msg);
|
return MYSENSORS::DEVICE::onSetMessage($client,$msg);
|
||||||
}
|
}
|
||||||
Log3($hash->{NAME},3,"MYSENSORS: ignoring set-msg from unknown radioId $msg->{radioId}, childId $msg->{childId} for ".variableTypeToStr($msg->{subType}));
|
Log3($hash->{NAME},3,"MYSENSORS: ignoring set-msg from unknown radioId $msg->{radioId}, childId $msg->{childId} for ".variableTypeToStr($msg->{subType}));
|
||||||
@ -642,6 +652,7 @@ sub onSetMsg {
|
|||||||
sub onRequestMsg {
|
sub onRequestMsg {
|
||||||
my ($hash,$msg) = @_;
|
my ($hash,$msg) = @_;
|
||||||
if (my $client = matchClient($hash,$msg)) {
|
if (my $client = matchClient($hash,$msg)) {
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onRequestMessage($client,$msg);
|
return MYSENSORS::DEVICE::onRequestMessage($client,$msg);
|
||||||
}
|
}
|
||||||
Log3($hash->{NAME},3,"MYSENSORS: ignoring req-msg from unknown radioId $msg->{radioId}, childId $msg->{childId} for ".variableTypeToStr($msg->{subType}));
|
Log3($hash->{NAME},3,"MYSENSORS: ignoring req-msg from unknown radioId $msg->{radioId}, childId $msg->{childId} for ".variableTypeToStr($msg->{subType}));
|
||||||
@ -684,7 +695,10 @@ sub onInternalMsg {
|
|||||||
if ($type == I_HEARTBEAT_RESPONSE) {
|
if ($type == I_HEARTBEAT_RESPONSE) {
|
||||||
RemoveInternalTimer($hash,"MYSENSORS::Start"); ## Reset reconnect because timeout was not reached
|
RemoveInternalTimer($hash,"MYSENSORS::Start"); ## Reset reconnect because timeout was not reached
|
||||||
readingsSingleUpdate($hash, "heartbeat", "alive", 0);
|
readingsSingleUpdate($hash, "heartbeat", "alive", 0);
|
||||||
if ($client = matchClient($hash,$msg)){ MYSENSORS::DEVICE::onInternalMessage($client,$msg) };
|
if ($client = matchClient($hash,$msg)){
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
|
MYSENSORS::DEVICE::onInternalMessage($client,$msg)
|
||||||
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -718,12 +732,14 @@ sub onInternalMsg {
|
|||||||
|
|
||||||
if ($type == I_TIME) {
|
if ($type == I_TIME) {
|
||||||
if ($client = matchClient($hash,$msg)){
|
if ($client = matchClient($hash,$msg)){
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onInternalMessage($client,$msg)
|
return MYSENSORS::DEVICE::onInternalMessage($client,$msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($client = matchClient($hash,$msg)) {
|
if ($client = matchClient($hash,$msg)) {
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onInternalMessage($client,$msg);
|
return MYSENSORS::DEVICE::onInternalMessage($client,$msg);
|
||||||
}
|
}
|
||||||
if ($client = matchChan76GWClient($hash,$msg)) {
|
if ($client = matchChan76GWClient($hash,$msg)) {
|
||||||
@ -739,10 +755,12 @@ sub onStreamMsg {
|
|||||||
my $client;
|
my $client;
|
||||||
if ($client = matchClient($hash, $msg)) {
|
if ($client = matchClient($hash, $msg)) {
|
||||||
Log3($hash->{NAME}, 4, "$hash->{NAME}: received stream message for $client - regular IODev");
|
Log3($hash->{NAME}, 4, "$hash->{NAME}: received stream message for $client - regular IODev");
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onStreamMessage($client, $msg);
|
return MYSENSORS::DEVICE::onStreamMessage($client, $msg);
|
||||||
}
|
}
|
||||||
if ($client = matchChan76GWClient($hash,$msg)) {
|
if ($client = matchChan76GWClient($hash,$msg)) {
|
||||||
Log3($hash->{NAME}, 4, "$hash->{NAME}: received stream message for $client - Chan76-IODev");
|
Log3($hash->{NAME}, 4, "$hash->{NAME}: received stream message for $client - Chan76-IODev");
|
||||||
|
return if IsDisabled( $client->{NAME} );
|
||||||
return MYSENSORS::DEVICE::onStreamMessage($client,$msg);
|
return MYSENSORS::DEVICE::onStreamMessage($client,$msg);
|
||||||
}
|
}
|
||||||
Log3($hash->{NAME},3,"MYSENSORS: ignoring stream-msg from unknown radioId $msg->{radioId}, childId $msg->{childId} for ".datastreamTypeToStr($msg->{subType}).". IO: $hash->{NAME}");
|
Log3($hash->{NAME},3,"MYSENSORS: ignoring stream-msg from unknown radioId $msg->{radioId}, childId $msg->{childId} for ".datastreamTypeToStr($msg->{subType}).". IO: $hash->{NAME}");
|
||||||
|
@ -63,6 +63,7 @@ BEGIN {
|
|||||||
RemoveInternalTimer
|
RemoveInternalTimer
|
||||||
asyncOutput
|
asyncOutput
|
||||||
readingFnAttributes
|
readingFnAttributes
|
||||||
|
IsDisabled
|
||||||
))
|
))
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -95,6 +96,7 @@ sub Initialize {
|
|||||||
OTA_Chan76_IODev
|
OTA_Chan76_IODev
|
||||||
streamFilePatterns
|
streamFilePatterns
|
||||||
model
|
model
|
||||||
|
disable:0,1
|
||||||
);
|
);
|
||||||
use warnings 'qw';
|
use warnings 'qw';
|
||||||
$hash->{AttrList} = join(" ", @attrList)." ".$readingFnAttributes;
|
$hash->{AttrList} = join(" ", @attrList)." ".$readingFnAttributes;
|
||||||
@ -255,6 +257,7 @@ sub UnDefine {
|
|||||||
sub Set {
|
sub Set {
|
||||||
my ($hash,$name,$command,@values) = @_;
|
my ($hash,$name,$command,@values) = @_;
|
||||||
return "At least one parameter is needed!" if !defined $command;
|
return "At least one parameter is needed!" if !defined $command;
|
||||||
|
return "Node is disabled!" if IsDisabled( $hash->{NAME} );
|
||||||
if(!defined($hash->{sets}->{$command})) {
|
if(!defined($hash->{sets}->{$command})) {
|
||||||
$hash->{sets}->{fwType} = join(",", MYSENSORS::getFirmwareTypes($hash->{IODev}));
|
$hash->{sets}->{fwType} = join(",", MYSENSORS::getFirmwareTypes($hash->{IODev}));
|
||||||
my $list = join(" ", map {
|
my $list = join(" ", map {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user