2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

SMUtils.pm: new version 1.23.0

git-svn-id: https://svn.fhem.de/fhem/trunk@24508 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2021-05-25 10:25:09 +00:00
parent d1ca286513
commit 2aa339e03a

View File

@ -26,6 +26,7 @@
######################################################################################################################### #########################################################################################################################
# Version History # Version History
# 1.23.0 new sub evalDecodeJSON
# 1.22.0 new sub addCHANGED # 1.22.0 new sub addCHANGED
# 1.21.0 new sub timestringToTimestamp / createReadingsFromArray # 1.21.0 new sub timestringToTimestamp / createReadingsFromArray
# 1.20.7 change to defined ... in sub _addSendqueueSimple # 1.20.7 change to defined ... in sub _addSendqueueSimple
@ -72,6 +73,7 @@ our @EXPORT_OK = qw(
getCredentials getCredentials
showStoredCredentials showStoredCredentials
evaljson evaljson
evalDecodeJSON
login login
logout logout
setActiveToken setActiveToken
@ -1080,9 +1082,9 @@ sub evaljson {
return ($success,$myjson); 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) || 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"); Log3($name, 5, "$name - HLS-activation data return: $myjson");
if ($myjson =~ m/{"success":true}/x) { if ($myjson =~ m/{"success":true}/x) {
@ -1103,6 +1105,51 @@ sub evaljson {
return ($success,$myjson); 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 # Login wenn keine oder ungültige Session-ID vorhanden ist
# $apiref = Referenz zum API Hash # $apiref = Referenz zum API Hash