API backend pour le dimensionnement automatique d'installations photovoltaïques, conforme aux normes internationales (NFC 15-100, IEC 61215, IEC 62109, etc.).
SelfSolar est une API REST développée en Node.js/TypeScript avec Fastify, spécialisée dans le calcul automatique des composants optimaux pour des installations solaires : modules PV, onduleurs, batteries, câblage et protections. Elle intègre des données météorologiques via PVGIS et respecte les normes électriques européennes et internationales pour garantir sécurité et efficacité.
- Dimensionnement complet : Calcul automatique de la puissance PV, modules, stockage, câblage selon la consommation et le site.
- Support multi-systèmes : On-grid, off-grid, hybride, pompage solaire.
- Intégration PVGIS : Données d'irradiation solaire précises pour dimensionnement conservateur.
- Normes conformes : Calculs basés sur NFC 15-100, IEC 61215, IEC 62109, NF EN 50549, etc.
- Documentation interactive : Swagger UI pour explorer et tester l'API.
- Listes de composants : Accès aux bases de données de panneaux PV et batteries.
- Node.js >= 18
- npm ou yarn
- Variables d'environnement (voir
.env.example)
-
Cloner le repository :
git clone https://github.com/KUROYUKIHIME333/selfsolar.git cd selfsolar -
Installer les dépendances :
npm install
-
Configurer les variables d'environnement :
cp .env.example .env # Éditer .env avec vos valeurs (PVGIS_URL, etc.) -
Construire et démarrer en mode développement :
npm run dev
-
Pour production :
npm run build npm run start:prod
npm run docker:build
npm run docker:runL'API écoute sur http://localhost:3000 par défaut.
- Documentation Swagger :
http://localhost:3000/documentation/ - Spécification OpenAPI :
http://localhost:3000/api-spec.json
Endpoint principal : POST /api/v1/pv/dimensionner
{
"localisation": {
"lat": 48.8566,
"long": 2.3522
},
"equipements": [
{
"nom": "Réfrigérateur",
"P": 150,
"h": 8,
"ks": 0.8
}
],
"typeInstallation": "STANDARD",
"typeSysteme": "off-grid",
"parametresPanneau": {
"puissanceCreteModule": 400,
"tensionMPP": 40.5,
"tensionVoc": 49.2,
"courantMPP": 9.88,
"courantCourtCircuit": 10.5,
"coeffTempTension": 0.0035,
"coeffTempPuissance": 0.004,
"noct": 45
},
"temperaturesAttendue": {
"temperatureMin": -5,
"temperatureMax": 35
},
"autonomieBatterie": 3,
"technologieBatterie": "LiFePO4",
"irradianceMax": 1000
}Scripts de test pour différents scénarios :
npm run test:ongrid
npm run test:offgrid
npm run test:hybride
npm run test:pompage
npm run test:allPOST /api/v1/pv/dimensionner: Dimensionnement completGET /api/v1/pv/liste-panneaux: Liste des panneaux PVGET /api/v1/pv/liste-batteries: Liste des batteriesGET /api/v1/pv/listes: Listes combinéesGET /api/v1/pv/sante: État des services
src/
├── app.ts # Configuration Fastify
├── server.ts # Point d'entrée serveur
├── controllers/
│ └── installationPhotovoltaique.controllers.ts
├── routes/
│ ├── api.routes.ts
│ └── installationPhotovoltaique.routes.ts
├── services/
│ ├── installationPhotovoltaique/
│ │ ├── bilanConso.services.ts
│ │ ├── parametreSite.services.ts
│ │ ├── puissancePVCrete.services.ts
│ │ ├── stockage.services.ts
│ │ └── cablageProtection.services.ts
│ └── ...
├── types/
│ └── installationPhotovoltaique.types.ts
└── utils/
├── batteriesListe.utils.ts
└── constantesPhysiques.utils.ts
- Runtime : Node.js
- Langage : TypeScript
- Framework : Fastify
- Documentation : Swagger/OpenAPI
- Authentification : JWT (optionnel)
- Données externes : PVGIS API
- Normes : NFC 15-100, IEC 61215, IEC 62109, etc.
- Forker le repository
- Créer une branche feature (
git checkout -b feature/nouvelle-fonction) - Commiter les changements (
git commit -am 'Ajout nouvelle fonction') - Pousser la branche (
git push origin feature/nouvelle-fonction) - Ouvrir une Pull Request
npm run lint: Vérification TypeScriptnpm run build: Compilationnpm run dev: Développement avec rechargement automatique
ISC
Repository : https://github.com/KUROYUKIHIME333/selfsolar