From 2aa339e03a53461aecb3864c55d44f3329d2cd72 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Tue, 25 May 2021 10:25:09 +0000 Subject: [PATCH] SMUtils.pm: new version 1.23.0 git-svn-id: https://svn.fhem.de/fhem/trunk@24508 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/lib/FHEM/SynoModules/SMUtils.pm | 51 ++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/fhem/lib/FHEM/SynoModules/SMUtils.pm b/fhem/lib/FHEM/SynoModules/SMUtils.pm index bab48109e..c7c0d1731 100644 --- a/fhem/lib/FHEM/SynoModules/SMUtils.pm +++ b/fhem/lib/FHEM/SynoModules/SMUtils.pm @@ -26,6 +26,7 @@ ######################################################################################################################### # Version History +# 1.23.0 new sub evalDecodeJSON # 1.22.0 new sub addCHANGED # 1.21.0 new sub timestringToTimestamp / createReadingsFromArray # 1.20.7 change to defined ... in sub _addSendqueueSimple @@ -72,6 +73,7 @@ our @EXPORT_OK = qw( getCredentials showStoredCredentials evaljson + evalDecodeJSON login logout setActiveToken @@ -1080,9 +1082,9 @@ sub evaljson { return ($success,$myjson); } - eval {decode_json($myjson)} or do { + eval {decode_json($myjson)} or do { if( ($hash->{HELPER}{RUNVIEW} && $hash->{HELPER}{RUNVIEW} =~ m/^live_.*hls$/x) || - $OpMode =~ m/^.*_hls$/x ) { # SSCam: HLS aktivate/deaktivate bringt kein JSON wenn bereits aktiviert/deaktiviert + $OpMode =~ m/^.*_hls$/x ) { # SSCam: HLS aktivate/deaktivate bringt kein JSON wenn bereits aktiviert/deaktiviert Log3($name, 5, "$name - HLS-activation data return: $myjson"); if ($myjson =~ m/{"success":true}/x) { @@ -1103,6 +1105,51 @@ sub evaljson { return ($success,$myjson); } +############################################################################### +# testet und decodiert einen übergebenen JSON-String +# Die dekodierten Daten werden zurück gegeben bzw. im +# SSCam-Kontext angepasst +############################################################################### +sub evalDecodeJSON { + my $hash = shift // carp $carpnohash && return; + my $myjson = shift // carp "got no string for JSON test" && return; + my $OpMode = $hash->{OPMODE}; + my $name = $hash->{NAME}; + + my $success = 1; + my $decoded = q{}; + + if($nojsonmod) { + $success = 0; + Log3($name, 1, "$name - ERROR: Perl module 'JSON' is missing. You need to install it."); + return ($success,$myjson); + } + + eval {$decoded = decode_json($myjson)} or do { + if( ($hash->{HELPER}{RUNVIEW} && $hash->{HELPER}{RUNVIEW} =~ m/^live_.*hls$/x) || + $OpMode =~ m/^.*_hls$/x ) { # SSCam: HLS aktivate/deaktivate bringt kein JSON wenn bereits aktiviert/deaktiviert + Log3($name, 5, "$name - HLS-activation data return: $myjson"); + + if ($myjson =~ m/{"success":true}/x) { + $success = 1; + $myjson = '{"success":true}'; + $decoded = decode_json($myjson); + } + } + else { + $success = 0; + $decoded = q{}; + + my $errorcode = "9000"; + my $error = expErrors($hash,$errorcode); # Fehlertext zum Errorcode ermitteln + + setReadingErrorState ($hash, $error, $errorcode); + } + }; + +return ($success,$decoded); +} + #################################################################################### # Login wenn keine oder ungültige Session-ID vorhanden ist # $apiref = Referenz zum API Hash