mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-01 20:20:10 +00:00
31_LightScene: support for configDB (by Beta-User)
git-svn-id: https://svn.fhem.de/fhem/trunk@25909 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
befe74cc81
commit
af1f1839ee
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- feature: 31_LightScene: support for configDB (by Beta-User)
|
||||||
- bugfix: 72_FB_CALLMONITOR: create reading "internal_connection" also
|
- bugfix: 72_FB_CALLMONITOR: create reading "internal_connection" also
|
||||||
for unknown connection type values
|
for unknown connection type values
|
||||||
- bugfix: 73_GasCalculator: German CommandRef fixed
|
- bugfix: 73_GasCalculator: German CommandRef fixed
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
@ -348,6 +347,8 @@ myStatefileName()
|
|||||||
return $statefile ."LightScenes.dd.save" if( $LightScene_hasDataDumper );
|
return $statefile ."LightScenes.dd.save" if( $LightScene_hasDataDumper );
|
||||||
}
|
}
|
||||||
my $LightScene_LastSaveTime="";
|
my $LightScene_LastSaveTime="";
|
||||||
|
|
||||||
|
|
||||||
sub
|
sub
|
||||||
LightScene_Save()
|
LightScene_Save()
|
||||||
{
|
{
|
||||||
@ -367,29 +368,28 @@ LightScene_Save()
|
|||||||
$hash->{$d} = $defs{$d}{SCENES} if( keys(%{$defs{$d}{SCENES}}) );
|
$hash->{$d} = $defs{$d}{SCENES} if( keys(%{$defs{$d}{SCENES}}) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if(open(FH, ">$statefile")) {
|
my @content;
|
||||||
my $t = localtime;
|
my $t = localtime;
|
||||||
print FH "#$t\n";
|
push @content, "#$t";
|
||||||
|
|
||||||
if( $LightScene_hasJSON ) {
|
if( $LightScene_hasJSON ) {
|
||||||
print FH encode_json($hash) if( defined($hash) );
|
push @content, encode_json($hash) if defined $hash;
|
||||||
} elsif( $LightScene_hasDataDumper ) {
|
} elsif( $LightScene_hasDataDumper ) {
|
||||||
my $dumper = Data::Dumper->new([]);
|
my $dumper = Data::Dumper->new([]);
|
||||||
$dumper->Terse(1);
|
$dumper->Terse(1);
|
||||||
|
$dumper->Values([$hash]);
|
||||||
$dumper->Values([$hash]);
|
push @content, $dumper->Dump;
|
||||||
print FH $dumper->Dump;
|
|
||||||
}
|
|
||||||
|
|
||||||
close(FH);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
my $msg = "LightScene_Save: Cannot open $statefile: $!";
|
|
||||||
Log3 undef, 1, $msg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return if @content < 2;
|
||||||
|
my $dbused = configDBUsed();
|
||||||
|
my $ret = FileWrite($statefile,@content);
|
||||||
|
if ($ret){
|
||||||
|
Log3( undef, 1, "LightScene_Save: Write $statefile [DB: $dbused] failed $ret");
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
LightScene_Load($)
|
LightScene_Load($)
|
||||||
{
|
{
|
||||||
@ -398,29 +398,34 @@ LightScene_Load($)
|
|||||||
return "No statefile specified" if(!$attr{global}{statefile});
|
return "No statefile specified" if(!$attr{global}{statefile});
|
||||||
my $statefile = myStatefileName();
|
my $statefile = myStatefileName();
|
||||||
|
|
||||||
if(open(FH, "<$statefile")) {
|
my ($ret, @content) = FileRead($statefile);
|
||||||
my $encoded;
|
if ($ret) {
|
||||||
while (my $line = <FH>) {
|
if (configDBUsed()){
|
||||||
chomp $line;
|
Log3( $hash, 1, "LightScene_Load: please import your config file $statefile into configDB!");
|
||||||
next if($line =~ m/^#.*$/);
|
($ret, @content) = FileRead( { FileName => $statefile, ForceType => 'file' } );
|
||||||
$encoded .= $line;
|
Log3( $hash, 1, "LightScene_Load: Cannot open $statefile: $ret") if $ret;
|
||||||
|
} else {
|
||||||
|
Log3( $hash, 1, "LightScene_Load: Cannot open $statefile: $ret");
|
||||||
}
|
}
|
||||||
close(FH);
|
return if $ret;
|
||||||
|
|
||||||
return if( !defined($encoded) );
|
|
||||||
|
|
||||||
my $decoded;
|
|
||||||
if( $LightScene_hasJSON ) {
|
|
||||||
$decoded = eval { decode_json($encoded) };
|
|
||||||
} elsif( $LightScene_hasDataDumper ) {
|
|
||||||
$decoded = eval $encoded;
|
|
||||||
}
|
|
||||||
$hash->{SCENES} = $decoded->{$hash->{NAME}} if( defined($decoded->{$hash->{NAME}}) );
|
|
||||||
} else {
|
|
||||||
my $msg = "LightScene_Load: Cannot open $statefile: $!";
|
|
||||||
Log3 undef, 1, $msg;
|
|
||||||
}
|
}
|
||||||
return undef;
|
my $encoded;
|
||||||
|
for my $line (@content) {
|
||||||
|
#chomp $line;
|
||||||
|
next if($line =~ m/^#.*$/);
|
||||||
|
$encoded .= $line;
|
||||||
|
}
|
||||||
|
|
||||||
|
return if( !defined($encoded) );
|
||||||
|
|
||||||
|
my $decoded;
|
||||||
|
if( $LightScene_hasJSON ) {
|
||||||
|
$decoded = eval { decode_json($encoded) };
|
||||||
|
} elsif( $LightScene_hasDataDumper ) {
|
||||||
|
$decoded = eval $encoded;
|
||||||
|
}
|
||||||
|
$hash->{SCENES} = $decoded->{$hash->{NAME}} if( defined($decoded->{$hash->{NAME}}) );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
|
Loading…
x
Reference in New Issue
Block a user