FHEM Forum

FHEM - Energiemanagement und Energieerzeugung => Solaranlagen => Thema gestartet von: Erby am 21 Februar 2025, 16:59:17

Titel: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 21 Februar 2025, 16:59:17
Hallo,

ich habe seit kurzen die "Datenbankgestützte Erstellung der Energiebilanz einer SMA PV-Anlage mit Überschusseinspeisung" mit der Anleitung aus der WIKI eingerichtet. Hat alles super geklappt.

Jetzt möchte ich gerne die Monats- und Jahreswerte korrigieren, um letztendlich korrekte Werte seit Monatsangang und Jahresbeginn angezeigt zu bekommen. Nur wie korrigiere bzw. ergänze ich in der Praxis diese Werte?

Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 21 Februar 2025, 18:38:25
Das kannst Du mit einem SQL Tool mit SQL Statements direkt in der Datenbank machen.
Mit DbRep kannst Du auch einiges erledigen.
Ich verwende eine original Oracle MySQL im Docker Container, da hat man den vollen MySQL Kommandoumfang.

VG Christian
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 21 Februar 2025, 20:06:43
Vielen Dank Christian.

Ich benutze Fhem auf einem Pi4 mit MariaDB.

Ich habe keine Ahnung von SQL. Deswegen benötige ich etwas mehr Erklärung.

Welches Tool nutze ich dafür? Kann man das nicht in Fhem mit Befehlen machen? Wenn ja welche?

Grüße Micha
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: rabehd am 21 Februar 2025, 20:12:24
Hast Du ein DBRep-Device? Wenn nicht, dann lege dir eins an.
Dann lies Dir mal die Commandref dazu durch, Stichwort "changeValue".
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 21 Februar 2025, 20:15:30
Ich hab auch alles auf nem RPI4 nur halt in Docker.
Für Oracle ist es der SQL Explorer, bei MariaDB sollte der auch gehen.

In Fhem geht das mit DbRep, aber SQL SELECT müsstest Du Dir auf dauer doch etwas aneignen, denn das ist die Sprache in der Datenbank.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: RalfRog am 21 Februar 2025, 21:46:47
Zitat von: ch.eick am 21 Februar 2025, 20:15:30Für Oracle ist es der SQL Explorer, bei MariaDB sollte der auch gehen.
Wenn nicht oder "zu mächtig" - HeidiSQL ist zum reinschauen und Kleinigkeiten (eine handvoll Werte) ändern auch ganz nett.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 23 Februar 2025, 11:01:49
Zitat von: RalfRog am 21 Februar 2025, 21:46:47
Zitat von: ch.eick am 21 Februar 2025, 20:15:30Für Oracle ist es der SQL Explorer, bei MariaDB sollte der auch gehen.
Wenn nicht oder "zu mächtig" - HeidiSQL ist zum reinschauen und Kleinigkeiten (eine handvoll Werte) ändern auch ganz nett.
Bei mir kamen halt später die komplexeren Wünsche dazu und da ist das Original halt ziemlich gut.
Wie geschrieben es läuft auf einem RPI4 mit 64 Bit (Achtung den RPI zu Beginn direkt mit 64 Bit installieren ! ) im Docker Container.

VG  Christian
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: 300P am 23 Februar 2025, 15:00:59
Hallo zusammen!

Für solche Zwecke (Korrektur / hinzufügen/ löschen von einzelnen Datensätzen oder auch manchmal direkte SQL-Befehle abzusetzen) nutze ich auf dem Iphone / Mac das Programm ,,TablePlus" in der kostenlosen Version.

Damit sind dann maximal 2 Tabs gleichzeitig nutzbar - das reicht dafür bislang immer aus.

Gruß
300P
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 23 Februar 2025, 16:13:37
Moin,
ich hau jetzt mal einen raus, um Werbung für eine komplette MySQL Datenbank zu machen.
Das Beispiel bearbeitet eine Wallbox Auswertung.
- Es wird durch die WB jeden Tag ein Zähler begonnen, wenn ein E-Auto geladen wird
- Mit einem RFID Chip kann man sich identifizieren, was momentan noch nicht komplett funktioniert
- Deshalb schreibe ich die fehlenden Daten mit SQL INSERT selber in die DB
- Am Monats Ende lasse ich eine Auswertung laufen, die die Ladevorgänge mit dem Kunden in einer Liste aufführt
Das ist dann die Grundlage für die Abrechnung.


SQL Beispiel
-- Mit dem SET werden variablen gesetzt
SET @date     :='2025-02-01',
    @device   :='WB_1',
    @reading  :='cp_7_set_log_imported_since_plugged',
    @EVU_cost := 0.32;


-- Nach dem SET kommt nun die Auswertung

SELECT * FROM (                                      -- Hier soll noch bereinigt und sortiert werden
  SELECT                                             -- Spaltensummen für kWh und Cost bilden
    if(Ladevorgang IS NULL,"Summe",Ladevorgang)   AS Ladevorgang,
    TIMESTAMP                                     AS Ladezeit,
    sum(kWh_RFID)                                 AS 'kWh',
    sum(Cost)                                     AS Cost
  FROM
   (
    SELECT                                           -- Berechnung der Ladevorgänge
      TMP                                            AS Ladevorgang,
      max(TIMESTAMP)                                 AS TIMESTAMP,
      cast(sum(DIFF/1000       )    AS DECIMAL(5,2)) AS kWh_RFID,
      cast(sum(DIFF/1000*@cost )    AS DECIMAL(5,2)) AS Cost
    FROM
     (                                               -- Gruppieren und nummerieren der Ladevorgänge
      SELECT
        TIMESTAMP,
        READING,
        VALUE,
        if(cast((VALUE-@diff) AS DECIMAL(7,0)) < 0,NULL,
          if(@diff = 0,VALUE,cast((VALUE-@diff) AS DECIMAL(7,0))) )           AS DIFF,

        if(cast((VALUE-@diff) AS DECIMAL(7,0)) < 0,@diff:=0,@diff:=VALUE)     AS curr_V,

        if(TIMESTAMPDIFF(SECOND,@delta,TIMESTAMP) > 3600,
           NULL,TIMESTAMPDIFF(SECOND,@delta,TIMESTAMP) )                      AS DELTA,

        if(VALUE = 0,@tmp+1,
           if(TIMESTAMPDIFF(SECOND,@delta,TIMESTAMP) > 3600,@tmp:=@tmp+1,@tmp)) AS TMP,

        @delta:=TIMESTAMP                                                     AS curr_T,

        (SELECT @cost:=@EVU_cost)

      FROM  history, (SELECT @tmp:=1)x               -- Zurücksetzen für die Nummerierung der Ladevorgänge
      WHERE DEVICE      = @device
        AND READING     = @reading
        AND TIMESTAMP  >= @date
     ) t_Ladevorgang                                 -- Alles > 7200 (2h) wird als separates Laden gewertet
    GROUP BY TMP                                     -- max(kWh) und max(Cost) bilden
   ) t_Summen
  GROUP BY Ladevorgang,TIMESTAMP WITH ROLLUP           -- Spaltensummen für kWh und Cost bilden

  UNION
   (
    SELECT                                             -- Welche RFID hat geladen
      if(VALUE = "0005082760","Denis",
      if(VALUE = "0000000001","Mike","")) AS Ladevorgang,
      TIMESTAMP,
      "" AS kWh_RFID,
      "" AS Cost
    FROM history
    WHERE DEVICE   =  @device
      AND READING  = 'cp_6_get_rfid_number'
      AND VALUE   != 'NULL'                            -- Unterbrechung beim Laden
      AND date(TIMESTAMP) >=  @date
   )
 ) t_Bereinigen
WHERE
   (   Ladevorgang = "Summe"                         -- Die Summenzeile wird gebraucht
    OR Ladezeit IS NOT NULL                          -- Ungewünschte Zeilen vom ROLLUP entfernen
   )
  AND kWh  IS NOT NULL
  AND Cost IS NOT NULL
ORDER BY ISNULL(Ladezeit), Ladezeit                 -- Die Summen Zeile als letztes
;

-- Nun kommt solch eine Liste heraus

# Ladevorgang Ladezeit kWh Cost
Denis 2025-02-08 08:44:51
1 2025-02-08 08:44:52 25.46 8.15
Denis 2025-02-08 20:08:11
2 2025-02-08 20:08:12 10.89 3.49
Mike 2025-02-10 15:47:20
3 2025-02-10 15:47:21 18.66 5.97
Denis 2025-02-16 05:48:00
4 2025-02-16 05:48:01 25.75 8.24
Denis 2025-02-23 14:52:21
5 2025-02-23 14:52:22 7.49 2.40
Summe 88.25 28.25


Der nächste Schritt wäre dann dieser Bericht als ein DbRep Device ins FHEM einzutragen, wodurch die Tabell im Device als READING erscheint.
Wer den Kostal Plenticore Thread verfolgt findet solche komplexen Auswertungen als Monats oder Jahres Berichte, die dann unter Statistiken in den Devices mit uiTable angezeigt werden.
Screenshot 2025-02-23 161013.png
Ich habe auch eine Pseudo WB definiert, mit der ich manuell meine Ladevorgänge an fremden Ladesäulen direkt mit SQL in die MySQL Datenbank eintrage. Hier mal ein SQL Report mit Darstellung im FHEMWEB
Screenshot 2025-02-23 161200.png

VG   Christian
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 24 Februar 2025, 09:18:30
Zitat von: rabehd am 21 Februar 2025, 20:12:24Hast Du ein DBRep-Device? Wenn nicht, dann lege dir eins an.
Dann lies Dir mal die Commandref dazu durch, Stichwort "changeValue".


Hallo,

ja ich habe ein DBRep-Device für jeden Wert. Ich habe dann hierzu folgendes probiert:

set Rep.STP5000.Erzeugung.Jahr changeValue old="25.2" new="325.25"

Hat aber nicht funktioniert :-(

Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 24 Februar 2025, 09:29:33
Für das DbRep gibt es einen eigenen Thread (https://forum.fhem.de/index.php?topic=53584.0), eventuell gibt's da ne antwort zu DbRep.

Bei Deinem DbRep müsste natürlich noch zusätzlich der TIMESTAMP passend gesetzt werden, da es den alten Wert ja mehrfach geben könnte. Schau mal die Attribute time.* , insbesondere das timestamp_begin und timestamp_end .


In SQL sollte das so aussehen
UPDATE history
  SET
--      READING = '<neuer Name>',
--      TIMESTAMP = from_unixtime(60 * round(unix_timestamp(TIMESTAMP)/60)),         -- so könnte man den TIMESTAMP auch runden
      VALUE   = '<neuer Wert>'

where DEVICE    = '<DEVICE Name>'
  and READING   = '<READING Name>'
  and TIMESTAMP = '2024-12-14 09:13:47'          -- Der TIMESTAMP muss exakt passen
;
Im SQL gibt es natürlich auch das DELETE, INSERT und komplexere Kombinationen mit denen man jeden Wert neu berechnen oder aus etwas anderem neu erstellen kann. Es lohnt sich wirklich. Das DbRep verwende ich nur für dauerhafte Aktionen.

Ich habe mal nach SQL clients gesucht, die links sind aber ohne gewehr:
- MySQL Workbench  https://www.mysql.com/products/workbench
- phpMyAdmin       https://github.com/phpmyadmin/phpmyadmin
- DBeaver          https://github.com/dbeaver/dbeaver
- HeidiSQL         https://github.com/HeidiSQL/HeidiSQL
- SQL Chat         https://github.com/sqlchat/sqlchat
- Beekeeper Studio https://github.com/beekeeper-studio/beekeeper-studio
- DbGate           https://github.com/dbgate/dbgate
- SQLECTRON        https://github.com/sqlectron/sqlectron-gui
- pgAdmin          https://github.com/pgadmin-org/pgadmin4
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: RalfRog am 24 Februar 2025, 09:57:05
Hi
Ich habe gerade erst in einer Kopie meiner DB alle Werte von kWh nach Wh mit DBRrep "umgerechnet".

LASTCMD
changeValue old=% new=($VALUE,$UNIT) = ($VALUE*1000,"Wh")
Hat super geklappt.

Hast du denn die Attribute für DEVICE, READING und Time gesetzt/nicht gesetzt?
Das macht ja einen Unterschied in der Bearbeitung.

Gruß Ralf

Edit PS
Achtung da fehlen noch die "..." und {...}
Bin gerade am Smartphone, muss mal am PC schauen
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: rabehd am 24 Februar 2025, 10:40:41
Zitat von: Erby am 24 Februar 2025, 09:18:30ja ich habe ein DBRep-Device für jeden Wert.
Bei mir reicht ein Device um jeden Tag mehrere Werte automatisch zu bearbeiten.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 24 Februar 2025, 11:46:25
Zitat von: RalfRog am 24 Februar 2025, 09:57:05Hi
Ich habe gerade erst in einer Kopie meiner DB alle Werte von kWh nach Wh mit DBRrep "umgerechnet".

LASTCMD
changeValue old=% new=($VALUE,$UNIT) = ($VALUE*1000,"Wh")
Hat super geklappt.

Hast du denn die Attribute für DEVICE, READING und Time gesetzt/nicht gesetzt?
Das macht ja einen Unterschied in der Bearbeitung.

Gruß Ralf

Edit PS
Achtung da fehlen noch die "..." und {...}
Bin gerade am Smartphone, muss mal am PC schauen


Mein DbRep-Device sieht wie folgt aus:

defmod Rep.STP5000.Erzeugung.Jahr DbRep LogDB
attr Rep.STP5000.Erzeugung.Jahr aggregation no
attr Rep.STP5000.Erzeugung.Jahr devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
attr Rep.STP5000.Erzeugung.Jahr device STP_5000
attr Rep.STP5000.Erzeugung.Jahr event-on-update-reading state
attr Rep.STP5000.Erzeugung.Jahr group SMA Energy Meter Auswertung
attr Rep.STP5000.Erzeugung.Jahr reading etotal
attr Rep.STP5000.Erzeugung.Jahr room Energie
attr Rep.STP5000.Erzeugung.Jahr showproctime 1
attr Rep.STP5000.Erzeugung.Jahr timeout 180
attr Rep.STP5000.Erzeugung.Jahr timestamp_begin current_year_begin
attr Rep.STP5000.Erzeugung.Jahr timestamp_end current_year_end
attr Rep.STP5000.Erzeugung.Jahr userExitFn setDumEnergy .*:.*
attr Rep.STP5000.Erzeugung.Jahr verbose 2
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: RalfRog am 24 Februar 2025, 12:53:26
Hallo Erby
vorab als Anmerkung:

Sprich für meine einmalige Umrechnungsaufgabe:
defmod DBRepChng DbRep DBLogging
attr DBRepChng device EM_Haushalt
attr DBRepChng reading statEnergyCumDayLast
attr DBRepChng timestamp_begin 2023-01-02 23:58:30
attr DBRepChng timestamp_end 2024-12-31 23:59:00

Wenn du >> set Rep.STP5000.Erzeugung.Jahr changeValue old="25.2" new="325.25" << mit diesem DBRep  machst:
defmod Rep.STP5000.Erzeugung.Jahr DbRep LogDB
attr Rep.STP5000.Erzeugung.Jahr device STP_5000
attr Rep.STP5000.Erzeugung.Jahr reading etotal
attr Rep.STP5000.Erzeugung.Jahr timestamp_begin current_year_begin
attr Rep.STP5000.Erzeugung.Jahr timestamp_end current_year_end

vermutlich unnötig für deine Aufgabe
attr Rep.STP5000.Erzeugung.Jahr userExitFn setDumEnergy .*:.*

nicht relevant für deine Aufgabe
attr Rep.STP5000.Erzeugung.Jahr devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
attr Rep.STP5000.Erzeugung.Jahr event-on-update-reading state
attr Rep.STP5000.Erzeugung.Jahr group SMA Energy Meter Auswertung
attr Rep.STP5000.Erzeugung.Jahr room Energie
attr Rep.STP5000.Erzeugung.Jahr showproctime 1
attr Rep.STP5000.Erzeugung.Jahr timeout 180
attr Rep.STP5000.Erzeugung.Jahr verbose 2
attr Rep.STP5000.Erzeugung.Jahr aggregation no
werden im aktuellen Jahr für Device "STP_5000" Reading "etotal" alle Werte = 25.2 durch 325.25 ersetzt
Wenn das Kommando abgearbeitet ist steht (nach Aktualisierung) in den Readings des DBRep was das Ergenis ist und wieviele Einträge geändert wurden.

Gruß Ralf






Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: RalfRog am 24 Februar 2025, 13:04:18
zurück zu deiner Frage #1:
welche Readings von welchem(n) Device(s) an welchem Datum müssen denn korrigiert werden.
Wenn ich das richtig verstanden habe ist das eine einmalige Anpassung.

Gruß Ralf

Edit:
ein Tool SQL Explorer (ch.eick) oder bei mir HeidiSQL macht es halt übersichtlich. Siehe mein Beispielscreenshot.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: 300P am 24 Februar 2025, 13:44:35
Zitat von: Erby am 21 Februar 2025, 16:59:17......

Jetzt möchte ich gerne die Monats- und Jahreswerte korrigieren, um letztendlich korrekte Werte seit Monatsangang und Jahresbeginn angezeigt zu bekommen. Nur wie korrigiere bzw. ergänze ich in der Praxis diese Werte?

Hallo Erby,

ich nutze diese Statistik schon seit Jahren artähnlich mit diversen Erweiterungen für aktuell/Heute/Gestern/Monat/Jahr/Vorjahr/Total und hatte am Anfang auch diese Themen zum Beginn.

Der ,,Haken" bei deiner Aufgabe ist allein das ,,Fehlen" der Zählerstände:
A:
Zählerstände per 01.01.2025 kurz nach 00:00:00
B:
Zählerstände per 31.01.2025 irgendwann kurz vor 23:59:59
C:
Zählerstände per 01.02.2025 kurz nach 00:00:00

Nur mit diesen vorhandenen Zählerständen kannst du die Werte ,,korrigieren".
Aber du ,,korrigierst" da nichts - du must die Voraussetzung bzw. die Zählerstände zum Berechnen der Differenzen in der SQL-Datenbank erst einmal erzeugen.

Wenn du diese Zählerstände alle noch hast - oder zurückrechnen kannst - dann ist der Schritt vollbracht.


Hast du diese alle verfügbar?

Gruß
300P


PS:
Ansonsten einfach warten bis das der neue Monat/Jahr beginnt ;) dann erledigt sich das automatisch

Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: 300P am 24 Februar 2025, 14:08:10
Und hier dann der zweite  Schritt:

Für jeden Zählerstand (bitte genau die Syntax beachten) mit den entsprechend richtigen Werten des Zählerstand-Device ergänzen.

Auszug aus den Befehls-Erläuterungen zum DBLog Device ;) 8)
set <name> addCacheLine YYYY-MM-DD HH:MM:SS|<device>|<type>|<event>|<reading>|<value>|[<unit>]

Im asynchronen Modus wird ein neuer Datensatz in den Cache eingefügt und beim nächsten Synclauf mit abgearbeitet.

Beispiel:
set <name> addCacheLine 2017-12-05 17:03:59|MaxBathRoom|MAX|valveposition: 95|valveposition|95|%


Viel Spass beim Ergänzen

Gruß
300P


Edit:
Bitte beachte noch dabei:
Deine Report-Aufrufe (Rep.xxxxxxx.yyyyy.zzzzz) für die Berechnungen der Werte sind keine DBLog-Device !!!
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 24 Februar 2025, 16:18:53
Zitat von: RalfRog am 24 Februar 2025, 13:04:18zurück zu deiner Frage #1:
welche Readings von welchem(n) Device(s) an welchem Datum müssen denn korrigiert werden.
Wenn ich das richtig verstanden habe ist das eine einmalige Anpassung.

Gruß Ralf

Edit:
ein Tool SQL Explorer (ch.eick) oder bei mir HeidiSQL macht es halt übersichtlich. Siehe mein Beispielscreenshot.

Ich muss die Werte für Erzeugung, Einspeisung und Bezug für Monat und Jahr korrigieren. Und ja ich habe alle Werte aus meinem SMA Wechselrichter und Smartmeter aus dem SMA-Portal abrufbar. Ich werde heute Abend erstmal eine Kopie meiner kompletten SD-Karte des Pi machen. Wie ich die Datenbank selbst sichere und später zurück spielen kann, weiß ich nämlich nicht.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 24 Februar 2025, 17:48:12
Zitat von: Erby am 24 Februar 2025, 16:18:53Ich werde heute Abend erstmal eine Kopie meiner kompletten SD-Karte des Pi machen. Wie ich die Datenbank selbst sichere und später zurück spielen kann, weiß ich nämlich nicht.
Achtung,
niemals eine Datenbank auf einer SD-Card betreiben, das macht die SD-Card nicht lange mit!


Backup mache ich mit SQLBackupAndFTP am WinPC, mit einem kleinen Trick gehen auch Incrementel Backups ;-)
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 24 Februar 2025, 23:59:22
Zitat von: ch.eick am 24 Februar 2025, 17:48:12
Zitat von: Erby am 24 Februar 2025, 16:18:53Ich werde heute Abend erstmal eine Kopie meiner kompletten SD-Karte des Pi machen. Wie ich die Datenbank selbst sichere und später zurück spielen kann, weiß ich nämlich nicht.
Achtung,
niemals eine Datenbank auf einer SD-Card betreiben, das macht die SD-Card nicht lange mit!


Backup mache ich mit SQLBackupAndFTP am WinPC, mit einem kleinen Trick gehen auch Incrementel Backups ;-)

Danke für den Tipp aber dieser Hinweis kommt leider zu spät :-(. Meine SD-Card hat heute den Geist aufgegeben.
Was wäre die Alternative zur SD-Card an einem Pi?

Grüße Micha
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: 300P am 25 Februar 2025, 09:17:59
Guten Morgen!

Ich habe eine ausreichend große SSD-Festplatte (1TB) an dem RPI von dem aus der RPI direkt gebootet wird.
Also alles ganz ohne SD-Card.

Setz dazu erst den RPI wieder ,,Neu" mittels einer SD-Card auf und wechsel dann direkt auf eine leere SSD-Festplatte um.

Schau bzw. Lese dir dazu eine der vielen Anleitungen für den RPI im Netz an - ist aber ein anderes Thema.

Gruß
300P
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 25 Februar 2025, 10:23:36
Zitat von: 300P am 25 Februar 2025, 09:17:59Guten Morgen!

Ich habe eine ausreichend große SSD-Festplatte (1TB) an dem RPI von dem aus der RPI direkt gebootet wird.
Also alles ganz ohne SD-Card.

Setz dazu erst den RPI wieder ,,Neu" mittels einer SD-Card auf und wechsel dann direkt auf eine leere SSD-Festplatte um.

Schau bzw. Lese dir dazu eine der vielen Anleitungen für den RPI im Netz an - ist aber ein anderes Thema.

Gruß
300P

Guten Morgen 300P,

ich hoffe das funktioniert auch, da mein Startpunkt/Ausgangspunkt ein Image ist (Fhem+VCCU3+Homebridge+ioBroke), dass ich fertig konfiguriert bei technikkram.net gekauft hatte.

Grüße Micha
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: 300P am 25 Februar 2025, 16:56:53
Das hier könnte dein Freund dazu werden/sein : ;)

Running RPI from SD-Card to SSD and other (https://github.com/geerlingguy/rpi-clone)


Gruß
300P
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 28 Februar 2025, 10:37:59
Hallo,

ich habe bisher noch keine SSD zum Laufen bekommen. Liegt wahrscheinlich am Controller. Hier warte ich auf die nächste Amazon Lieferung.

Ich habe mich aber weiter mit der Datenbank befasst und per phpmyadmin Zugriff erhalten. Was mich jetzt schockte, dass ich mehrere Millionen Einträge (Logs von Zwischensteckern z.B.) in der Datenbank habe und es werden sekündlich mehr. Fhem schreibt alle logs (readings) in die Datenbank. Eigentlich wollte ich nur meine PV-Auswertung damit realisieren.

Wir stoppe ich diese Datenflut?
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: rabehd am 28 Februar 2025, 10:45:47
Zitat von: Erby am 28 Februar 2025, 10:37:59Wir stoppe ich diese Datenflut?
Durch ordentliche Konfiguration des Datenbankdevices.
Mein Tipp:
attr logdb DbLogSelectionMode Include
und ein wenig lesen.
ZitatMit dem Attribut DbLogInclude werden die Readings definiert, die in der Datenbank gespeichert werden sollen.
Die Definition der zu speichernden Readings erfolgt über einen regulären Ausdruck und alle Readings, die mit dem regulären Ausdruck matchen, werden in der Datenbank gespeichert.
Der optionale Zusatz <MinInterval> gibt an, dass ein Wert dann gespeichert wird wenn mindestens <MinInterval> Sekunden seit der letzten Speicherung vergangen sind.

Und dort wo Du was loggen willst: z.B.
attr shellyplug_03 DbLogInclude ENERGY_Power,ENERGY_Today,ENERGY_Total,ENERGY_Yesterday,Kosten_gesamt,Kosten_gestern
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: RalfRog am 28 Februar 2025, 11:16:43
Zitat von: rabehd am 28 Februar 2025, 10:45:47Durch ordentliche Konfiguration des Datenbankdevices.

Im Prinzip geht es ja schon vor der Festlegung des Attributs mit der Definition des DBLOG los.
defmod <Name Logdevice> DbLog /opt/fhem/db.conf shelly_3em_haus:.*|shelly_1pm_garage:.*|Jet:E10.*
Bei mir zum Beispiel werden hiermit nur die drei angegebenen Devices in der DB geloggt (alles davon .*). Das kann man noch weiter auf Readings einschränken.
Wenn da statt dessen ".*:.*" (wie in manchen Beispielen genannt) steht wird natürlich alles von allem geloggt.

Gruß Ralf

Edit:
Ok Einschränkung
attr logdb DbLogSelectionMode Includeschließt die Betrachtung der RegEx in der Def aus.
Muss man sich halt aussuchen wie man es machen will. Nur .*:.* wäre definitiv zu viel  ;)
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: rabehd am 28 Februar 2025, 11:39:21
Wenn man nur eine Handvoll Devives loggt, dann finde ich das in der Definition gut.
Irgendwann wird es übersichtlich, deshalb mein Vorschlag.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: Erby am 28 Februar 2025, 12:33:51
Vielen Dank für Eure Beiträge.

Ich habe meine 3 Devices jetzt über die Datenbank-Definition geloggt und bin super zufrieden mit dem Ergebnis.
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: ch.eick am 28 Februar 2025, 14:41:16
Moin,
dazu gibt es im Wiki meine ich eine Anleitung.
Man muss sich nur halt für eine Lösung entscheiden.

In jedem neu angelegten Device wird automatisch ein Attribut gesetzt, welches das Logging für alle READINGS in dem Device unterdrückt.
DbLogExclude .*
Ihr sollte das autocreate Device bereits haben und müsstet nur etwas ergänzen
defmod autocreate autocreate
attr autocreate DbLogExclude .*
attr autocreate device_room Neu
attr autocreate filelog ./log/%NAME-%Y.log

Hier noch das DbLog Device
defmod LogDB DbLog ./db.conf .*:.*
attr LogDB DbLogExclude .*
attr LogDB DbLogSelectionMode Exclude/Include
attr LogDB DbLogType History
attr LogDB asyncMode 1
attr LogDB colEvent 0
attr LogDB disable 0
attr LogDB room System
attr LogDB showproctime 1
attr LogDB verbose 0

Anschließend geht man in die jeweiligen Devices, die man loggen möcht und setzt dort dann die READINGS, die man haben möchte. Bitte darauf achten, dass dies auch einen Event erzeugt :-)
Es können auch Regex angegeben werden.
DbLogInclude redings1,reading2

Gerade beim Loggen von solchen Verbrauchswerten kommt schnell mal eine Menge zusammen, da könnte auch event-on-change-reading und event-on-update-reading hilfreich sein.
Auch wenn man natürlich manchmal Nachteile hat schreibe ich Verbrauchswerte mit event-on-change-reading in die DB, was mir stundenlange Folgen von 0W oder änliches erspart, man muss dann jedoch bei der Darstellung etwas tricksen.

Für jedes neue Device erscheint dann zwar immernoch ein Datenbankeintrag, es wird aber nichts weiter eingetragen. Von Jahr zu jahr lösche ich diese auch mal in der DB, damit es sauber bleibt.

VG  Christian
Titel: Aw: Werte für PV-Anlage in dblog manuell anpassen/ergänzen
Beitrag von: 300P am 28 Februar 2025, 15:58:25
Zitat von: Erby am 28 Februar 2025, 10:37:59Hallo,

ich habe bisher noch keine SSD zum Laufen bekommen. Liegt wahrscheinlich am Controller. Hier warte ich auf die nächste Amazon Lieferung.
Auch wenn sich dies hier in einen Grundlagenkurs für Raspberry mit FHEM entwickelt... :o

OT-Anfang
USB-SSD am RPI (https://www.amazon.de/Sabrent-5-Zoll-SATA-Festplatten-Optimiert-Unterst%C3%BCtzt-EC-SSHD/dp/B011M8YACM/ref=mp_s_a_1_17?adgrpid=74970547110&dib=eyJ2IjoiMSJ9.dmY8CD1jHQEYDUodaHcrT3NSmFbWEOZQsA_P1piceE7ZXUs7MJ6e_s_XrXu4NelhZmYugAquXOTO5i9HTReg1MvKAq6gejpxaq8Pf3wMiExFMi9HhEuNPyZpgjIDcj3FkKcVffL05zK5GJvMwCZRAVfSc6R-0hoqViNmm2g-O9Ho-Su7iILlq1DzfpGaJzADqK6XpYXoBr1U8uOrvPi1LQ.0l_XwhRB18KDTMTtTVuhYfUx9pGSlguwh8UsVaNWZP4&dib_tag=se&hvadid=676649894095&hvdev=m&hvlocphy=9044832&hvnetw=g&hvqmt=e&hvrand=3388123155481297616&hvtargid=kwd-40553890389&hydadcr=12249_2455332&keywords=usb+ssd+adapter&mcid=69ceb44243e73eb0b21fadcf5d24fecf&qid=1740753911&sr=8-17)
OT-Ende

Mit diesem Adapter funktioniert es bei mir an mehreren RPI's - egal ob mit HDD und SSD.
Das ,,normale" Netzteil vom RPI ist ausreichend, solange man nicht ,,enorm und zuviel" Last auf dem RPI und Laufwerk hat.

Gruß
300P