FHEM - Anwendungen > Solaranlagen

Photovoltaik Eigenverbrauch,Bilanz,Prognose (Kostal Plenticore; KSEM; BYD HV)

<< < (2/98) > >>

ch.eick:
Es ist nun wiederkehrend die Frage aufgetaucht, warum das Aufsummieren von einzel readings aus der Datenbank, z.B. für den Tagesertrag stark vom Zählerstand für die Einspeisung abweicht.
Ich versuche dies dann mal zu erklären :-)

Die Devices arbeiten mit event-on-change reading, wobei somit im Nachgang in der Datenbank zum Teil unregelmäßige Einträge entstehen und diese dann auch noch vom Abstand zwischen den Triggerzeiten abhängig sind.

Vom reading "Total_active_power_(powermeter)" wäre der negative Teil die Einspeisung ins Netz.
Dargestellt, aber nicht gelogged, wird dies im Device PV_Anlage_1 im stateFormat . Hier erscheit also entweder 0 oder ein Wert in Watt.

--- Code: ---(ReadingsVal("PV_Anlage_1","Total_active_power_(powermeter)",0)<=0 ? abs(round(ReadingsVal("PV_Anlage_1","Total_active_power_(powermeter)",0),0)):  0)." W";

--- Ende Code ---

Würde man nun versuchen die negativen Werte des reading "Total_active_power_(powermeter)" in der Datenbank zu summieren, so stellt man fest, dass die Summe nicht dem Zählerstand des EVU entspricht.

Gründe dafür sind:
- Der Abfrage Zyklus mit 60 Sekunden ist für eine Messung recht grob, das macht der KSEM mindestens im Sekunden Bereich.
- Durch die grobe Abfrage fallen dann auch noch Werte heraus, die dazwischen beginnen und enden. Dies wäre z.B. das 40 Sekunden Händewaschen mit einem 21 KW Durchlauferhitzer ;-)
- Wird direkt hintereinander Abgefragt und der Wert hat sich nicht geändert, kommt auch kein neuer Eintrag in die Datenbank.
- Dies führt dazu, dass man bei der Abfrage der Datenbank auch das Delta des TIMESTAMP berücksichtigen muss, was zusätzlich ungenau wird.

Abhilfe schafft hier jedoch der Plenticore mit seinen Statistiken, die die Tages-, Monats- und Jahressummen liefern. Diese werden nun bereits durch das PV_Anlage_1_API Device stündlich abgefragt und bei Änderung ins Log geschrieben. Am ende des Tages kann man dann die zwischen Werte Löschen und nur den letzten Tageswert behalten, bzw den letzten Monats- oder Jahreswert.

Dies wird dann in einem nächsten Schritt hier noch ergänzt werden.

Desweiteren vermute ich, dass sich jeder über kurz oder lang einen Lesekopf auf den EVU Zähler installieren wird, wodurch sich dann die Zwischenschritte ablesen lassen.

Wer den KSEM zusätzlich ausliest bekommt hier die entsprechenden Register ebenfalls angezeigt, die dann jedoch noch mit einem Offset mit dem EVU Zähler synchronisiert werden sollte.
Achtung, wenn der KSEM zurück gesetzt wird, beginnt er wieder bei Null ;-)

--- Code: ---obj-h512-reading Active_energy+ 2125.7094
obj-h516-reading Active_energy- 3709.5486

--- Ende Code ---

ch.eick:
Und noch eine Nachricht.

Da ja nicht alle elektrische Großverbraucher haben und ich den Sommer über auch kleinere Geräte angeschlossen habe gibt es nun weitere Beispiele im Wiki.

- Accu laden, z.B. Rasenroboter und E-Bike
- Brunnenpumpe mit extra Taster am Shelly2.5 und Endabschaltung bei Nichtbenutzung

Bei diesen Beispielen teilen sich die Geräte einen Shelly2.5 , was die Kosten auf gerade mal 25€ zusammen senkt.
Natürlich ohne Steckdosen und Taster :-)
Weiterhin ist die Lösung auch noch über das WLan zu verbinden.

ch.eick:
Hallo zusammen,
auf vielfachen Wunsch meiner Ideen ;-) und einem weiteren Mitstreiter gibt es eine Bereinigung im PV_Anlage_1_API Device.
Nun sollten aber so ziemlich alle Wünsche erfüllt sein und viele Berechnungen in DOIFs erledigt sein.


--- Code: ---- attr PV_Anlage_1_API DbLogInclude Statistic_Autarky.*,Statistic_Energy.*,Statistic_Own.*,Statistic_Total.*,Statistic_Yield.*,Statistic_PV.*,Statistic_Grid.*
- stateFormat aus dem Wiki
- userreading aus dem Wiki

Es wurden readings umbenannt, damit die userreadings besser zu den Plenticore readings passen
Die Einspeisung ins Netz:
  Statistic_EnergyFeedInGrid_Day
  Statistic_EnergyFeedInGrid_Month
  Statistic_EnergyFeedInGrid_Year
Der Hausverbrauch als Summe vom direkten PV und der Batterie
  Statistic_EnergyHomePvSum_Day
  Statistic_EnergyHomePvSum_Month
  Statistic_EnergyHomePvSum_Year

Weiterhin gibt es nun den ertrag ohne die Batterie, weil Statistic_Yield_Day laut Kostal die Batterie enthält.
  Statistic_Yield_NoBat_Day
  Statistic_Yield_NoBat_Month
  Statistic_Yield_NoBat_Year

## einmal kann man alle Statistic_ readings löschen und wieder neu einlesen
deletereading PV_Anlage_1_API Statistic_*
get PV_Anlage_1_API 20_/processdata/scb_statistic_EnergyFlow

--- Ende Code ---

wie immer müssen jetzt natürlich bereits vorhandene Logeinträge zu den neuen reading Namen umgezogen werden. Bitte schaut dazu zu den bisherigen Posts und modifiziert die SQLs nach den jeweiligen Anforderungen.

EDIT: Okay, hier ein kleiner Überblick

--- Code: ---SET @device = 'PV_Anlage_1_API';
SELECT t1.TIMESTAMP,t1.DEVICE,t1.READING,t1.VALUE
  FROM history t1
  INNER JOIN
   (select max(TIMESTAMP) AS TIMESTAMP,DEVICE,READING
      from history
      where DEVICE    = @device and
            TIMESTAMP > NOW() - INTERVAL 1 DAY
      group by READING) x
  ON x.TIMESTAMP = t1.TIMESTAMP AND
     x.DEVICE    = t1.DEVICE    AND
     x.READING   = t1.READING;

+---------------------+-----------------+------------------------------------+------------------+
| TIMESTAMP           | DEVICE          | READING                            | VALUE            |
+---------------------+-----------------+------------------------------------+------------------+
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_Autarky_Day              | 78.1824126685    |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_Autarky_Month            | 69.5112729702    |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_Autarky_Total            | 68.3550253426    |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_Autarky_Year             | 78.8398715615    |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyFeedInGrid_Day     | 5.77             |                  <<<<< neu
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyFeedInGrid_Month   | 29075.31         |                  <<<<< neu
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyFeedInGrid_Year    | 5189920.93       |                  <<<<< neu
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeBat_Day        | 2150.2203689484  |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeBat_Month      | 106338.785185352 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeBat_Total      | 1456290.5320946  |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeBat_Year       | 1310352.66285165 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeGrid_Day       | 786.2094131098   |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeGrid_Month     | 122445.10343664  |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeGrid_Total     | 2197546.68945482 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomeGrid_Year      | 1154187.37131264 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePvSum_Day      | 2818.75          |                  <<<<< neu
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePvSum_Month    | 279224.58        |                  <<<<< neu
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePvSum_Year     | 4292633.31       |                  <<<<< neu
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePv_Day         | 668.5259759135   |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePv_Month       | 172885.790277168 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePv_Total       | 3259074.38706554 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHomePv_Year        | 2982280.64988293 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHome_Day           | 3605.3363498516  |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHome_Month         | 401702.148528503 |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHome_Total         | 6898363.7820191  |
| 2020-10-23 11:44:35 | PV_Anlage_1_API | Statistic_EnergyHome_Year          | 5444758.72015098 |
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_GridFeedInDay            | 5.71             |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_GridFeedInMonth          | 29075.25         |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_GridFeedInYear           | 5189920.87       |                  <<<<< muss umziehen
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_OwnConsumptionRate_Day   | 99.7837913186    |
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_OwnConsumptionRate_Month | 90.5648443358    |
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_OwnConsumptionRate_Total | 47.4788047504    |
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_OwnConsumptionRate_Year  | 45.2677830054    |
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_PVDay                    | 2601.82          |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_PVMonth                  | 279007.65        |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_PVYear                   | 4292416.38       |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_TotalConsumptionDay      | 3353.05          |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_TotalConsumptionMonth    | 401417.77        |                  <<<<< muss umziehen
| 2020-10-23 10:57:00 | PV_Anlage_1_API | Statistic_TotalConsumptionYear     | 5446568.78       |                  <<<<< muss umziehen
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_TotalConsumption_Day     | 3410.02          |                  <<<<< neu
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_TotalConsumption_Month   | 401474.74        |                  <<<<< neu
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_TotalConsumption_Year    | 5446625.75       |                  <<<<< neu
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_Day                | 2644.0674482191  |
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_Month              | 308119.43733729  |
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_NoBat_Day          | 496.92           |                  <<<<< neu
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_NoBat_Month        | 201783.72        |                  <<<<< neu
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_NoBat_Year         | 8172024.20       |                  <<<<< neu
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_Total              | 9931163.91202423 |
| 2020-10-23 11:09:05 | PV_Anlage_1_API | Statistic_Yield_Year               | 9482373.79571359 |
+---------------------+-----------------+------------------------------------+------------------+

## Nun zum Umziehen, hier folgen noch SQLs, da ich es gerade live mache 2020.10.23 12:00 Uhr gestartet
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_EnergyHomePvSum_Day' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_PVDay' AND TIMESTAMP > '2020-01-01 00:00:00';
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_EnergyHomePvSum_Month' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_PVMonth' AND TIMESTAMP > '2020-01-01 00:00:00';
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_EnergyHomePvSum_Year' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_PVYear' AND TIMESTAMP > '2020-01-01 00:00:00';

UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_TotalConsumption_Day' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_TotalConsumptionDay' AND TIMESTAMP > '2020-01-01 00:00:00';
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_TotalConsumption_Month' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_TotalConsumptionMonth' AND TIMESTAMP > '2020-01-01 00:00:00';
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_TotalConsumption_Year' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_TotalConsumptionYear' AND TIMESTAMP > '2020-01-01 00:00:00';

UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_EnergyFeedInGrid_Day' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_GridFeedInDay' AND TIMESTAMP > '2020-01-01 00:00:00';
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_EnergyFeedInGrid_Month' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_GridFeedInMonth' AND TIMESTAMP > '2020-01-01 00:00:00';
UPDATE history SET TIMESTAMP=TIMESTAMP, READING='Statistic_EnergyFeedInGrid_Year' WHERE DEVICE='PV_Anlage_1_API' and READING='Statistic_GridFeedInYear' AND TIMESTAMP > '2020-01-01 00:00:00';

## Bis hierhin hat es nun ca. 45 Minuten gebraucht.

Nun fehlen noch die Werte, die durch die Datenbank monatlich und wöchentlich erstellt werden, denn dort ändert sich durch die Namensänderung auch etwas.

--- Ende Code ---


Viele Grüße
    Christian

ch.eick:
Hallo zusammen,
ich hoffe es geht Euch nicht zu schnell.

Durch das Aufräumen der Datenbank und die Umbenennungen der readings  habe ich nun auch im Wiki den Bereich Erstellen von zusätzlichen Werten in der Datenbank mit den Plots für die Bilanz überarbeitet.

ch.eick:
Moin,

wem es noch nicht aufgefallen ist:
Man kann nun beim PV_Schedule die einzelnen DOIF direkt über den Status (mit Label) anklicken (direkt auf cmd_* klicken). Dann wird dieser Zweig sofort ausgeführt und berechnet z.B. dien Forecast_0  mit
den aktuellen DWD Daten neu.

Das Ergebnis im Diagramm wird natürlich durch den Datenbank Cache und den asynchronen Betrieb der Datenbank dann verzögert dargestellt.
Den Refresh Button vom Browser nicht vergessen, damit das SVG aktualisiert wird.

BYD_Status cmd_1           Das haben natürlich nur die, die den alten HVS Speicher haben und diesen bereits auslesen.
Statistic_Update cmd_2    holt auch zwischendurch die Statistiken ab und schreibt diese in die Datenbank
Forecast_0 cmd_3             Forecast heute
Forecast_1 cmd_4             Forecast Morgen
Bilanz_Actual cmd_5         aktualisiert im stateFormat vom PV_Anlage_1_API die aktuellen Werte

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln