I am happy to share a new custom driver for Hubitat that allows an iCal (ICS) calendar feed to directly control a virtual switch based on scheduled events.
This driver is designed for users who want reliable, calendar-driven automations without requiring timezone overrides or complex rule logic. It follows standard iCal feeds, including Microsoft 365 / Outlook calendars, and evaluates events using the hub’s configured timezone.
Key features
• Drives a Hubitat switch ON/OFF based on active calendar events (including the ability to specify X minutes before or after)
• Uses the hub’s timezone for display and scheduling (no manual timezone selection required)
• Parses common Outlook / Microsoft 365 calendar feeds, including calendar-level timezone data
• Expands recurring events (RRULE) such as weekly meetings
• Supports event filtering and exclusion logic to avoid false triggers (including subjects, tentative/busy/free, all-day events, etc.)
• Designed for stability and transparency, with clear logging for troubleshooting
Typical use cases
• Turn lights, modes, or presence indicators on during meetings and off when they end
• Drive Do Not Disturb or notification suppression automations
• Trigger routines based on work schedules or shared calendars
• Provide a reliable calendar-based “busy” switch for Rule Machine
Availability
• Source code is available on GitHub – search for:
truittchris / he_ical_switch
• Available via Hubitat Package Manager – search for:
iCal Calendar Switch by truittchris
Both installation methods are fully supported. If you already use Hubitat Package Manager, that is the recommended approach.
Feedback and contributions
This is an actively maintained project. Bug reports, feature requests, and pull requests are welcome. Please include logs and a brief description of your calendar source when reporting issues, as iCal implementations can vary.
If you find this driver useful, feedback in the thread is appreciated and helps guide future enhancements.