Integración de externos: Exponer una API en el SDK para recuperar las casas definidas en la instancia

Hola,

Durante el desarrollo de la integración de vigieau habría sido interesante recuperar las coordenadas de la casa que configuramos en Gladys.

Aquí está el feedback de claude sobre el tema:

1 y 2. Recuperar el lugar de la casa Gladys — imposible, y no hay forma de evitarlo

Cloné el núcleo de Gladys para verificar en lugar de suponer. La casa tiene coordenadas (server/models/house.js: latitude/longitude), pero nada las expone a un contenedor de integración:

    La API host de las integraciones (/api/integration/v1/*) tiene exactamente 21 rutas (server/api/routes.js) — ninguna se refiere a la casa. getConfig() solo devuelve la configuración de la integración en sí.
    GET /api/v1/house está authenticated: true, por lo que un JWT de usuario: session.validateAccessToken exige audience: 'user', mientras que un token de integración lleva audience: 'integration'. El middleware lo dice explícitamente — los dos públicos nunca se cruzan.
    Ruta alternativa a través de getDevices(): la respuesta incluye room, pero getStandardDeviceIncludes() no anida la casa — la habitación solo tiene un house_id, sin coordenadas.

El botón solicitado requeriría un PR en el núcleo (una ruta GET /api/integration/v1/house + un método SDK). No he implementado nada de este lado, y he registrado el hallazgo en CLAUDE.md para que no se vuelva a enseñar.

¿Sería posible recuperar la dirección gracias a este futuro desarrollo?

Sí, hay posibilidades :slight_smile:
Habrá que probarlo cuando se publique :wink:

¡También me interesa! Por ejemplo, para poder crear una integración meteorológica que se base directamente en la ubicación de la casa por defecto :slight_smile:

¡Planeo una integración meteorológica para nosotros, los suizos!

¿No sería posible coordinar con el desarrollador de @Will_71 y elegir su « operador » meteorológico?
Sé que se hablaba de eso para fusionar Openweathermap y MétéoFrance en la integración interna y elegir el que se deseara.
Ahora con la integración externa, no sé en qué queda eso, hay demasiados temas que seguir y recordar :roll_eyes:

@pierre-gilles ha modificado el SDK para que podamos desarrollar integraciones meteorológicas externas.
El widget que he desarrollado estará en el núcleo y podremos elegir la fuente que tomará ya sea OpenWeather, Météo France, Météo Suisse…
Por mi parte, la integración externa de Météo-France está lista para ser probada. Solo espero a que la PR del SDK y el núcleo de Gladys, con la parte meteorológica, esté lista.

¡Hola @prohand!

¡Buenas noticias, estamos de acuerdo en que es una verdadera necesidad :slightly_smiling_face: Y no solo para vigieau, por cierto: meteorología, calidad del aire, polen… todas las integraciones relacionadas con la ubicación tienen este problema hoy.

Tu análisis es correcto: las coordenadas están en la base de datos, pero nada las expone en la API de las integraciones. Por lo tanto, vamos a agregar una ruta GET /api/integration/v1/house que devolverá la lista de casas con su nombre y sus coordenadas (y solo eso, no la información de la alarma, obviamente), con el método SDK correspondiente.

Un pequeño detalle que tiene su importancia: las coordenadas de la casa son datos sensibles (¡es la dirección del domicilio!). Por lo tanto, la integración deberá declarar en su manifiesto que necesita la ubicación, y esto será visible en la tienda antes de la instalación. Si la integración no lo ha declarado, la API devolverá un 403. La misma lógica que la que ya usamos para la detección de red.

Para tu código: las coordenadas pueden ser nulas (si el usuario no las ha configurado), y puede haber varias casas. Asegúrate de manejar estos dos casos :wink:

¡Les mantendré informados cuando esté disponible!

Perfecto, gracias :slight_smile:

Disponible en Gladys Assistant 4.85: