Climate Relay is a Home Assistant custom integration for area-centric climate control.
- one installable integration instance per Home Assistant installation
- one global mode control with the options
auto,home, andaway - automatic presence resolution from configured
personentities - configurable handling for
unknownandunavailableperson states - a configurable fallback target temperature for required-component failure
- optional simulation mode for dry-run observation without device actuation
- one daily schedule window for configured area-bound regulation profiles
- manual overrides for configured area-bound regulation profiles through Home Assistant services
- delayed open-window automation for configured area-bound regulation profiles
- bounded multi-area runtime behavior when more than one profile is configured
- an experimental
climate-relay-cardfrontend scaffold for rendering activated room tiles from backend-owned Home Assistant state and activating one eligible room through backend-owned WebSocket commands - minimal custom-card editing for the existing daily schedule start/end window through backend-owned validation and persistence
- backend-projected room action capabilities for the experimental card's minimal fixed-duration Override/Resume flow
- required primary-climate failure falls back to the configured fallback
temperature and exposes
degradation_status = required_component_fallback - optional verbose diagnostic logging
The recommended installation path is through HACS as a custom repository.
- Open the badge above from the Home Assistant instance where you want to install the integration.
- Confirm the HACS repository link for
ClimateRelayCore. - Download
Climate Relaythrough HACS. - Restart Home Assistant.
- Open
Settings > Devices & Services. - Select
Add Integration. - Search for
Climate Relay. - Create the integration entry.
If you prefer the manual HACS path:
- Open HACS in Home Assistant.
- Open the menu in the top right corner.
- Select
Custom repositories. - Add
https://github.com/o-moe/ha-climate-relayas repository URL. - Select the repository type
Integration. - Download
Climate Relaythrough HACS. - Restart Home Assistant.
- Open
Settings > Devices & Services. - Select
Add Integration. - Search for
Climate Relay. - Create the integration entry.
If both stable and early-access builds are published, ordinary users should prefer the latest stable GitHub release. Alpha or dev builds are intended only for directed testing.
- Copy
custom_components/climate_relay_coreinto your Home Assistant configuration directory undercustom_components/. - Restart Home Assistant.
- Open
Settings > Devices & Services. - Select
Add Integration. - Search for
Climate Relay. - Create the integration entry.
The initial setup flow currently asks only for the display name of the
integration. After setup, open the integration card menu in
Settings > Devices & Services and choose Configure to adjust:
- tracked
personentities for automatic presence resolution - handling of
unknownandunavailableperson states - fallback temperature
- optional daily manual-override reset time
- optional window contact, open-window action, custom window temperature, and delay per regulation profile
- multiple primary-climate-anchored regulation profiles through add, edit, and remove actions
- simulation mode
- verbose logging
The options dialog includes short inline explanations. At a high level:
- tracked presence entities drive
Automaticpresence resolution - unknown-state handling defines how missing person state is interpreted
- fallback temperature is used when a required profile climate component is missing,
unknown, orunavailable - daily override reset clears active manual overrides at the configured local time
- simulation mode keeps future actuator writes suppressed while still logging intended behavior
- verbose logging expands diagnostic output for troubleshooting
After a successful installation and setup, Home Assistant currently exposes:
- one
selectentity namedPresence Control - one area-level
climateentity for each configured regulation profile - services named
climate_relay_core.set_global_mode,climate_relay_core.set_area_override, andclimate_relay_core.clear_area_override
The repository also contains an early custom-card scaffold in frontend/.
It is intended for Increment 3.3/3.3a UX validation and later separation into a
HACS dashboard/custom-card repository. It is not yet the final distributed
dashboard package.
After setup, use the Presence Control select entity to control the current
integration-wide behavior.
Automatic: resolves presence from the configuredpersonentitiesHome: forces effective presence tohomeAway: forces effective presence toaway
You can change the mode either through the Presence Control select entity or via
the service climate_relay_core.set_global_mode.
The area-level climate entity follows the configured schedule unless a manual
override is active. Manual overrides are created through
climate_relay_core.set_area_override with an area/profile reference, an
absolute target temperature, and one termination type:
durationwithduration_minutesuntil_timewith a local wall-clock timenext_timeblocknever
Creating a second override for the same area replaces the first. Use
climate_relay_core.clear_area_override to clear the active override. Temporary
overrides expose override_ends_at on the area climate entity; active overrides
set active_control_context to manual_override. Room climate entities also
project minimal action state for the experimental card through attributes such
as supported_room_actions, can_set_override, can_clear_override, and
manual_override_active.
If a window contact is configured, opening it starts the configured delay. If
the contact remains open for the full delay, the area climate entity switches
to active_control_context = window_override and applies the configured
open-window action. When the contact closes, Climate Relay reevaluates the
current schedule, presence, and manual override state instead of restoring an
old pre-window target.
The integration writes logs for global mode transitions and configuration updates. If you enable verbose logging in the options flow, it also logs the resolved effective presence context.
If simulation mode is enabled, the integration still evaluates its control logic and logs the resulting area target decisions, but it suppresses the climate writes that would otherwise be sent to the primary climate entity.
Device writes are treated as confirmed only after Home Assistant accepts the
underlying climate.set_temperature service call. If a write fails, the same
target can be retried on the next evaluation instead of being permanently
suppressed as already applied.
- global mode and manual override runtime state remain in memory and are recomputed or cleared after restart; full durable runtime persistence is a later epic concern
- schedule editing is limited to one daily home window
- the experimental card can discover eligible climate/area candidates and activate one room with backend defaults and edit that room's daily schedule start/end times, but full room configuration is not available yet
- the experimental card supports only a backend-capability-gated one-hour override action and resume action; richer override variants are not available in the card yet
- weekly schedules, multiple timeblocks, and a full schedule editor are not available yet
Developer and project-internal documentation is maintained in docs/ and CONTRIBUTING.md.