github.com/Open-LEG-ch/openleg

Une infrastructure énergétique libre, vérifiable et auto-hébergeable.

OpenLEG est le dépôt public de l’application destinée aux communautés électriques locales suisses. Le code est ouvert, les sources des données sont vérifiables et les secrets de production restent hors du dépôt public.

Application OpenLEG réelle avec membres, documents et avancement de la création

Application en fonctionnement

De l’interface au code

Cette capture provient de la démo réelle. Ouvrez le parcours, vérifiez son fonctionnement, puis lancez la même application en local.

Données

Les données restent locales

Les données des compteurs intelligents restent au sein de chaque CEL. Elles ne sont ni vendues ni agrégées pour des tiers.

Licence

AGPL-3.0-or-later

Toute personne qui propose une version modifiée sur un réseau doit mettre le code source correspondant à disposition des utilisateurs conformément à la Licence .

Exploitation

Deux modèles

Auto-hébergement sur votre propre infrastructure ou Hébergement sur openleg.ch sans exploitation technique à votre charge.

Auto-héberger OpenLEG en une commande.

Installez OpenLEG directement si vous connaissez la procédure. L’installateur crée des clés d’accès locales et démarre l’application, PostgreSQL et Redis avec Docker. Vos mesures restent dans votre base PostgreSQL locale.

Pour macOS et Linux avec Docker Compose, curl et OpenSSL.

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

Dépôt public de l’application

Il contient le code du produit, les tests, les modèles de pages, les modèles de données publics, l’API et l’intégration continue. Le dépôt doit être lisible, vérifiable et facile à dériver.

  • Application Flask et API publique
  • Schéma PostgreSQL et migrations idempotentes
  • Modèles de pages, ressources statiques et tests
  • Licence AGPL-3.0-or-later

Dépôt privé d’exploitation

L’exploitation en production, l’inventaire des hôtes, les secrets, les notes d’incident et la stratégie interne restent privés. Le code de l’application demeure ainsi ouvert sans exposer l’infrastructure de production.

  • Procédures de déploiement et noms d’hôtes
  • Gestion et renouvellement des secrets
  • Notes d’incident et planification interne
  • Aucune donnée personnelle des habitants dans le dépôt public

Architecture

Flask

Routes, formulaires, profils communaux, classement et API JSON.

PostgreSQL

Données communales, installations photovoltaïques, tarifs, inscriptions et données d’audit.

Redis

Cache et états techniques temporaires.

Caddy

TLS, domaines et proxy inverse devant l’application Flask.

Pour les utilisateurs techniques

Par où commencer dans le code

Vous recherchez un bug ou préparez une pull request ? Voici les points d’entrée adaptés.

Web et API

app.py relie les routes Flask. Les points d’accès JSON publics se trouvent dans api_public.py, les pages dans templates/. Commencez ici pour suivre un parcours utilisateur ou un appel à l’API.

Accès aux données

database.py gère les connexions et les migrations. Les requêtes d’un même domaine se trouvent dans store/ et restent accessibles de manière compatible via database.py .

La facturation aujourd’hui

billing_engine.py traite les valeurs affectées par quart d’heure et produit un brouillon vérifiable. La consommation apparaît sous forme de consumer_chargepositive et l’injection sous forme de valeur négative producer_credit. store/billing.py enregistre la période, les prix et les postes. L’importation des mesures, l’affectation des membres, la commande de lancement d’un décompte et les documents de facturation définitifs ne forment pas encore un parcours continu.

Tests et contributions

Les tests se trouvent dans tests/. Toute nouvelle logique commence par un test en échec. Avant une pull request, scripts/tdd_cycle.sh gate doit s’exécuter jusqu’au bout. Les petites PR sont plus rapides à examiner.

Les présentations en anglais et en allemand du README contiennent les commandes de démarrage, le périmètre des dépôts et les liens vers l’architecture.

Chaîne de données

OpenLEG relie les données énergétiques publiques à une logique vérifiable. Le classement de l’utilisation du solaire utilise un export déterministe du registre des installations de l’OFEN, de l’OFEN Toitsolaire et des portraits régionaux de l’OFS.

  • Tarifs ElCom pour H4 et d’autres catégories
  • OFEN Toitsolaire pour l’estimation du potentiel des toits
  • Portraits régionaux de l’OFS pour la population, la superficie et la densité
  • Données initiales CSV dans data/public, importation via scripts/load_pv_data.py

Auto-hébergement

Une commande sur votre propre matériel. Docker suffit, un Raspberry Pi convient pour commencer.

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

Vous gérez ensuite le boîtier avec une commande, importez vos mesures en local et connectez vos voisins par un réseau privé sans ports ouverts.

Ou manuellement à partir du code source :

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

Démarrage rapide, installation manuelle et réseau privé

Pourquoi un logiciel ouvert ?

Les communautés électriques locales ont besoin de confiance. Les communes, les habitants et les développeurs doivent pouvoir vérifier les données utilisées, les hypothèses des calculs et les possibilités d’exploitation de la plateforme. OpenLEG ne vend aucune donnée personnelle des habitants.

OpenLEG n’est lié à aucun gestionnaire de réseau en particulier. Le code et le modèle de données forment une infrastructure neutre, utilisable quel que soit le gestionnaire de réseau de distribution de la commune.