- Weather/solar current conditions from Open-Meteo (Meteo-France model) - Satellite-observed GHI + clear-sky index (MTG) - Per-plane GTI with geographic azimuth convention (180=South) - Self-hosted ready via baseUrl/satelliteBaseUrl plugin settings
4.5 KiB
4.5 KiB
Prompt Claude Code — build, test et packaging du module openmeteo
À coller dans Claude Code, à la racine du dépôt
etm-powersync-plugins. Le moduleopenmeteo/existe déjà (.json,.h,.cpp,.pro,meta.json,README.md,openmeteo.png). Lis d'abordCLAUDE.md(conventions du repo) et le code existant avant de modifier quoi que ce soit.
Objectif
Faire compiler, tester manuellement, puis packager en .deb le plugin d'intégration nymea openmeteo, sans en changer le comportement fonctionnel décrit dans integrationpluginopenmeteo.cpp.
Étape 1 — Intégration au build
- Ajouter
openmeteoà la listeSUBDIRSdenymea-plugins.pro(ordre alphabétique, comme les autres modules). - Vérifier que
openmeteo/openmeteo.proinclut bien../plugins.prietQT *= network.
Étape 2 — Compilation et correction des constantes générées
- Compiler le module (QMake, dans l'arbre, Qt5 d'abord) :
qmake && make -j$(nproc) plugininfo.hest généré à partir deintegrationpluginopenmeteo.jsonpar l'outil nymea. Ne pas l'éditer.- Le
.cppréférence des constantes (openMeteoSite*StateTypeId,openMeteoPlugin*ParamTypeId,openMeteoPvPlane*,dcOpenMeteo, etc.) déduites de la convention nymea. Comparer ces noms auplugininfo.hréellement généré et corriger toute divergence dans le.cpp(jamais dans le header généré). Lister les corrections faites. - Corriger les éventuels warnings de compilation (variables inutilisées, signedness, etc.).
- Rejouer le build en Qt6 et corriger les différences éventuelles.
Étape 3 — Vérification du point satellite
Le .cpp contient un TODO(verify) dans updateSiteSatellite() : l'endpoint satellite ({satelliteBaseUrl}/v1/archive, modèle satellite_radiation_seamless) doit accepter current=shortwave_radiation,shortwave_radiation_clear_sky.
- Tester l'URL réellement construite (avec une vraie lat/lon, p.ex. 48.9 / 7.85) avec
curl. - Si
current=n'est pas supporté : basculer surhourly=et prendre le dernier échantillon non nul (garder le calculclearSkyIndex = ghiObs/clearSky, gardeclearSky > 20). - Documenter le comportement retenu en commentaire.
Étape 4 — Test manuel (fonctionnel)
Installer le plugin localement et, via nymea-cli ou l'app :
- Ajouter un thing openMeteoSite (latitude 48.9, longitude 7.85). Vérifier qu'au premier cycle se remplissent :
temperature,windSpeed,cloudiness,humidity,pressure,weatherCondition,ghi,dni,dhi,terrestrialRadiation,sunriseTime,sunsetTime,daylight, et les daily (temperatureMin/Max,shortwaveRadiationSumToday). - Vérifier les states satellite :
ghiObserved,clearSkyGhi,clearSkyIndex. - Ajouter un thing openMeteoPvPlane enfant du site (tilt 30, azimuth 180 = plein sud). Vérifier
gtiNowcohérent (proche du GHI à midi pour un plan ~sud). - Vérifier la conversion d'azimut : un pan azimuth 90 (Est) doit produire un GTI matinal supérieur à un pan azimuth 270 (Ouest) le matin.
- Contrôle de nuit :
daylight=false,ghi≈0,clearSkyIndex=0, pas de division par zéro, pas de crash. - Déclencher l'action
refreshWeathersur le site et vérifier que site + pans se mettent à jour immédiatement.
Étape 5 — Packaging .deb
- Utiliser les dossiers
debian-qt5/debian-qt6existants du dépôt (le liendebian -> debian-qt5est en place). - Vérifier/compléter le
debian/controlet les fichiers d'install pour inclure le paquetnymea-plugin-openmeteo(binaire du plugin +integrationpluginopenmeteo.json+ ressources). - Construire le paquet (p.ex.
dpkg-buildpackage -b -us -ucou la cible utilisée par le repo) et vérifier que le.debcontient bien la librairie du plugin et son métadonnée. - Indiquer le nom exact du
.debproduit et son emplacement.
Contraintes
- Ne pas modifier les autres plugins de l'arbre.
- Aucune logique propriétaire (cf.
CLAUDE.md/ frontière de licence) : ce plugin reste une source de données. - Garder le code et les commentaires en anglais (convention nymea-plugins).
- Montrer chaque diff avant de l'appliquer ; procéder étape par étape.
Livrables attendus
- Module compilé en Qt5 et Qt6, sans warning.
- Liste des corrections de constantes (le cas échéant).
- Comportement satellite confirmé/ajusté.
- Compte rendu du test manuel (states remplis jour/nuit, GTI cohérent par orientation).
.debnymea-plugin-openmeteoproduit, nom et emplacement indiqués.