README: gatherForecastData.py aufgenommen

Der fuenfte Prozess, der aktiv etwas abholt - im Bild, in der Tabelle der
geschriebenen Tabellen und in der, die sagt, was wann startet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 14:07:08 +02:00
co-authored by Claude Opus 5
parent b40feeea23
commit b4e3531800
+20 -2
View File
@@ -29,6 +29,7 @@ flowchart LR
MGR["<b>solarManager.py</b><br/><small>gatherModbusData · gatherOpenDTUData<br/>gatherDTUBIData · gatherShellyEM3Data EG/UG<br/>gatherHeaterData · gatherSkodaData<br/>gatherBYDData · gatherWaterData<br/>charger_goE</small>"]
WPB["<b>wattpilot_bruecke.py</b>"]
WSB["<b>wsMQTTbridge.py</b>"]
FCS["<b>gatherForecastData.py</b><br/><small>Open-Meteo</small>"]
RAIN["<b>gatherRainData.py</b>"]
BROKER{{"<b>MQTT-Broker</b>"}}
@@ -44,9 +45,11 @@ flowchart LR
WPILOT -->|WebSocket| WPB
STATION -->|WebSocket| WSB
METEO -->|HTTPS| RAIN
METEO -->|HTTPS| FCS
SOLARLOG -->|zisterne| MGR
MGR -->|"EnergyFlow · skoda<br/>skoda_ladepunkte · byd<br/>byd_zellen"| SOLARLOG
FCS -->|"weatherHours · weatherDays<br/>weatherTilted · weatherForecastLog"| SOLARLOG
MGR -->|"solarManager/#"| BROKER
WPB -->|"wattpilot/#"| BROKER
@@ -60,11 +63,11 @@ flowchart LR
classDef skript fill:#fff6e5,stroke:#d0a548
classDef speicher fill:#eaf5ee,stroke:#6fa981
class WR,EM3,HEIZ,BYD,GOE,WPILOT,SKODA,STATION,METEO,VENTILE,HAUSGER quelle
class MGR,WPB,WSB,RAIN skript
class MGR,WPB,WSB,RAIN,FCS skript
class BROKER,SOLARLOG speicher
```
Vier Prozesse holen aktiv etwas ab. Alles andere meldet sich von selbst: die
Fünf Prozesse holen aktiv etwas ab. Alles andere meldet sich von selbst: die
Ventilsteuerungen, die Wallbox und jedes Gerät, das
Home-Assistant-Discovery spricht, schreiben ohne Umweg auf den Broker. Für
deren Messwerte ist also **kein Skript** zuständig — wer sie sucht, sucht am
@@ -85,6 +88,19 @@ kurz danach — der Sammler klopft deshalb jede Sekunde an und bekommt so rund
alle 100 Sekunden einen vollständigen Satz. Einzelheiten im Kopf des Moduls
und, ausführlich, im Web-Repository unter `doku/byd.md`.
`gatherForecastData` holt alle zwanzig Minuten die Wettervorhersage von
Open-Meteo und schreibt sie nach `solarLog` (`weatherHours`, `weatherDays`,
`weatherForecastLog`, `weatherTilted`) — Grundlage des Meteogramms der
Weboberfläche. Es ist der einzige Sammler, der nichts nach MQTT
veröffentlicht: ein Meteogramm liest niemand im Sekundentakt.
**Es löscht nichts.** Die Tabellen sind zugleich ein Archiv — aus der
Einstrahlung und `EnergyFlow_hourly.pv_kwh` soll später eine eigene
Ertragsprognose gerechnet werden. `wetterarchiv_nachtragen.py` hat sie
einmalig aus der ERA5-Schnittstelle von Open-Meteo bis zum 02.04.2022
zurückgefüllt. Einzelheiten stehen im Web-Repository unter
`doku/meteogramm.md`.
Die Zisterne fällt aus der Reihe — ihr Stand steht in `solarLog`, und
`gatherWaterData` liest ihn von dort. Die Daten laufen also durch die
Datenbank hindurch von einem Prozess zum nächsten.
@@ -160,6 +176,7 @@ von Hand, wenn sich am Bestand etwas geändert hat.
| `homeassistant/#` | die Geräte selbst | `device_discovery.py` |
| **`solarLog`** | `solarManager.py` | `ajax/*.php`, `gatherWaterData` |
| `byd`, `byd_zellen` (in `solarLog`) | `gatherBYDData.py`, alle 5 bzw. 15 Minuten | Web-Repo (`solarLog_byd.sql`) |
| `weatherHours`, `weatherDays`, `weatherTilted`, `weatherForecastLog` (in `solarLog`) | `gatherForecastData.py`, alle 20 Minuten; nichts wird geloescht | Web-Repo (`solarLog_weather.sql`) |
| **`homeMesh`** | `device_discovery.py`, Runner, Web-Editor | Runner, `ajax/*.php` |
| `skoda.conf` | Einstellungen → Fahrzeug (`restricted/skodaKeys.php`) oder von Hand | `gatherSkodaData.py`, `ajax/skodaCmd.php` |
@@ -170,6 +187,7 @@ von Hand, wenn sich am Bestand etwas geändert hat.
| `solarManager.py` | `startSolarServer.sh` (Aufgabenplaner, beim Hochfahren) |
| `autoActions/autoaction_runner.py` | dito |
| `gatherRainData.py` | dito |
| `gatherForecastData.py` | dito |
| `wsMQTTbridge.py` | `startMQTTbridge.sh` |
| `wattpilot_bruecke.py` | `startWattpilotMQTT.sh` |
| `autoActions/fetch_calendar.py` | Cronjob, einmal im Jahr |