2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-08 07:24:21 +00:00

76_SolarForecast: contrib 0.82.0

git-svn-id: https://svn.fhem.de/fhem/trunk@27922 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2023-09-03 16:45:53 +00:00
parent 2fcc46f101
commit b4687e5377

View File

@ -1251,8 +1251,8 @@ sub Set {
; ;
} }
else { else {
$setlist .= "aiAddInstance:noArg ". $setlist .= #"aiAddInstance:noArg ".
"aiTrain:noArg ". #"aiTrain:noArg ".
"moduleDirection ". "moduleDirection ".
"moduleTiltAngle " "moduleTiltAngle "
; ;
@ -2069,11 +2069,12 @@ sub _setreset { ## no critic "not used"
} }
if($prop eq 'aiData') { if($prop eq 'aiData') {
my $err;
my $dtree = AiDetreeVal ($hash, undef); my $dtree = AiDetreeVal ($hash, undef);
if ($dtree) { if ($dtree) {
delete $data{$type}{$name}{aidectree}; delete $data{$type}{$name}{aidectree};
my $err = aiInit ($paref); ($err, $dtree) = aiInit ($paref);
return $err if($err); return $err if($err);
} }
@ -10473,13 +10474,12 @@ sub aiAddInstance { ## no critic "not used"
return if(!isDWDUsed ($hash)); return if(!isDWDUsed ($hash));
my $err;
my $dtree = AiDetreeVal ($hash, undef); my $dtree = AiDetreeVal ($hash, undef);
if (!$dtree) { if (!$dtree) {
my $err = aiInit ($paref); ($err, $dtree) = aiInit ($paref);
return if($err); return if($err);
$dtree = AiDetreeVal ($hash, undef);
} }
my ($pvrl, $temp, $wcc, $wrp, $rad1h); my ($pvrl, $temp, $wcc, $wrp, $rad1h);
@ -10544,10 +10544,8 @@ sub aiTrain { ## no critic "not used"
my $dtree = AiDetreeVal ($hash, undef); my $dtree = AiDetreeVal ($hash, undef);
if (!$dtree) { if (!$dtree) {
$err = aiInit ($paref); ($err, $dtree) = aiInit ($paref);
return if($err); return if($err);
$dtree = AiDetreeVal ($hash, undef);
} }
eval { $dtree->train eval { $dtree->train
@ -10581,13 +10579,12 @@ sub aiGetResult { ## no critic "not used"
return if(!isDWDUsed ($hash)); return if(!isDWDUsed ($hash));
my $err;
my $dtree = AiDetreeVal ($hash, undef); my $dtree = AiDetreeVal ($hash, undef);
if (!$dtree) { if (!$dtree) {
my $err = aiInit ($paref); ($err, $dtree) = aiInit ($paref);
return if($err); return if($err);
$dtree = AiDetreeVal ($hash, undef);
} }
for my $idx (sort keys %{$data{$type}{$name}{nexthours}}) { for my $idx (sort keys %{$data{$type}{$name}{nexthours}}) {
@ -10634,19 +10631,23 @@ sub aiInit { ## no critic "not used"
my $name = $paref->{name}; my $name = $paref->{name};
my $type = $paref->{type}; my $type = $paref->{type};
my $err;
if ($aidtabs) { if ($aidtabs) {
my $msg = qq(The Perl module AI::DecisionTree is missing. Please install it with e.g. "sudo apt-get install libai-decisiontree-perl" for AI support); my $err = qq(The Perl module AI::DecisionTree is missing. Please install it with e.g. "sudo apt-get install libai-decisiontree-perl" for AI support);
debugLog ($paref, 'aiProcess', $msg); debugLog ($paref, 'aiProcess', $err);
$data{$type}{$name}{current}{aiinitstate} = $msg; $data{$type}{$name}{current}{aiinitstate} = $err;
return $msg; return $err;
} }
my $dtree = new AI::DecisionTree ( verbose => 0, noise_mode => 'pick_best' );
$data{$type}{$name}{aidectree} = new AI::DecisionTree ( verbose => 0, noise_mode => 'pick_best' ); $data{$type}{$name}{aidectree} = $dtree;
$data{$type}{$name}{current}{aiinitstate} = 'ok'; $data{$type}{$name}{current}{aiinitstate} = 'ok';
Log3 ($name, 3, "$name - AI::DecisionTree new initialized"); Log3 ($name, 3, "$name - AI::DecisionTree new initialized");
return; return ($err, $dtree);
} }
################################################################ ################################################################