Enhance vacuum orchestration with new one-off room cleaning features for Alexa, adding multiple room-specific input booleans and corresponding automation. Updated documentation to reflect these changes and related issue tracking. closes One Off Vacuum Automations

Fixes #1553
master
Carlo Costanzo 3 weeks ago
parent 6303b05dd4
commit 3bede90a0a

@ -48,7 +48,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this
| [apt_updates.yaml](apt_updates.yaml) | Weekly APT patch reporting for Docker hosts + Repairs reboot alerts. | `sensor.docker_*_apt_status`, `repairs.create`, `script.send_to_logbook` | | [apt_updates.yaml](apt_updates.yaml) | Weekly APT patch reporting for Docker hosts + Repairs reboot alerts. | `sensor.docker_*_apt_status`, `repairs.create`, `script.send_to_logbook` |
| [phynplus.yaml](phynplus.yaml) | Phyn shutoff automations with push + Activity feed + Repairs issues for leak events. | `valve.phyn_shutoff_valve`, `binary_sensor.phyn_leak_test_running`, `repairs.create` | | [phynplus.yaml](phynplus.yaml) | Phyn shutoff automations with push + Activity feed + Repairs issues for leak events. | `valve.phyn_shutoff_valve`, `binary_sensor.phyn_leak_test_running`, `repairs.create` |
| [powerwall.yaml](powerwall.yaml) | Track Tesla Powerwall grid status and shed loads automatically when off-grid (alerts include Activity feed + Repairs). | `binary_sensor.powerwall_grid_status`, `sensor.powerwall_*`, `repairs.create` | | [powerwall.yaml](powerwall.yaml) | Track Tesla Powerwall grid status and shed loads automatically when off-grid (alerts include Activity feed + Repairs). | `binary_sensor.powerwall_grid_status`, `sensor.powerwall_*`, `repairs.create` |
| [vacuum.yaml](vacuum.yaml) | Dreame vacuum orchestration with room tracking, push alerts, Activity feed, and Repairs issues on errors. | `input_select.l10s_vacuum_phase`, `sensor.l10s_vacuum_error`, `repairs.create` | | [vacuum.yaml](vacuum.yaml) | Dreame vacuum orchestration with room tracking, push alerts, Activity feed, Repairs issues on errors, and Alexa one-off room-clean switches. | `input_select.l10s_vacuum_phase`, `sensor.l10s_vacuum_error`, `repairs.create` |
| [hass_agent_homepc.yaml](hass_agent_homepc.yaml) | Mirrors PC lock/unlock state from HASS.Agent to the office lamp for instant desk presence cues. | `sensor.carlo_homepc_carlo_homepc_sessionstate`, `switch.office_lamp_switch` | | [hass_agent_homepc.yaml](hass_agent_homepc.yaml) | Mirrors PC lock/unlock state from HASS.Agent to the office lamp for instant desk presence cues. | `sensor.carlo_homepc_carlo_homepc_sessionstate`, `switch.office_lamp_switch` |
| [finance.yaml](finance.yaml) | Yahoo Finance sensor bundle for portfolio glances and Lovelace cards. | `sensor.tsla`, `sensor.aapl`, `sensor.amzn`, `sensor.msft` | | [finance.yaml](finance.yaml) | Yahoo Finance sensor bundle for portfolio glances and Lovelace cards. | `sensor.tsla`, `sensor.aapl`, `sensor.amzn`, `sensor.msft` |
@ -66,6 +66,7 @@ Live collection of plug-and-play Home Assistant packages. Each YAML file in this
- Logic lives in [vacuum.yaml](vacuum.yaml): continuous four-phase loop (sweep main, sweep baths, mop main, mop baths) driven by `input_select.l10s_vacuum_phase` and `input_text.l10s_vacuum_room_queue`, with per-room notifications and automatic reseeding between phases. - Logic lives in [vacuum.yaml](vacuum.yaml): continuous four-phase loop (sweep main, sweep baths, mop main, mop baths) driven by `input_select.l10s_vacuum_phase` and `input_text.l10s_vacuum_room_queue`, with per-room notifications and automatic reseeding between phases.
- Uses the Dreame HACS integration with segment IDs to enforce bathrooms last in each sweep/mop pass, dock on arrival, and auto-run if idle for 3+ days. - Uses the Dreame HACS integration with segment IDs to enforce bathrooms last in each sweep/mop pass, dock on arrival, and auto-run if idle for 3+ days.
- Room queue advances on a 2-minute dwell in `sensor.l10s_vacuum_current_room` (queue = remaining rooms); phase changes happen on `sensor.l10s_vacuum_task_status: completed` and an empty queue. - Room queue advances on a 2-minute dwell in `sensor.l10s_vacuum_current_room` (queue = remaining rooms); phase changes happen on `sensor.l10s_vacuum_task_status: completed` and an empty queue.
- One-off room cleaning for Alexa uses `input_boolean.l10s_vacuum_clean_*` (example: "Kitchen Clean") and runs a segment job without touching or checking the phased queue.
![Dreame Automations](../www/custom_ui/floorplan/images/branding/Dreame%20Automations.png) ![Dreame Automations](../www/custom_ui/floorplan/images/branding/Dreame%20Automations.png)
### Blog & video deep dives ### Blog & video deep dives

@ -4,7 +4,7 @@
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# ------------------------------------------------------------------- # -------------------------------------------------------------------
# Dreame Vacuum Orchestration - Continuous phased sweep/mop with away/on-demand # Dreame Vacuum Orchestration - Continuous phased sweep/mop with away/on-demand
# Related Issue: 1550 # Related Issue: 1550, 1553
# Phases: sweep main, sweep baths, mop main, mop baths; notifications + idle auto-start # Phases: sweep main, sweep baths, mop main, mop baths; notifications + idle auto-start
# ------------------------------------------------------------------- # -------------------------------------------------------------------
# Notes: # Notes:
@ -17,6 +17,7 @@
# - Queue-empty trigger ignores already-completed tasks to avoid immediate reseeding. # - Queue-empty trigger ignores already-completed tasks to avoid immediate reseeding.
# - Queue-empty no longer auto-reseeds; phase advance handles the next run on completion. # - Queue-empty no longer auto-reseeds; phase advance handles the next run on completion.
# - Mop phases use `sweeping_and_mopping` instead of mop-only. # - Mop phases use `sweeping_and_mopping` instead of mop-only.
# - One-off room clean booleans ignore the queue; they only run when the vacuum is docked/idle.
###################################################################### ######################################################################
## 1. Helpers ## 1. Helpers
@ -26,6 +27,48 @@ input_boolean:
l10s_vacuum_on_demand: l10s_vacuum_on_demand:
name: Dreame Clean (On-Demand) name: Dreame Clean (On-Demand)
icon: mdi:robot-vacuum icon: mdi:robot-vacuum
l10s_vacuum_clean_kitchen:
name: Kitchen Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_dining_room:
name: Dining Room Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_living_room:
name: Living Room Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_master_bedroom:
name: Master Bedroom Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_foyer:
name: Foyer Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_stacey_office:
name: Stacey Office Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_formal_dining:
name: Formal Dining Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_hallway:
name: Hallway Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_justin_bedroom:
name: Justin Bedroom Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_paige_bedroom:
name: Paige Bedroom Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_master_bathroom:
name: Master Bathroom Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_office:
name: Office Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_pool_bath:
name: Pool Bath Clean
icon: mdi:robot-vacuum
l10s_vacuum_clean_kids_bathroom:
name: Kids Bathroom Clean
icon: mdi:robot-vacuum
input_select: input_select:
l10s_vacuum_phase: l10s_vacuum_phase:
@ -160,6 +203,127 @@ automation:
target: target:
entity_id: input_boolean.l10s_vacuum_on_demand entity_id: input_boolean.l10s_vacuum_on_demand
- alias: 'Vacuum: One-Off Room Clean (Alexa)'
id: 5e2fd2b1-3f45-4680-ae74-68bb116cf1e8
mode: queued
trigger:
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_kitchen
to: 'on'
id: kitchen
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_dining_room
to: 'on'
id: dining_room
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_living_room
to: 'on'
id: living_room
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_master_bedroom
to: 'on'
id: master_bedroom
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_foyer
to: 'on'
id: foyer
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_stacey_office
to: 'on'
id: stacey_office
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_formal_dining
to: 'on'
id: formal_dining
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_hallway
to: 'on'
id: hallway
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_justin_bedroom
to: 'on'
id: justin_bedroom
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_paige_bedroom
to: 'on'
id: paige_bedroom
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_master_bathroom
to: 'on'
id: master_bathroom
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_office
to: 'on'
id: office
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_pool_bath
to: 'on'
id: pool_bath
- platform: state
entity_id: input_boolean.l10s_vacuum_clean_kids_bathroom
to: 'on'
id: kids_bathroom
variables:
room_map:
kitchen: {segment: 14, name: Kitchen}
dining_room: {segment: 12, name: 'Dining Room'}
living_room: {segment: 10, name: 'Living Room'}
master_bedroom: {segment: 7, name: 'Master Bedroom'}
foyer: {segment: 15, name: Foyer}
stacey_office: {segment: 9, name: 'Stacey Office'}
formal_dining: {segment: 17, name: 'Formal Dining'}
hallway: {segment: 13, name: Hallway}
justin_bedroom: {segment: 8, name: 'Justin Bedroom'}
paige_bedroom: {segment: 6, name: 'Paige Bedroom'}
master_bathroom: {segment: 4, name: 'Master Bathroom'}
office: {segment: 2, name: Office}
pool_bath: {segment: 1, name: 'Pool Bath'}
kids_bathroom: {segment: 3, name: 'Kids Bathroom'}
room_key: "{{ trigger.id }}"
room_name: "{{ room_map[room_key].name }}"
segment_id: "{{ room_map[room_key].segment | int }}"
vac_state: "{{ states('vacuum.l10s_vacuum') }}"
on_demand: "{{ is_state('input_boolean.l10s_vacuum_on_demand', 'on') }}"
queue_raw: "{{ states('input_text.l10s_vacuum_room_queue') | default('', true) | string | trim }}"
can_start: "{{ vac_state in ['docked', 'idle'] }}"
action:
- choose:
- conditions:
- condition: template
value_template: "{{ can_start }}"
sequence:
- service: script.send_to_logbook
data:
topic: "VACUUM"
message: "One-off clean: {{ room_name }}."
- continue_on_error: true
service: select.select_option
target:
entity_id: select.l10s_vacuum_cleaning_mode
data:
option: sweeping
- continue_on_error: true
service: vacuum.set_fan_speed
target:
entity_id: vacuum.l10s_vacuum
data:
fan_speed: Standard
- continue_on_error: true
service: dreame_vacuum.vacuum_clean_segment
target:
entity_id: vacuum.l10s_vacuum
data:
segments: "{{ [segment_id] }}"
- delay: "00:00:02"
default:
- service: script.send_to_logbook
data:
topic: "VACUUM"
message: "One-off clean blocked: {{ room_name }} (vac={{ vac_state }}, on_demand={{ on_demand }}, queue='{{ queue_raw }}')."
- service: input_boolean.turn_off
data:
entity_id: "{{ trigger.entity_id }}"
- alias: 'Away Vacuum: Start or Resume When we leave or On-Demand' - alias: 'Away Vacuum: Start or Resume When we leave or On-Demand'
id: 7f7e0a3c-6452-4f6b-8464-c6c25770a148 id: 7f7e0a3c-6452-4f6b-8464-c6c25770a148
trigger: trigger:

Loading…
Cancel
Save

Powered by TurnKey Linux.