# Ajouter un déclencheur de scènes selon l’altitude et l’azimut du soleil

**URL:** <https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881>\
**Category:** Demande de fonctionnalités\
**Tags:** feature-core, in-progress\
**Created:** [Janvier 24, 2023, 1:50 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881 "2023-01-24T13:50:37Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![cce66](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/8797f3/32.png) [@cce66](https://community.gladysassistant.com/u/cce66)\
**Post date:** [Janvier 24, 2023, 1:50 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/1 "2023-01-24T13:50:37Z")

</div>

**Feature description**

Dans une scène, je veux pouvoir avoir un déclencheur « Quand le soleil est à l’altitude 31°, Azimuth 160°»

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 25, 2023, 2:09 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/2 "2023-01-25T02:09:49Z")

</div>

Salut @cce66 !

Est-ce que tu peux détailler un peu plus fonctionnellement ce que tu veux ?

Une demande de fonctionnalité doit être claire et concise sur ce que tu demandes, plus sur que sur l’implémentation technique.

**Exemple:**

**Titre** : Ajouter un déclencheur de scènes selon l’altitude du soleil  
**Description:**

Dans une scène, je veux pouvoir avoir un déclencheur «&nbsp;Quand le soleil est à l’altitude XXX&nbsp;».

Merci 🙂

---

<div class="post-metadata">

**Author:** ![cce66](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/8797f3/32.png) [@cce66](https://community.gladysassistant.com/u/cce66)\
**Post date:** [Janvier 25, 2023, 10:20 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/3 "2023-01-25T10:20:41Z")

</div>

> [@pierre-gilles](#):
>
> Ajouter un déclencheur de scènes selon l’altitude du soleil

C’est exactement cela «&nbsp;Ajouter un déclencheur de scènes selon l’altitude ET l’azimut du soleil&nbsp;»  
Dans une scène le but serait de pouvoir déclencher l’ouverture ou la fermeture de volets roulants en fonction des températures intérieure/extérieure et éventuellement le top du top des températures à venir (données par OpenWeather).  
Par exemple, dans une chambre une fenêtre située au nord-ouest ne reçoit pas d’ensoleillement l’hiver alors que celle au sud-est en réçoit, comme c’est la même pièce, en journée je voudrais ouvrir le volet recevant du soleil dès que le soleil est aligné sur celui-ci et laisser le volet qui reçoit pas de soleil fermé et faire le contraire en été pour éviter la surchauffe des pièces. Je diminue ma consommation électrique si j’ai une clim(été) ou du chauffage(hiver) !

---

<div class="post-metadata">

**Author:** ![Pti\_Nico](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pti_nico/32/273_2.png) [@Pti\_Nico](https://community.gladysassistant.com/u/Pti_Nico)\
**Post date:** [Janvier 25, 2023, 12:09 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/4 "2023-01-25T12:09:21Z")

</div>

Possible en se basant sur cet lib: [GitHub - mourner/suncalc: A tiny JavaScript library for calculating sun/moon positions and phases.](https://github.com/mourner/suncalc)

Je l’avais fait pour Gladys v3 ([gladys-suncalc](https://gladys-suncalc)) 😉

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Janvier 25, 2023, 1:01 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/5 "2023-01-25T13:01:16Z")

</div>

Du coup j’ai édité ta demande @cce66 avec les informations que tu m’as donné 🙂 Laissons les gens voter maintenant !

---

<div class="post-metadata">

**Author:** ![cce66](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/8797f3/32.png) [@cce66](https://community.gladysassistant.com/u/cce66)\
**Post date:** [Janvier 25, 2023, 2:18 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/6 "2023-01-25T14:18:43Z")

</div>

de mon coté j’essaie de développer une intégration heliotrope mais pas facile, je voudrais y arriver car cela me permettra ensuite de développer une intégration pour l’IPX800V5 c’est vrai qu’il manques une bonne doc de synthèse complète un peu façon ListToDo , il y a des trucs que je piges pas encore dans la structure de fichiers mais cela finira par venir , la pour l’instant j’ai essayé de faire comme dans live de dev integration mon npm start sur le front plante je sais pas pourquoi …pour des dev confirmés dans cet environnement ça le fait mais pour ceux qui se lance ou veulent se lancer c’est ardu !!! 😥 Il faudrait créer un dossier Gladys-dev a part qui contiendrait seulement une copie de tous les dossiers/fichiers impactés par une nouvelle intégration que l’on puisse s’y référer car une fois qu’on a fait des modifs on sait plus trop ou on les a faites par ou commencer a vérifier si cela marches pas, là j’ai l’impression d’être devant une usine à gaz…russe à tenter de faire du retroengennering que suivre un vade-mecum ! 😥

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [Janvier 26, 2023, 3:51 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/7 "2023-01-26T15:51:23Z")

</div>

On utilise déjà la lib suncalc dans gladys [suncalc - npm](https://www.npmjs.com/package/suncalc)

> <https://github.com/GladysAssistant/Gladys/blob/master/server/lib/scene/scene.dailyUpdate.js#L33>

Je penses que ça doit être du core et pas une intégration spécifique.

---

<div class="post-metadata">

**Author:** ![cce66](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/8797f3/32.png) [@cce66](https://community.gladysassistant.com/u/cce66)\
**Post date:** [Janvier 26, 2023, 4:41 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/8 "2023-01-26T16:41:20Z")

</div>

Cool cela veut dire que cela doit pas être trop difficile à implémenter et cela rendrait grandement service je pense ! 😍

---

<div class="post-metadata">

**Author:** ![cce66](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/8797f3/32.png) [@cce66](https://community.gladysassistant.com/u/cce66)\
**Post date:** [Mai 5, 2023, 12:39 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/9 "2023-05-05T12:39:21Z")

</div>

> ### Sun position
> 
> SunCalc.getPosition(/_Date_/ timeAndDate, /_Number_/ latitude, /_Number_/ longitude)
> 
> Returns an object with the following properties:
> 
> - `altitude`: sun altitude above the horizon in radians, e.g. `0` at the horizon and `PI/2` at the zenith (straight over your head)
> - `azimuth`: sun azimuth in radians (direction along the horizon, measured from south to west), e.g. `0` is south and `Math.PI * 3/4` is northwest

Effectivement, il faut donc peu de chose pour implémenter cela ! 🥴

---

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Juin 9, 2025, 12:44 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/10 "2025-06-09T12:44:41Z")

</div>

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](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/3/2/3231d5e2ed88eb4198cef5af56edd9e7214d1b2c.png)  
Merci d’avance 🙂

EDIT : je reprends quelques infos issues de la doc de Lunarok pour son [module héliotrope](https://lunarok.github.io/jeedom_docs/plugins/heliotrope/) pour Jeedom (que j’utilisais avant Gladys):

```auto
Définitions :

    Azimut : angle absolu par rapport au nord (le nord étant à 0° et les valeurs augmentant en tournant dans le sens des aiguilles d’une montre, lorsqu’on regarde le sol depuis le ciel)
    Altitude : angle sous lequel on voit le soleil, par rapport à l’horizon qui est la référence.

Il y a deux notations possibles pour l’azimut : azimut (de 0 à 180 puis de -180 à -0) ou azimut360 (de 0 à 360). Vous utiliserez celui qui vous convient le plus.

Exemples : Le soleil se couche à l’ouest, soit 270°. Le soleil à la verticale parfaite aura une altitude de 90°, un soleil qui a disparu sous l’horizon aura une altitude négative.

```

---

<div class="post-metadata">

**Author:** ![cursor-bot](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cursor-bot/32/22252_2.png) [@cursor-bot](https://community.gladysassistant.com/u/cursor-bot)\
**Post date:** [Août 17, 2026, 11:49 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/11 "2026-08-17T11:49:53Z")

</div>

Salut tout le monde !

Ce sujet est désormais **en cours de développement**.

Une PR a été ouverte pour ajouter un déclencheur de scènes selon l’altitude et l’azimut du soleil :

> <https://github.com/GladysAssistant/Gladys/pull/2893>
>
> Implements feature request: https://community.gladysassistant.com/t/ajouter-un-d…eclencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881
> 
> \> ⚠️ This PR was opened by an automated Claude Code run. It needs human review and real-life testing before being merged.
> 
> \### Description
> 
> Adds a new scene trigger \*\*"Sun position"\*\*, so a scene can start when the sun reaches a given elevation above the horizon and/or a given compass direction. The use case from the forum: open/close the shutters of a specific facade when the sun actually hits it.
> 
> \*\*Server\*\*
> 
> \- Two new events in \`server/utils/constants.js\`:
> - \`time.check-sun-position\` (internal, scheduled every minute in \`scene.init\`, like the calendar check),
> - \`time.sun-position\` (the new trigger type).
> \- New \`server/lib/scene/scene.checkSunPositionTriggers.js\`:
> - runs every minute, but returns immediately when no active scene uses the trigger (so \`house.get()\` is not called for nothing),
> - computes the position with the \`suncalc\` dependency already used by \`scene.dailyUpdate.js\`, for every house with coordinates,
> - \`suncalc.getPosition()\` returns radians with an \*\*azimuth measured from South\*\*; it is converted to degrees using the usual compass convention (\*\*0 = North, 90 = East, 180 = South, 270 = West\*\*), which is what the UI documents and what the user enters. This is explained in the JSDoc of \`convertSunPositionToDegrees\`,
> - keeps the last known position per house (\`sceneManager.sunPositions\`) and emits \`trigger.check\` with the current \*and\* previous position. The very first check of a house only stores the position.
> \- New matcher in \`server/lib/scene/scene.triggers.js\`: the trigger has an optional condition on the altitude and an optional one on the azimuth (operators \`\>\`, \`\<\`, \`=\`; \`=\` matches within 0.5°, since the position is sampled every minute and never lands on an exact degree). Both conditions are combined with an AND, and the scene is started when the sun \*\*enters\*\* the configured area — it is not re-executed at every check while the sun stays in it.
> \- Joi validation of the new trigger properties (\`sun\_altitude\_operator\`, \`sun\_altitude\` in -90..90, \`sun\_azimuth\_operator\`, \`sun\_azimuth\` in 0..360) in \`server/models/scene.js\`.
> 
> \*\*Front\*\*
> 
> \- New \`SunPositionTrigger.jsx\` (house selector with the existing "house without coordinates" warning, one operator + degrees input per axis, with help texts explaining both conventions), wired in \`TriggerCard.jsx\` and in the trigger type list of \`ChooseTriggerTypeCard.jsx\`.
> \- Translations added in \`en\`, \`fr\` and \`de\`.
> 
> \*\*Notes for the reviewer\*\*
> 
> \- The altitude is negative at night: an azimuth-only trigger will also match at night, hence the help text suggesting to combine it with an altitude condition.
> \- The check runs on the same one-minute tick as the calendar check; a scene therefore fires at most one minute after the sun reaches the configured position.
> 
> \## Forum
> 
> Forum: https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881
> 
> \### Checklist
> 
> \- \[x\] Tests pass: new tests added in \`server/test/lib/scene/scene.checkSunPositionTriggers.test.js\` (17 assertions on the conversion, the early return, the first-check behaviour and the emitted payload) and \`server/test/lib/scene/triggers/scene.trigger.sunPosition.test.js\` (matching, non-matching house, \`=\` tolerance, no re-trigger while the sun stays in the area, missing/invalid values, Joi validation). \`test/lib/scene/\*\*\` + \`test/models/\*\*\` run green (331 passing). The full server suite was also run: the only failures are pre-existing environment ones (gateway backup/restore needing the \`sqlite3\` binary, docker and network tests), none in scene. \`npm run coverage\` and Cypress were \*\*not\*\* run in this environment.
> \- \[x\] Linter and prettier pass on both front and server (\`npm run eslint\` → 0 errors, \`prettier --check\` clean on the touched files, \`npm run compare-translations\` clean, \`npm run build\` on the front succeeds).
> \- \[x\] No undocumented breaking change
> 
> 
> \---
> \_Generated by \[Claude Code\](https://claude.ai/code/session\_013yxguVaLdJ8ZKmw5x3HePT)\_

N’hésitez pas à suivre la PR, à tester dès que possible et à faire vos retours ici.

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Août 17, 2026, 12:23 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/12 "2026-08-17T12:23:01Z")

</div>

> C’est la première fois que cursor-bot publie un message. Assurons-lui un accueil chaleureux dans notre communauté !

Et c’est parti ! Ça va être un festival de PR 😉

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 9, 2026, 9:08 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/13 "2026-10-09T09:08:21Z")

</div>

Les intégrations externes peuvent désormais créer leurs propres déclencheurs de scènes : ce déclencheur a donc toute sa place dans une intégration externe, si quelqu’un veut s’en charger ! 🙂

Je ferme la PR que j’avais ouverte dans le core, qui n’a plus lieu d’être.

---

<div class="post-metadata">

**Author:** ![XDECO](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/xdeco/32/22996_2.png) [@XDECO](https://community.gladysassistant.com/u/XDECO)\
**Post date:** [Octobre 9, 2026, 9:57 UTC](https://community.gladysassistant.com/t/ajouter-un-declencheur-de-scenes-selon-l-altitude-et-l-azimut-du-soleil/7881/14 "2026-10-09T21:57:40Z")

</div>

Bonjour

C’est dommage de devoir intégrer une intégration externe pour compléter les 2 déclencheurs de scènes manquant (Azimut et elevation) sur ce que tu as déjà développé.

Pour ma part je pense plus intuitif et plus ergonomique de le garder dans le core, cela permet de compléter une panoplie déjà riche de gestion de scène d’ouverture ou de fermeture de volets de façon simple comme c’est le cas pour beaucoup de fonctionnalité dans Gladys.

Encore merci pour la qualité des développements et le design soigné des tableaux de bord proposé dans Gladys.

Félicitation au futur papa 🙂
