Skip to main content
Selora Homes Selora Homes
Recipe · v1.0.0 · Released Jul 8, 2026

LG Fridge: Ice Boost

Installs a Home Assistant automation that switches your LG fridge's rapid cooling on ahead of events on your calendar, so there is plenty of ice and cold drinks when guests arrive, then switches it back off when the event ends.

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.

Type to search across cities, counties, and installers

↑↓ navigate open
⌘K search