Intégration externe - Vigieau

Le bug est corrigé :slight_smile:
J’ai trouvé un autre bug en même temps, en gros quand on update l’adresse, cela créer un nouvel appareil au lieu d’update celui existant
Claude est sur le sujet :slight_smile:
Je ferrai une release quand ces 2 bugs seront corrigés

La version 1.2.0 est publiée et corrige les 2 bugs
Elle devrait être dispo d’ici 1h
Si vous êtes impatient vous pouvez cliquer sur « Forcer la mise à jour » :

Tenez-moi au courant quand vous avez pu mettre à jour :slight_smile:

Pas possible de récupérer le « lieu » de la Maison de Gladys ?
Bon si on en a 2, comment ça fonctionnerait ? → on choisit le lieu via un selector :slight_smile:

de mon côté aussi, j’ai 2 lieux à surveiller ?

C’est justement l’idée que j’ai eu il y a quelques minutes :slight_smile:
Je vais demander à Claude d’ajouter un bouton pour pouvoir récuperer le lieu directement dans Gladys et injecter les coordonnées

Et ensuite de pouvoir créer plusieurs lieux avec effectivement un selector dans la configuration :slight_smile:

Edit : Lorsque cette intégration sera bien terminée je pourrai faire la même chose pour le pollen, la qualité de l’air et l’indice UV qui fera pour chacun une intégration spécifique

Pour la partie récupération des coordonnées directement dans Gladys voici ce que l’IA à répondu :

1 & 2. Récupérer le lieu de la maison Gladys — impossible, et ce n'est pas contournable

J'ai cloné le cœur de Gladys pour vérifier plutôt que supposer. La maison a bien des coordonnées (server/models/house.js : latitude/longitude), mais rien ne les expose à un conteneur d'intégration :

    L'API hôte des intégrations (/api/integration/v1/*) compte exactement 21 routes (server/api/routes.js) — aucune ne concerne la maison. getConfig() ne renvoie que la config de l'intégration elle-même.
    GET /api/v1/house est authenticated: true, donc un JWT utilisateur : session.validateAccessToken exige audience: 'user', alors qu'un token d'intégration porte audience: 'integration'. Le middleware le dit explicitement — les deux publics ne se croisent jamais.
    Voie détournée par getDevices() : la réponse inclut bien room, mais getStandardDeviceIncludes() n'imbrique pas la maison — la pièce ne porte qu'un house_id, sans coordonnées.

Le bouton demandé nécessiterait donc une PR sur le cœur (une route GET /api/integration/v1/house + une méthode SDK). Je n'ai rien implémenté de ce côté, et j'ai consigné le constat dans CLAUDE.md pour que ce ne soit pas ré-instruit.

Je ne sais pas si @pierre-gilles peut effectuer la modification directement dans le coeur :slight_smile:

Pour la partie création de plusieurs lieux je test dans la soirée et je pousserai surement une 2.0.0 si les tests sont concluants.

J’ai eu un bug sur la version 2.0.0-test que j’ai corrigé en 2.0.1-test

Par contre je n’ai plus de liste déroulante pour le choix des lieux que j’avais en 2.0.1-test
Je n’ai aussi plus de token et le prochain reset est à 00h00 donc je continuerai plus tard :slight_smile:

Je vais repartir de la 1.2.0 pour la v2 avec la gestion des multi lieux :slight_smile:
J’ai eu quelques petits problèmes lorsque j’ai fais travailler claude sur la 1er version de la v2 :frowning:
Je vous tiens au courant quand sa sortira :wink:

La V2 est dispo avec la gestion de plusieurs lieux :rocket:
Je n’ai pas pu faire afficher chaque donc j’ai fais au mieux comme sur la copie d’écran :

Voici la raison donné par claude :

Pourquoi un lieu par ligne est impossible

Le retour à la ligne est envoyé — un vrai \n — et on le voit dans les logs du conteneur. C’est l’écran de configuration de Gladys qui le mange, pour trois raisons cumulées :

  1. ActionsCard.jsx rend la réponse comme <div class="alert alert-success">{getLocalizedText(...)}</div> : un enfant texte de React. Tout balisage est échappé, donc ni <br> ni <pre> ne sont possibles.
  2. En HTML, un \n dans du texte est un espace, sauf si le CSS dit white-space: pre-wrap. Ni le CSS de Gladys ni le .alert de Tabler ne le posent (le seul pre-wrap de tout le front des intégrations externes est sur la page LOGS).
  3. Les séparateurs Unicode U+2028 / U+2029, que la spec CSS présente comme des sauts forcés, ont été mesurés dans Chromium : ils sont collapsés aussi.

Vérifié au tag v4.84.4 et sur master. Il n’y a donc rien d’autre à envoyer : le correctif est une règle CSS d’une ligne dans le cœur de Gladys, pas quelque chose que cette intégration puisse livrer. D’où le « • » qui ouvre chaque entrée : c’est lui qui garde la liste lisible une fois tout écrasé sur une ligne — un numéro nu se perd entre un code postal et deux coordonnées, un « • » ne peut pas apparaître dans une adresse.

J’ai créé 2 demandes de fonctionnalités pour améliorer l’intégration :slight_smile: :

Question bète mais pk tu ne recupère pas l’emplacement de la maison que Gladys connais déjà ?
Si je ne m’abuse on lui renseigner son emplacement et donc Gladys doit déjà avoir la lat et long de la maison non ?

Ah j’ai vue que ça a été dis après ma faute de pas tout lire ^^’