2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 00:36:25 +00:00

SMUtils.pm: Version 1.28.3

git-svn-id: https://svn.fhem.de/fhem/trunk@29569 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2025-01-25 12:27:22 +00:00
parent 99a5292b6a
commit 61c876fb3f

View File

@ -3,7 +3,7 @@
######################################################################################################################### #########################################################################################################################
# SMUtils.pm # SMUtils.pm
# #
# (c) 2020-2024 by Heiko Maaz # (c) 2020-2025 by Heiko Maaz
# e-mail: Heiko dot Maaz at t-online dot de # e-mail: Heiko dot Maaz at t-online dot de
# #
# This Module provides routines for FHEM modules developed for Synology use cases. # This Module provides routines for FHEM modules developed for Synology use cases.
@ -26,6 +26,7 @@
######################################################################################################################### #########################################################################################################################
# Version History # Version History
# 1.28.3 25.01.2025 getClHash: get more parameter
# 1.28.2 15.12.2024 change delHashRefDeep # 1.28.2 15.12.2024 change delHashRefDeep
# 1.28.1 08.12.2024 fix delHashRefDeep # 1.28.1 08.12.2024 fix delHashRefDeep
# 1.28.0 07.12.2024 add function delHashRefDeep # 1.28.0 07.12.2024 add function delHashRefDeep
@ -64,7 +65,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 0.77; our $VERSION = version->declare('1.28.2'); use version 0.77; our $VERSION = version->declare('1.28.3');
use Exporter ('import'); use Exporter ('import');
our @EXPORT_OK = qw( our @EXPORT_OK = qw(
@ -174,33 +175,37 @@ my %hasqhandler = ( # Ha
############################################################################### ###############################################################################
sub getClHash { sub getClHash {
my $hash = shift // carp $carpnohash && return; my $hash = shift // carp $carpnohash && return;
my $nobgd = shift; my $nobgd = shift // 0;
my $fwdev = shift // ''; # CL-Hash eines bestimmten FW-Devices übernehmen
my $name = $hash->{NAME}; my $name = $hash->{NAME};
my $ret; my $ret;
if ($nobgd) { # nur übergebenen CL-Hash speichern, keine Hintergrundverarbeitung bzw. synthetische Erstellung CL-Hash delClHash ($name); # vorhandenen CL-Hash löschen
if ($nobgd) { # übergebenen CL-Hash in Helper eintragen
$hash->{HELPER}{CL}{1} = $hash->{CL}; $hash->{HELPER}{CL}{1} = $hash->{CL};
return; return;
} }
else { # Clienthash wurde nicht übergeben und wird erstellt (FHEMWEB Instanzen mit canAsyncOutput=1 analysiert)
if (!defined($hash->{CL})) { # Clienthash wurde nicht übergeben und wird erstellt (FHEMWEB Instanzen mit canAsyncOutput=1 analysiert)
my $outdev;
my @webdvs = devspec2array("TYPE=FHEMWEB:FILTER=canAsyncOutput=1:FILTER=STATE=Connected"); my @webdvs = devspec2array("TYPE=FHEMWEB:FILTER=canAsyncOutput=1:FILTER=STATE=Connected");
my $i = 1; my $i = 1;
for my $outdev (@webdvs) { for my $outdev (@webdvs) {
next if(!$defs{$outdev}); next if(!$defs{$outdev});
$hash->{HELPER}{CL}{$i}->{NAME} = $defs{$outdev}{NAME}; next if($fwdev && $fwdev ne $defs{$outdev}{SNAME});
$hash->{HELPER}{CL}{$i}->{NR} = $defs{$outdev}{NR};
$hash->{HELPER}{CL}{$i}->{COMP} = 1; $hash->{HELPER}{CL}{$i}->{NAME} = $defs{$outdev}{NAME};
$hash->{HELPER}{CL}{$i}->{NR} = $defs{$outdev}{NR};
$hash->{HELPER}{CL}{$i}->{PEER} = $defs{$outdev}{PEER}; # IP-Adresse des FHEMWEB Servers
$hash->{HELPER}{CL}{$i}->{SNAME} = $defs{$outdev}{SNAME}; # Name des aufrufenden FHEMWEB Devices
$hash->{HELPER}{CL}{$i}->{SPORT} = $defs{$defs{$outdev}{SNAME}}{PORT}; # Port des FHEMWEB SNAME! Devices
$hash->{HELPER}{CL}{$i}->{COMP} = 1;
$i++; $i++;
} }
}
else { # übergebenen CL-Hash in Helper eintragen
$hash->{HELPER}{CL}{1} = $hash->{CL};
} }
if (defined($hash->{HELPER}{CL}{1})) { # Clienthash auflösen zur Fehlersuche (aufrufende FHEMWEB Instanz) if (defined($hash->{HELPER}{CL}{1})) { # Clienthash auflösen zur Fehlersuche (aufrufende FHEMWEB Instanz)
for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) { for (my $k=1; (defined($hash->{HELPER}{CL}{$k})); $k++ ) {
Log3 ($name, 4, "$name - Clienthash number: $k"); Log3 ($name, 4, "$name - Clienthash number: $k");
while (my ($key,$val) = each(%{$hash->{HELPER}{CL}{$k}})) { while (my ($key,$val) = each(%{$hash->{HELPER}{CL}{$k}})) {
@ -224,7 +229,7 @@ sub delClHash {
my $name = shift; my $name = shift;
my $hash = $defs{$name}; my $hash = $defs{$name};
delete($hash->{HELPER}{CL}); delete $hash->{HELPER}{CL};
return; return;
} }