# Prompt Claude Code — build, test et packaging du module `openmeteo` > À coller dans Claude Code, à la racine du dépôt `etm-powersync-plugins`. > Le module `openmeteo/` existe déjà (`.json`, `.h`, `.cpp`, `.pro`, `meta.json`, `README.md`, `openmeteo.png`). > Lis d'abord `CLAUDE.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 1. Ajouter `openmeteo` à la liste `SUBDIRS` de `nymea-plugins.pro` (ordre alphabétique, comme les autres modules). 2. Vérifier que `openmeteo/openmeteo.pro` inclut bien `../plugins.pri` et `QT *= network`. ## Étape 2 — Compilation et correction des constantes générées 1. Compiler le module (QMake, dans l'arbre, Qt5 d'abord) : ``` qmake && make -j$(nproc) ``` 2. `plugininfo.h` est **généré** à partir de `integrationpluginopenmeteo.json` par l'outil nymea. Ne pas l'éditer. 3. Le `.cpp` référence des constantes (`openMeteoSite*StateTypeId`, `openMeteoPlugin*ParamTypeId`, `openMeteoPvPlane*`, `dcOpenMeteo`, etc.) déduites de la convention nymea. **Comparer ces noms au `plugininfo.h` réellement généré** et corriger toute divergence **dans le `.cpp`** (jamais dans le header généré). Lister les corrections faites. 4. Corriger les éventuels warnings de compilation (variables inutilisées, signedness, etc.). 5. 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`. 1. Tester l'URL réellement construite (avec une vraie lat/lon, p.ex. 48.9 / 7.85) avec `curl`. 2. Si `current=` n'est pas supporté : basculer sur `hourly=` et prendre le dernier échantillon **non nul** (garder le calcul `clearSkyIndex = ghiObs/clearSky`, garde `clearSky > 20`). 3. Documenter le comportement retenu en commentaire. ## Étape 4 — Test manuel (fonctionnel) Installer le plugin localement et, via `nymea-cli` ou l'app : 1. 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`). 2. Vérifier les states satellite : `ghiObserved`, `clearSkyGhi`, `clearSkyIndex`. 3. Ajouter un thing **openMeteoPvPlane** enfant du site (tilt 30, azimuth 180 = plein sud). Vérifier `gtiNow` cohérent (proche du GHI à midi pour un plan ~sud). 4. 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. 5. Contrôle **de nuit** : `daylight=false`, `ghi≈0`, `clearSkyIndex=0`, pas de division par zéro, pas de crash. 6. Déclencher l'action `refreshWeather` sur le site et vérifier que site + pans se mettent à jour immédiatement. ## Étape 5 — Packaging `.deb` 1. Utiliser les dossiers `debian-qt5` / `debian-qt6` existants du dépôt (le lien `debian -> debian-qt5` est en place). 2. Vérifier/compléter le `debian/control` et les fichiers d'install pour inclure le paquet `nymea-plugin-openmeteo` (binaire du plugin + `integrationpluginopenmeteo.json` + ressources). 3. Construire le paquet (p.ex. `dpkg-buildpackage -b -us -uc` ou la cible utilisée par le repo) et vérifier que le `.deb` contient bien la librairie du plugin et son métadonnée. 4. Indiquer le nom exact du `.deb` produit 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). - `.deb` `nymea-plugin-openmeteo` produit, nom et emplacement indiqués.