DbLogging - DbLogInclude nur zu bestimmter Zeit?

Begonnen von Honigmaul, 03 Januar 2023, 16:46:46

Vorheriges Thema - Nächstes Thema

Honigmaul

Hallo,

Ich bin auf der Suche nach einer Möglichkeit gewisse Readings nur einmal pro Tag, um Mitternacht in die DB zu schreiben.
Leider bin ich hier noch nicht fündig geworden, bzw. mit DbRep wurde ich auch nicht schlau. :o

Konkret möchte ich diese Readings meines Wechselrichters oder viel mehr des Smartmeters loggen um Tagesverbrauchswerte darstellen zu können.

Internals:
   DEF        192.168.1.101
   FUUID      638df3be-f33f-4460-c31f-e54c24c11709c4ee
   NAME       PV0
   NR         419
   STATE      <div style="text-align:left;">
PV &nbsp;&nbsp;: 308.50 W<br>
Akku: 0.00 W<br>
Netz: 332.90 W<br>
Last: 602.26 W<br>
Bezug gestern 12.9 kWh<br>
Einspeisung gestern 0.9 kWh<br>
Bezug heute 4.23 kWh<br>
Einspeisung heute 0.00 kWh<br>
Eigenverbrauch heute: 0.09 kWh<br>
Gesamtverbrauch heute: 4.32 kWh
</div>

   TYPE       fronius
READINGS:
     2023-01-04 08:54:19   0.BezugNetzHeute_kWh 4.23
     2023-01-04 08:54:19   0.EigenverbrauchHeute_kWh 0.09
     2023-01-04 08:54:19   0.EinspeisungNetzHeute_kWh 0.00
     2023-01-04 08:54:19   0.GesamtverbrauchHeute_kWh 4.32
     2023-01-04 08:54:19   0.produziertHeute_kWh 0.09


Vielleicht hat jemand eine Idee?
Vielen Dank schon mal fürs Nachdenken  ;D

dyna

Moin,

ich benutze das hier. Das ist auch recycelter Code etwas abgewandelt. Würde sicher auch als "at" gehen.
define Solaranlage_Ergebnisse_Fortlaufend_Sichern_Doif DOIF ([23:58])\
    (\
{\
   my $timedelete = TimeNow();;\
   my ($year,$mon,$day,$hour,$min) = $timedelete =~ m/(\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):\d\d/;;\
    \
   my $timestamp = "$year-$mon-$day $hour:$min:00";;\
   my $value = ReadingsNum("S10","Einspeisung_Fortlaufend",0);;\
   fhem "set logdb addCacheLine ".$timestamp."|S10|addlog|Einspeisung_Summe:|Einspeisung_Fortlaufend|".$value."|";;\
      $value = ReadingsNum("S10","Entladung_Fortlaufend",0);;\
   fhem "set logdb addCacheLine ".$timestamp."|S10|addlog|Entladung_Summe:|Entladung_Fortlaufend|".$value."|";;\
      $value = ReadingsNum("S10","Hausverbrauch_Fortlaufend",0);;\
   fhem "set logdb addCacheLine ".$timestamp."|S10|addlog|Hausverbrauch_Summe:|Hausverbrauch_Fortlaufend|".$value."|";;\
      $value = ReadingsNum("S10","Netzbezug_Fortlaufend",0);;\
   fhem "set logdb addCacheLine ".$timestamp."|S10|addlog|Netzbezug_Summe:|Netzbezug_Fortlaufend|".$value."|";;\
      $value = ReadingsNum("S10","Ertrag_Fortlaufend",0);;\
   fhem "set logdb addCacheLine ".$timestamp."|S10|addlog|Ertrag_Summe:|Ertrag_Fortlaufend|".$value."|";;\
   \
   \
   }\
)
attr Solaranlage_Ergebnisse_Fortlaufend_Sichern_Doif do always
attr Solaranlage_Ergebnisse_Fortlaufend_Sichern_Doif room Solaranlage

DS_Starter

Zitat
Leider bin ich hier noch nicht fündig geworden, bzw. mit DbRep wurde ich auch nicht schlau. :o
Generell ist DbLog zum speichern von Daten vorgesehen und DbRep zur Auswertung von Datenbankeinträgen.

Alternativ zu addCacheLine  hat DbLog auch den Befehl addLog eingebaut mit dem man über ein at oder DOIF zu einem definierten Zeitpunkt einen Wert loggen kann, z.B.:


define at.addlog.1 at *23:59:59 set LogDB addLog SMA_Energymeter:Bezug_Wirkleistung !useExcludes


siehe Commandref DbLog-> addLog
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Honigmaul

#3
Guten Morgen zusammen,

Vielen Dank für die Hilfe. Beide Varianten funktionieren. :D
Hab das jetzt so gelöst:

Internals:
   CFGFN     
   COMMAND    set DBLogging addLog PV0:0.BezugNetzHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.EinspeisungNetzHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.produziertHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.EigenverbrauchHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.GesamtverbrauchHeute_kWh !useExcludes;

   DEF        *23:59:30
set DBLogging addLog PV0:0.BezugNetzHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.EinspeisungNetzHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.produziertHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.EigenverbrauchHeute_kWh !useExcludes;
set DBLogging addLog PV0:0.GesamtverbrauchHeute_kWh !useExcludes;

   FUUID      63b52c35-f33f-4460-a865-86f4720a1da07135
   NAME       at_PV0Summen
   NR         11715
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 23:59:30
   TIMESPEC   23:59:30
   TRIGGERTIME 1672873170
   TRIGGERTIME_FMT 2023-01-04 23:59:30
   TYPE       at
   READINGS:
     2023-01-04 08:49:56   state           Next: 23:59:30
   hmccu:
Attributes:
   room       11_Strom,92_at


Ich lasse es mal die nächsten Tage so laufen.

Vielen Dank nochmal für die Antworten und Erklärungen.