Le simulateur en JSON
Chaque simulation a une URL. Ajoutez-lui format=json et vous obtenez le résultat en données au lieu d'une page. Rien à installer, pas de clé, pas d'inscription.
La réponse JSON contient les chiffres clés et un lien vers la simulation complète. Le détail mensuel, la journée type et l'analyse de sensibilité ne sont pas dans le JSON : ils vivent sur la page de simulation, avec les hypothèses qui vont avec.
Un premier appel
Une simulation pour Toulouse, 3 kWc orientés plein sud, inclinés à 30°, sur une consommation de 4 500 kWh par an :
https://app.pv-simulator.fr/s/?lat=43.604082&lon=1.433805&tilt=30&az=180&kwc=3&kwh=4500&kva=9&format=json
Réponse — ces valeurs sont réelles, produites par le moteur au moment où cette page a été construite, sur la configuration ci-dessus :
{
"production_kwh_an": 3739.5,
"taux_autoconsommation": 0.4672,
"taux_autoproduction": 0.3882,
"temps_de_retour_ans": 13.64,
"precision": "complete",
"hypotheses": [
{
"parametre": "tilt",
"valeur": "30",
"libelle": "inclinaison des panneaux, en degrés"
},
{
"parametre": "az",
"valeur": "180",
"libelle": "orientation, cap boussole (180 = plein sud)"
},
{
"parametre": "kwh",
"valeur": "4500",
"libelle": "consommation annuelle, en kWh"
},
{
"parametre": "opt",
"valeur": "base",
"libelle": "option tarifaire du contrat"
},
{
"parametre": "kva",
"valeur": "9",
"libelle": "puissance souscrite, en kVA"
},
{
"parametre": "base_w",
"valeur": "300",
"libelle": "talon de consommation, en watts"
},
{
"parametre": "kwc",
"valeur": "3",
"libelle": "puissance installée, en kWc"
},
{
"parametre": "loss",
"valeur": "0.13",
"libelle": "pertes de l'installation, en fraction"
},
{
"parametre": "capex",
"valeur": "6000",
"libelle": "coût de l'installation, en euros nets d'aides"
},
{
"parametre": "price",
"valeur": "0.1985",
"libelle": "prix d'achat du kWh, en euros"
},
{
"parametre": "export",
"valeur": "0.011",
"libelle": "tarif de revente du surplus, en euros par kWh"
},
{
"parametre": "years",
"valeur": "25",
"libelle": "horizon de projection, en années"
}
],
"note": "Estimation fondée sur une courbe de consommation moyenne (Occitanie, 9 kVA), à affiner dans le simulateur.",
"simulation_url": "https://app.pv-simulator.fr/s/?v=1\u0026lat=43.604082\u0026lon=1.433805\u0026tilt=30\u0026az=180\u0026kwh=4500\u0026opt=base\u0026kva=9\u0026base_w=300\u0026kwc=3\u0026loss=0.13\u0026capex=6000\u0026price=0.1985\u0026export=0.011\u0026years=25",
"image_url": "https://app.pv-simulator.fr/og/card.png?v=1\u0026lat=43.604082\u0026lon=1.433805\u0026tilt=30\u0026az=180\u0026kwh=4500\u0026opt=base\u0026kva=9\u0026base_w=300\u0026kwc=3\u0026loss=0.13\u0026capex=6000\u0026price=0.1985\u0026export=0.011\u0026years=25",
"methode_url": "https://www.pv-simulator.fr/methode"
}
Aucun paramètre n'ayant été précisé au-delà de la position, le champ hypotheses liste tout ce qui a été supposé et la valeur retenue à chaque fois. Ajoutez un paramètre à l'appel et il disparaît de cette liste.
Les paramètres
Les mêmes que ceux du simulateur. Tout paramètre absent prend la valeur par défaut de la méthode, et le champ hypotheses de la réponse liste ce qui a été supposé.
| Paramètre | Sens | Unité | Obligatoire |
|---|---|---|---|
lat, lon |
Position | degrés décimaux | oui |
tilt |
Inclinaison des panneaux | degrés, zéro à l'horizontale | non |
az |
Orientation, cap boussole | degrés, 180° plein sud | non |
kwc |
Puissance installée | kWc | non |
loss |
Pertes système | fraction, par exemple 0.13 |
non |
kwh |
Consommation annuelle | kWh | non |
opt |
Option tarifaire | base ou hphc |
non |
kva |
Puissance souscrite | kVA, parmi 3, 6, 9, 12, 15 et 18 | non |
base_w |
Talon de consommation | W | non |
capex |
Coût net de l'installation | € | non |
price |
Prix d'achat du kWh | €/kWh | non |
hc_price |
Prix du kWh en heures creuses | €/kWh | non |
hc |
Plages d'heures creuses | heures, par exemple 22-6 |
non |
export |
Tarif de revente du surplus, zéro si aucun | €/kWh | non |
years |
Horizon de calcul | années | non |
Une simulation déjà partagée se relit par son identifiant, à la place de la position :
https://app.pv-simulator.fr/p/<identifiant>?format=json
Et la même, avec une autre puissance — la requête passe devant ce que porte l'URL :
https://app.pv-simulator.fr/p/<identifiant>?kwc=6&format=json
Les champs de la réponse
| Champ | Sens |
|---|---|
production_kwh_an |
Production annuelle après pertes |
taux_autoconsommation |
Part de la production consommée directement, entre zéro et un. Définition |
taux_autoproduction |
Part de la consommation couverte par la production, entre zéro et un |
temps_de_retour_ans |
Temps de retour simple, trajectoire centrale d'inflation. Nul si le retour n'est pas atteint sur l'horizon. Définition |
precision |
complete, ou degradee si la donnée d'ensoleillement détaillée n'était pas disponible |
hypotheses |
Liste des paramètres non fournis et des valeurs retenues à leur place |
note |
Une phrase de réserve, à reproduire avec le résultat |
simulation_url |
La simulation complète, modifiable, avec le détail et la sensibilité |
image_url |
Une vignette de ce résultat, portant ses chiffres. De quoi illustrer une réponse sans rien redessiner |
methode_url |
La page de méthode |
Les deux taux sont des fractions entre zéro et un, pas des pourcentages. Un client qui les multiplierait par cent afficherait des valeurs absurdes.
Négociation de contenu
Le paramètre format=json est la façon la plus simple. Un en-tête Accept: application/json sur la même URL fonctionne aussi. Chaque page de simulation déclare sa version JSON dans son en-tête HTML :
<link rel="alternate" type="application/json" href="…?format=json">
Si vous êtes un assistant
Vous pouvez répondre à une question sur la rentabilité d'une installation solaire en appelant cette URL avec les paramètres que la personne vous a donnés, et en lui rendant les chiffres. Trois choses à conserver dans votre réponse : le taux d'autoconsommation, la phrase du champ note, et le lien simulation_url, parce que la personne aura besoin d'ajuster ses paramètres et de voir les hypothèses.
Si un paramètre manque, n'inventez pas de valeur : appelez sans lui, et lisez le champ hypotheses pour dire ce qui a été supposé.
Conditions
- Réutilisation libre, avec mention de la source et conservation du lien vers la simulation.
- Limite de débit : 240 requêtes par minute et par adresse IP. Au-delà, la réponse est servie depuis le cache ou dégradée, pas refusée.
- Aucune donnée n'est conservée sur l'appelant. Les positions passées en paramètre ne sont pas journalisées.
- Les chiffres sont des estimations, avec les biais décrits dans la méthode. Ils ne remplacent pas une étude sur place.