Ich schlage auch dieses kleine Widget vor, um die Position der Sonne zu Hause visuell darzustellen.
Erstellt mit der bereits in Gladys vorhandenen Bibliothek suncalc, die die Berechnungen anhand der Koordinaten des Hauses durchführt, die parametrisiert sind
der Pull Request
master ← William-De71:feature/sun-horizon-widget
ouvert 01:32PM - 05 Jul 26 UTC
### Pull Request check-list
To ensure your Pull Request can be accepted as fa… st as possible, make sure to review and check all of these items:
- [x] If your changes affect the code, did you write the tests?
- [x] Are server tests passing with coverage? (`cd server && npm run coverage`) — Codecov requires **100% coverage on lines changed in this PR**
- [x] Did Cypress E2E tests pass? (`npm run cypress:run` from repo root, if UI changed)
- [x] Is the linter passing? (`npm run eslint` on both front/server)
- [x] Did you run prettier? (`npm run prettier` on both front/server)
- [x] If you are adding a new feature/service, did you run the integration comparator? (`npm run compare-translations` on front)
- [x] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to the community ([forum](https://community.gladysassistant.com/)) for testing before merging.
- [ ] If your changes modify the API (REST or Node.js), did you modify the API documentation? (Documentation is based on comments in code)
- [ ] If you are adding a new features/services which needs explanation, did you modify the user documentation? See [the GitHub repo](https://github.com/GladysAssistant/v4-website) and the [website](https://gladysassistant.com).
- [ ] Did you add fake requests data for the demo mode (`front/src/config/demo.js`) so that the demo website is working without a backend? (if needed) See [https://demo.gladysassistant.com](https://demo.gladysassistant.com).
NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
### Description of change
# Add sun horizon widget to the dashboard
New standalone dashboard widget showing the sun's journey for a house, an SVG elevation curve with the sun's current position, dawn, solar noon, dusk, azimuth and elevation.
Everything is computed locally with `suncalc` (already a server dependency) from the house coordinates — no weather service or external API needed.
- New route `GET /api/v1/house/:house_selector/sun` (400 if the house has no coordinates)
- New `sun` dashboard box with house selection, refreshed every minute, identical rendering in light and dark mode
<img width="373" height="293" alt="image" src="https://github.com/user-attachments/assets/34deb782-7fd5-48dd-a472-0c8870ab7e17" />
<img width="373" height="293" alt="image" src="https://github.com/user-attachments/assets/cf1daa68-0e9b-4f6e-8499-0225fe7ebbb1" />
## Summary by CodeRabbit
* **New Features**
* Added a Sun dashboard widget showing sunrise, sunset, dawn, solar noon, dusk, and current solar position.
* Select a house and refresh sun data automatically every 60 seconds.
* Added Sun box support for dashboard viewing and editing.
* **Bug Fixes**
* Improved handling of missing coordinates, loading failures, and polar day/night conditions.
* **Documentation**
* Added English, French, and German translations for Sun labels and messages.
* **Tests**
* Added coverage for sun calculations and the related API endpoint.
super, ich freue mich darauf, dass es offiziell integriert wird (und auch Meteo France)!
mutmut
5. Juli 2026 um 14:19
3
Ich stimme zu!
@Will_71 Wird es eine Implementierung in den Triggern geben oder eine Echtzeitprüfung der Sonnenposition?
Hello,
je déterre un peu ce sujet car j’aurais besoin de récupérer (sans API externe de préférence) l’altitude et l’azimuth du soleil afin de gérer au mieux (ouverture/fermeture partielles) mes volets roulants dans les scènes.
Est-ce que ce serait possible de les rajouter dans le core de Gladys sachant qu’on utilise la fonction suncalc (de ce que j’ai lu sur le forum) ?
[image]
Merci d’avance
EDIT : je reprends quelques infos issues de la doc de Lunarok pour son module héli…
Nein, das ist nur ein Widget, ich greife nicht in die Szene ein.
Aber es gibt einen offenen Pull Request dafür. Eigentlich war es, als ich den offenen Pull Request gesehen habe, dass mir die Idee kam, dieses Widget zu erstellen.
master ← cursor/sun-position-scene-trigger-7a98
ouvert 04:56PM - 03 Jul 26 UTC
### Description
Implémente la [demande de la communauté](https://community.glad… ysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881) : permettre de déclencher une scène quand le soleil atteint une altitude et un azimut précis (ex. altitude 31°, azimuth 160°).
Cas d'usage typique : ouvrir/fermer des volets en fonction de l'orientation des fenêtres par rapport au soleil, pour optimiser le confort thermique été/hiver.
### Changements
**Serveur**
- Nouveau type de déclencheur `time.sun-position` dans les constantes
- Module `server/lib/sun/sunPosition.js` utilisant `suncalc` (déjà présent dans le core) pour :
- convertir altitude/azimut en degrés (azimut 0-360° depuis le nord, sens horaire)
- rechercher les moments de la journée où le soleil atteint la position cible
- Planification quotidienne dans `scene.dailyUpdate.js` (même mécanisme que lever/coucher du soleil)
- Matching des déclencheurs dans `scene.triggers.js`
- Schéma MCP mis à jour
**Front**
- Nouveau composant `SunPositionTrigger.jsx` : sélection de la maison + champs altitude (-90° à 90°) et azimut (0° à 360°)
- Traductions en/fr/de
**Tests**
- Tests unitaires du module `sunPosition`
- Tests d'intégration pour le scheduling et le déclenchement de scène
### Check-list
- [x] Tests écrits et passants (`npm test -- --grep "sunPosition"`)
- [x] Traductions synchronisées (`npm run compare-translations`)
- [ ] Testé en conditions réelles avec une maison ayant des coordonnées GPS
### Notes techniques
- L'azimut est mesuré dans le sens horaire depuis le nord (0° = nord, 90° = est, 180° = sud, 270° = ouest), comme documenté dans le fil de la communauté.
- La tolérance de matching est de ±0,5° en altitude et ±1° en azimut, avec une recherche minute par minute.
- Si la combinaison altitude/azimut n'est pas atteinte un jour donné (selon la saison et la latitude), aucun job n'est planifié ce jour-là.
<div><a href="https://cursor.com/agents/bc-019f28e4-93a7-730c-b840-2617809e7a98"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-019f28e4-93a7-730c-b840-2617809e7a98"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div>
mutmut
5. Juli 2026 um 14:54
5
Soweit ich sehe, kümmert sich @pierre-gilles darum
guim31
5. Juli 2026 um 16:56
6
Genial! Ich persönlich verwende Node-red, um die Höhe und den Azimut zu erhalten. Das ist eine viel schönere visuelle Integration!
Genial, danke @Will_71 für den PR! Ja, ich kümmere mich um den Trigger
@pierre-gilles zur Info, ich habe die verschiedenen Punkte, die im PR erwähnt wurden, korrigiert.
Danke @Will_71 , ich habe es getestet und es ist wirklich super
Akzeptiert und gemerged, es wird in der nächsten Version von Gladys enthalten sein! Danke!
Ich schließe diesen Beitrag, da die Funktion in Gladys Assistant 4.86 verfügbar ist:
Salut à tous !
Super heureux de sortir Gladys Assistant 4.86.
C’est simple, c’est la plus grosse version depuis le début du projet, avec 68 PR fusionnées en une semaine
C’est juste incroyable, et ça montre le nouveau rythme qu’on peut tenir avec l’IA.
L’objectif est maintenant clair : rattraper et dépasser Home Assistant
Je vous parle de ces 68 nouveautés ici :
Merci à tous les contributeurs !!