@@ -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+
653686async 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