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 GPUtils qw( GP_Import GP_Export );
|
||||||
use Carp qw(croak carp);
|
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');
|
use Exporter ('import');
|
||||||
our @EXPORT_OK = qw(
|
our @EXPORT_OK = qw(
|
||||||
@@ -58,6 +58,9 @@ our @EXPORT_OK = qw(
|
|||||||
delCallParts
|
delCallParts
|
||||||
setReadingErrorNone
|
setReadingErrorNone
|
||||||
setReadingErrorState
|
setReadingErrorState
|
||||||
|
listSendqueue
|
||||||
|
purgeSendqueue
|
||||||
|
updQueueLength
|
||||||
);
|
);
|
||||||
|
|
||||||
our %EXPORT_TAGS = (all => [@EXPORT_OK]);
|
our %EXPORT_TAGS = (all => [@EXPORT_OK]);
|
||||||
@@ -69,6 +72,7 @@ BEGIN {
|
|||||||
qw(
|
qw(
|
||||||
AttrVal
|
AttrVal
|
||||||
Log3
|
Log3
|
||||||
|
data
|
||||||
defs
|
defs
|
||||||
modules
|
modules
|
||||||
CancelDelayedShutdown
|
CancelDelayedShutdown
|
||||||
@@ -654,4 +658,95 @@ sub setReadingErrorState {
|
|||||||
return;
|
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;
|
1;
|
||||||
Reference in New Issue
Block a user