github.com/Open-LEG-ch/openleg

Freie Energieinfrastruktur, die man prüfen und selbst betreiben kann.

OpenLEG ist das öffentliche App-Repo für Schweizer Lokale Elektrizitätsgemeinschaften. Der Code ist offen, die Datenquellen sind nachvollziehbar, und produktive Secrets bleiben ausserhalb des öffentlichen Repos.

Echte OpenLEG-Anwendung mit Mitgliedern, Dokumenten und Gründungsfortschritt

Laufende Anwendung

Vom Interface direkt zum Code

Diese Aufnahme stammt aus der echten Demo. Öffnen Sie den Ablauf, prüfen Sie das Verhalten und starten Sie dieselbe App danach lokal.

Daten

Eigentum bleibt lokal

Smart-Meter-Daten bleiben innerhalb jeder LEG. Sie werden nicht verkauft und nicht für Dritte aggregiert.

Lizenz

AGPL-3.0-or-later

Wer eine veränderte Version über ein Netzwerk anbietet, muss den Nutzenden den entsprechenden Quellcode gemäss Lizenz zugänglich machen.

Betrieb

Zwei Modelle

Selbst betreiben auf eigener Infrastruktur oder Gehostet auf openleg.ch ohne eigenen technischen Betrieb.

OpenLEG in einer Zeile selbst betreiben.

Installieren Sie OpenLEG direkt, wenn Sie wissen, was Sie tun. Der Installer erstellt lokale Zugangsschlüssel und startet App, PostgreSQL und Redis mit Docker. Ihre Messdaten bleiben in Ihrer lokalen PostgreSQL-Datenbank.

Für macOS und Linux mit Docker Compose, curl und OpenSSL.

curl -fsSL https://openleg.ch/install.sh | bash

Öffentliches App-Repo

Hier liegen Produktcode, Tests, Templates, öffentliche Datenmodelle, API und CI. Das Repo soll lesbar, prüfbar und einfach zu forken sein.

  • Flask-App und öffentliche API
  • PostgreSQL-Schema und idempotente Migrationen
  • Templates, statische Assets und Tests
  • AGPL-3.0-or-later Lizenz

Privates Ops-Repo

Produktionsbetrieb, Host-Inventar, Secrets, Incident-Notizen und interne Strategie bleiben privat. So bleibt der App-Code offen, ohne produktive Infrastruktur offenzulegen.

  • Deployment-Runbooks und Hostnamen
  • Secret-Handling und Rotation
  • Incident-Notizen und interne Planung
  • Keine Bürgerdaten im öffentlichen Repo

Architektur

Flask

Routen, Formulare, Gemeindeprofile, Rangliste und JSON-API.

PostgreSQL

Gemeindedaten, PV-Anlagen, Tarife, Registrierungen und Audit-Daten.

Redis

Cache und kurzfristige technische Zustände.

Caddy

TLS, Domains und Reverse Proxy vor der Flask-App.

Für technische Nutzer

Wo Sie im Code anfangen

Wer einen Fehler verfolgt oder einen Pull Request plant, findet hier den passenden Einstieg.

Web und API

app.py verbindet die Flask-Routen. Öffentliche JSON-Endpunkte liegen in api_public.py, Seiten in templates/. Starten Sie hier, wenn Sie einen Nutzerweg oder API-Aufruf verfolgen.

Datenzugriff

database.py besitzt Verbindungsaufbau und Migrationen. Fachlich zusammengehörige Abfragen liegen in store/ und bleiben über database.py kompatibel erreichbar.

Abrechnung heute

billing_engine.py verarbeitet zugeordnete Viertelstundenwerte und erzeugt einen prüfbaren Entwurf. Bezug erscheint als positive consumer_charge, Einspeisung als negative producer_credit. store/billing.py speichert Periode, Preise und Positionen. Messdatenimport, Mitgliederzuordnung, CLI-Befehl für einen Abrechnungslauf und definitive Rechnungsdokumente sind noch kein durchgängiger Ablauf.

Tests und Beiträge

Tests liegen in tests/. Neue Logik beginnt mit einem fehlschlagenden Test. Vor einem Pull Request muss scripts/tdd_cycle.sh gate vollständig durchlaufen. Kleine PRs können wir schneller prüfen.

Die englische und deutsche Übersicht im README enthält Startbefehle, Repo-Grenzen und Links zur Architektur.

Datenpipeline

OpenLEG verbindet öffentliche Energiedaten mit nachvollziehbarer Logik. Die Solarnutzungs-Rangliste nutzt einen deterministischen Export aus BFE Anlagenregister, BFE Sonnendach und BFS Regionalporträts.

  • ElCom Tarife für H4 und weitere Kategorien
  • BFE Sonnendach für geschätztes Dachpotenzial
  • BFS Regionalporträts für Bevölkerung, Fläche und Dichte
  • CSV Seeds in data/public, Import über scripts/load_pv_data.py

Selbst betreiben

Ein Befehl auf Ihrer eigenen Hardware. Docker genügt, ein Raspberry Pi reicht für den Anfang.

curl -fsSL https://openleg.ch/install.sh | bash

Danach verwalten Sie die Box mit einem Befehl, importieren Ihre Messdaten lokal und verbinden Nachbarn über ein privates Netzwerk ohne offene Ports.

Oder manuell aus dem Quellcode:

git clone https://github.com/Open-LEG-ch/openleg.git
cd openleg
cp .env.example .env
docker compose up -d

Schnellstart, manuelle Installation und privates Netzwerk

Warum offen?

Lokale Stromgemeinschaften brauchen Vertrauen. Gemeinden, Bewohner und Entwickler sollen prüfen können, welche Daten genutzt werden, welche Annahmen in Berechnungen stecken und wie die Plattform betrieben werden kann. OpenLEG verkauft keine Bürgerdaten.

OpenLEG bindet sich nicht an einzelne Netzbetreiber. Code und Datenmodell sind neutrale Infrastruktur, nutzbar unabhängig davon, welcher Verteilnetzbetreiber eine Gemeinde bedient.