A fridge door that does not quite latch, or a freezer left ajar after unloading the shopping, can quietly cost you a whole load of food and a spike on the energy bill before anyone notices. This recipe turns your LG fridge into its own watchdog: the moment a door stays open longer than the grace period you set, it sends a push notification naming the door, and can flash the kitchen lights or call the warning out on a speaker.
It is built around the LG ThinQ integration, which reports the fridge and freezer doors as Home Assistant door sensors. Because the recipe asks specifically for LG ThinQ door entities, the install wizard only offers those: you won’t have to pick the fridge out of a list that also holds the dishwasher, the front door, and every stick-on contact sensor in the house.
How it works
During install, Selora AI generates a single Home Assistant automation from the door entities you pick. Each door is watched independently. When any one of them stays open past the grace period, the automation fires and names the door that tripped, so “fridge door has been open for a while” reaches your phone rather than a vague alert you have to go and investigate.
The grace period is yours to set. Five minutes is a sensible default: long enough to load groceries without nagging you, short enough to catch a door that never closed. Lower it if you want a tighter watch, or raise it if your kitchen sees a lot of long, hands-full trips to the fridge.
Flashing the lights and announcing out loud
A push notification is easy to miss if your phone is on silent or in another room. During install you can optionally pick one or more lights, and the recipe flashes them when a door is left open, a hard signal to miss when you are standing in the kitchen. You can also pick one or more speakers to announce the warning out loud over text to speech.
Leave both selections empty and the recipe stays notification only. To add or change them later, reinstall the recipe and adjust the selections.
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 Door Alert — notify when a fridge or freezer door is left open
# past a grace period, with optional light-flash and spoken announcement.
#
# The LG ThinQ integration exposes each fridge/freezer door as a
# ``binary_sensor`` with device_class ``door`` (``on`` = open). The recipe
# resolves one multi-select role, ``fridge_doors``, scoped to the
# ``lg_thinq`` integration so the wizard only offers the fridge's own
# doors, and generates a single automation that fires when any selected
# door stays open longer than ``open_minutes``.
#
# Two optional roles fan the alert out beyond a push notification:
# ``alert_lights`` flashes lights, ``announce_speakers`` speaks the alert
# over TTS. Both are min_count 0 — leave either empty and that channel is
# skipped.
slug: fridge-door-alert
version: 1.0.0
title: "LG Fridge: Door Alert"
tagline: When a fridge or freezer door is left open too long, get a push notification, and optionally flash the lights or hear it called out.
description: >-
Watches the LG fridge and freezer doors you select and fires when any of
them stays open longer than the grace period you set. Sends a push
notification naming the door, and optionally flashes lights and announces
the warning over TTS. Reads the doors from the LG ThinQ integration.
author: Selora AI
released: "2026-07-08"
min_integration_version: "0.12.0"
tags: [kitchen, fridge, lg-thinq, alerts]
roles:
# Fridge / freezer doors — multi-select so a side-by-side or French-door
# fridge that reports each door separately is fully covered with one
# recipe. ``binary_sensor`` + device_class ``door`` is how LG ThinQ
# surfaces them. Two filters narrow the candidates:
# - ``integration: lg_thinq`` drops non-LG door/contact sensors
# (stick-on sensors, exterior doors).
# - ``match`` drops other LG appliances' doors — an LG dishwasher's
# door is also binary_sensor/door on lg_thinq, so without this the
# wizard would offer it too. LG names the fridge door entity
# ``*_refrigerator_door`` / ``*_freezer_door`` (or ``*_fridge_*``),
# so ``refriger|fridge|freezer`` keeps just those.
# min_count 1: a door alert with no doors has nothing to watch.
- id: fridge_doors
title: Fridge / freezer doors
kind: binary_sensor
device_class: door
integration: lg_thinq
match: "refriger|fridge|freezer"
min_count: 1
selection: required
description: >-
The fridge and freezer doors reported by the LG ThinQ integration.
Pick each one you want watched.
# Lights to flash on the alert — optional. When the homeowner picks at
# least one light, the automation flashes it so the alert is visible in
# the room. Leave empty to skip the light flash.
- id: alert_lights
title: Lights to flash
kind: light
min_count: 0
selection: required
description: >-
Optional. Lights that flash when a door is left open, so the alert is
visible in the kitchen even if no one is looking at a phone. Leave
empty to be notified on your phone only.
# Announcement speakers — optional. When the homeowner picks at least one
# media player, the automation also speaks the alert over TTS. Leave
# empty and the recipe is push-notification-only.
- id: announce_speakers
title: Announcement speakers
kind: media_player
min_count: 0
selection: required
description: >-
Optional. Speakers that announce the open door out loud over TTS in
addition to the push notification. Leave empty to be notified on your
phone only.
inputs:
# Grace period, in minutes, a door may stay open before the alert fires.
# 5 minutes catches a door that never closed without nagging during a
# normal grocery unload. The template feeds this straight into the
# trigger's ``for:`` block.
- id: open_minutes
type: number
label: Grace period (minutes)
description: >-
How long a door may stay open before the alert fires. Five minutes is
a good starting point.
default: 5
# TTS engine entity for the optional spoken announcement. Auto-resolved by
# the ``tts_engine`` resolver from the home's configured tts.* entities
# (picking whichever TTS engine the home has configured) — the wizard never shows this field. ``tts.speak`` + the
# resolved engine works without a paid Home Assistant Cloud subscription.
# The resolver returns an empty string when the home has no TTS engine;
# the template then skips the announcement and stays notification-only.
# The default below is only used by the offline recipe-validation gate,
# which has no resolver to run; at install the resolver always overwrites
# it.
- id: tts_engine
type: string
label: Text-to-Speech engine
description: >-
Speech engine entity used for the spoken announcement. Resolved
automatically from the Text-to-Speech engines configured in Home
Assistant.
resolver: tts_engine
default: "tts.piper"
package_files:
- package/automations/door_open.yaml.j2
{# Fridge Door Alert — fire when any selected fridge/freezer door stays
open longer than the grace period. Sends a push notification naming the
door, and, when the homeowner picked lights or speakers, flashes the
lights and announces the alert over TTS.
Door binary_sensors report ``on`` when open, so the trigger fans out one
state trigger per door with ``to: "on"`` and a ``for:`` grace period.
trigger.to_state names the specific door so the alert says which one.
mode: queued so the fridge and freezer doors going open at once each get
handled rather than the second being dropped while the first is in
flight.
Every template stays on a single quoted line so the renderer's
trim_blocks can't swallow following YAML at an end-of-line tag. #}
automation:
- id: selora_recipe_{{ slug | replace('-', '_') }}_door_open
alias: "LG Fridge Door Alert — door left open"
description: >-
When a fridge or freezer door stays open past the grace period, send a
push notification and, if configured, flash lights and announce it.
mode: queued
max: 10
trigger:
{% for door in roles.fridge_doors %}
- platform: state
entity_id: {{ door }}
to: "on"
for:
minutes: {{ inputs.open_minutes }}
{% endfor %}
action:
# Name the door that was left open so the alert points at the spot.
- variables:
source: "{% raw %}{{ trigger.to_state.name | default(trigger.entity_id, true) }}{% endraw %}"
# 1. Push notification to every device registered with HA.
- service: notify.notify
data:
title: "{% raw %}{{ source }} left open{% endraw %}"
message: "{% raw %}{{ source }} has been open for a while. Check the door is shut.{% endraw %}"
{% if roles.alert_lights %}
# 2. Optional: flash the selected lights so the alert is visible in the
# room even when no one is looking at their phone.
- service: light.turn_on
target:
entity_id:
{% for light in roles.alert_lights %}
- {{ light }}
{% endfor %}
data:
flash: long
{% endif %}
{% if roles.announce_speakers and inputs.tts_engine %}
# 3. Optional spoken announcement on the configured speakers, via the
# auto-resolved TTS engine. tts.speak works without a Home Assistant
# Cloud subscription; the speakers go in media_player_entity_id.
- service: tts.speak
target:
entity_id: {{ inputs.tts_engine }}
data:
media_player_entity_id:
{% for player in roles.announce_speakers %}
- {{ player }}
{% endfor %}
message: "{% raw %}The {{ source }} has been left open. Please close it.{% endraw %}"
{% endif %}
Author-maintained release notes. Each release of the recipe lists what changed.
Changelog
v1.0.0 - 2026-07-08
Initial release.
- Watches every fridge or freezer door you select and fires when any of them stays open longer than the grace period you set.
- Sends a push notification naming the door that was left open.
- Optionally flashes one or more lights so the alert is visible in the room.
- Optionally announces the alert over TTS on one or more speakers; leave the light and speaker selections empty to stay notification-only.
- Scopes the door role to the LG ThinQ integration, so the wizard offers only the fridge’s own doors, not every door sensor in the home.