Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Detailed historical consumption from e3DC #40

Closed
timmost opened this issue Jan 3, 2024 · 7 comments
Closed

Detailed historical consumption from e3DC #40

timmost opened this issue Jan 3, 2024 · 7 comments

Comments

@timmost
Copy link

timmost commented Jan 3, 2024

Hi Tom,
noch zwei Fragen zu den historischen Werten:

Die e3DC liefert ja werte für "yesterday", "week", "month", "year". Weiterhin gibt es das Topic "history" nach Jahren geordnet.

  • Gibt es auch die Tageswerte über die gesamte Laufzeit? (Oder macht die e3DC eine Aggregation und wirft die Messwerte dann weg?). Das Portal zeigt diese Werte an, wenn ich mich richtig erinnere.. vielleicht sind sie nicht in der Schnittstelle drin.
  • Gibt es einen Zeitstempel für diese Werte - "Yesterday" ist halt nur in Verbindung mit dem Lesezeitpunkt sinnvoll (geht in Grafana, ist aber nicht so schön...)

VG TImmo
(hoffe, dass das der richtige Kanal für solche Fragen ist - oder hast Du ein separates Forum?)

@pvtom
Copy link
Owner

pvtom commented Jan 3, 2024

Hallo Timmo,

die Tageswerte (auch Wochen-, Monatswerte), die man über das Portal einsehen kann, kann man grundsätzlich auch über die RSCP-Schnittstelle auslesen. Ich habe mich für die vergangenen Jahre und Yesterday entschieden, weil es von der Anzahl überschaubar bleibt. Die Yesterday-Werte z.B. schreibe ich nachts in eine Mail an mich.

Wenn man alle Tage seit Einschalten des Hauskraftwerks ausgibt, kommt bei einem Programmstart eine Menge Traffic auf. Von daher ist die Frage, was man hier sinnvoll umsetzen kann/sollte. Insbesondere, wenn andere User (wie in Issue #38) eine andere Aufteilung (monatsweise) wünschen. Evtl. ist die Idee, dass man über "e3dc/set/..."-Kommandos nach Tagen etc. anfragen kann, besser?!

Ich bastele immer mal wieder an History-Abfragen, weil mich der Gedanke zu weiteren historischen Werten auch seit Längerem umtreibt.
Bei der Abfrage muss man die Start- und die Endsekunde des Tages, des Monats, des Jahres (UNIX Epoche, seit 1.1.1970) mitgeben, dabei die Schalttage und Monatslängen berücksichtigen. Teilweise hatte ich beim Basteln allerdings Probleme, trotz der korrekten Zeitspannen, die gleichen Werte wie im Portal zu ermitteln. Insb. konnte ich Schalttage nicht korrekt abfragen. Hier hat E3DC scheinbar mittlerweile etwas geändert. Im Portal wurde bis von ein paar Monaten für einen Schalttag zwei Zeitbereiche (vor und nach der Zeitumstellung) ausgegeben. Das konnte ich über RSCP nicht nachvollziehen... es gibt dabei also auch Herausforderungen, die mich bisher davon abgehalten haben, eine weitergehende Lösung für rscp2mqtt zu bauen.

Zur Frage nach dem Zeitstempel: Ist mir nicht bekannt, würde ich mir auch zur besseren Zuordnung der zurückgelieferten Werte wünschen.

Gruß
Thomas

@timmost
Copy link
Author

timmost commented Jan 3, 2024

Hi Thomas

kann ich nachvollziehen, nicht Trivial - und das ohne Doku... Ich habe gerade auch nochmals geschaut und das hier gefunden:
https://python-e3dc.readthedocs.io/en/latest/e3dc.html#e3dc.E3DC.get_db_data_timestamp
Das scheint genau die Funktion der Datenbankabfrage zu beschreiben, wahrscheinlich verwendest Du auch so eine Logik.

Tatsächlich passt die Historical Value Thematik nicht ganz zu Timeseries mit MQTT. Nach einem Neustart werden wieder alle DB Daten in Influx eingetragen, und die kommt nicht auf einen grünen Zweig mit den redundanten Einträgen (hatte wg Frickelei so um die 10 Restarts... jetzt habe ich 10 Yesterdays in der DB). Mail ist natürlich auch nett...

Vielleicht wäre es wirklich eleganter, das zu separieren: Messwerte wie Power laufend über MQTT bereitstellen, und statische DB Werte nur auf "Ping" / MQTT ("e3dc/set/...") Kommando zu triggern. Dann könnte man die o.g. Funktion nutzen, und einfach einen kompletten Dump (alle Verbrauchswerte pro Minute seit Beginn oder so) und das einmal in die eigene DB rein. Dann müsste man noch den Timestamp vergewaltigen - nicht den Zeitpunkt des Schreibens in Influx, sondern den Timestamp des Wertes in nutzen.

Die Aggregation und Auswertung überlässt man dann Influx, Grafana & Co., da gibt es alle Möglichkeiten - nach Schaltjahr, Mondphasen und Millisekunden...

Vielen Dank für die Module!

VG Timmo

@pvtom
Copy link
Owner

pvtom commented Jan 13, 2024

Neu mit Release v3.11:
Historical data for a specific day (format "YYYY-MM-DD") can be queried by
mosquitto_pub -h localhost -p 1883 -t "e3dc/set/request/day" -m "2024-01-01"

Please use the script request_days.sh to request data for a time span.
./request_days.sh localhost 1883 e3dc 2024-01-01 2024-01-13

@pvtom pvtom closed this as completed Jan 13, 2024
@timmost
Copy link
Author

timmost commented Jan 13, 2024

Cool!

@docolli
Copy link

docolli commented Feb 11, 2024

Bei mir werden seit dieser Version zyklisch die historischen Tagesdaten als neues MQTT Topic gepublished, ohne dass ich die speziell per MQTT Set Befehl abfrage. Kann ich die automatische Ausgabe der "day" Werte irgendwie in der config verhindern? Ich brauche die nicht.

Beispielwerte:

...
rscp2mqtt:e3dc/day/2024/2/9/autarky:.* 2_9_autarky
rscp2mqtt:e3dc/day/2024/2/10/battery/energy/charge:.* charge
rscp2mqtt:e3dc/day/2024/2/10/battery/energy/discharge:.* discharge
rscp2mqtt:e3dc/day/2024/2/10/solar/energy:.* energy
rscp2mqtt:e3dc/day/2024/2/10/grid/energy/in:.* in
rscp2mqtt:e3dc/day/2024/2/10/grid/energy/out:.* out
rscp2mqtt:e3dc/day/2024/2/10/home/energy:.* energy
rscp2mqtt:e3dc/day/2024/2/10/battery/rsoc:.* rsoc
rscp2mqtt:e3dc/day/2024/2/10/consumed:.* 2_10_consumed
rscp2mqtt:e3dc/day/2024/2/10/autarky:.* 2_10_autarky
rscp2mqtt:e3dc/day/2024/2/11/battery/energy/charge:.* charge
rscp2mqtt:e3dc/day/2024/2/11/battery/energy/discharge:.* discharge
rscp2mqtt:e3dc/day/2024/2/11/solar/energy:.* energy
rscp2mqtt:e3dc/day/2024/2/11/grid/energy/in:.* in
rscp2mqtt:e3dc/day/2024/2/11/grid/energy/out:.* out
rscp2mqtt:e3dc/day/2024/2/11/home/energy:.* energy
rscp2mqtt:e3dc/day/2024/2/11/battery/rsoc:.* rsoc
rscp2mqtt:e3dc/day/2024/2/11/consumed:.* 2_11_consumed
rscp2mqtt:e3dc/day/2024/2/11/autarky:.* 2_11_autarky

@pvtom
Copy link
Owner

pvtom commented Feb 18, 2024

@docolli
Die "day"-Werte kann man ab Release v3.15 in der .config mit
DAILY_VALUES=false
unterdrücken.

@docolli
Copy link

docolli commented Feb 18, 2024

Schon gesehen... 😉
Vielen Dank dafür!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants