mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 12:49:34 +00:00
66_ECMD: new attribute stop
git-svn-id: https://svn.fhem.de/fhem/trunk@16372 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c68982e31b
commit
daab52dd85
@ -1,5 +1,6 @@
|
|||||||
# 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.
|
||||||
|
- feature: 66_ECMD: new attribute stop
|
||||||
- change: 93_DbLog: V3.8.9, commandref revised
|
- change: 93_DbLog: V3.8.9, commandref revised
|
||||||
- feature: fhem.pl: OldReading* added (Forum #85406)
|
- feature: fhem.pl: OldReading* added (Forum #85406)
|
||||||
- feature: 93_DbRep: V7.14.3, minTimestamp - get lowest timestamp in database
|
- feature: 93_DbRep: V7.14.3, minTimestamp - get lowest timestamp in database
|
||||||
@ -3974,4 +3975,3 @@
|
|||||||
|
|
||||||
- 2005-10-27 (1.3)
|
- 2005-10-27 (1.3)
|
||||||
- Bugfix: multiple at commands at the same time.
|
- Bugfix: multiple at commands at the same time.
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ ECMD_Initialize($)
|
|||||||
$hash->{GetFn} = "ECMD_Get";
|
$hash->{GetFn} = "ECMD_Get";
|
||||||
$hash->{SetFn} = "ECMD_Set";
|
$hash->{SetFn} = "ECMD_Set";
|
||||||
$hash->{AttrFn} = "ECMD_Attr";
|
$hash->{AttrFn} = "ECMD_Attr";
|
||||||
$hash->{AttrList}= "classdefs split logTraffic:0,1,2,3,4,5 timeout partial requestSeparator responseSeparator autoReopen";
|
$hash->{AttrList}= "classdefs split logTraffic:0,1,2,3,4,5 timeout partial requestSeparator responseSeparator autoReopen stop:0,1";
|
||||||
}
|
}
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
@ -218,12 +218,21 @@ ECMD_Ready($)
|
|||||||
return ($InBytes && $InBytes>0);
|
return ($InBytes && $InBytes>0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
sub
|
||||||
|
ECMD_isStopped($)
|
||||||
|
{
|
||||||
|
my $dev = shift; # name or hash
|
||||||
|
$dev = $dev->{NAME} if(defined($dev) && ref($dev) eq "HASH");
|
||||||
|
my $isDisabled = AttrVal($dev, "stop", 0);
|
||||||
|
}
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub
|
sub
|
||||||
ECMD_SimpleRead($)
|
ECMD_SimpleRead($)
|
||||||
{
|
{
|
||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
|
return undef if ECMD_isStopped($hash);
|
||||||
my $answer= DevIo_SimpleRead($hash);
|
my $answer= DevIo_SimpleRead($hash);
|
||||||
ECMD_Log $hash, undef, "read " . dq($answer);
|
ECMD_Log $hash, undef, "read " . dq($answer);
|
||||||
return $answer;
|
return $answer;
|
||||||
@ -233,6 +242,7 @@ sub
|
|||||||
ECMD_SimpleWrite($$)
|
ECMD_SimpleWrite($$)
|
||||||
{
|
{
|
||||||
my ($hash, $msg) = @_;
|
my ($hash, $msg) = @_;
|
||||||
|
return undef if ECMD_isStopped($hash);
|
||||||
ECMD_Log $hash, undef, "write " . dq($msg);
|
ECMD_Log $hash, undef, "write " . dq($msg);
|
||||||
DevIo_SimpleWrite($hash, $msg, 0);
|
DevIo_SimpleWrite($hash, $msg, 0);
|
||||||
}
|
}
|
||||||
@ -243,6 +253,8 @@ ECMD_SimpleExpect($$$)
|
|||||||
my ($hash, $msg, $expect) = @_;
|
my ($hash, $msg, $expect) = @_;
|
||||||
|
|
||||||
my $name= $hash->{NAME};
|
my $name= $hash->{NAME};
|
||||||
|
return undef if ECMD_isStopped($name);
|
||||||
|
|
||||||
my $timeout= AttrVal($name, "timeout", 3.0);
|
my $timeout= AttrVal($name, "timeout", 3.0);
|
||||||
my $partialTimeout= AttrVal($name, "partial", 0.0);
|
my $partialTimeout= AttrVal($name, "partial", 0.0);
|
||||||
|
|
||||||
@ -293,6 +305,7 @@ sub
|
|||||||
ECMD_Clear($)
|
ECMD_Clear($)
|
||||||
{
|
{
|
||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
|
return undef if ECMD_isStopped($hash);
|
||||||
|
|
||||||
# Clear the pipe
|
# Clear the pipe
|
||||||
DevIo_TimeoutRead($hash, 0.1);
|
DevIo_TimeoutRead($hash, 0.1);
|
||||||
@ -318,9 +331,14 @@ ECMD_Get($@)
|
|||||||
return "get raw needs an argument" if(@a< 3);
|
return "get raw needs an argument" if(@a< 3);
|
||||||
my $ecmd= join " ", @args;
|
my $ecmd= join " ", @args;
|
||||||
$ecmd= AnalyzePerlCommand(undef, $ecmd);
|
$ecmd= AnalyzePerlCommand(undef, $ecmd);
|
||||||
$answer= ECMD_SimpleExpect($hash, $ecmd, ".*");
|
# poor man's error catching...
|
||||||
|
if($ecmd =~ "^Bareword \"") {
|
||||||
|
$answer= $ecmd;
|
||||||
|
} else {
|
||||||
|
$answer= ECMD_SimpleExpect($hash, $ecmd, ".*");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return "get $cmd: unknown command ";
|
return "Unknown argument $cmd, choose one of raw";
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash->{READINGS}{$cmd}{VAL} = $answer;
|
$hash->{READINGS}{$cmd}{VAL} = $answer;
|
||||||
@ -571,6 +589,7 @@ sub
|
|||||||
ECMD_Reopen($)
|
ECMD_Reopen($)
|
||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
return undef if ECMD_isStopped($hash);
|
||||||
DevIo_CloseDev($hash);
|
DevIo_CloseDev($hash);
|
||||||
DevIo_OpenDev($hash, 1, undef);
|
DevIo_OpenDev($hash, 1, undef);
|
||||||
|
|
||||||
@ -819,6 +838,10 @@ ECMD_Write($$$)
|
|||||||
If this attribute is set, the device is automatically reopened if no bytes were written for <timeout> seconds or more. After reopening
|
If this attribute is set, the device is automatically reopened if no bytes were written for <timeout> seconds or more. After reopening
|
||||||
FHEM waits <delay> seconds before writing to the device. Use the delay with care because it stalls FHEM completely.
|
FHEM waits <delay> seconds before writing to the device. Use the delay with care because it stalls FHEM completely.
|
||||||
</li>
|
</li>
|
||||||
|
<li>stop<br>
|
||||||
|
Disables read/write access to the device if set to 1. No data is written to the physical ECMD device. A read request always returns an undefined result.
|
||||||
|
This attribute can be used to temporarily disable a device that is not available.
|
||||||
|
</li>
|
||||||
<li><a href="#verbose">verbose</a></li>
|
<li><a href="#verbose">verbose</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
Loading…
Reference in New Issue
Block a user