Hallo Pierre-Gilles
Hallo zusammen,
Sehr gut, diese Möglichkeit, einen Offset direkt auf Sonnenauf- und -untergang zu setzen, aber ich habe einen kleinen Bug festgestellt, vermutlich seit den letzten Versionen. Bei mir werden die Morgenszenen mit Verzögerung „nach“ 5 Minuten oder ohne Offset nicht mehr ausgelöst.
Ich präzisiere, dass:
die Abend-Szenen mit einem Offset +15 Minuten funktionieren,
mein Standort korrekt eingestellt ist,
die Zeitzone ebenfalls korrekt ist,
Siehe meine Logs, die anzeigen, dass die Öffnungsberechnung in der Vergangenheit liegt.
Bin ich der Einzige, der dieses Problem hat?
Danke für eure Rückmeldungen
DamienLogs Sonnenaufgang
Hallo (und willkommen)
Ich habe deine Nachricht in ein neues Gespräch verschoben, um das Problem hier zu behandeln.
Ich kann deine Logs nicht abrufen. Ich schaue trotzdem, ob es einen Unterschied im Code zwischen morgens und abends gibt
Kannst du sie auf https://pastebin.com/ stellen und den Link hier posten?
Es gibt tatsächlich einen Bug. Ich teste heute (naja, morgen für den Sonnenaufgang ) einen Fix und halte dich auf dem Laufenden.
Hallo cicoub13,
Danke für deine Schnelligkeit … ich nehme tatsächlich den Zug in der Community .
Anbei der Link zu den Logs: https://pastebin.com/e35Q1hVb
Guten Tag
Alles klar, es funktioniert
@pierre-gilles Kannst du einen Blick auf den PR werfen, wenn du Zeit hast?
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**
* Improved daily sunrise/sunset scheduling so “today at 12:00” is computed correctly in the selected timezone, preventing missed events and incorrect day boundaries.
* **Tests**
* Added/updated coverage for past sunrise/sunset scenarios, including cases where no job is scheduled, and added a timezone regression test to verify the correct calendar day calculation.
Danke für das PR @cicoub13 !
Ich habe dir hier eine Review gemacht: fix(scene): Fix issue with next sunrise trigger by cicoub13 · Pull Request #2548 · GladysAssistant/Gladys · GitHub
Ich denke, das eigentliche Problem liegt woanders, wir haben einen Timezone-Bug im dailyUpdate, glaube ich.
Okay, danke, ich schaue mir das (am Montag) an.
Du hattest recht. Ich habe den PR korrigiert und der Test war heute Morgen erfolgreich.
Danke! Das ist gut für mich, es ist gemergt und wird in der nächsten Version von Gladys veröffentlicht
Ich habe Version 4.80 geladen und bestätige, dass die Szenen, die bei Sonnenauf- und -untergang ausgelöst werden, einwandfrei funktionieren.
Ich freue mich, dass ich bescheiden zur Fehlererkennung beitragen konnte und danke euch vor allem, dass ihr das Problem so schnell gelöst habt
Danke für dein Feedback, genau das bringt Gladys voran