Clothes left sitting in a dryer after it stops come out creased, and more often than not get run through a second time
just to shake the wrinkles out. Your LG dryer reports its progress as the Current status sensor, which changes to
Done when the cycle finishes. This recipe watches for that and sends a push notification, so you unload while
everything is still warm and easy to fold.
How it works
During install, Selora AI generates a Home Assistant automation from the dryer’s status sensor. When the status changes to complete, it sends a push notification. There are no timers or guesses: the notification fires on the dryer’s own “done” signal.
Announcing on a speaker
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 speakers, and the same alert is announced out loud over text to speech in addition to the notification, so “the dryer has finished” reaches the room. Leave the speaker selection empty and the recipe stays notification-only. To add or change speakers later, reinstall the recipe and adjust the selection.
Picking the right sensor
The Current status sensor exists on several LG appliances (dryer, washer, dishwasher, and more). If you have more
than one LG appliance in Home Assistant, the install wizard may list a status sensor for each, pick the dryer’s.
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.
# Dryer Cycle Finished — notify when the LG dryer's cycle completes, so the
# load gets unloaded while warm and doesn't sit and wrinkle.
#
# The LG ThinQ integration exposes a "Current status" sensor
# (ThinQProperty.CURRENT_STATE) whose raw state becomes a completion key
# (complete / done / end / running_end, all shown as "Done"/"Finished") when
# a cycle finishes; which key depends on the model. The recipe resolves that
# sensor (scoped to lg_thinq, matched by name) and notifies on the
# transition to any of those completion states.
# An optional ``announce_speakers`` role also speaks the alert over TTS.
#
# Note: the current-status sensor exists on several LG appliance types
# (dryer, washer, dishwasher, ...), so on a multi-appliance home the wizard
# may list more than one — the homeowner picks the dryer's.
slug: dryer-cycle-finished
version: 1.0.0
title: "LG Dryer: Cycle Finished"
tagline: Get a push notification the moment your LG dryer finishes, so you unload it while warm and skip the wrinkles.
description: >-
Sends a Home Assistant push notification when the LG dryer's cycle
finishes, so you unload it while the clothes are still warm and avoid
set-in wrinkles rather than re-running it later. Add one or more speakers
and it also announces the finished cycle out loud. Reads the dryer's own
status from the LG ThinQ integration.
author: Selora AI
released: "2026-07-09"
min_integration_version: "0.12.0"
tags: [laundry, dryer, lg-thinq, notifications]
roles:
# "Current status" run-state sensor. Scoped to lg_thinq and matched on
# name. Single-select, required. The current-status sensor is shared
# across LG appliance types, so the homeowner picks the dryer's when
# more than one is offered.
- id: status_sensor
title: Dryer status sensor
kind: sensor
integration: lg_thinq
match: "current[ _]st"
min_count: 1
max_count: 1
selection: required
description: >-
The dryer's "Current status" sensor from the LG ThinQ integration.
If you have more than one LG appliance, pick the dryer's.
# Announcement speakers — optional. When the homeowner picks at least one
# media player, the recipe also speaks the alert over TTS in addition to
# the push notification. Leave empty for notification-only.
- id: announce_speakers
title: Announcement speakers
kind: media_player
min_count: 0
selection: required
description: >-
Optional. Speakers that announce the finished cycle out loud over TTS
in addition to the push notification. Leave empty to be notified on
your phone only.
inputs:
# 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`` 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/cycle_finished.yaml.j2
{# Dryer Cycle Finished — notify when the "Current status" sensor reaches a
completion state (displayed as "Done"/"Finished"). HA stores the raw enum
key as the state, and different LG models emit different completion keys
(complete / done / end / running_end), so the trigger lists them all
rather than matching the translated label. ``not_from`` drops the
unavailable/unknown -> completion transition the integration emits when it
reconnects with a stale finished state, so a reconnect after a restart
never fires a phantom cycle-finished alert. When the homeowner picked
speakers, the same alert is announced over TTS.
mode: single — one completion per cycle. Templates stay on single quoted
lines so trim_blocks can't swallow following YAML. #}
automation:
- id: selora_recipe_{{ slug | replace('-', '_') }}_cycle_finished
alias: "LG Dryer Cycle Finished — ready to unload"
description: >-
When the dryer's status changes to complete, send a push notification
and, if speakers are configured, announce it.
mode: single
trigger:
- platform: state
entity_id: {{ roles.status_sensor[0] }}
not_from:
- "unknown"
- "unavailable"
to:
- "complete"
- "done"
- "end"
- "running_end"
action:
# 1. Push notification to every device registered with HA.
- service: notify.notify
data:
title: "Dryer finished"
message: "The dryer has finished. Unload it while the clothes are warm to avoid set-in wrinkles."
{% if roles.announce_speakers and inputs.tts_engine %}
# 2. 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: "The dryer has finished. Your laundry is ready."
{% endif %}
Author-maintained release notes. Each release of the recipe lists what changed.
Changelog
v1.0.0 - 2026-07-09
Initial release.
- Sends a Home Assistant push notification when the LG dryer’s Current status sensor reaches complete (Done).
- Optionally announces the finished cycle over TTS on one or more speakers; leave the speaker selection empty to stay notification-only.
- Fires on the dryer’s own completion signal, no timers or estimates.
- Built around the LG ThinQ integration.