Source code for caspia.pan.reactive.sun

from caspia import reactive

from .time import time

_sun = None


[docs]def register_sun(sun_service): global _sun _sun = sun_service
[docs]def get_sun(): if _sun is None: raise RuntimeError('Sun service not set. Use register_sun().') return _sun
[docs]def sunrise(): return reactive.lambda_(lambda dt: (dt.hour, dt.minute), get_sun().sunrise)
[docs]def sunset(): return reactive.lambda_(lambda dt: (dt.hour, dt.minute), get_sun().sunset)
[docs]def at_sunrise(): return reactive.impuls(time == sunrise())
[docs]def at_sunset(): return reactive.impuls(time == sunset())