SMUtils.pm: update to version 1.9.0
git-svn-id: https://svn.fhem.de/fhem/trunk@22851 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -40,7 +40,7 @@ use FHEM::SynoModules::ErrCodes qw(:all); # Erro
|
||||
use GPUtils qw( GP_Import GP_Export );
|
||||
use Carp qw(croak carp);
|
||||
|
||||
use version; our $VERSION = version->declare('1.8.0');
|
||||
use version; our $VERSION = version->declare('1.9.0');
|
||||
|
||||
use Exporter ('import');
|
||||
our @EXPORT_OK = qw(
|
||||
@@ -58,6 +58,9 @@ our @EXPORT_OK = qw(
|
||||
delCallParts
|
||||
setReadingErrorNone
|
||||
setReadingErrorState
|
||||
listSendqueue
|
||||
purgeSendqueue
|
||||
updQueueLength
|
||||
);
|
||||
|
||||
our %EXPORT_TAGS = (all => [@EXPORT_OK]);
|
||||
@@ -69,6 +72,7 @@ BEGIN {
|
||||
qw(
|
||||
AttrVal
|
||||
Log3
|
||||
data
|
||||
defs
|
||||
modules
|
||||
CancelDelayedShutdown
|
||||
@@ -654,4 +658,95 @@ sub setReadingErrorState {
|
||||
return;
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# liefert aktuelle Einträge der Sendequeue zurück
|
||||
#############################################################################################
|
||||
sub listSendqueue {
|
||||
my $paref = shift;
|
||||
my $hash = $paref->{hash} // carp "got no hash value" && return;
|
||||
my $name = $paref->{name} // carp "got no name value" && return;
|
||||
|
||||
my $type = $hash->{TYPE};
|
||||
|
||||
my $sub = sub {
|
||||
my $idx = shift;
|
||||
my $ret;
|
||||
for my $key (reverse sort keys %{$data{$type}{$name}{sendqueue}{entries}{$idx}}) {
|
||||
$ret .= ", " if($ret);
|
||||
$ret .= $key."=>".$data{$type}{$name}{sendqueue}{entries}{$idx}{$key};
|
||||
}
|
||||
return $ret;
|
||||
};
|
||||
|
||||
if (!keys %{$data{$type}{$name}{sendqueue}{entries}}) {
|
||||
return qq{SendQueue is empty.};
|
||||
}
|
||||
|
||||
my $sq;
|
||||
for my $idx (sort{$a<=>$b} keys %{$data{$type}{$name}{sendqueue}{entries}}) {
|
||||
$sq .= $idx." => ".$sub->($idx)."\n";
|
||||
}
|
||||
|
||||
return $sq;
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# löscht Einträge aus der Sendequeue
|
||||
#############################################################################################
|
||||
sub purgeSendqueue {
|
||||
my $paref = shift;
|
||||
my $hash = $paref->{hash} // carp "got no hash value" && return;
|
||||
my $name = $paref->{name} // carp "got no name value" && return;
|
||||
my $prop = $paref->{prop} // carp "got no purgeSendqueue argument" && return;
|
||||
|
||||
my $type = $hash->{TYPE};
|
||||
|
||||
if($prop eq "-all-") {
|
||||
delete $hash->{OPIDX};
|
||||
delete $data{$type}{$name}{sendqueue}{entries};
|
||||
$data{$type}{$name}{sendqueue}{index} = 0;
|
||||
return "All entries of SendQueue are deleted";
|
||||
}
|
||||
elsif($prop eq "-permError-") {
|
||||
for my $idx (keys %{$data{$type}{$name}{sendqueue}{entries}}) {
|
||||
delete $data{$type}{$name}{sendqueue}{entries}{$idx}
|
||||
if($data{$type}{$name}{sendqueue}{entries}{$idx}{forbidSend});
|
||||
}
|
||||
return qq{All entries with state "permanent send error" are deleted};
|
||||
}
|
||||
else {
|
||||
delete $data{$type}{$name}{sendqueue}{entries}{$prop};
|
||||
return qq{SendQueue entry with index "$prop" deleted};
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#############################################################################################
|
||||
# Länge Senedequeue updaten
|
||||
#############################################################################################
|
||||
sub updQueueLength {
|
||||
my $hash = shift // carp "got no hash value" && return;
|
||||
my $rst = shift;
|
||||
|
||||
my $name = $hash->{NAME};
|
||||
my $type = $hash->{TYPE};
|
||||
my $ql = keys %{$data{$type}{$name}{sendqueue}{entries}};
|
||||
|
||||
readingsBeginUpdate ($hash);
|
||||
readingsBulkUpdateIfChanged ($hash, "QueueLenth", $ql); # Länge Sendqueue updaten
|
||||
readingsEndUpdate ($hash,1);
|
||||
|
||||
my $head = "next planned SendQueue start:";
|
||||
|
||||
if($rst) { # resend Timer gesetzt
|
||||
$hash->{RESEND} = $head." ".FmtDateTime($rst);
|
||||
}
|
||||
else {
|
||||
$hash->{RESEND} = $head." immediately by next entry";
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user