Wie das gebaut ist, und warum so
Gemessenes steht hier getrennt von Angenommenem. Und zu jeder Entscheidung steht die Alternative, die verworfen wurde.
Was SolarKreis ist
Das Set-Up
Drei simulierte Solarparks um eine Zentrale, gespeist mit echten Daten.
Echt und simuliert
Echt sind Wetter, Strompreis und aktive Feuer. Simuliert sind Parks und Geräte. Ihre Messwerte rechnet die Simulation aus der echten Einstrahlung.
Kennzeichnung
Jeder Wert trägt seine Herkunft mit. Die Oberfläche liest sie aus. Welche Quelle wann zuletzt geantwortet hat, steht auf der Datenquellen-Seite.
Datenquellen
Drei, alle nur lesend
Open-Meteo für Einstrahlung, Temperatur und Niederschlag. aWATTar für den Strompreis, der am Vortag je Stunde festgelegt wird. NASA FIRMS für aktive Feuer.
Ein roher Feed ist kein Alarm
Ein Satellitentreffer ist eine Wärmedetektion, keine Gefahrenmeldung. Ohne Schwelle hätte jeder Treffer im Umkreis einen Alarm ausgelöst — an einem gemessenen Tag über hundert. Es gilt deshalb: Hinweis ab 5 MW in 10 km, kritisch ab 10 MW in 5 km. Die Messung dahinter steht mit den heutigen Zahlen auf der Datenquellen-Seite.
Datenmodell
Drei Formate, ein Reading
Drei Hersteller senden dasselbe in drei Formaten. SolarKreis vereinheitlicht sie beim Eingang, nicht erst in der Anzeige.
| FMT | Rohform | Normalisiert |
|---|---|---|
| A | { "outputKw": 5845.4, "tempC": 39 } | 5845,4 kW · 39 °C |
| B | { "power_w": 4815000, "temperature": 39 } | 4815,0 kW · 39 °C |
| C | { "payload": { "p": 3597.6, "t": 41 } } | 3597,6 kW · 41 °C |
Warum der Umweg
Die Geräte melden ganze Grad. Wer die Rohform überspringt, zeigt 38,6 °C an. Diese Zahl hat nie ein Gerät gesendet. scripts/pruefen.mjs prüft genau das gegen die laufende Instanz.
Read, Write, R&W
Wer liest, wer schreibt
Die externen Quellen geben nur Daten ab (read). Der Mensch gibt nur Befehle (write). Feld und Zentrale tauschen beides (r&w).
Farbe ist nie das einzige Signal
Die Richtung steht in der Pfeilspitze, nicht im Farbton. Wer Farben nicht unterscheidet, liest die Bahn trotzdem.
Warum jede Bahn eine Fassung hat
Auf dem dunklen Grund des Lageplans trägt jede Farbe ihren Kontrast selbst — zwischen 5,8:1 und 6,9:1, gefordert sind 3:1 für Nicht-Text. Die dunkle Fassung hat deshalb eine andere Aufgabe: wo zwei Bahnen sich kreuzen, tritt die untere zurück, und man kann einer einzelnen mit dem Auge folgen.
Schreibpfad und Sicherheit
Im Zweifel abschalten
Fail-closed heißt: im Zweifel nicht ausführen. Geschaltet wird nur bei gesundem Gerät, frischen Daten und berechtigtem Bediener. Fehlt eines davon, geht die Anlage in den sicheren Zustand.
Sicher heißt Ruhe
Beim Speicher heißt sicher: Ruhe. Nicht laden, nicht entladen.
Mensch an der kritischen Grenze
Kritische Aktionen verlangen eine Bestätigung. Der Not-Aus ist das einzige Bedienelement mit einer Datenfarbe.
Auch Absagen stehen im Log
Ein abgelehntes Kommando wird genauso angehängt wie ein ausgeführtes. Ein Wächter, dessen Absagen spurlos verschwinden, ist nicht prüfbar.
Automatisierte Abläufe
Die Kreis-Regel ist eine Leiter
Die Netzgrenze ist das, was der Netzanschluss aufnehmen darf: 38,9 von 54 MW. Reißt der Kreis sie, oder wird der Preis negativ, geht der Überschuss in den Speicher. Erst wenn der voll ist, wird gedrosselt.
Abregelung als letztes Mittel
Drosseln heißt: Strom wegwerfen, der schon da ist. Der Speicher fasst bewusst nur 20 MWh. Wäre er größer, käme der Fall nie vor.
Die Automatik hat keine Abkürzung
Sie geht durch denselben Wächter wie ein Mensch und kann nichts, was ein Bediener nicht auch dürfte. Sonst hieße fail-closed nur „fail-closed für Menschen“.
Feuer meldet, aber schaltet nicht
Der Not-Aus bleibt beim Menschen. Eine Anlage stillzulegen, weil ein Satellit Wärme gesehen hat, wäre die falsche Richtung von fail-closed.
Event Sourcing
Nichts wird überschrieben
Jede Änderung wird angehängt, nichts überschrieben. Den Sollwert rechnet SolarKreis aus allen Kommandos zusammen. Ein Kommando ohne Eintrag kann es deshalb nicht geben.
Der Ladestand als Prüfstein
Der Ladestand summiert sich über alle Ereignisse und über die Zeit dazwischen. Aus dem letzten Eintrag allein lässt er sich nicht ablesen. Genau deshalb zeigt er, ob das Log trägt.
Bewusste Grenze
Der Store liegt im Speicher, nicht in einer Datenbank. Nach einem Kaltstart ist das Log leer. Für ein Portfoliostück ist das die richtige Grenze; für den Betrieb wäre es die erste Baustelle.
Entscheidungen und Abwägungen
Jede nennt ihre Alternative
Ohne die verworfene Möglichkeit ist eine Entscheidung nur eine Behauptung.
- Entscheidung
- Der Zustand wird aus allen Ereignissen errechnet, nicht in Feldern gespeichert.
- Warum
- Das Log ist damit der Zustand, nicht ein Protokoll daneben.
- Verworfen
- Überschreiben und daneben protokollieren. Dann kann das Protokoll lügen, ohne dass es auffällt.
- Entscheidung
- Readings werden deterministisch gerechnet. Im Log stehen nur Kommandos und Auffälligkeiten.
- Warum
- Sieben Geräte im Sekundentakt wären 25.000 Einträge pro Stunde für null Erkenntnis.
- Verworfen
- Jede Messung schreiben. Nach einem Tag wäre das Log unlesbar.
- Entscheidung
- Bei Zweifel sicherer Zustand, mit protokolliertem Grund.
- Warum
- Ein falsches Kommando kostet mehr als ein ausgelassenes.
- Verworfen
- Den letzten bekannten Zustand halten — Weiterfahren im Blindflug.
- Entscheidung
- Alarm erst ab gemessener Schwelle: 5 MW in 10 km, kritisch 10 MW in 5 km.
- Warum
- Roh wären es 101 Treffer in fünf Tagen. Ein Alarm, den man wegklickt, schützt nichts.
- Verworfen
- Jede Detektion melden. Ende August ist in Brandenburg Erntezeit, das wären Stoppelfeuer.
- Entscheidung
- Weitere Feeds nur, wenn sie zu einem Kommando führen.
- Warum
- Ein Strom, der nichts auslöst, ist das Muster, gegen das dieses Stück argumentiert.
- Verworfen
- Die offene Autobahn-Schnittstelle. Frei nutzbar, wirkt aber auf nichts.
Bewusst nicht gebaut
Jeder Eintrag nennt seine Messung
Ein „passt nicht ins Scope“ ohne Beleg ist eine Behauptung, keine Entscheidung.Die Langfassung steht in docs/scope-out.md.
- Entscheidung
- Wäre aus dem Sonnenstand berechenbar gewesen, ohne neuen Feed. Die Geometrie ist gebaut.
- Warum
- Ganzes Jahr im 5-Minuten-Raster: null Blendfenster. Die A9 verläuft dort 51°/231°, die Blendkeulen liegen bei 75–120° und 240–285°.
- Verworfen
- Nach einer passenden A9-Strecke suchen — das hieße, die Welt ans Feature anzupassen.
- Entscheidung
- Feld Süd liegt 221 m von der A9. Lag nahe.
- Warum
- Schnittstelle frei nutzbar, sieben Live-Meldungen. Eine Baustelle fünf Kilometer weiter ändert nichts an Leistung oder Sicherheit.
- Verworfen
- Den Feed trotzdem anzeigen. Ein Strom ohne Wirkung ist Dekoration.
- Entscheidung
- Eisen-Luft wäre für einen Blackout-Rückfall die richtige Technik.
- Warum
- SolarKreis kennt keine Verbraucher. Ein Notfallspeicher braucht eine Last.
- Verworfen
- Die 10-%-Reserve zur Inselreserve umwidmen. Ohne Last wäre das eine Zahl ohne Bezugsgröße.