Hello, I've browsed other scheduling apps, but none were what I was looking for. Previously I was using RM and defining a set of triggers and then in the rule body checking to see what time it was before performing an action. Having specified times in multiple places got annoying to create/update rules so I decide to create an app for it. I hope someone can find it useful ![]()
You can find the app here along with instructions on how to use it.
It's also on Hubitat Package Manager as "Schedule Manager" for easy installation.
Description
This app allows users to configure a time table, per device, and schedule the desired state for each configured time. Users can select any number of switches/dimmers, schedule them based on a set time or sunrise/set (with offset), and configure the desired state for that time. Additionally, users can pause the schedule for individual times. Advanced options include only running for desired modes or when a specific switch is set in addition to the ability to manually pause all schedules.
Features
- Schedule any number of switches/dimmers/buttons
- Schedules based on selected time or sunrise/set with offset
- Schedules based on Hub Variable time (date, time or datetime)
- Individual schedules may be paused
- Set desired state for switch/dimmer to be in at specified time
Advanced Options
- [Optional] Configure modes for which the schedule should apply
- [Optional] Configure a switch which must be set for a schedule to be applied
- [Optional] Turn "on" devices before issuing "setLevel" command.
- Useful when a device doesn't turn on via a setLevel command
- [Optional] Pause all schedule
- [Optional] Restore device settings to latest schedule when hub reboots
- When enabled, may be configured on a per-schedule basis
- [Optional] Enable dual times to run at the earlier or later value per schedule
- [Optional] Option to configure schedules not to run if device is already above/below scheduled level
Example
Edit
Inspiration: App: Switch Scheduler and More. (Schedule: Lights, Outlets, Switches, Relays, Sprinklers, Valves, and more..)
Release 1.1.0 - 2024-12-31
- BREAKING CHANGE - App name will be reset
- Show "(paused)" in app name when app is paused
- Additional error handling for default schedules and when new devices are added to a schedule
Release 2.0.0 - 2025-04-01
- BREAKING CHANGE - Sunrise/set times will not update unless app is re-saved. It will still run, just using the sunrise/set values at the time the app was updated.
- Additional error handling for default schedules and when new devices are added to a schedule
- Support for Hub Variables (datetime) used as start time
- This allows users to select a Hub Variable to be used as the start time for schedules
- Can use datetime, time or date (at midnight)
- Supports variable renaming
- Registers the use of a Hub Variable with the Hub
- Update schedules when the Hub Variable changes
- May use offset with hub variable
- Fix null pointer that happened occasionally when a new device was added
More info about how date/time Hub Variables are handled:
- Datetime - Will run at this exact date and time.
- Date - Will run at midnight of the specified date. You may specify an offset to change the time.
- Time - Will run at the specified time for all dates (respecting the day of week check boxes)
Release 2.0.1 - 2025-04-03
- Fix app version not showing properly
Release 2.0.2 - 2025-04-21
- Fix error when offset is applied to "time" or "date" only Hub Variables
Release 3.0.0 - 2025-08-12
- BREAKING CHANGE - OAuth required to edit schedules
- Schedules will continue to run even if oauth is not enabled
- Modernize UI - Better looking table, popup system for inputs
- Add ability to manually refresh OAuth token
- Add support for button devices - push, doubleTap, hold, release
- Refresh schedules when hub restarts
Configuring OAuth
The child app requires OAuth in order to edit schedules. You can enable this by opening the Hubitat sidenav and clicking "Apps Code". Find "Schedule Manager (Child App)" and click it. This opens the code editor. On the top right, click the three stacked dots to open the menu and select "OAuth" > "Enable OAuth in App".
If you ever update your OAuth token, you must click 'Refresh OAuth Token' in the 'Advanced Options' of each child instance in order for the app to get the new token.
Release 3.1.0 - 2025-08-13
- Advanced option to restore device state to most recent schedule after hub reboot
- Advanced option to manually restore device state to most recent schedule
Release 3.2.0 - 2025-08-18
- Add option to set hub restore functionality (when enabled) to be configured on a per-schedule basis
- New column in table will appear exposing this setting
- Note that the manual restore also respects these settings, even if the column is hidden
Release 3.2.1 - 2025-09-23
- Automatically stagger the daily sunrise/sunset refresh away from 1:00 AM user schedules
- Allow for configuring debug log duration
Release 3.3.0 - 2025-11-04
- Add advanced option: 'Enable earlier/later dual times'
- Option allows users to select two times for a single schedule and for the schedule to run at either the earlier or later of the two times
Release 3.4.0 - 2025-11-13
- Add advanced option to configure schedules not to run if device is already above/below scheduled level
- Ex: Set shades to 50% if current value is below, else leave at current value
- Bug fix for c-5 hub: prevent page refresh when popup is opened
Release 3.5.0 - 2025-12-08
- Add advanced option to turn off devices when mode changes to an unselected mode
- Add advanced option to restore devices to latest schedule when mode changes to a selected mode





