Skip to content

Commit 99eb832

Browse files
JohannJohann
authored andcommitted
feat: add scene activation on Suhoor alarm
1 parent 35fd27a commit 99eb832

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

custom_components/nida/__init__.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ def check_prayer_time(now):
169169
hass.async_create_task(check_suhoor(hass, entry, coordinator, now_ts))
170170
hass.async_create_task(check_reminders(hass, entry, coordinator, now_ts, prayers))
171171
hass.async_create_task(check_reset_skip_suhoor(hass, coordinator, now_ts))
172+
hass.async_create_task(update_nida_sensors(hass, entry, coordinator))
172173

173174
entry.async_on_unload(
174175
async_track_time_change(hass, check_prayer_time, second=0)
@@ -650,6 +651,38 @@ async def check_tarhim(hass: HomeAssistant, entry: ConfigEntry, coordinator, now
650651
_LOGGER.error("Tarhim error: %s", e)
651652

652653

654+
async def update_nida_sensors(hass: HomeAssistant, entry: ConfigEntry, coordinator) -> None:
655+
"""Bereken en zet sensor waarden die de card nodig heeft."""
656+
try:
657+
if not coordinator.data:
658+
return
659+
options = entry.options if entry.options else entry.data
660+
timings = coordinator.data["data"]["timings"]
661+
today = datetime.now().strftime("%Y-%m-%d")
662+
663+
# sensor.nida_suhoor_readable — alarm tijd X minuten voor Fajr
664+
if options.get("suhoor_alarm_enabled", True):
665+
fajr_ts = datetime.strptime(
666+
f"{today} {timings['Fajr']}", "%Y-%m-%d %H:%M"
667+
).timestamp()
668+
minutes = int(options.get("suhoor_alarm_minutes", 30))
669+
suhoor_ts = fajr_ts - (minutes * 60)
670+
# Als suhoor al voorbij is vandaag, toon morgen
671+
if suhoor_ts < datetime.now().timestamp():
672+
tomorrow = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d")
673+
fajr_ts = datetime.strptime(
674+
f"{tomorrow} {timings['Fajr']}", "%Y-%m-%d %H:%M"
675+
).timestamp()
676+
suhoor_ts = fajr_ts - (minutes * 60)
677+
hass.states.async_set(
678+
"sensor.nida_suhoor_readable",
679+
datetime.fromtimestamp(suhoor_ts).strftime("%H:%M"),
680+
{"friendly_name": "Nida Suhoor Alarm Time", "icon": "mdi:food"},
681+
)
682+
except Exception as e:
683+
_LOGGER.debug("update_nida_sensors error: %s", e)
684+
685+
653686
async def check_suhoor(hass: HomeAssistant, entry: ConfigEntry, coordinator, now_ts: float):
654687
"""
655688
Speel suhoor alarm X minuten voor Fajr tijdens Ramadan.
@@ -682,6 +715,14 @@ async def check_suhoor(hass: HomeAssistant, entry: ConfigEntry, coordinator, now
682715
minutes = int(options.get("suhoor_minutes", 30))
683716
suhoor_ts = fajr_ts - (minutes * 60)
684717

718+
# Sla suhoor alarm tijd op als sensor zodat de card hem kan tonen
719+
suhoor_readable = datetime.fromtimestamp(suhoor_ts).strftime("%H:%M")
720+
hass.states.async_set(
721+
"sensor.nida_suhoor_readable",
722+
suhoor_readable,
723+
{"friendly_name": "Nida Suhoor Alarm Time", "icon": "mdi:food"},
724+
)
725+
685726
_LOGGER.debug(
686727
"Suhoor timing: %d min voor Fajr (%s) → alarm om %s",
687728
minutes, timings["Fajr"],

0 commit comments

Comments
 (0)