Bonjour Pierre-Gilles
Bonjour à tous,
Très bien cette possibilité de mettre un offset directement sur le levé/couché du soleil, mais j’ai constaté un ptit beug sans doute depuis les dernières versions. Pour ma part les scènes d’ouverture le matin avec délai « après » 5minutes ou sans offset ne se déclenchent plus.
Je précise que:
les scènes du soir avec un offset +15 minutes fonctionnent,
ma localisation est bien paramétrée,
le fuseau horaire est également correct,
Voir mes logs qui indiquent que le calcul d’ouverture se fait dans le passé.
Est-ce que je suis le seul à avoir ce problème?
Merci pour vos retours
DamienLogs levé de soleil
Bonjour (et bienvenue)
J’ai déplacé ton message dans une nouvelle conversation pour traiter le problème ici.
Je ne peux pas récupérer tes logs. Je regarde quand même s’il y a une différence dans le code entre le matin et le soir
Est-ce que tu peux les mettre sur https://pastebin.com/ ? et mettre le lien ici ?
Il y a effectivement un bug. Je teste une correction aujourd’hui (enfin demain pour le lever du soleil ) et je te tiens au courant.
Bonjour cicoub13,
Merci pour ta réactivité … je prends effectivement le train en route dans la communauté .
Ci-joint le lien vers les logs: Gladys sunrise scene not scheduled - Pastebin.com
Bonne journée
C’est bon, ça marche
@pierre-gilles Tu peux jeter un coup d’oeil à la PR quand tu as le temps ?
master ← cicoub13:fix-sunrise-trigger
ouvert 08:52PM - 10 Jun 26 UTC
**Problem**
Since #2474 (configurable offset before/after sunrise/sunset), mo… rning scenes triggered on sunrise (with no offset or a small "after" offset) stopped firing, while evening sunset scenes (e.g. +15 min) kept working — even though location and timezone were correctly configured.
**Root cause**: that PR changed two things in how sun jobs are scheduled.
1. `dailyUpdate()` is now replayed on every scene save. create/update/addScene/destroy now call await this.dailyUpdate(), and it also runs on every server restart via init. Previously, sun jobs were only (re)computed by the midnight cron.
2. `dailyUpdate()` cancels all sun jobs and only reschedules the ones still in the future. node-schedule returns null for a past date, so the job is dropped (time is in the past, not scheduling for today).
As a result, whenever dailyUpdate() runs after sunrise — which happens when a user saves/configures a scene during the day, or when the server restarts in the afternoon — the sunrise jobs (~6am, already passed) are dropped while sunset jobs (~9pm, still ahead) are kept. Hence: morning triggers silently disappear, evening triggers keep working.
**Solution**
In `scene.dailyUpdate.js`, when today's occurrence has already passed, schedule the next day's occurrence instead of dropping it. A pending sun job therefore always exists regardless of when `dailyUpdate()` is replayed; the midnight cron then realigns it to the exact time of the day.
```
let occurrence = baseTime.add(offset, 'minute');
// If today's occurrence already passed, schedule the next day's occurrence so the
// trigger isn't silently dropped until the next midnight reschedule.
if (occurrence.toDate().getTime() < Date.now()) {
occurrence = occurrence.add(1, 'day');
}
const time = occurrence.toDate();
```
**Tests**
- Added should schedule sunrise/sunset for the next day when today's occurrence is already in the past, verifying past occurrences are rolled over (2 jobs created, both scheduled in the future) instead of being lost.
- Clarified the existing "scheduler returns null" test.
- All scene dailyUpdate and sunriseSunset trigger tests pass; eslint clean.
## Summary by CodeRabbit
* **Bug Fixes**
* Daily sunrise/sunset scheduling now shifts past occurrences to the next day so events aren't missed.
* Scheduled event timestamps are logged with improved timezone-aware formatting.
* **Tests**
* Updated tests to cover scheduling behavior for past events and handling when scheduling yields no job.
Merci pour la PR @cicoub13 !
Je t’ai fais une review ici : fix(scene): Fix issue with next sunrise trigger by cicoub13 · Pull Request #2548 · GladysAssistant/Gladys · GitHub
Je pense que le problème racine est autre part, on a un bug de timezone dans le dailyUpdate je pense
Ok merci je vais regarder (lundi)
Tu avais raison. J’ai corrigé la PR et le test est concluant ce matin
Merci ! C’est bon pour moi, c’est mergé et ça partira dans la prochaine version de Gladys
J’ai chargé la version 4.80 et confirme le bon fonctionnement des scènes déclenchées au levé/couché du soleil.
Heureux d’avoir pu contribuer modestement à la détection du problème et merci à vous surtout de l’avoir résolu rapidement
Merci à toi pour ton retour, c’est ça qui fait progresser Gladys