Je propose également ce petit widget pour avoir visuellement la position du soleil chez soi.
Créé à partir de la lib suncalc déjà présente dans Gladys et qui fait les calculs à partir des coordonnées de la maison paramétrées
la PR
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, vivement que ce soit intégré officiellement (ainsi que météo france) !
mutmut
Juillet 5, 2026, 2:19
3
Je plussoie !
@Will_71 est-ce qu’il y aura une implémentation dans les déclencheurs ou alors un check de la position du soleil en temps réel ?
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…
Non, c’est juste un widget, je ne touche pas au scène.
Par contre, il y a une PR ouverte pour cela. En faite c’est quand j’ai vu la PR ouverte que cela m’a donné l’idée de faire ce widget.
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
Juillet 5, 2026, 2:54
5
De ce que je vois, @pierre-gilles est sur le coup
guim31
Juillet 5, 2026, 4:56
6
Génial ! Pour ma part j’utilise Node-red pour avoir l’élévation et l’azimut, voilà qui est une intégration visuelle bien plus sympa !
Génial, merci @Will_71 pour la PR ! Oui je suis sur le coup pour le déclencheur
@pierre-gilles pour info, j’ai corrigé les différents points relevés dans la PR.
Merci @Will_71 , j’ai testé et c’est vraiment top
Accepté et mergé, ça partira dans la prochaine version de Gladys ! Merci !
Je ferme ce post car la fonctionnalité est disponible dans Gladys Assistant 4.86 :
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 !!