How zubir2k/homeassistant-esolatgps works
eSolat GPS is a Home Assistant integration that turns Home and Person GPS locations into prayer-time sensors, with offline JAKIM zone resolution in Malaysia and Aladhan times elsewhere. Its coordinator refreshes location data; sensor entities expose prayer schedules and diagnostics, while a bundled dashboard card presents live prayer information. The README documents these capabilities, but several implementation details are unsampled, so those relationships are shown only where source excerpts or documentation support them.
Main entry points: coordinator.py Location update coordinator · config_flow.py Config and options flow · __init__.py Integration lifecycle · sensor.py Prayer and diagnostic sensors
Components 16
Setup and lifecycle
- Config and options flow
custom_components/esolatgps/config_flow.py - Integration lifecycle
custom_components/esolatgps/__init__.py - Provider and sensor constants
custom_components/esolatgps/const.py
Prayer data
- Location update coordinator
custom_components/esolatgps/coordinator.py - Offline JAKIM zone lookup
custom_components/esolatgps/zones.py - Bundled zone polygons
custom_components/esolatgps/data/jakim_zones.json.gz
Home Assistant entities
- Prayer and diagnostic sensors
custom_components/esolatgps/sensor.py - Shared entity base
custom_components/esolatgps/entity.py - Redacted diagnostics
custom_components/esolatgps/diagnostics.py
Dashboard card
- Card serving and registration
custom_components/esolatgps/card_registration.py - Prayer-time dashboard card
custom_components/esolatgps/frontend/esolatgps-card.js
Other components
- Home Assistant user
- Person and Home GPS
- waktusolat.app / JAKIM
- Aladhan API
- Nominatim geocoding
Connections 20
- Home Assistant user → Config and options flow: configures
README.md - Config and options flow → waktusolat.app / JAKIM: checks availability
custom_components/esolatgps/config_flow.py - Config and options flow → Integration lifecycle: creates options
README.md - Integration lifecycle → Location update coordinator: starts refresh
custom_components/esolatgps/__init__.py - Integration lifecycle → Card serving and registration: registers card
custom_components/esolatgps/__init__.py - Person and Home GPS → Location update coordinator: provides coordinates
custom_components/esolatgps/coordinator.py - Location update coordinator → Offline JAKIM zone lookup: resolves zone
custom_components/esolatgps/coordinator.py - Offline JAKIM zone lookup → Bundled zone polygons: loads polygons
custom_components/esolatgps/zones.py - Location update coordinator → waktusolat.app / JAKIM: fetches timetables
custom_components/esolatgps/coordinator.py - Location update coordinator → Aladhan API: fetches timings
README.md - Location update coordinator → Nominatim geocoding: reverse geocodes
README.md - Location update coordinator → Prayer and diagnostic sensors: supplies update data
custom_components/esolatgps/sensor.py - Prayer and diagnostic sensors → Shared entity base: uses base
custom_components/esolatgps/sensor.py - Integration lifecycle → Prayer and diagnostic sensors: forwards sensor setup
custom_components/esolatgps/__init__.py - Redacted diagnostics → Location update coordinator: reads runtime data
custom_components/esolatgps/diagnostics.py - Card serving and registration → Prayer-time dashboard card: serves script
custom_components/esolatgps/card_registration.py - Home Assistant user → Prayer-time dashboard card: views dashboard
README.md - Prayer-time dashboard card → Prayer and diagnostic sensors: selects sensor data
README.md - Location update coordinator → Provider and sensor constants: uses settings
custom_components/esolatgps/coordinator.py - Config and options flow → Provider and sensor constants: uses settings
custom_components/esolatgps/config_flow.py