docs: prévision PV et tarif saisi de la version Community, FAQ alignée

Nouvelle page fonctionnalites/prevision-pv (FR/DE/EN, dans la nav) : courbe
horaire jusqu'à la fin du lendemain par plan, correction de température et
plafond onduleur (modèles déterministes publics, aucun apprentissage),
« plafond optimiste », « une heure sans donnée est un trou, jamais un zéro »,
fourchette météo (qualifie la météo seulement), météo horaire, mise en
service, règle centrale de la Community (affiché et enregistré localement,
jamais utilisé pour décider), consommation de base « à venir », données qui
sortent, optimiseur seulement comme interface prévue.

Tarifs (3 langues) : section BETA « tarif saisi », exposé et non utilisé pour
décider ; les tarifs dynamiques restent en roadmap.

FAQ (3 langues) : réponse « données » réécrite avec la liste de ce qui sort ;
« Predict AI », `optimizer-plugin` et « socket Unix » retirés ; la prévision
physique passe dans Community, Pro garde les prévisions apprises.
Accueil : « sans dépendance au cloud ». Tableau des fonctionnalités : trois
lignes. Fiche OpenMeteo : lien vers la page, plafond appliqué par le moteur.

Sources : INTERFACE.md et DESIGN_PREVISION_PV.md (feature/forecast-protocol-1.1),
CONTRACT_A v4, CONSIGNE-app-etm66-prevision.md. Aucune donnée du banc.
Vérifié comme en CI : génération, --check et mkdocs build --strict passent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-16 22:29:53 +02:00
parent b2513a86a4
commit bba9c87608
19 changed files with 471 additions and 44 deletions

View File

@ -28,8 +28,9 @@ Das Plugin legt zwei Arten von Objekten an:
laufende Stunde, die nächsten 3, 6 und 12 Stunden, den Rest des Tages und den laufende Stunde, die nächsten 3, 6 und 12 Stunden, den Rest des Tages und den
Folgetag. Folgetag.
Die ETM-PowerSync-App zeigt diese Prognosen neben den Messwerten an (erwartete Die Energie-Engine addiert die Flächen des bestimmten Standorts, und die App zeigt die
Erzeugung in den Diagrammen, Wetter Stunde für Stunde). resultierende Kurve neben den Messwerten an, zusammen mit dem Wetter Stunde für Stunde –
siehe [PV-Erzeugungsprognose](../../fonctionnalites/prevision-pv.md).
## 2. Standort hinzufügen ## 2. Standort hinzufügen
@ -80,7 +81,9 @@ Deshalb heißen die Werte `forecast…` (Prognose) oder `observed…`
Die erwartete Erzeugung wird einfach berechnet: prognostizierte Einstrahlung × Die erwartete Erzeugung wird einfach berechnet: prognostizierte Einstrahlung ×
Spitzenleistung × angegebener Wirkungsgrad. Sie **berücksichtigt nicht** Verschattung, Spitzenleistung × angegebener Wirkungsgrad. Sie **berücksichtigt nicht** Verschattung,
Verschmutzung der Module oder die Leistungsbegrenzung des Wechselrichters. Die Verschmutzung der Module und, auf Ebene des Plugins, die Leistungsbegrenzung des
Wechselrichters (die Engine wendet die Wechselrichtergrenze auf die Summe der Flächen
an, sofern sie angegeben ist). Die
Abweichung geht daher immer in dieselbe Richtung: **Die Prognose ist optimistisch.** Abweichung geht daher immer in dieselbe Richtung: **Die Prognose ist optimistisch.**
4 kW Prognose sind nicht 4 kW Erzeugung. 4 kW Prognose sind nicht 4 kW Erzeugung.

View File

@ -27,8 +27,9 @@ The plugin creates two kinds of objects:
the expected production derived from it: for the current hour, the next 3, 6 and 12 the expected production derived from it: for the current hour, the next 3, 6 and 12
hours, the rest of the day and tomorrow. hours, the rest of the day and tomorrow.
The ETM-PowerSync app shows these forecasts next to the measurements (expected The energy engine adds up the planes of the designated site, and the app shows the
production on the charts, hour-by-hour weather). resulting curve next to the measurements, with the hour-by-hour weather — see
[PV production forecast](../../fonctionnalites/prevision-pv.md).
## 2. Adding the site ## 2. Adding the site
@ -75,8 +76,9 @@ This is why the values are named `forecast…` or `observed…` (satellite obser
there is no `pvPower` in this plugin, only `forecastPvPower`. there is no `pvPower` in this plugin, only `forecastPvPower`.
The expected production is a simple calculation: forecast irradiance × peak power × The expected production is a simple calculation: forecast irradiance × peak power ×
declared efficiency. It **does not account for** shading, soiled modules or inverter declared efficiency. It **does not account for** shading, soiled modules or, at plugin
clipping. The error therefore always goes the same way: **the forecast is level, inverter clipping (the engine applies the inverter ceiling to the sum of the
planes, if it has been entered). The error therefore always goes the same way: **the forecast is
optimistic**. 4 kW forecast is not 4 kW produced. optimistic**. 4 kW forecast is not 4 kW produced.
The **weather spread** published for today and tomorrow (in %) says how uncertain the The **weather spread** published for today and tomorrow (in %) says how uncertain the

View File

@ -27,8 +27,9 @@ Le plugin crée deux types d'objets :
la production prévue qui en découle, pour l'heure courante, les 3, 6 et 12 heures à la production prévue qui en découle, pour l'heure courante, les 3, 6 et 12 heures à
venir, le reste de la journée et le lendemain. venir, le reste de la journée et le lendemain.
L'application ETM-PowerSync affiche ces prévisions à côté des mesures (production Le moteur d'énergie additionne les plans du site désigné et l'application affiche la
prévue sur les graphes, météo heure par heure). courbe obtenue à côté des mesures, avec la météo heure par heure — voir
[Prévision de production PV](../../fonctionnalites/prevision-pv.md).
## 2. Ajouter le site ## 2. Ajouter le site
@ -78,7 +79,8 @@ C'est pourquoi les grandeurs sont nommées `forecast…` (prévision) ou `observ
La production prévue est calculée simplement : irradiance prévue × puissance crête × La production prévue est calculée simplement : irradiance prévue × puissance crête ×
rendement déclaré. Elle **ne tient pas compte** de l'ombrage, de l'encrassement des rendement déclaré. Elle **ne tient pas compte** de l'ombrage, de l'encrassement des
panneaux ni de l'écrêtage de l'onduleur. L'écart va donc toujours dans le même sens : panneaux ni, au niveau du plugin, de l'écrêtage de l'onduleur (le moteur applique le
plafond onduleur à la somme des plans, s'il est renseigné). L'écart va donc toujours dans le même sens :
**la prévision est optimiste**. 4 kW prévus ne sont pas 4 kW produits. **la prévision est optimiste**. 4 kW prévus ne sont pas 4 kW produits.
La **dispersion météo** publiée pour aujourd'hui et demain (en %) dit à quel point la La **dispersion météo** publiée pour aujourd'hui et demain (en %) dit à quel point la

View File

@ -4,16 +4,22 @@
## Schickt ETM PowerSync meine Daten in die Cloud? ## Schickt ETM PowerSync meine Daten in die Cloud?
Nein. Die Optimierungslogik läuft lokal, auf Ihrer Hardware. Das ist eine Nein. Die Steuerung läuft lokal auf der Box und arbeitet auch ohne Internet weiter.
Architekturentscheidung, keine Option. Die einzige Komponente, die sich von selbst mit dem Internet verbindet, ist das
Wetter-Plugin OpenMeteo: Es sendet nur die Koordinaten des Standorts (auf etwa 1 km
gerundet), seine Höhe und die Ausrichtung der Module. Messwerte, Verbrauch und Tarif
bleiben bei Ihnen. Der Fernzugriff ist standardmäßig deaktiviert; er wird nur geöffnet,
wenn Sie ihn selbst in der App aktivieren. Das ist eine Architekturentscheidung, keine
Option.
## Ist das Projekt Open Source? ## Ist das Projekt Open Source?
Die Basis (`powersync-core`) und die Plugins stehen unter GPL-3.0. Der Konnektor zum Die Basis (`powersync-core`) und die Plugins stehen unter GPL-3.0. Der in die
Optimierer (`optimizer-plugin`) ebenfalls — alles, was mit nymea verbunden ist, ist es. Energie-Engine integrierte Optimierer-Client ebenfalls — alles, was mit nymea verbunden
Die **Fachlogik** der Optimierung dagegen (`powersync-optimizer`: Tarifabwägung, ist, ist es. Die **Fachlogik** der Optimierung dagegen (Tarifabwägung, an Ihrer Anlage
Predict AI) ist proprietär: sie läuft in einem separaten Prozess, erreichbar über einen gelernte Prognosen) ist proprietär: sie läuft in einem separaten Prozess, angebunden
Unix-Socket. Diese IPC-Grenze ist der Kern des Open-Core-Modells — das Plugin bleibt über eine offene, dokumentierte Schnittstelle. Die Optimierung läuft bei Ihnen, auf der
Box oder auf einem Rechner in Ihrem lokalen Netz. Diese IPC-Grenze ist der Kern des Open-Core-Modells — das Plugin bleibt
frei, die Fachlogik bleibt proprietär. frei, die Fachlogik bleibt proprietär.
## Was unterscheidet Community und Pro? ## Was unterscheidet Community und Pro?
@ -22,10 +28,12 @@ Zwei Editionen, nicht drei — die Prognoseschicht wird seit dem 14.10.2026 nich
getrennt angeboten, sie gehört zu Pro. getrennt angeboten, sie gehört zu Pro.
- **Community** — die GPL-3.0-Basis, selbst hostbar: regelbasierte Steuerung, - **Community** — die GPL-3.0-Basis, selbst hostbar: regelbasierte Steuerung,
Solarüberschuss, Lastabwurf, REST-/MQTT-API. Ohne Abonnement. Solarüberschuss, Lastabwurf, [PV-Erzeugungsprognose](fonctionnalites/prevision-pv.md)
aus physikalischen Modellen (Beta, angezeigt, nicht für Entscheidungen verwendet),
REST-/MQTT-API. Ohne Abonnement.
- **Pro** — von ETM-Schurig installiert: zusätzlich Tarifabwägung und die - **Pro** — von ETM-Schurig installiert: zusätzlich Tarifabwägung und die
Prognoseschicht (*Predict AI*: PV- und Verbrauchsprognose, thermische Trägheit der Prognoseschicht (an Ihrer Anlage gelernte Erzeugungs- und Verbrauchsprognosen,
Wärmepumpe). **Ebenfalls ohne Abonnement**, und alles bleibt lokal. thermische Trägheit der Wärmepumpe). **Ebenfalls ohne Abonnement**, und alles bleibt lokal.
Tarifabwägung und Prognose stehen auf der **Roadmap**: die Open-Core-Grenze existiert Tarifabwägung und Prognose stehen auf der **Roadmap**: die Open-Core-Grenze existiert
bereits, die Funktionen, die sie trennt, sind noch nicht alle ausgeliefert. Siehe bereits, die Funktionen, die sie trennt, sind noch nicht alle ausgeliefert. Siehe

View File

@ -4,15 +4,21 @@
## Does ETM PowerSync send my data to the cloud? ## Does ETM PowerSync send my data to the cloud?
No. The optimisation logic runs locally, on your hardware. That is an architectural No. Control runs locally, on the box, and keeps working without internet. The only
decision, not an option. component that connects to the internet on its own is the OpenMeteo weather plugin: it
sends only the site's coordinates (rounded to about 1 km), its altitude and the
orientation of the panels. Measurements, consumption and the tariff stay with you.
Remote access is disabled by default; it opens only if you enable it yourself in the
app. That is an architectural decision, not an option.
## Is the project open source? ## Is the project open source?
The foundation (`powersync-core`) and the plugins are under GPL-3.0. So is the connector The foundation (`powersync-core`) and the plugins are under GPL-3.0. So is the optimiser
to the optimiser (`optimizer-plugin`) — everything linked against nymea is. The client built into the energy engine — everything linked against nymea is. The
optimisation **business logic**, however (`powersync-optimizer`: tariff arbitration, optimisation **business logic**, however (tariff arbitration, forecasts learned from
Predict AI), is proprietary: it runs in a separate process, reached over a Unix socket. your installation), is proprietary: it runs in a separate process, reached through an
open, documented interface. Optimisation runs at your place, on the box or on a machine
in your local network.
That IPC boundary is the heart of the Open Core model — the plugin stays free, the That IPC boundary is the heart of the Open Core model — the plugin stays free, the
business logic stays proprietary. business logic stays proprietary.
@ -22,9 +28,12 @@ Two editions, not three — the prediction layer has not been sold separately si
2026-10-14; it is part of Pro. 2026-10-14; it is part of Pro.
- **Community** — the GPL-3.0 foundation, self-hostable: deterministic rule-based - **Community** — the GPL-3.0 foundation, self-hostable: deterministic rule-based
control, solar surplus, load shedding, REST/MQTT API. No subscription. control, solar surplus, load shedding, [PV production forecast](fonctionnalites/prevision-pv.md)
from physical models (beta, displayed, not used to decide), REST/MQTT API. No
subscription.
- **Pro** — installed by ETM-Schurig: adds tariff arbitration and the prediction layer - **Pro** — installed by ETM-Schurig: adds tariff arbitration and the prediction layer
(*Predict AI*: PV and consumption forecasting, heat-pump thermal inertia). **No (production and consumption forecasts learned from your installation, heat-pump
thermal inertia). **No
subscription either**, and everything stays local. subscription either**, and everything stays local.
Tariff arbitration and prediction are on the **roadmap**: the Open Core boundary already Tariff arbitration and prediction are on the **roadmap**: the Open Core boundary already

View File

@ -4,16 +4,21 @@
## ETM PowerSync envoie-t-il mes données dans le cloud ? ## ETM PowerSync envoie-t-il mes données dans le cloud ?
Non. La logique d'optimisation s'exécute en local, sur votre matériel. C'est un choix Non. Le pilotage tourne en local, sur la box, et continue sans internet. Le seul
d'architecture, pas une option. composant qui se connecte à internet de lui-même est le plugin météo OpenMeteo : il
n'envoie que les coordonnées du site (arrondies à environ 1 km), son altitude et
l'orientation des panneaux. Les mesures, la consommation et le tarif restent chez vous.
L'accès à distance est désactivé par défaut ; il ne s'ouvre que si vous l'activez
vous-même dans l'application. C'est un choix d'architecture, pas une option.
## Le projet est-il open source ? ## Le projet est-il open source ?
Le socle (`powersync-core`) et les plugins sont sous GPL-3.0. Le connecteur vers Le socle (`powersync-core`) et les plugins sont sous GPL-3.0. Le client de
l'optimiseur (`optimizer-plugin`) est lui aussi GPL — tout ce qui est lié à nymea l'est. l'optimiseur, intégré au moteur d'énergie, est lui aussi GPL — tout ce qui est lié à
En revanche, la **logique métier** d'optimisation (`powersync-optimizer` : arbitrage nymea l'est. En revanche, la **logique métier** d'optimisation (arbitrage tarifaire,
tarifaire, Predict AI) est propriétaire : elle tourne dans un processus séparé, atteint prévisions apprises sur votre installation) est propriétaire : elle tourne dans un
via un socket Unix. Cette frontière IPC est le cœur du modèle Open Core — le plugin reste processus séparé, joint par une interface ouverte et documentée. L'optimisation tourne
chez vous, sur la box ou sur une machine de votre réseau local. Cette frontière IPC est le cœur du modèle Open Core — le plugin reste
libre, la logique métier reste propriétaire. libre, la logique métier reste propriétaire.
## Community et Pro, quelle différence ? ## Community et Pro, quelle différence ?
@ -22,10 +27,12 @@ Deux éditions, pas trois — la couche prédictive n'est plus vendue à part de
2026-10-14, elle fait partie de Pro. 2026-10-14, elle fait partie de Pro.
- **Community** — le socle GPL-3.0, auto-hébergeable : pilotage à règles déterministes, - **Community** — le socle GPL-3.0, auto-hébergeable : pilotage à règles déterministes,
surplus solaire, délestage, API REST/MQTT. Sans abonnement. surplus solaire, délestage, [prévision de production PV](fonctionnalites/prevision-pv.md)
calculée par des modèles physiques (en beta, affichée, pas utilisée pour décider),
API REST/MQTT. Sans abonnement.
- **Pro** — installée par ETM-Schurig : ajoute l'arbitrage tarifaire et la couche - **Pro** — installée par ETM-Schurig : ajoute l'arbitrage tarifaire et la couche
prédictive (*Predict AI* : prévision PV et de consommation, inertie thermique de la prédictive (prévisions de production et de consommation apprises sur votre
PAC). **Sans abonnement non plus**, et tout reste local. installation, inertie thermique de la PAC). **Sans abonnement non plus**, et tout reste local.
L'arbitrage tarifaire et la prédiction sont en **roadmap** : la frontière Open Core L'arbitrage tarifaire et la prédiction sont en **roadmap** : la frontière Open Core
existe déjà, les fonctions qu'elle sépare ne sont pas toutes livrées. Voir existe déjà, les fonctions qu'elle sépare ne sont pas toutes livrées. Voir

View File

@ -7,6 +7,9 @@
| [Solarüberschuss](surplus-solaire.md) | <span class="badge testing">IN ARBEIT</span> | | [Solarüberschuss](surplus-solaire.md) | <span class="badge testing">IN ARBEIT</span> |
| [Lastabwurf / Lastmanagement](delestage.md) | <span class="badge testing">IN ARBEIT</span> | | [Lastabwurf / Lastmanagement](delestage.md) | <span class="badge testing">IN ARBEIT</span> |
| [Speicherverwaltung](gestion-batterie.md) | <span class="badge testing">IN ARBEIT</span> | | [Speicherverwaltung](gestion-batterie.md) | <span class="badge testing">IN ARBEIT</span> |
| [PV-Erzeugungsprognose](prevision-pv.md) und Stundenwetter | <span class="badge testing">BETA</span> |
| [Eingegebener Tarif](../tarifs.md) (Einheitstarif, Hoch-/Niedertarif) | <span class="badge testing">BETA</span> |
| Prognostizierter Grundverbrauch | <span class="badge nightly">IN VORBEREITUNG</span> |
| [JSON-RPC-API](../integrations/jsonrpc-api.md) / [MQTT](../integrations/mqtt.md) | <span class="badge stable">VERFÜGBAR</span> | | [JSON-RPC-API](../integrations/jsonrpc-api.md) / [MQTT](../integrations/mqtt.md) | <span class="badge stable">VERFÜGBAR</span> |
| Dynamische Tarife (DE) — §14a EnWG, EPEX Spot | <span class="badge nightly">ROADMAP</span> | | Dynamische Tarife (DE) — §14a EnWG, EPEX Spot | <span class="badge nightly">ROADMAP</span> |
| CO₂-Optimierung (SMARD) | <span class="badge nightly">ROADMAP</span> | | CO₂-Optimierung (SMARD) | <span class="badge nightly">ROADMAP</span> |

View File

@ -7,6 +7,9 @@ An overview of the HEMS features and their real state.
| [Solar surplus](surplus-solaire.md) | <span class="badge testing">IN PROGRESS</span> | | [Solar surplus](surplus-solaire.md) | <span class="badge testing">IN PROGRESS</span> |
| [Load shedding / management](delestage.md) | <span class="badge testing">IN PROGRESS</span> | | [Load shedding / management](delestage.md) | <span class="badge testing">IN PROGRESS</span> |
| [Battery management](gestion-batterie.md) | <span class="badge testing">IN PROGRESS</span> | | [Battery management](gestion-batterie.md) | <span class="badge testing">IN PROGRESS</span> |
| [PV production forecast](prevision-pv.md) and hourly weather | <span class="badge testing">BETA</span> |
| [Entered tariff](../tarifs.md) (single rate, peak/off-peak) | <span class="badge testing">BETA</span> |
| Baseload forecast | <span class="badge nightly">COMING</span> |
| [JSON-RPC API](../integrations/jsonrpc-api.md) / [MQTT](../integrations/mqtt.md) | <span class="badge stable">AVAILABLE</span> | | [JSON-RPC API](../integrations/jsonrpc-api.md) / [MQTT](../integrations/mqtt.md) | <span class="badge stable">AVAILABLE</span> |
| Dynamic tariffs — FR: Tempo, off-peak · DE: §14a EnWG, EPEX spot | <span class="badge nightly">ROADMAP</span> | | Dynamic tariffs — FR: Tempo, off-peak · DE: §14a EnWG, EPEX spot | <span class="badge nightly">ROADMAP</span> |
| CO₂ optimisation — RTE (FR) / SMARD (DE) | <span class="badge nightly">ROADMAP</span> | | CO₂ optimisation — RTE (FR) / SMARD (DE) | <span class="badge nightly">ROADMAP</span> |

View File

@ -7,6 +7,9 @@ Vue d'ensemble des fonctions du HEMS et de leur état réel.
| [Surplus solaire](surplus-solaire.md) | <span class="badge testing">EN COURS</span> | | [Surplus solaire](surplus-solaire.md) | <span class="badge testing">EN COURS</span> |
| [Délestage / Load management](delestage.md) | <span class="badge testing">EN COURS</span> | | [Délestage / Load management](delestage.md) | <span class="badge testing">EN COURS</span> |
| [Gestion batterie](gestion-batterie.md) | <span class="badge testing">EN COURS</span> | | [Gestion batterie](gestion-batterie.md) | <span class="badge testing">EN COURS</span> |
| [Prévision de production PV](prevision-pv.md) et météo horaire | <span class="badge testing">BETA</span> |
| [Tarif saisi](../tarifs.md) (unique, heures pleines/creuses) | <span class="badge testing">BETA</span> |
| Consommation de base prévue | <span class="badge nightly">À VENIR</span> |
| [API JsonRPC](../integrations/jsonrpc-api.md) / [MQTT](../integrations/mqtt.md) | <span class="badge stable">DISPONIBLE</span> | | [API JsonRPC](../integrations/jsonrpc-api.md) / [MQTT](../integrations/mqtt.md) | <span class="badge stable">DISPONIBLE</span> |
| Tarifs dynamiques (FR) | <span class="badge nightly">ROADMAP</span> | | Tarifs dynamiques (FR) | <span class="badge nightly">ROADMAP</span> |
| Optimisation CO₂ (RTE) | <span class="badge nightly">ROADMAP</span> | | Optimisation CO₂ (RTE) | <span class="badge nightly">ROADMAP</span> |

View File

@ -0,0 +1,108 @@
# PV-Erzeugungsprognose
<span class="badge testing">BETA</span> <span class="badge community">COMMUNITY</span>
Die Box prognostiziert die Erzeugung Ihrer Module Stunde für Stunde bis zum Ende des
Folgetags und zeigt sie in der App neben der gemessenen Erzeugung an. Die Funktion
gehört zur **Community**-Version (GPL-3.0): Sie beruht auf der Energie-Engine und dem
Plugin [OpenMeteo](../appareils/tarifs/openmeteo.md), ohne jeden ETM-Dienst.
!!! info "Beta"
Ausgeliefert und auf unserer Testanlage in Betrieb, aber noch in keinem Kanal des
APT-Repositorys veröffentlicht.
## Was Sie in der App sehen
- **Die Kurve der erwarteten Erzeugung**, Stunde für Stunde bis zum Ende des Folgetags,
über der gemessenen Erzeugung.
- **Eine Wetterspanne** um diese Kurve (siehe unten).
- **Das Wetter Stunde für Stunde** auf der Karte „Journée“: ein Symbol (Sonne, Wolken,
Regen …), Tag oder Nacht und die Temperatur.
## Wie die Prognose berechnet wird
Für jede angegebene PV-Fläche – Neigung, Ausrichtung, Spitzenleistung (kWp) und
Systemwirkungsgrad – rechnet die Box die von Open-Meteo prognostizierte Einstrahlung in
Leistung um. Anschließend addiert sie alle Flächen des Standorts.
Zwei Korrekturen werden angewendet, beide **deterministisch**: öffentliche physikalische
Modelle, parametriert mit Datenblattwerten, ganz ohne Lernen.
- **Temperaturkorrektur**: Ein warmes Modul erzeugt weniger. Die Box schätzt das aus der
prognostizierten Temperatur, der NOCT und dem Temperaturkoeffizienten der Module.
- **Wechselrichtergrenze**: Die Summe der Flächen überschreitet nie die maximale
AC-Leistung des Wechselrichters, sofern sie angegeben ist.
Die Prognose wird bei jeder neuen Veröffentlichung der Wettermodelle neu berechnet,
höchstens einmal pro Stunde.
### Eine Prognose – und eine optimistische Obergrenze
Was die Box anzeigt, ist eine **Prognose**, keine Messung. Sie ist zudem eine
**optimistische Obergrenze**: Verschattung (Bäume, Schornstein, Nachbargebäude) und
Verschmutzung der Module werden nicht modelliert. Eine tatsächliche Erzeugung unter der
Kurve ist daher normal und kein Hinweis auf einen Defekt.
### Eine Stunde ohne Daten ist eine Lücke, niemals eine Null
Fehlt eine Stunde (Internet unterbrochen, Wetterdienst nicht erreichbar), wird die Kurve
unterbrochen. Die Box schreibt dort nie „0“: Eine Null würde sich lesen wie „keine Sonne
erwartet“.
## Die Wetterspanne
Um die Kurve zeichnet die App ein Band:
**Prognose × (1 ± Streuung der Modelle des Tages)**. Die Streuung misst, wie stark
mehrere Wettermodelle für den Tag auseinandergehen.
Dieses Band beschreibt **das Wetter**, und nur das Wetter. Über die Genauigkeit der
Erzeugungsprognose sagt es nichts: Verschattung und Verschmutzung sind darin nicht
enthalten. Bei stabilem Sonnenwetter ist es schmal, während die Abweichung durch diese
Faktoren gerade dann am größten ist. Es ist also weder ein „erwarteter Fehler“ noch ein
„Konfidenzintervall“.
## Inbetriebnahme
1. Installieren Sie das OpenMeteo-Plugin und legen Sie den **Standort** und seine
**PV-Flächen** an – siehe [OpenMeteo](../appareils/tarifs/openmeteo.md).
2. **Bestimmen Sie den Prognose-Standort** in der App. Solange keiner bestimmt ist,
zeigt die Prognosekarte einen Hinweis und schlägt die verfügbaren Standorte vor.
Alle Flächen des bestimmten Standorts werden addiert.
3. Optional: Tragen Sie die **Wechselrichtergrenze** ein (maximale AC-Leistung in W).
Ohne sie wird keine Grenze angewendet.
## Was die Prognose nicht tut
Das ist die zentrale Regel der Community-Version: **Ohne Optimierer wird regelbasiert
gesteuert** (Solarüberschuss, Lastabwurf, Prioritäten). Die PV-Prognose, der
[eingegebene Tarif](../tarifs.md) und der Grundverbrauch werden **angezeigt** und
**lokal aufgezeichnet**, aber nie für Entscheidungen verwendet. Ein automatischer Test
prüft das: Die Engine trifft mit und ohne Prognose, Tarif und Verbrauchsprofil dieselben
Entscheidungen.
Die lokale Aufzeichnung dient dazu, die Genauigkeit der Prognosen über die Zeit zu
messen. Die Validierung an einer realen Anlage läuft; vor ihrem Abschluss werden keine
Genauigkeitszahlen veröffentlicht.
## Prognostizierter Grundverbrauch <span class="badge nightly">IN VORBEREITUNG</span>
Die Box wird aus ihren eigenen Messungen ein Verbrauchsprofil des Haushalts berechnen,
ohne die gesteuerten Lasten: einen Median je Tagesstunde, getrennt nach Werktagen und
Wochenende. Ein Profil entsteht erst nach mindestens **7 Tagen** Messung. Bis dahin wird
nichts angezeigt: eine Lücke, niemals eine Null.
## Ihre Daten
Nur das OpenMeteo-Plugin verbindet sich mit dem Internet. Es sendet ausschließlich die
**Koordinaten des Standorts** (auf etwa 1 km gerundet), seine **Höhe**, sofern
angegeben, und die **Ausrichtung der Module** (Neigung, Azimut). Messwerte,
aufgezeichnete Prognosen, Tarif und Verbrauch bleiben auf der Box. Der Fernzugriff ist
standardmäßig deaktiviert: Er wird nur geöffnet, wenn Sie ihn selbst in der App
aktivieren.
## Und ein Optimierer?
Die Architektur sieht eine **offene, dokumentierte Schnittstelle** zu einem externen
Optimierer vor, der diese Prognosen für die Planung nutzen könnte. Die Optimierung liefe
bei Ihnen, auf der Box oder auf einem Rechner in Ihrem lokalen Netz. Diese Anbindung ist
in Entwicklung; die Community-Version funktioniert vollständig ohne sie.

View File

@ -0,0 +1,103 @@
# PV production forecast
<span class="badge testing">BETA</span> <span class="badge community">COMMUNITY</span>
The box forecasts the production of your panels, hour by hour, until the end of the
next day, and shows it in the app next to the measured production. It is a feature of
the **Community** edition (GPL-3.0): it relies on the energy engine and the
[OpenMeteo](../appareils/tarifs/openmeteo.md) plugin, with no ETM service involved.
!!! info "Beta"
Delivered and running on our test installation, it is not yet published in a
channel of the APT repository.
## What you see in the app
- **The expected production curve**, hour by hour until the end of the next day,
overlaid on the measured production.
- **A weather range** around this curve (see below).
- **Hour-by-hour weather** on the "Journée" card: an icon (sun, clouds, rain…), day or
night, and the temperature.
## How the forecast is computed
For each declared PV plane — tilt, orientation, peak power (kWp) and system efficiency
—, the box converts the irradiance forecast by Open-Meteo into power. It then adds up
all the planes of the site.
Two corrections apply, both **deterministic**: public physical models, parameterised
from datasheets, with no learning at all.
- **Temperature correction**: a hot module produces less. The box estimates this from
the forecast temperature, the NOCT and the temperature coefficient of the modules.
- **Inverter ceiling**: the sum of the planes never exceeds the inverter's maximum AC
power, if it has been entered.
The forecast is recomputed whenever the weather models publish a new run — at most once
an hour.
### A forecast, and an optimistic ceiling
What the box shows is a **forecast**, not a measurement. It is also an **optimistic
ceiling**: shading (trees, chimney, neighbouring buildings) and soiled panels are not
modelled. Actual production below the curve is therefore normal and does not indicate a
fault.
### An hour without data is a gap, never a zero
If an hour is missing (internet down, weather service unavailable), the curve breaks.
The box never writes "0" instead: a zero would read as "no sun expected".
## The weather range
Around the curve, the app draws a band:
**forecast × (1 ± spread of the day's models)**. The spread measures how far several
weather models disagree about the day.
This band qualifies **the weather**, and only the weather. It says nothing about the
accuracy of the production forecast: shading and soiling are not in it. On a clear,
stable day it is narrow, precisely when the error from those factors is largest. It is
therefore neither an "expected error" nor a "confidence interval".
## Commissioning
1. Install the OpenMeteo plugin and create the **site** and its **PV planes** — see
[OpenMeteo](../appareils/tarifs/openmeteo.md).
2. **Designate the forecast site** in the app. Until one is designated, the forecast
card shows a notice and offers the available sites. All planes of the designated
site are added up.
3. Optional: enter the **inverter ceiling** (maximum AC power, in W). Without it, no
ceiling is applied.
## What the forecast does not do
This is the central rule of the Community edition: **without an optimiser, control is
rule-based** (solar surplus, load shedding, priorities). The PV forecast, the
[entered tariff](../tarifs.md) and the baseload are **displayed** and **recorded
locally**, but never used to decide. An automated test checks this: the engine makes
the same decisions with and without forecast, tariff and consumption profile.
The local record is used to measure forecast accuracy over time. Validation on a real
installation is under way; no accuracy figure is published before it is complete.
## Baseload forecast <span class="badge nightly">COMING</span>
The box will compute a household consumption profile, excluding controlled loads, from
its own measurements: a median for each hour of the day, separately for working days
and weekends. A profile needs at least **7 days** of measurements. Until then nothing
is shown: an absence, never a zero.
## Your data
Only the OpenMeteo plugin connects to the internet. It sends only the **site's
coordinates** (rounded to about 1 km), its **altitude** if entered, and the
**orientation of the panels** (tilt, azimuth). Measurements, recorded forecasts, the
tariff and consumption stay on the box. Remote access is disabled by default: it opens
only if you enable it yourself in the app.
## What about an optimiser?
The architecture provides an **open, documented interface** to an external optimiser,
which could use these forecasts to plan. Optimisation would run at your place, on the
box or on a machine in your local network. This connection is under development; the
Community edition works entirely without it.

View File

@ -0,0 +1,106 @@
# Prévision de production PV
<span class="badge testing">BETA</span> <span class="badge community">COMMUNITY</span>
La box prévoit la production de vos panneaux, heure par heure, jusqu'à la fin du
lendemain, et l'affiche dans l'application à côté de la production mesurée. C'est une
fonction de la version **Community** (GPL-3.0) : elle repose sur le moteur d'énergie et
sur le plugin [OpenMeteo](../appareils/tarifs/openmeteo.md), sans aucun service ETM.
!!! info "Beta"
Livrée et en fonctionnement sur notre installation de test, elle n'est pas encore
publiée dans un canal du dépôt APT.
## Ce que vous voyez dans l'application
- **La courbe de production prévue**, heure par heure jusqu'à la fin du lendemain,
superposée à la production mesurée.
- **Une fourchette météo** autour de cette courbe (voir plus bas).
- **La météo heure par heure** sur la carte « Journée » : une icône (soleil, nuages,
pluie…), le jour ou la nuit, et la température.
## Comment la prévision est calculée
Pour chaque plan PV déclaré — inclinaison, orientation, puissance crête (kWc) et
rendement du système —, la box convertit l'irradiance prévue par Open-Meteo en
puissance. Elle additionne ensuite tous les plans du site.
Deux corrections s'appliquent, toutes deux **déterministes** : des modèles physiques
publics, paramétrés par les fiches techniques, sans aucun apprentissage.
- **Correction de température** : un module chaud produit moins. La box l'estime à partir
de la température prévue, de la NOCT et du coefficient de température des modules.
- **Plafond onduleur** : la somme des plans ne dépasse jamais la puissance AC maximale de
l'onduleur, si elle a été renseignée.
La prévision est recalculée à chaque nouvelle publication des modèles météo, soit au plus
une fois par heure.
### Une prévision, et un plafond optimiste
Ce que la box affiche est une **prévision**, pas une mesure. C'est aussi un **plafond
optimiste** : l'ombrage (arbres, cheminée, bâtiments voisins) et l'encrassement des
panneaux ne sont pas modélisés. Une production réelle sous la courbe est donc normale et
ne signale pas une panne.
### Une heure sans donnée est un trou, jamais un zéro
Si une heure manque (internet coupé, service météo indisponible), la courbe s'interrompt.
La box n'écrit jamais « 0 » à la place : un zéro se lirait comme « pas de soleil prévu ».
## La fourchette météo
Autour de la courbe, l'application trace une bande :
**prévu × (1 ± dispersion des modèles du jour)**. La dispersion mesure à quel point
plusieurs modèles météo divergent pour la journée.
Cette bande qualifie **la météo**, et seulement la météo. Elle ne dit rien de la
précision de la prévision de production : l'ombrage et l'encrassement n'y figurent pas.
Par grand beau temps stable, elle est étroite alors que l'écart dû à ces facteurs est le
plus fort. Ce n'est donc ni une « erreur attendue » ni un « intervalle de confiance ».
## Mise en service
1. Installez le plugin OpenMeteo et créez le **site** et ses **plans PV** — voir la
[fiche OpenMeteo](../appareils/tarifs/openmeteo.md).
2. **Désignez le site de prévision** dans l'application. Tant qu'aucun site n'est
désigné, la carte de prévision affiche « Aucun site de prévision désigné » et
propose les sites disponibles. Tous les plans du site désigné sont additionnés.
3. Facultatif : renseignez le **plafond onduleur** (puissance AC maximale, en W).
Sans lui, aucun plafond n'est appliqué.
## Ce que la prévision ne fait pas
C'est la règle centrale de la version Community : **sans optimiseur, le pilotage se fait
par règles** (surplus solaire, délestage, priorités). La prévision PV, le
[tarif saisi](../tarifs.md) et la consommation de base sont **affichés** et
**enregistrés localement**, mais ils ne servent jamais à décider. Un test automatique
le vérifie : le moteur prend les mêmes décisions avec ou sans prévision, tarif et profil
de consommation.
L'enregistrement local sert à mesurer la précision des prévisions dans le temps. La
validation sur une installation réelle est en cours ; aucun chiffre de précision n'est
publié avant qu'elle soit terminée.
## Consommation de base prévue <span class="badge nightly">À VENIR</span>
La box calculera un profil de consommation du foyer, hors charges pilotées, à partir de
ses propres mesures : une médiane par heure de la journée, séparée entre jours ouvrés
et week-end. Il faut au moins **7 jours** de mesures avant qu'un profil existe.
D'ici là, rien n'est affiché : une absence, jamais un zéro.
## Vos données
Seul le plugin OpenMeteo se connecte à internet. Il n'envoie que les **coordonnées du
site** (arrondies à environ 1 km), son **altitude** si elle est renseignée, et
l'**orientation des panneaux** (inclinaison, azimut). Les mesures, les prévisions
enregistrées, le tarif et la consommation restent sur la box. L'accès à distance est
désactivé par défaut : il ne s'ouvre que si vous l'activez vous-même dans
l'application.
## Et un optimiseur ?
L'architecture prévoit une **interface ouverte et documentée** vers un optimiseur externe,
qui pourrait utiliser ces prévisions pour planifier. L'optimisation tournerait chez vous,
sur la box ou sur une machine de votre réseau local. Cette connexion est en cours de
développement ; la version Community fonctionne entièrement sans elle.

View File

@ -2,7 +2,7 @@
**Lokales HEMS für PV-, Wärmepumpen- und Ladeinfrastruktur.** ETM PowerSync koordiniert **Lokales HEMS für PV-, Wärmepumpen- und Ladeinfrastruktur.** ETM PowerSync koordiniert
Photovoltaik, Speicher, Wärmepumpe und Wallbox unter einer einzigen Optimierungslogik — Photovoltaik, Speicher, Wärmepumpe und Wallbox unter einer einzigen Optimierungslogik —
ausgeführt bei Ihnen, auf Ihrer Hardware, ohne erzwungene Cloud-Abhängigkeit. ausgeführt bei Ihnen, auf Ihrer Hardware, ohne Cloud-Abhängigkeit.
Aufgebaut auf [nymea.io](https://nymea.io), nach einer **Open-Core**-Architektur: eine Aufgebaut auf [nymea.io](https://nymea.io), nach einer **Open-Core**-Architektur: eine
freie Basis (GPL-3.0) und eine proprietäre Optimierungsschicht. freie Basis (GPL-3.0) und eine proprietäre Optimierungsschicht.

View File

@ -2,7 +2,7 @@
**Local HEMS for solar PV, heat pump and EV charging installations.** ETM PowerSync **Local HEMS for solar PV, heat pump and EV charging installations.** ETM PowerSync
coordinates photovoltaics, battery, heat pump and EV charger under a single optimisation coordinates photovoltaics, battery, heat pump and EV charger under a single optimisation
logic — running at your site, on your hardware, with no mandatory cloud dependency. logic — running at your site, on your hardware, with no cloud dependency.
Built on [nymea.io](https://nymea.io), following an **Open Core** architecture: a free Built on [nymea.io](https://nymea.io), following an **Open Core** architecture: a free
foundation (GPL-3.0) and a proprietary optimisation layer. foundation (GPL-3.0) and a proprietary optimisation layer.

View File

@ -2,7 +2,7 @@
**HEMS local pour installations PV, PAC et IRVE.** ETM PowerSync coordonne photovoltaïque, **HEMS local pour installations PV, PAC et IRVE.** ETM PowerSync coordonne photovoltaïque,
batterie, pompe à chaleur et borne de recharge sous une seule logique d'optimisation — batterie, pompe à chaleur et borne de recharge sous une seule logique d'optimisation —
exécutée chez vous, sur votre matériel, sans dépendance cloud obligatoire. exécutée chez vous, sur votre matériel, sans dépendance au cloud.
Bâti sur [nymea.io](https://nymea.io), selon une architecture **Open Core** : un socle Bâti sur [nymea.io](https://nymea.io), selon une architecture **Open Core** : un socle
libre (GPL-3.0) et une couche d'optimisation propriétaire. libre (GPL-3.0) et une couche d'optimisation propriétaire.

View File

@ -1,4 +1,26 @@
# Tarife [Roadmap]{.badge .road} # Tarife
## Vom Installateur eingegebener Tarif <span class="badge testing">BETA</span>
Der Installateur gibt den Strombezugstarif des Standorts ein; die Box speichert ihn.
- **Einheitstarif**: ein Preis für den ganzen Tag.
- **Hoch-/Niedertarif**: ein Preis je Zeitzone. Die Engine akzeptiert mehrere
Zeitfenster je Zone (zum Beispiel Niedertarif nachts und am frühen Nachmittag); die
Fenster müssen die 24 Stunden lückenlos und ohne Überschneidung abdecken.
- Preise in **ct/kWh brutto**, der vollständig bezahlte Preis. Ein Einspeisetarif kann
hinzukommen (0, wenn nicht angegeben).
- Die Uhrzeiten sind die der **Box** (ihre Zeitzone), nicht die des Telefons.
In der App erfasst der Tarifbildschirm einen Einheitstarif oder Hoch-/Niedertarif mit
einem Niedertarif-Fenster. Ein Tarif mit mehreren Fenstern wird dort nur angezeigt.
!!! note "Bereitgestellt, nicht für Entscheidungen verwendet"
Die Engine **stellt** den Tarif **bereit** (Anzeige, lokale Aufzeichnung); sie
entscheidet nicht damit. Ohne Optimierer bleibt die Steuerung regelbasiert – siehe
[PV-Erzeugungsprognose](fonctionnalites/prevision-pv.md#was-die-prognose-nicht-tut).
## Dynamische Tarife <span class="badge nightly">ROADMAP</span>
Abwägung nach den **deutschen** Tarifsignalen: variable Tarife, Spot-Angebote (EPEX), Abwägung nach den **deutschen** Tarifsignalen: variable Tarife, Spot-Angebote (EPEX),
netzorientierte Steuerung steuerbarer Verbrauchseinrichtungen nach **§14a EnWG**. netzorientierte Steuerung steuerbarer Verbrauchseinrichtungen nach **§14a EnWG**.

View File

@ -1,4 +1,26 @@
# Tariffs [Roadmap]{.badge .road} # Tariffs
## Tariff entered by the installer <span class="badge testing">BETA</span>
The installer enters the site's electricity purchase tariff; the box stores it.
- **Single rate**: one price, all day.
- **Peak / off-peak**: one price per period. The engine accepts several time ranges per
period (for example off-peak at night and in the early afternoon); the ranges must
cover the 24 hours with no gap and no overlap.
- Prices in **euro cents per kWh, all taxes included** — the full price paid. A
feed-in tariff can be added (0 if not entered).
- Times are those of the **box** (its time zone), not of the phone.
In the app, the Tariff screen enters a single rate or peak/off-peak with one off-peak
range. A tariff with several ranges is shown there read-only.
!!! note "Exposed, not used to decide"
The engine **exposes** the tariff (display, local recording); it does not decide
with it. Without an optimiser, control stays rule-based — see
[PV production forecast](fonctionnalites/prevision-pv.md#what-the-forecast-does-not-do).
## Dynamic tariffs <span class="badge nightly">ROADMAP</span>
Arbitration on national tariff signals — **France**: Tempo (blue/white/red), off-peak Arbitration on national tariff signals — **France**: Tempo (blue/white/red), off-peak
and peak hours, dynamic offers; CO₂ optimisation from the RTE eco2mix signal. and peak hours, dynamic offers; CO₂ optimisation from the RTE eco2mix signal.

View File

@ -1,4 +1,27 @@
# Tarifs [Roadmap]{.badge .road} # Tarifs
## Tarif saisi par l'installateur <span class="badge testing">BETA</span>
L'installateur saisit le tarif d'achat d'électricité du site ; la box le conserve.
- **Tarif unique** : un seul prix, toute la journée.
- **Heures pleines / heures creuses** : un prix par période. Le moteur accepte plusieurs
plages par période (par exemple des heures creuses la nuit et en début
d'après-midi) ; les plages doivent couvrir les 24 heures sans trou ni chevauchement.
- Prix en **c€/kWh TTC**, le prix complet payé. Un tarif de revente peut s'y ajouter
(0 s'il n'est pas saisi).
- Les heures sont celles de la **box** (son fuseau horaire), pas celles du téléphone.
Dans l'application, l'écran Tarif saisit un tarif unique ou des heures pleines/creuses
avec une plage d'heures creuses. Un tarif à plusieurs plages s'y affiche en lecture
seule.
!!! note "Exposé, pas utilisé pour décider"
Le moteur **expose** le tarif (affichage, enregistrement local) ; il ne décide pas
avec. Sans optimiseur, le pilotage reste à règles — voir
[Prévision de production PV](fonctionnalites/prevision-pv.md#ce-que-la-prevision-ne-fait-pas).
## Tarifs dynamiques <span class="badge nightly">ROADMAP</span>
Arbitrage sur les signaux tarifaires **français** : Tempo (bleu/blanc/rouge), heures Arbitrage sur les signaux tarifaires **français** : Tempo (bleu/blanc/rouge), heures
creuses/pleines, offres dynamiques. Optimisation CO₂ via le signal RTE eco2mix. creuses/pleines, offres dynamiques. Optimisation CO₂ via le signal RTE eco2mix.

View File

@ -95,6 +95,7 @@ plugins:
Surplus solaire: Solarüberschuss Surplus solaire: Solarüberschuss
Délestage: Lastabwurf Délestage: Lastabwurf
Gestion batterie: Speicherverwaltung Gestion batterie: Speicherverwaltung
Prévision PV: PV-Prognose
Tarifs dynamiques: Dynamische Tarife Tarifs dynamiques: Dynamische Tarife
API JsonRPC: JSON-RPC-API API JsonRPC: JSON-RPC-API
Référence API: API-Referenz Référence API: API-Referenz
@ -132,6 +133,7 @@ plugins:
Surplus solaire: Solar surplus Surplus solaire: Solar surplus
Délestage: Load shedding Délestage: Load shedding
Gestion batterie: Battery management Gestion batterie: Battery management
Prévision PV: PV forecast
Tarifs dynamiques: Dynamic tariffs Tarifs dynamiques: Dynamic tariffs
API JsonRPC: JSON-RPC API API JsonRPC: JSON-RPC API
Référence API: API reference Référence API: API reference
@ -167,6 +169,7 @@ nav:
- Surplus solaire: fonctionnalites/surplus-solaire.md - Surplus solaire: fonctionnalites/surplus-solaire.md
- Délestage: fonctionnalites/delestage.md - Délestage: fonctionnalites/delestage.md
- Gestion batterie: fonctionnalites/gestion-batterie.md - Gestion batterie: fonctionnalites/gestion-batterie.md
- Prévision PV: fonctionnalites/prevision-pv.md
- Tarifs dynamiques: tarifs.md - Tarifs dynamiques: tarifs.md
- Référence: - Référence:
- reference.md - reference.md