mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 09:16:53 +00:00
30_MilightBridge/31_MilightDevice: Allow to disable ping check. Add state "Initialized".
git-svn-id: https://svn.fhem.de/fhem/trunk@9890 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
89fee5a26c
commit
eaef812d53
@ -1,5 +1,7 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- change: 30_MilightBridge/31_MilightDevice: Allow to disable ping check.
|
||||||
|
Add state "Initialized".
|
||||||
- feature: 50_HP1000: new module to support HP1000 weather station
|
- feature: 50_HP1000: new module to support HP1000 weather station
|
||||||
- feature: new module 53_GHoma.pm added (klausw)
|
- feature: new module 53_GHoma.pm added (klausw)
|
||||||
- feature: 14_CUL_REDIRECT: Rename 14_CUL_OTHER to 14_CUL_REDIRECT
|
- feature: 14_CUL_REDIRECT: Rename 14_CUL_OTHER to 14_CUL_REDIRECT
|
||||||
|
@ -98,8 +98,12 @@ sub MilightBridge_Define($$)
|
|||||||
$attr{$name}{"event-on-change-reading"} = "state" if (!defined($attr{$name}{"event-on-change-reading"}));
|
$attr{$name}{"event-on-change-reading"} = "state" if (!defined($attr{$name}{"event-on-change-reading"}));
|
||||||
$attr{$name}{"checkInterval"} = 10 if (!defined($attr{$name}{"checkInterval"}));
|
$attr{$name}{"checkInterval"} = 10 if (!defined($attr{$name}{"checkInterval"}));
|
||||||
|
|
||||||
|
readingsSingleUpdate($hash, "state", "Initialized", 1);
|
||||||
|
|
||||||
# Set state
|
# Set state
|
||||||
$hash->{SENDFAIL} = 0;
|
$hash->{SENDFAIL} = 0;
|
||||||
|
|
||||||
|
# Get initial bridge state
|
||||||
MilightBridge_State($hash);
|
MilightBridge_State($hash);
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
@ -139,11 +143,12 @@ sub MilightBridge_Attr($$$$) {
|
|||||||
}
|
}
|
||||||
if ($attribute eq "checkInterval")
|
if ($attribute eq "checkInterval")
|
||||||
{
|
{
|
||||||
if (($value !~ /^\d*$/) || ($value < 5))
|
if (($value !~ /^\d*$/) || ($value < 0))
|
||||||
{
|
{
|
||||||
$attr{$name}{"checkInterval"} = 10;
|
$attr{$name}{"checkInterval"} = 10;
|
||||||
return "checkInterval is required in s (default: 10, min: 5)";
|
return "checkInterval is required in s (default: 10, min: 0)";
|
||||||
}
|
}
|
||||||
|
readingsSingleUpdate($hash, "state", "Initialized", 1);
|
||||||
}
|
}
|
||||||
elsif ($attribute eq "port")
|
elsif ($attribute eq "port")
|
||||||
{
|
{
|
||||||
@ -164,11 +169,11 @@ sub MilightBridge_Attr($$$$) {
|
|||||||
# Disable on 1, enable on anything else.
|
# Disable on 1, enable on anything else.
|
||||||
if ($value eq "1")
|
if ($value eq "1")
|
||||||
{
|
{
|
||||||
$hash->{STATE} = "disabled";
|
readingsSingleUpdate($hash, "state", "disabled", 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$hash->{STATE} = "ok";
|
readingsSingleUpdate($hash, "state", "Initialized", 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,6 +204,12 @@ sub MilightBridge_State(@)
|
|||||||
# Update Bridge state
|
# Update Bridge state
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
|
||||||
|
if (AttrVal($hash->{NAME}, "checkInterval", "10") == 0)
|
||||||
|
{
|
||||||
|
Log3 ( $hash, 5, "$hash->{NAME}_State: Bridge status disabled");
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
Log3 ( $hash, 5, "$hash->{NAME}_State: Checking Bridge Status");
|
Log3 ( $hash, 5, "$hash->{NAME}_State: Checking Bridge Status");
|
||||||
|
|
||||||
# Do a ping check to see if bridge is reachable
|
# Do a ping check to see if bridge is reachable
|
||||||
@ -217,11 +228,11 @@ sub MilightBridge_State(@)
|
|||||||
$p->close();
|
$p->close();
|
||||||
$pingstatus = "ok" if $alive;
|
$pingstatus = "ok" if $alive;
|
||||||
|
|
||||||
# And update state
|
# Update readings
|
||||||
readingsSingleUpdate($hash, "state", $pingstatus, 1);
|
readingsBeginUpdate($hash);
|
||||||
|
readingsBulkUpdate($hash, "state", $pingstatus);
|
||||||
# Update send fail flag
|
readingsBulkUpdate( $hash, "sendFail", $hash->{SENDFAIL});
|
||||||
readingsSingleUpdate( $hash, "sendFail", $hash->{SENDFAIL}, 1 );
|
readingsEndUpdate($hash, 1);
|
||||||
|
|
||||||
# Check state every X seconds
|
# Check state every X seconds
|
||||||
InternalTimer(gettimeofday() + AttrVal($hash->{NAME}, "checkInterval", "10"), "MilightBridge_State", $hash, 0);
|
InternalTimer(gettimeofday() + AttrVal($hash->{NAME}, "checkInterval", "10"), "MilightBridge_State", $hash, 0);
|
||||||
@ -378,7 +389,7 @@ sub MilightBridge_CmdQueue_Send(@)
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<b>state</b><br/>
|
<b>state</b><br/>
|
||||||
[ok|unreachable]: Set depending on result of a UDP ping sent every 10 seconds.
|
[Initialized|ok|unreachable]: Shows reachable status of bridge using "ping" check every 10 (checkInterval) seconds.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>sendFail</b><br/>
|
<b>sendFail</b><br/>
|
||||||
@ -398,7 +409,8 @@ sub MilightBridge_CmdQueue_Send(@)
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>checkInterval</b><br/>
|
<b>checkInterval</b><br/>
|
||||||
Default: 10s. Time after the bridge connection is re-checked.
|
Default: 10s. Time after the bridge connection is re-checked.<br>
|
||||||
|
If this is set to 0 checking is disabled and state = "Initialized".
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>port</b><br/>
|
<b>port</b><br/>
|
||||||
|
@ -272,7 +272,7 @@ sub MilightDevice_Set(@)
|
|||||||
my $event = undef;
|
my $event = undef;
|
||||||
my $usage = "set $name ...";
|
my $usage = "set $name ...";
|
||||||
|
|
||||||
if ($hash->{IODev}->{STATE} ne "ok") {
|
if ($hash->{IODev}->{STATE} ne "ok" && $hash->{IODev}->{STATE} ne "Initialized") {
|
||||||
readingsSingleUpdate($hash, "state", "error", 1);
|
readingsSingleUpdate($hash, "state", "error", 1);
|
||||||
$flags = "q";
|
$flags = "q";
|
||||||
$args[2] .= "q" if ($args[2] !~ m/.*[qQ].*/);
|
$args[2] .= "q" if ($args[2] !~ m/.*[qQ].*/);
|
||||||
@ -1991,7 +1991,7 @@ sub MilightDevice_CmdQueue_Exec(@)
|
|||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
|
||||||
if ($hash->{IODev}->{STATE} ne "ok") {
|
if ($hash->{IODev}->{STATE} ne "ok" && $hash->{IODev}->{STATE} ne "Initialized") {
|
||||||
InternalTimer(gettimeofday() + 60, "MilightDevice_CmdQueue_Exec", $hash, 0);
|
InternalTimer(gettimeofday() + 60, "MilightDevice_CmdQueue_Exec", $hash, 0);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -2052,7 +2052,7 @@ sub MilightDevice_CmdQueue_Clear(@)
|
|||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
|
||||||
if ($hash->{IODev}->{STATE} ne "ok") {
|
if ($hash->{IODev}->{STATE} ne "ok" && $hash->{IODev}->{STATE} ne "Initialized") {
|
||||||
InternalTimer(gettimeofday() + 60, "MilightDevice_CmdQueue_Exec", $hash, 0);
|
InternalTimer(gettimeofday() + 60, "MilightDevice_CmdQueue_Exec", $hash, 0);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user