more esphome devices and fixes
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
#:########################################################################################:#
|
||||
# TITLE: ENTRANCE SPOT PERSON DETECTION
|
||||
# PACKAGE: entrance_spot_person_detection.yaml
|
||||
#:########################################################################################:#
|
||||
# PURPOSE:
|
||||
# - Turn on the entrance illumination when a configured motion/visitor/presence source
|
||||
# becomes active.
|
||||
# - Temporarily force the illumination ramp number to 1 second for fast response.
|
||||
# - Restore the original ramp value after the sequence completes.
|
||||
# - Restart the timing whenever any configured trigger entity activates again.
|
||||
#
|
||||
# HOW THIS PACKAGE IS STRUCTURED:
|
||||
# - Trigger entities are stored in groups for easy future maintenance.
|
||||
# - The automation listens for state_changed events and checks whether the changed
|
||||
# entity is a member of one of those groups.
|
||||
# - This avoids the limitation of group-state triggers, which would not retrigger
|
||||
# if the group was already active from an earlier sensor.
|
||||
#
|
||||
# TO ADD MORE TRIGGERS LATER:
|
||||
# - Add more binary sensors under:
|
||||
# group.entrance_spot_person_detection_binary_sensors
|
||||
# - Add more device trackers under:
|
||||
# group.entrance_spot_person_detection_device_trackers
|
||||
#
|
||||
# DEVICE TRACKER NOTE:
|
||||
# - Device trackers often indicate presence using the state "home".
|
||||
# - If a tracker uses a different detected/present state, change the
|
||||
# tracker_active_state value below.
|
||||
#:########################################################################################:#
|
||||
|
||||
group:
|
||||
entrance_spot_person_detection_binary_sensors:
|
||||
name: Entrance Spot Person Detection Binary Sensors
|
||||
entities:
|
||||
#- binary_sensor.esp_entmulti_outside_entrance_multisensor_moving_target
|
||||
- binary_sensor.view_road_front_door_visitor
|
||||
#- binary_sensor.view_road_front_door_motion
|
||||
- binary_sensor.view_road_front_door_person
|
||||
|
||||
entrance_spot_person_detection_device_trackers:
|
||||
name: Entrance Spot Person Detection Device Trackers
|
||||
entities:
|
||||
- device_tracker.byd_atto3_ibeacon_bur4c2a_bermuda_tracker
|
||||
|
||||
input_number:
|
||||
entrance_spot_person_detection_saved_ramp:
|
||||
name: Entrance Spot Person Detection Saved Ramp
|
||||
min: 0
|
||||
max: 720
|
||||
step: 1
|
||||
mode: box
|
||||
icon: mdi:timer-cog
|
||||
|
||||
input_boolean:
|
||||
entrance_spot_person_detection_ramp_saved:
|
||||
name: Entrance Spot Person Detection Ramp Saved
|
||||
icon: mdi:content-save-check
|
||||
|
||||
automation:
|
||||
- alias: Entrance Spot Person Detection
|
||||
id: entrance_spot_person_detection
|
||||
description: >
|
||||
Turn on the front entranceway doorbell illumination when a configured binary
|
||||
sensor or device tracker activates. Temporarily force the ramp to 1 second,
|
||||
then restore the previous ramp setting after the sequence completes.
|
||||
mode: restart
|
||||
trigger:
|
||||
# Listen for all entity state changes, then filter below so we only respond
|
||||
# to configured sensors/trackers becoming active.
|
||||
- platform: event
|
||||
event_type: state_changed
|
||||
|
||||
variables:
|
||||
# Easy-edit entities.
|
||||
light_switch_entity: switch.front_entranceway_led_light_controls_doorbell_illumination
|
||||
ramp_number_entity: number.front_entranceway_led_light_controls_doorbell_illumination_ramp
|
||||
|
||||
# Easy-edit groups.
|
||||
binary_sensor_group_entity: group.entrance_spot_person_detection_binary_sensors
|
||||
device_tracker_group_entity: group.entrance_spot_person_detection_device_trackers
|
||||
|
||||
# Easy-edit active states.
|
||||
binary_sensor_active_state: "on"
|
||||
tracker_active_state: "home"
|
||||
|
||||
# State-change details from the event trigger.
|
||||
changed_entity_id: "{{ trigger.event.data.entity_id if trigger.event.data is defined else none }}"
|
||||
old_state_value: >
|
||||
{{ trigger.event.data.old_state.state if trigger.event.data.old_state is not none else none }}
|
||||
new_state_value: >
|
||||
{{ trigger.event.data.new_state.state if trigger.event.data.new_state is not none else none }}
|
||||
|
||||
# Members of the configured groups.
|
||||
binary_sensor_entities: >
|
||||
{{ state_attr(binary_sensor_group_entity, 'entity_id') | default([], true) }}
|
||||
device_tracker_entities: >
|
||||
{{ state_attr(device_tracker_group_entity, 'entity_id') | default([], true) }}
|
||||
|
||||
# Trigger logic.
|
||||
binary_sensor_triggered: >
|
||||
{{
|
||||
changed_entity_id in binary_sensor_entities
|
||||
and old_state_value != binary_sensor_active_state
|
||||
and new_state_value == binary_sensor_active_state
|
||||
}}
|
||||
|
||||
device_tracker_triggered: >
|
||||
{{
|
||||
changed_entity_id in device_tracker_entities
|
||||
and old_state_value != tracker_active_state
|
||||
and new_state_value == tracker_active_state
|
||||
}}
|
||||
|
||||
condition:
|
||||
# Only continue if the changed entity is one of our configured trigger entities
|
||||
# and it has transitioned into its active/detected state.
|
||||
- condition: template
|
||||
value_template: >
|
||||
{{ binary_sensor_triggered or device_tracker_triggered }}
|
||||
|
||||
action:
|
||||
# Save the original ramp value only once per active detection cycle.
|
||||
# Because the automation uses restart mode, repeated triggers will restart
|
||||
# the sequence without overwriting the original saved ramp value.
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: input_boolean.entrance_spot_person_detection_ramp_saved
|
||||
state: "off"
|
||||
sequence:
|
||||
- service: input_number.set_value
|
||||
target:
|
||||
entity_id: input_number.entrance_spot_person_detection_saved_ramp
|
||||
data:
|
||||
value: >
|
||||
{{ states(ramp_number_entity) | float(1) }}
|
||||
|
||||
- service: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.entrance_spot_person_detection_ramp_saved
|
||||
|
||||
# Force the illumination ramp to 1 second for a fast response.
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: "{{ ramp_number_entity }}"
|
||||
data:
|
||||
value: 5
|
||||
|
||||
# Turn on the entrance illumination.
|
||||
# The controlled device/light logic is expected to turn itself off later.
|
||||
- service: switch.turn_on
|
||||
target:
|
||||
entity_id: "{{ light_switch_entity }}"
|
||||
|
||||
# Hold briefly, then restore the ramp once activity has stopped retriggering
|
||||
# the automation for this cycle.
|
||||
- delay: "00:00:03"
|
||||
|
||||
# Restore the original ramp value that was active before detection.
|
||||
- service: number.set_value
|
||||
target:
|
||||
entity_id: "{{ ramp_number_entity }}"
|
||||
data:
|
||||
value: >
|
||||
{{ states('input_number.entrance_spot_person_detection_saved_ramp') | float(1) }}
|
||||
|
||||
# Clear the saved-state flag ready for the next fresh trigger cycle.
|
||||
- service: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.entrance_spot_person_detection_ramp_saved
|
||||
|
||||
# Optional tidy reset of the helper value.
|
||||
- service: input_number.set_value
|
||||
target:
|
||||
entity_id: input_number.entrance_spot_person_detection_saved_ramp
|
||||
data:
|
||||
value: 0
|
||||
Reference in New Issue
Block a user