Nothing kills the start of a party like a slow ice maker and warm drinks. LG fridges have a rapid-cooling mode (Express mode) that speeds up ice production and pulls the compartment temperature down fast, but it is easy to forget to switch on until the guests are already at the door. This recipe hands that off to your calendar: it turns rapid cooling on a couple of hours before an event and switches it off when the event ends, so the fridge is ready without you remembering.
How it works
During install, Selora AI generates a Home Assistant automation tied to a calendar you choose (your household calendar, for example). A set number of hours before an event begins, the automation switches your fridge’s Express mode on. When the event ends, it switches Express mode back off so the fridge returns to its normal, efficient hold.
The lead time is yours to set. Two hours is a reasonable default: long enough for the ice bin to fill and drinks to chill, without running rapid cooling all day.
Only the events you mean
If you would rather not boost for every calendar entry, set a keyword during install. Then only events whose title contains that word, “party” or “hosting”, for example, trigger the boost. Leave the keyword empty and every event on the chosen calendar prepares the fridge.
Choosing a calendar
Point the recipe at any Home Assistant calendar entity, such as calendar.home or a dedicated entertaining calendar.
If you keep a Google or CalDAV calendar connected to Home Assistant, add a recurring or one-off event with your keyword
in the title and the fridge does the rest. There is no separate “guests arriving” signal to wire up: the calendar is
the single, reliable source the automation reads.
Files Selora AI's pipeline reads to install this recipe. The manifest declares roles, inputs, and integrations; the package files are Jinja-templated YAML applied to Home Assistant.
# Fridge Ice Boost — switch the LG fridge's rapid cooling (Express mode) on
# ahead of calendar events and off when they end, so there's ice and cold
# drinks when guests arrive.
#
# ``calendar`` is not a role kind the pipeline recognises, so the calendar
# is a string input (an entity_id) rather than a role. The single role,
# ``express_mode``, resolves the LG "Express mode" ``switch``. Two
# automations: one triggers ``lead_hours`` before an event starts and turns
# Express on, the other turns it off at event end.
#
# An optional ``event_keyword`` filters to events whose title contains it.
# Left empty, every event on the chosen calendar triggers the boost — the
# condition template reduces to `'' in summary`, which is always true.
slug: fridge-ice-boost
version: 1.0.0
title: "LG Fridge: Ice Boost"
tagline: Rapid cooling switches on before events on your calendar, so there's ice and cold drinks when guests arrive, then off when the event ends.
description: >-
Watches a calendar you choose and switches the LG fridge's rapid cooling
(Express mode) on a set number of hours before an event begins, then off
when it ends. Optionally limits the boost to events whose title contains
a keyword. Built around the LG ThinQ integration.
author: Selora AI
released: "2026-07-08"
min_integration_version: "0.12.0"
tags: [kitchen, fridge, lg-thinq, calendar]
roles:
# Rapid cooling switch — LG ThinQ's "Express mode". Single-select and
# required: it's the one thing this recipe controls.
- id: express_mode
title: Express / rapid cooling switch
kind: switch
integration: lg_thinq
min_count: 1
max_count: 1
selection: required
description: >-
The rapid-cooling switch the boost toggles. On an LG fridge this is
the "Express mode" switch the ThinQ integration exposes.
inputs:
# Calendar entity the boost watches. A string entity_id rather than a role
# because the pipeline has no ``calendar`` role kind. Defaults to the
# common ``calendar.home``; the homeowner points it at any HA calendar.
- id: calendar_entity
type: string
label: Calendar
description: >-
The Home Assistant calendar the boost watches, for example
calendar.home or a dedicated entertaining calendar.
default: "calendar.home"
# Optional title filter. When set, only events whose summary contains this
# word trigger the boost. Empty (the default) means every event does — the
# condition template becomes `'' in summary`, always true.
- id: event_keyword
type: string
label: Event keyword (optional)
description: >-
Only events whose title contains this word trigger the boost, for
example "party" or "hosting". Leave empty to boost for every event on
the calendar.
default: ""
# How many hours before an event starts to switch rapid cooling on. Long
# enough to fill the ice bin and chill drinks; the calendar trigger uses
# this as a negative offset.
- id: lead_hours
type: number
label: Lead time (hours)
description: >-
How many hours before an event to switch rapid cooling on. Two hours
is enough to fill the ice bin and chill drinks. Fractional values
(e.g. 1.5) are fine.
default: 2
min: 0
package_files:
- package/automations/ice_boost.yaml.j2
{# Fridge Ice Boost — switch rapid cooling on before a calendar event and
off when it ends.
The calendar trigger fires on an event's start / end. The start trigger
carries a negative ``offset`` rendered as a timedelta mapping (``hours:
-N``) rather than an ``HH:MM:SS`` string, so a fractional lead time like
1.5 hours stays a valid offset. Rapid cooling then comes on ``lead_hours``
early and the ice bin fills before guests arrive.
Both automations share a template condition on the event title. The
keyword is injected with ``tojson`` so a value containing an apostrophe
(e.g. "New Year's") becomes a valid quoted literal instead of breaking
the template; an empty keyword renders `"" in summary`, always true, so
every event boosts.
The value_template uses a ``>-`` block scalar so the rendered double
quotes need no YAML escaping. Only the leading ``{{`` is wrapped in raw;
the trailing ``}}`` is literal text, so trim_blocks can't swallow the
following line. #}
automation:
- id: selora_recipe_{{ slug | replace('-', '_') }}_ice_boost_on
alias: "LG Fridge Ice Boost — event starting"
description: >-
A set number of hours before a calendar event begins, switch the
fridge's rapid cooling on so there's ice and cold drinks ready.
mode: single
trigger:
- platform: calendar
event: start
entity_id: {{ inputs.calendar_entity }}
offset:
hours: -{{ inputs.lead_hours }}
condition:
- condition: template
value_template: >-
{% raw %}{{{% endraw %} {{ (inputs.event_keyword | lower) | tojson }} in (trigger.calendar_event.summary | default('') | lower) }}
action:
- service: switch.turn_on
target:
entity_id: {{ roles.express_mode[0] }}
- id: selora_recipe_{{ slug | replace('-', '_') }}_ice_boost_off
alias: "LG Fridge Ice Boost — event ended"
description: >-
When a matching calendar event ends, switch rapid cooling back off,
unless another matching event is still active or begins within the lead
window. Overlapping events keep the boost running, and the fridge only
returns to its normal, efficient hold once none remain.
mode: single
trigger:
- platform: calendar
event: end
entity_id: {{ inputs.calendar_entity }}
condition:
- condition: template
value_template: >-
{% raw %}{{{% endraw %} {{ (inputs.event_keyword | lower) | tojson }} in (trigger.calendar_event.summary | default('') | lower) }}
action:
# Ask the calendar for events overlapping the window from now through
# one lead time ahead. The event that just ended (its end == now) sits
# on the window's lower bound and isn't returned, so only other matching
# events (still active, or starting within the lead window) count. If
# any exists, another boost is still due, so leave the switch on;
# otherwise turn it off.
- service: calendar.get_events
target:
entity_id: {{ inputs.calendar_entity }}
data:
start_date_time: "{% raw %}{{ now() }}{% endraw %}"
end_date_time: "{% raw %}{{ now() + timedelta(hours={% endraw %}{{ inputs.lead_hours }}{% raw %}, minutes=1) }}{% endraw %}"
response_variable: ice_boost_events
- if:
# True when no remaining event matches the keyword. Uses only
# double quotes so it stays inside a single-quoted YAML scalar, and
# closes ``raw`` at the very end so no line ends on a block tag.
- condition: template
value_template: '{% raw %}{% set ns = namespace(active=false) %}{% for event in ice_boost_events[{% endraw %}{{ inputs.calendar_entity | tojson }}{% raw %}]["events"] %}{% if {% endraw %}{{ (inputs.event_keyword | lower) | tojson }}{% raw %} in (event.summary | default("") | lower) %}{% set ns.active = true %}{% endif %}{% endfor %}{{ not ns.active }}{% endraw %}'
then:
- service: switch.turn_off
target:
entity_id: {{ roles.express_mode[0] }}
Author-maintained release notes. Each release of the recipe lists what changed.
Changelog
v1.0.0 - 2026-07-08
Initial release.
- Switches the LG fridge’s rapid cooling (Express mode) on a set number of hours before a calendar event begins, then off when the event ends.
- Watches any Home Assistant calendar you choose.
- Optionally limits the boost to events whose title contains a keyword; leave the keyword empty to boost for every event.
- Built around the LG ThinQ integration.