Files
homeassistant-config/blueprints/automation/aledziko/ikea-myggspray-e2494-matter-motion-sensor.yaml

233 lines
6.9 KiB
YAML

blueprint:
name: IKEA MYGGSPRAY E2494 Motion Sensor (Matter) v2.1
description: 'Full-featured automation for the IKEA MYGGSPRAY E2494 Matter motion
sensor. Supports independent actions for motion, illuminance (high/low), and battery
alerts. '
domain: automation
source_url: https://github.com/aledziko/HA-blueprints/blob/main/IKEA/Matter/ikea-myggspray-e2494/ikea-myggspray-e2494-matter-motion-sensor.yaml
author: aledziko
input:
motion_entity:
name: MYGGSPRAY Motion Sensor
description: Select the MYGGSPRAY motion sensor (binary_sensor).
selector:
entity:
filter:
- device_class:
- occupancy
domain:
- binary_sensor
- device_class:
- motion
domain:
- binary_sensor
reorder: false
multiple: false
use_time_window:
name: Enable Active Hours?
description: Restrict automation to a specific time window.
default: false
selector:
boolean: {}
active_start_time:
name: Active Start Time
description: Automation starts working at this time (if enabled).
default: 08:00:00
selector:
time: {}
active_end_time:
name: Active End Time
description: Automation stops working at this time (if enabled).
default: '22:00:00'
selector:
time: {}
no_motion_wait:
name: Wait time (Motion)
description: Time to wait after last motion is detected before running the "off"
action.
default: 120
selector:
number:
min: 0.0
max: 3600.0
unit_of_measurement: seconds
step: 1.0
mode: slider
motion_on_action:
name: 'Action: Motion Detected'
description: Run when motion is detected (and dark enough).
default: []
selector:
action: {}
motion_off_action:
name: 'Action: Motion Stopped'
description: Run after the sensor stops detecting motion and wait time elapsed.
default: []
selector:
action: {}
illuminance_entity:
name: (Optional) Illuminance Sensor
description: Select the light sensor (sensor.illuminance).
default: []
selector:
entity:
filter:
- domain:
- sensor
device_class:
- illuminance
reorder: false
multiple: false
motion_cutoff:
name: (Optional) Motion Light Cutoff
description: Only trigger "Motion Detected" action if LUX is BELOW this value
(0 to disable).
default: 0
selector:
number:
min: 0.0
max: 3000.0
unit_of_measurement: lux
step: 1.0
mode: slider
illuminance_high_threshold:
name: (Optional) Light High Threshold
description: Trigger "High Action" when LUX goes ABOVE this value (e.g. 500
lx).
default: 500
selector:
number:
min: 0.0
max: 3000.0
unit_of_measurement: lux
step: 1.0
mode: slider
high_action:
name: 'Action: Light High'
description: Run when light exceeds threshold (e.g. close curtains).
default: []
selector:
action: {}
illuminance_low_threshold:
name: (Optional) Light Low Threshold
description: Trigger "Low Action" when LUX goes BELOW this value (e.g. 5 lx).
default: 5
selector:
number:
min: 0.0
max: 3000.0
unit_of_measurement: lux
step: 1.0
mode: slider
low_action:
name: 'Action: Light Low'
description: Run when light drops below threshold (e.g. open curtains).
default: []
selector:
action: {}
battery_entity:
name: (Optional) Battery Sensor
description: Select the battery level sensor (sensor.battery).
default: []
selector:
entity:
filter:
- domain:
- sensor
device_class:
- battery
reorder: false
multiple: false
battery_low_threshold:
name: (Optional) Battery Low Level
description: Threshold for battery alert (%).
default: 30
selector:
number:
min: 0.0
max: 100.0
unit_of_measurement: '%'
step: 1.0
mode: slider
battery_low_action:
name: 'Action: Battery Low'
description: Run when battery drops below threshold.
default: []
selector:
action: {}
mode: parallel
max_exceeded: silent
trigger_variables:
motion_entity_input: !input motion_entity
illuminance_entity_input: !input illuminance_entity
motion_cutoff_input: !input motion_cutoff
high_threshold_input: !input illuminance_high_threshold
low_threshold_input: !input illuminance_low_threshold
battery_entity_input: !input battery_entity
battery_threshold_input: !input battery_low_threshold
use_time_window_input: !input use_time_window
triggers:
- trigger: state
entity_id: !input motion_entity
from: 'off'
to: 'on'
id: motion_on
- trigger: state
entity_id: !input motion_entity
from: 'on'
to: 'off'
for:
seconds: !input no_motion_wait
id: motion_off
- trigger: template
value_template: "{{ illuminance_entity_input != none and \n states(illuminance_entity_input)
| is_number and \n states(illuminance_entity_input) | float(0) > high_threshold_input
| float(100000) }}\n"
id: light_high
- trigger: template
value_template: "{{ illuminance_entity_input != none and \n states(illuminance_entity_input)
| is_number and \n states(illuminance_entity_input) | float(100000) < low_threshold_input
| float(-1) }}\n"
id: light_low
- trigger: template
value_template: "{{ battery_entity_input != none and \n states(battery_entity_input)
| is_number and \n states(battery_entity_input) | float(100) < battery_threshold_input
| float(-1) }}\n"
id: battery_low
condition:
- condition: or
conditions:
- condition: template
value_template: '{{ not use_time_window_input }}'
- condition: time
after: !input active_start_time
before: !input active_end_time
actions:
- choose:
- conditions:
- condition: trigger
id: motion_on
sequence:
- delay: 1.5
- condition: template
value_template: "{% set cutoff = motion_cutoff_input | float(0) %} {% if cutoff
== 0 %}\n true\n{% else %}\n {% set lux = states(illuminance_entity_input)
| float(-1) %}\n {{ lux == -1 or lux <= cutoff }}\n{% endif %}\n"
- sequence: !input motion_on_action
- conditions:
- condition: trigger
id: motion_off
sequence: !input motion_off_action
- conditions:
- condition: trigger
id: light_high
sequence: !input high_action
- conditions:
- condition: trigger
id: light_low
sequence: !input low_action
- conditions:
- condition: trigger
id: battery_low
sequence: !input battery_low_action