diff --git a/fhem/contrib/DS_Starter/93_DbLog.pm b/fhem/contrib/DS_Starter/93_DbLog.pm index dac70bb4d..475abae2d 100644 --- a/fhem/contrib/DS_Starter/93_DbLog.pm +++ b/fhem/contrib/DS_Starter/93_DbLog.pm @@ -408,6 +408,8 @@ sub _DbLog_initOnStart { my $name = $hash->{NAME}; + DbLog_SBP_CheckAndInit ($hash); + my $rst = DbLog_SBP_sendConnectionData ($hash); # Verbindungsdaten an SubProzess senden if (!$rst) { Log3 ($name, 3, "DbLog $name - DB connection parameters are initialized in the SubProcess"); @@ -543,9 +545,14 @@ sub DbLog_Attr { } } - if ($aName eq "SQLiteCacheSize" || $aName eq "SQLiteJournalMode") { - InternalTimer(gettimeofday()+1.0, "DbLog_attrForSQLite", $hash, 0); - InternalTimer(gettimeofday()+1.5, "DbLog_attrForSQLite", $hash, 0); # muß zweimal ausgeführt werden - Grund unbekannt :-( + if ($aName eq "SQLiteCacheSize" || $aName eq "SQLiteJournalMode") { + if ($init_done == 1) { + InternalTimer(gettimeofday()+1.0, "DbLog_attrForSQLite", $hash, 0); + InternalTimer(gettimeofday()+1.5, "DbLog_attrForSQLite", $hash, 0); # muß zweimal ausgeführt werden - Grund unbekannt :-( + + + DbLog_SBP_dbDisconnect ($hash, 1); # DB Verbindung und Verbindungsdaten im SubProzess löschen + } } if($aName eq "colEvent" || $aName eq "colReading" || $aName eq "colValue") { @@ -574,7 +581,11 @@ sub DbLog_Attr { if($aName eq "commitMode") { if ($dbh) { $dbh->disconnect(); - } + } + + if ($init_done == 1) { + DbLog_SBP_dbDisconnect ($hash, 1); # DB Verbindung und Verbindungsdaten im SubProzess löschen + } } if($aName eq "showproctime") { @@ -615,8 +626,7 @@ sub DbLog_Attr { DbLog_setReadingstate ($hash, $val); if ($do == 0) { - InternalTimer(gettimeofday()+2, "DbLog_execmemcache", $hash, 0) if($async); - InternalTimer(gettimeofday()+2, "_DbLog_ConnectPush", $hash, 0) if(!$async); + InternalTimer(gettimeofday()+2, "_DbLog_initOnStart", $hash, 0); } } @@ -635,6 +645,10 @@ sub DbLog_Attr { $hash->{HELPER}{TH} = 'history'; $hash->{HELPER}{TC} = 'current'; } + + if ($init_done == 1) { + DbLog_SBP_dbDisconnect ($hash, 1); # DB Verbindung und Verbindungsdaten im SubProzess löschen + } } return; @@ -2561,7 +2575,7 @@ sub DbLog_SBP_onRun { delete $store->{dbparams}; } - my $msg0 = $dbdelpars ? ' and stored DB params were deleted' : ''; + my $msg0 = $dbdelpars ? ' and stored DB params in SubProcess were deleted' : ''; my $msg1 = 'database disconnected by request'.$msg0; Log3 ($name, 3, "DbLog $name - INFO: $msg1"); @@ -3750,8 +3764,8 @@ sub DbLog_SBP_Read { readingsEndUpdate ($hash, 1); } - my $state = $error ? $error : - IsDisabled($name) ? 'disabled' : + my $state = IsDisabled($name) ? 'disabled' : + $error ? $error : 'connected'; DbLog_setReadingstate ($hash, $state); @@ -8091,10 +8105,18 @@ return;
  • set <name> rereadcfg

    +
  • +
    + +
  • set <name> stopSubProcess

    + +

  • set <name> userCommand <validSqlStatement>

    @@ -9607,7 +9629,7 @@ attr SMA_Energymeter DbLogValueFn
  • set <name> reopen [n]