A custom Home Assistant integration for monitoring and controlling a local Cronicle job scheduler instance.
The integration connects to the Cronicle REST API and exposes scheduler state, active jobs, schedule counts, recent job history, diagnostics, buttons, and services.
- UI-based setup through Home Assistant
- HTTP and HTTPS support
- Local polling
- Configurable poll interval
- Configurable recent job history limit
- Sensors for scheduler/job state
- Diagnostic entities for API health
- Buttons for refresh and scheduler control
- Services for running events, aborting jobs, updating jobs, and scheduler control
- Device page link back to the Cronicle web UI
- Home Assistant
- A reachable Cronicle instance
- Cronicle API key
- Network access from Home Assistant to Cronicle
Default Cronicle port is 3012.
Copy the integration folder into:
config/custom_components/cronicle/
Expected structure:
custom_components/cronicle/
├── __init__.py
├── api.py
├── binary_sensor.py
├── button.py
├── config_flow.py
├── const.py
├── coordinator.py
├── manifest.json
├── sensor.py
├── services.yaml
├── strings.json
└── translations/
└── en.json
Restart Home Assistant after copying the files.
- Go to Settings → Devices & services
- Click Add integration
- Search for Cronicle
- Enter the host, port, API key, HTTPS setting, poll interval, and recent jobs count
- Submit the form
The integration validates the connection by calling Cronicle's master state endpoint.
| Option | Default | Range | Description |
|---|---|---|---|
| Poll interval | 30 seconds |
10–3600 |
How often Home Assistant polls Cronicle |
| Recent jobs count | 5 |
1–25 |
Number of completed jobs kept in attributes |
sensor.cronicle_active_jobssensor.cronicle_total_eventssensor.cronicle_enabled_eventssensor.cronicle_disabled_eventssensor.cronicle_last_jobsensor.cronicle_last_job_codesensor.cronicle_last_job_durationsensor.cronicle_last_job_finishedsensor.cronicle_recent_jobssensor.cronicle_failed_recent_jobssensor.cronicle_success_rate
sensor.cronicle_api_statussensor.cronicle_last_updatesensor.cronicle_last_successful_updatesensor.cronicle_last_errorsensor.cronicle_api_response_timesensor.cronicle_api_failuressensor.cronicle_history_totalsensor.cronicle_recent_jobs_limit
binary_sensor.cronicle_schedulerbinary_sensor.cronicle_last_job_failedbinary_sensor.cronicle_active_jobs_runningbinary_sensor.cronicle_api_connectedbinary_sensor.cronicle_problem
button.cronicle_refreshbutton.cronicle_enable_schedulerbutton.cronicle_disable_scheduler
service: cronicle.run_event
data:
id: "3c182051"or:
service: cronicle.run_event
data:
title: "Backup Logs"service: cronicle.abort_job
data:
id: "jiinxhh5203"service: cronicle.update_job
data:
id: "jiinxhh5203"
timeout: 300
retries: 1service: cronicle.enable_schedulerservice: cronicle.disable_schedulerservice: cronicle.refreshIf multiple Cronicle instances are configured, add config_entry_id to target one instance.
get_master_stateget_active_jobsget_scheduleget_historyrun_eventabort_jobupdate_jobupdate_master_stateget_job_status
Cronicle API key permissions depend on which services you use:
- Read-only monitoring requires access to state, schedule, active jobs, and history endpoints.
- Running events requires the
run_eventsprivilege. - Aborting jobs requires the
abort_eventsprivilege. - Updating running jobs requires the
edit_eventsprivilege. - Enabling or disabling the scheduler requires the
state_updateprivilege.
Check host, port, API key, HTTPS setting, firewall rules, and reverse proxy configuration.
Check Home Assistant logs for Cronicle API errors.
Check that the API key has the required Cronicle privilege for the action.
This project is licensed under the MIT License.