Externe Integration: API im SDK freigeben, um die im Instanzen definierten Häuser abzurufen

Hallo,

Bei der Entwicklung der Vigieau-Integration wäre es interessant gewesen, die Koordinaten des Hauses zu erhalten, das wir in Gladys konfiguriert haben.

Hier ist die Rückmeldung von Claude zum Thema:

1 & 2. Hausstandort von Gladys abrufen — unmöglich, und es gibt keine Umgehung

Ich habe den Kern von Gladys geklont, um zu überprüfen, anstatt zu vermuten. Das Haus hat tatsächlich Koordinaten (server/models/house.js: latitude/longitude), aber nichts davon wird einem Integrationscontainer ausgesetzt:

    Die Host-API der Integrationen (/api/integration/v1/*) hat genau 21 Routen (server/api/routes.js) — keine davon betrifft das Haus. getConfig() gibt nur die Konfiguration der Integration selbst zurück.
    GET /api/v1/house ist authenticated: true, also ein JWT-Benutzer: session.validateAccessToken erfordert audience: 'user', während ein Integrations-Token audience: 'integration' trägt. Das Middleware sagt dies explizit — die beiden Öffentlichkeiten kreuzen sich nie.
    Umgehung über getDevices(): Die Antwort enthält room, aber getStandardDeviceIncludes() verschachtelt nicht das Haus — der Raum trägt nur eine house_id, ohne Koordinaten.

Der angeforderte Button würde also einen PR im Kern benötigen (eine GET-Route /api/integration/v1/house + eine SDK-Methode). Ich habe nichts auf dieser Seite implementiert, und ich habe die Feststellung in CLAUDE.md festgehalten, damit dies nicht erneut gelehrt wird.

Wäre es möglich, die Adresse dank dieser zukünftigen Entwicklung zu erhalten?

Ja, das könnte klappen :slight_smile:
Das sollte man mal testen, wenn es veröffentlicht wird :wink:

Das interessiert mich auch! Zum Beispiel, um eine Wetterintegration zu erstellen, die sich direkt auf den Standort des Standard-Hauses bezieht :slight_smile:

Ich plane eine Wetterintegration für uns Schweizer!

Kann man nicht mit der Entwicklung von @Will_71 koordinieren und seinen „Wetterdienst“ auswählen?
Ich weiß, dass es darum ging, Openweathermap und MétéoFrance in der internen Integration zusammenzuführen und den gewünschten auszuwählen.
Jetzt mit der externen Integration weiß ich nicht, wie es damit steht, zu viele Themen, denen man folgen und die man im Gedächtnis behalten muss :roll_eyes:

@pierre-gilles hat das SDK geändert, damit wir externe Wetterintegrationen entwickeln können.
Das Widget, das ich entwickelt habe, wird im Core sein und wir können die Quelle auswählen, die entweder OpenWeather, Météo France, Météo Suisse… verwendet.
Von meiner Seite ist die externe Integration von Météo-France bereit zum Testen. Ich warte nur darauf, dass der PR des SDK und des Gladys-Core, mit dem Wetterteil, fertig ist.

Hallo @prohand!

Gute Nachricht, wir sind uns einig, dass es ein echtes Bedürfnis gibt :slightly_smiling_face: Und nicht nur für Vigieau übrigens: Wetter, Luftqualität, Pollen… Alle Integrationen, die mit der Standortbestimmung zusammenhängen, haben heute dieses Problem.

Deine Analyse ist korrekt: Die Koordinaten sind in der Datenbank vorhanden, aber die API der Integrationen stellt sie nicht zur Verfügung. Wir werden also eine Route GET /api/integration/v1/house hinzufügen, die die Liste der Häuser mit ihrem Namen und ihren Koordinaten (und nur das, keine Alarmdaten natürlich) zurückgibt, zusammen mit der entsprechenden SDK-Methode.

Ein kleines Detail, das wichtig ist: Die Koordinaten des Hauses sind sensible Daten (es ist die Adresse des Wohnsitzes!). Daher muss die Integration in ihrem Manifest angeben, dass sie die Standortbestimmung benötigt, und dies wird im Store vor der Installation sichtbar sein. Wenn die Integration dies nicht angegeben hat, gibt die API einen 403-Fehler zurück. Gleiche Logik wie bei der Netzwerkentdeckung, die wir bereits verwenden.

Für deinen Code: Die Koordinaten können null sein (wenn der Benutzer sie nicht konfiguriert hat), und es kann mehrere Häuser geben. Denke daran, diese beiden Fälle zu behandeln :wink:

Ich halte euch auf dem Laufenden, wenn es verfügbar ist!

Perfekt, danke :slight_smile:

Verfügbar in Gladys Assistant 4.85: