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

use Data::Dumper is JSON is not available

git-svn-id: https://svn.fhem.de/fhem/trunk@3793 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
justme-1968 2013-08-26 14:15:02 +00:00
parent 1f9b1ac4b1
commit bf655e07c3

View File

@ -6,10 +6,13 @@ package main;
use strict; use strict;
use warnings; use warnings;
use POSIX; use POSIX;
use JSON; #use JSON;
use Data::Dumper;
use vars qw(%FW_webArgs); # all arguments specified in the GET use vars qw(%FW_webArgs); # all arguments specified in the GET
my $LightScene_hasJSON = 1;
sub LightScene_Initialize($) sub LightScene_Initialize($)
{ {
my ($hash) = @_; my ($hash) = @_;
@ -21,6 +24,9 @@ sub LightScene_Initialize($)
$hash->{GetFn} = "LightScene_Get"; $hash->{GetFn} = "LightScene_Get";
$hash->{FW_detailFn} = "LightScene_detailFn"; $hash->{FW_detailFn} = "LightScene_detailFn";
eval "use JSON";
$LightScene_hasJSON = 0 if($@);
} }
sub LightScene_Define($$) sub LightScene_Define($$)
@ -245,13 +251,21 @@ LightScene_Save()
my $t = localtime; my $t = localtime;
print FH "#$t\n"; print FH "#$t\n";
print FH encode_json($hash) if( defined($hash) ); if( $LightScene_hasJSON ) {
print FH encode_json($hash) if( defined($hash) );
} else {
my $dumper = Data::Dumper->new([]);
$dumper->Terse(1);
$dumper->Values([$hash]);
print FH $dumper->Dump;
}
close(FH); close(FH);
} else { } else {
my $msg = "LightScene_Save: Cannot open $statefile: $!"; my $msg = "LightScene_Save: Cannot open $statefile: $!";
Log 1, $msg; Log3 undef, 1, $msg;
} }
return undef; return undef;
@ -265,25 +279,27 @@ LightScene_Load($)
my $statefile = myStatefileName(); my $statefile = myStatefileName();
if(open(FH, "<$statefile")) { if(open(FH, "<$statefile")) {
my $json; my $encoded;
while (my $line = <FH>) { while (my $line = <FH>) {
chomp $line; chomp $line;
next if($line =~ m/^#.*$/); next if($line =~ m/^#.*$/);
$json .= $line; $encoded .= $line;
} }
close(FH); close(FH);
return if( !defined($json) ); return if( !defined($encoded) );
my $decoded = decode_json( $json ); my $decoded;
if( $LightScene_hasJSON ) {
if( defined($decoded->{$hash->{NAME}}) ) { $decoded = decode_json( $encoded );
$hash->{SCENES} = $decoded->{$hash->{NAME}}; } else {
$decoded = eval $encoded;
} }
$hash->{SCENES} = $decoded->{$hash->{NAME}} if( defined($decoded->{$hash->{NAME}}) );
} else { } else {
my $msg = "LightScene_Load: Cannot open $statefile: $!"; my $msg = "LightScene_Load: Cannot open $statefile: $!";
Log 1, $msg; Log3 undef, 1, $msg;
} }
return undef; return undef;
} }
@ -323,7 +339,7 @@ LightScene_Set($@)
foreach my $d (sort keys %{ $hash->{CONTENT} }) { foreach my $d (sort keys %{ $hash->{CONTENT} }) {
next if(!$defs{$d}); next if(!$defs{$d});
if($defs{$d}{INSET}) { if($defs{$d}{INSET}) {
Log 1, "ERROR: endless loop detected for $d in " . $hash->{NAME}; Log3 $name, 1, "ERROR: endless loop detected for $d in " . $hash->{NAME};
next; next;
} }
@ -402,7 +418,7 @@ LightScene_Set($@)
} }
delete($hash->{INSET}); delete($hash->{INSET});
Log GetLogLevel($hash->{NAME},5), "SET: $ret" if($ret); Log3 $hash, 5, "SET: $ret" if($ret);
return $ret; return $ret;