New Motion Light PRO with Restart Mode
This commit is contained in:
@@ -1 +1 @@
|
|||||||
2025.12.4
|
2026.3.3
|
||||||
@@ -1 +1 @@
|
|||||||
{"pid": 66, "version": 1, "ha_version": "2025.12.4", "start_ts": 1770245525.0375628}
|
{"pid": 65, "version": 1, "ha_version": "2026.3.3", "start_ts": 1774178078.8002532}
|
||||||
213
automations.yaml
213
automations.yaml
@@ -24,31 +24,6 @@
|
|||||||
window_sensor: binary_sensor.soggiornopt_finestrasud_contact
|
window_sensor: binary_sensor.soggiornopt_finestrasud_contact
|
||||||
climate_target: climate.soggiornopt_termosifonesud
|
climate_target: climate.soggiornopt_termosifonesud
|
||||||
ext_temp_limit: 17
|
ext_temp_limit: 17
|
||||||
- id: '1731705145404'
|
|
||||||
alias: Luce Automatica Scala Mansarda
|
|
||||||
description: ''
|
|
||||||
use_blueprint:
|
|
||||||
path: homeassistant/motion_light_dual_ng.yaml
|
|
||||||
input:
|
|
||||||
motion_entity1: binary_sensor.presenza_alta_scala_mansarda_occupancy
|
|
||||||
motion_entity2: binary_sensor.presenza_bassa_scala_mansarda_occupancy
|
|
||||||
light_target:
|
|
||||||
device_id: 702137a6f2c17b89fdb0598f7003743c
|
|
||||||
no_motion_wait: 30
|
|
||||||
- id: '1732739522749'
|
|
||||||
alias: Luce Automatica Taverna Garage
|
|
||||||
description: ''
|
|
||||||
use_blueprint:
|
|
||||||
path: homeassistant/motion_light_trix_ng.yaml
|
|
||||||
input:
|
|
||||||
light_target:
|
|
||||||
entity_id: light.luce_taverna_garage
|
|
||||||
motion_entity1: binary_sensor.presenza_bassa_scala_taverna_occupancy
|
|
||||||
motion_entity2: binary_sensor.presenza_taverna_garage_occupancy
|
|
||||||
motion_entity3: binary_sensor.presenza_taverna_lavanderia_occupancy
|
|
||||||
use_sun: false
|
|
||||||
dont_disturb: false
|
|
||||||
no_motion_wait: 40
|
|
||||||
- id: '1736805701473'
|
- id: '1736805701473'
|
||||||
alias: P1confort-light
|
alias: P1confort-light
|
||||||
description: ''
|
description: ''
|
||||||
@@ -57,18 +32,6 @@
|
|||||||
input:
|
input:
|
||||||
light_target:
|
light_target:
|
||||||
device_id: e0397b54f1c2d1514be403e2996ca368
|
device_id: e0397b54f1c2d1514be403e2996ca368
|
||||||
- id: '1738366774549'
|
|
||||||
alias: Test-motion-light-ng
|
|
||||||
description: ''
|
|
||||||
use_blueprint:
|
|
||||||
path: homeassistant/motion_light_dual_ng.yaml
|
|
||||||
input:
|
|
||||||
motion_entity1: binary_sensor.presenza_alta_scala_mansarda_occupancy
|
|
||||||
motion_entity2: binary_sensor.presenza_bassa_scala_mansarda_occupancy
|
|
||||||
light_target:
|
|
||||||
device_id: 9f46c5b7c07f1495e0f4bf8d6f72a525
|
|
||||||
no_motion_wait: 0
|
|
||||||
dont_disturb: false
|
|
||||||
- id: '1738426726761'
|
- id: '1738426726761'
|
||||||
alias: Test-Pulsante01
|
alias: Test-Pulsante01
|
||||||
description: ''
|
description: ''
|
||||||
@@ -99,18 +62,6 @@
|
|||||||
description: ''
|
description: ''
|
||||||
use_blueprint:
|
use_blueprint:
|
||||||
path: homeassistant/test_macro.yaml
|
path: homeassistant/test_macro.yaml
|
||||||
- id: '1748185066312'
|
|
||||||
alias: Luce-Garage
|
|
||||||
description: ''
|
|
||||||
use_blueprint:
|
|
||||||
path: homeassistant/presence_light.yaml
|
|
||||||
input:
|
|
||||||
presence_entity1: binary_sensor.presenza_garage_occupancy
|
|
||||||
light_target:
|
|
||||||
device_id: d5b217920e2f4fe83e0496257b27e39c
|
|
||||||
use_sun: false
|
|
||||||
dont_disturb: false
|
|
||||||
no_presence_wait: 180
|
|
||||||
- id: '1753031203413'
|
- id: '1753031203413'
|
||||||
alias: Apri-Cancelletto
|
alias: Apri-Cancelletto
|
||||||
description: ''
|
description: ''
|
||||||
@@ -181,19 +132,6 @@
|
|||||||
message: Qualcuno ha suonato al Cancelletto usa Home Assistant
|
message: Qualcuno ha suonato al Cancelletto usa Home Assistant
|
||||||
enabled: false
|
enabled: false
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1756127648616'
|
|
||||||
alias: Luce Automatica Scala Taverna
|
|
||||||
description: ''
|
|
||||||
use_blueprint:
|
|
||||||
path: homeassistant/motion_light_dual_ng.yaml
|
|
||||||
input:
|
|
||||||
motion_entity1: binary_sensor.presenza_alta_scala_taverna_occupancy
|
|
||||||
motion_entity2: binary_sensor.presenza_bassa_scala_taverna_occupancy
|
|
||||||
light_target:
|
|
||||||
device_id: 6d330da42619e33e75960756cd2262eb
|
|
||||||
use_sun: false
|
|
||||||
dont_disturb: false
|
|
||||||
no_motion_wait: 30
|
|
||||||
- id: '1757599657040'
|
- id: '1757599657040'
|
||||||
alias: Luce-Giardino
|
alias: Luce-Giardino
|
||||||
description: ''
|
description: ''
|
||||||
@@ -312,6 +250,45 @@
|
|||||||
payload: "{\"cmd\": \"setFixHPlimit\", \"params\": {\n \"level\": \"{{states('input_select.fix_hp_power')}}\",\n
|
payload: "{\"cmd\": \"setFixHPlimit\", \"params\": {\n \"level\": \"{{states('input_select.fix_hp_power')}}\",\n
|
||||||
\ \"duration\": {{states('input_number.fix_hp_power_duration')}} }}"
|
\ \"duration\": {{states('input_number.fix_hp_power_duration')}} }}"
|
||||||
mode: single
|
mode: single
|
||||||
|
- id: '1774178169206'
|
||||||
|
alias: Luce Automatica Scala-Mansarda
|
||||||
|
description: Motion light PRO dual
|
||||||
|
use_blueprint:
|
||||||
|
path: homeassistant/motion_light_pro_dual.yaml
|
||||||
|
input:
|
||||||
|
motion_entity1: binary_sensor.presenza_alta_scala_mansarda_occupancy
|
||||||
|
motion_entity2: binary_sensor.presenza_bassa_scala_mansarda_occupancy
|
||||||
|
light_target:
|
||||||
|
entity_id: light.luce_scala_mansarda
|
||||||
|
no_motion_wait: 40
|
||||||
|
use_sun: true
|
||||||
|
- id: '1774178649402'
|
||||||
|
alias: Luce Automatica Scala-Taverna
|
||||||
|
description: Motion light PRO dual per Scala Taverna
|
||||||
|
use_blueprint:
|
||||||
|
path: homeassistant/motion_light_pro_dual.yaml
|
||||||
|
input:
|
||||||
|
motion_entity1: binary_sensor.presenza_alta_scala_taverna_occupancy
|
||||||
|
motion_entity2: binary_sensor.presenza_bassa_scala_taverna_occupancy
|
||||||
|
light_target:
|
||||||
|
entity_id: light.luce_scala_taverna
|
||||||
|
no_motion_wait: 40
|
||||||
|
use_sun: false
|
||||||
|
dont_disturb: false
|
||||||
|
- id: '1774187260983'
|
||||||
|
alias: Luce Automatica Taverna-Garage
|
||||||
|
description: Motion light PRO dual per Luce Taverna-Garage
|
||||||
|
use_blueprint:
|
||||||
|
path: homeassistant/motion_light_pro_triple.yaml
|
||||||
|
input:
|
||||||
|
motion_entity1: binary_sensor.presenza_bassa_scala_taverna_occupancy
|
||||||
|
motion_entity2: binary_sensor.presenza_taverna_garage_occupancy
|
||||||
|
motion_entity3: binary_sensor.presenza_taverna_lavanderia_occupancy
|
||||||
|
light_target:
|
||||||
|
entity_id: light.luce_taverna_garage
|
||||||
|
use_sun: false
|
||||||
|
dont_disturb: false
|
||||||
|
no_motion_wait: 60
|
||||||
- id: '1764007463105'
|
- id: '1764007463105'
|
||||||
alias: ETcontroller_fix_limit_copy
|
alias: ETcontroller_fix_limit_copy
|
||||||
description: 'This Automation allows to copy status from MQTT read HP Fix Limit
|
description: 'This Automation allows to copy status from MQTT read HP Fix Limit
|
||||||
@@ -331,6 +308,50 @@
|
|||||||
data_template:
|
data_template:
|
||||||
option: '{{ states(''sensor.fix_hp_level_read'') }}'
|
option: '{{ states(''sensor.fix_hp_level_read'') }}'
|
||||||
mode: single
|
mode: single
|
||||||
|
- id: '1774188925405'
|
||||||
|
alias: Luce Automatica Garage
|
||||||
|
description: ''
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id:
|
||||||
|
- binary_sensor.presenza_garage_occupancy
|
||||||
|
from:
|
||||||
|
- 'off'
|
||||||
|
to:
|
||||||
|
- 'on'
|
||||||
|
id: garage_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id:
|
||||||
|
- binary_sensor.presenza_garage_occupancy
|
||||||
|
from:
|
||||||
|
- 'on'
|
||||||
|
to:
|
||||||
|
- 'off'
|
||||||
|
id: garage_off
|
||||||
|
conditions: []
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- garage_on
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
metadata: {}
|
||||||
|
target:
|
||||||
|
entity_id: light.luce_garage
|
||||||
|
data: {}
|
||||||
|
else:
|
||||||
|
- delay:
|
||||||
|
hours: 0
|
||||||
|
minutes: 3
|
||||||
|
seconds: 0
|
||||||
|
milliseconds: 0
|
||||||
|
- action: light.turn_off
|
||||||
|
metadata: {}
|
||||||
|
target:
|
||||||
|
entity_id: light.luce_garage
|
||||||
|
data: {}
|
||||||
|
mode: single
|
||||||
- id: '1765575450095'
|
- id: '1765575450095'
|
||||||
alias: Xmas-light-mgmt
|
alias: Xmas-light-mgmt
|
||||||
description: ''
|
description: ''
|
||||||
@@ -427,7 +448,7 @@
|
|||||||
- delay:
|
- delay:
|
||||||
hours: 0
|
hours: 0
|
||||||
minutes: 0
|
minutes: 0
|
||||||
seconds: 6
|
seconds: 8
|
||||||
milliseconds: 0
|
milliseconds: 0
|
||||||
- action: switch.turn_off
|
- action: switch.turn_off
|
||||||
metadata: {}
|
metadata: {}
|
||||||
@@ -491,3 +512,69 @@
|
|||||||
title: Persiane di Tiziano
|
title: Persiane di Tiziano
|
||||||
target:
|
target:
|
||||||
- sistemser@alice.it
|
- sistemser@alice.it
|
||||||
|
- id: '1771585465072'
|
||||||
|
alias: Nuova automazione
|
||||||
|
description: ''
|
||||||
|
triggers:
|
||||||
|
- trigger: tag
|
||||||
|
tag_id: fdd88606-1018-4f01-8e7a-792c87c77943
|
||||||
|
conditions: []
|
||||||
|
actions:
|
||||||
|
- action: switch.toggle
|
||||||
|
metadata: {}
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- switch.edelweiss_accesscontol_allarme_disinserito
|
||||||
|
- switch.edelweiss_accesscontol_allarme_inserito
|
||||||
|
data: {}
|
||||||
|
mode: single
|
||||||
|
- id: '1773510003619'
|
||||||
|
alias: SalottoPT-save-energy
|
||||||
|
description: ''
|
||||||
|
use_blueprint:
|
||||||
|
path: homeassistant/heat_save.yaml
|
||||||
|
input:
|
||||||
|
window_sensor: binary_sensor.salottopt_finestra_contact
|
||||||
|
climate_target: climate.salottopt_termosifone
|
||||||
|
ext_temp_limit: 17
|
||||||
|
- id: '1773787966184'
|
||||||
|
alias: SE_fan_automation
|
||||||
|
description: Manages fan under Solaredge Inverter
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id:
|
||||||
|
- sensor.se_heatsink_temp
|
||||||
|
above: 36
|
||||||
|
id: se_fan_on
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id:
|
||||||
|
- sensor.se_heatsink_temp
|
||||||
|
below: 32
|
||||||
|
id: se_fan_off
|
||||||
|
conditions: []
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- se_fan_on
|
||||||
|
sequence:
|
||||||
|
- type: turn_on
|
||||||
|
device_id: e3ed6a2244c1e2ddaeff6f94e96f25e1
|
||||||
|
entity_id: 361d8b711623afed18b3e9397bdae647
|
||||||
|
domain: switch
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- se_fan_off
|
||||||
|
sequence:
|
||||||
|
- type: turn_off
|
||||||
|
device_id: e3ed6a2244c1e2ddaeff6f94e96f25e1
|
||||||
|
entity_id: 361d8b711623afed18b3e9397bdae647
|
||||||
|
domain: switch
|
||||||
|
default:
|
||||||
|
- type: turn_off
|
||||||
|
device_id: e3ed6a2244c1e2ddaeff6f94e96f25e1
|
||||||
|
entity_id: 361d8b711623afed18b3e9397bdae647
|
||||||
|
domain: switch
|
||||||
|
mode: single
|
||||||
|
|||||||
165
blueprints/automation/homeassistant/motion_light_pro_dual.yaml
Normal file
165
blueprints/automation/homeassistant/motion_light_pro_dual.yaml
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
blueprint:
|
||||||
|
name: Motion-activated-Light PRO (dual motion sensors)
|
||||||
|
description: Turn on a light when motion is detected PRO (dual motion sensor)
|
||||||
|
domain: automation
|
||||||
|
author: Tiziano Trabattoni
|
||||||
|
input:
|
||||||
|
motion_entity1:
|
||||||
|
name: Motion-sensor1
|
||||||
|
description: First Sensor motion entity
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
device_class: motion
|
||||||
|
domain: binary_sensor
|
||||||
|
motion_entity2:
|
||||||
|
name: Motion-sensor2
|
||||||
|
description: Second Sensor motion entity
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
device_class: motion
|
||||||
|
domain: binary_sensor
|
||||||
|
light_target:
|
||||||
|
name: Light
|
||||||
|
description: Entity of the Lamp to be controlled
|
||||||
|
selector:
|
||||||
|
target:
|
||||||
|
entity:
|
||||||
|
domain: light
|
||||||
|
use_sun:
|
||||||
|
name: Sun_driven
|
||||||
|
description: Controlled by sunrise and sunset flag
|
||||||
|
default: on
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
dont_disturb:
|
||||||
|
name: dont_disturb_light_control
|
||||||
|
description: Controls if lamp brightness has to be reduced to not disturb
|
||||||
|
default: on
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
no_motion_wait:
|
||||||
|
name: Wait time
|
||||||
|
description: Time to leave the light on after last motion is detected.
|
||||||
|
default: 20
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 300
|
||||||
|
unit_of_measurement: seconds
|
||||||
|
|
||||||
|
# Every motion state change is captured and managed by the script therefore we need to restart by queueing triggers
|
||||||
|
# in this automation the poweroff of light is started only if all managed motion sensor are in clear state (= "off")
|
||||||
|
mode: restart
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity1
|
||||||
|
from: "off"
|
||||||
|
to: "on"
|
||||||
|
id: motion_entity1_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity2
|
||||||
|
from: "off"
|
||||||
|
to: "on"
|
||||||
|
id: motion_entity2_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity1
|
||||||
|
from: "on"
|
||||||
|
to: "off"
|
||||||
|
id: motion_entity1_off
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity2
|
||||||
|
from: "on"
|
||||||
|
to: "off"
|
||||||
|
id: motion_entity2_off
|
||||||
|
|
||||||
|
variables:
|
||||||
|
use_sun_flag: !input use_sun
|
||||||
|
dont_disturb_flag: !input dont_disturb
|
||||||
|
light_target_var: !input light_target
|
||||||
|
motion_entity1_var: !input motion_entity1
|
||||||
|
motion_entity2_var: !input motion_entity2
|
||||||
|
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- motion_entity1_on
|
||||||
|
- motion_entity2_on
|
||||||
|
then:
|
||||||
|
sequence:
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ use_sun_flag }}"
|
||||||
|
then: # Sun and luminescence controlled
|
||||||
|
- if:
|
||||||
|
- or:
|
||||||
|
# external light is LOW (below Helper daylight_luminescence set value)
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}"
|
||||||
|
# after sunrise and before sunset
|
||||||
|
- condition: sun
|
||||||
|
after: sunset
|
||||||
|
after_offset: "-01:00:00"
|
||||||
|
before: sunrise
|
||||||
|
before_offset: "+01:00:00"
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- and:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ dont_disturb_flag }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: 100
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else: # Always active
|
||||||
|
- if:
|
||||||
|
- and:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ dont_disturb_flag }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: 100
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- motion_entity1_off
|
||||||
|
- motion_entity2_off
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(motion_entity1_var,'off') }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(motion_entity2_var,'off') }}"
|
||||||
|
then:
|
||||||
|
- alias: "Wait for delay set before turn off"
|
||||||
|
delay: !input no_motion_wait
|
||||||
|
- alias: "Turn off the light"
|
||||||
|
action: light.turn_off
|
||||||
|
target: !input light_target
|
||||||
142
blueprints/automation/homeassistant/motion_light_pro_single.yaml
Normal file
142
blueprints/automation/homeassistant/motion_light_pro_single.yaml
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
blueprint:
|
||||||
|
name: Motion-activated-Light PRO (singlel motion sensors)
|
||||||
|
description: Turn on a light when motion is detected PRO (single motion sensor)
|
||||||
|
domain: automation
|
||||||
|
author: Tiziano Trabattoni
|
||||||
|
input:
|
||||||
|
motion_entity1:
|
||||||
|
name: Motion-sensor1
|
||||||
|
description: First Sensor motion entity
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
device_class: motion
|
||||||
|
domain: binary_sensor
|
||||||
|
light_target:
|
||||||
|
name: Light
|
||||||
|
description: Entity of the Lamp to be controlled
|
||||||
|
selector:
|
||||||
|
target:
|
||||||
|
entity:
|
||||||
|
domain: light
|
||||||
|
use_sun:
|
||||||
|
name: Sun_driven
|
||||||
|
description: Controlled by sunrise and sunset flag
|
||||||
|
default: on
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
dont_disturb:
|
||||||
|
name: dont_disturb_light_control
|
||||||
|
description: Controls if lamp brightness has to be reduced to not disturb
|
||||||
|
default: on
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
no_motion_wait:
|
||||||
|
name: Wait time
|
||||||
|
description: Time to leave the light on after last motion is detected.
|
||||||
|
default: 20
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 300
|
||||||
|
unit_of_measurement: seconds
|
||||||
|
|
||||||
|
# Every motion state change is captured and managed by the script therefore we need to restart by queueing triggers
|
||||||
|
# in this automation the poweroff of light is started only if all managed motion sensor are in clear state (= "off")
|
||||||
|
mode: restart
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity1
|
||||||
|
from: "off"
|
||||||
|
to: "on"
|
||||||
|
id: motion_entity1_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity1
|
||||||
|
from: "on"
|
||||||
|
to: "off"
|
||||||
|
id: motion_entity1_off
|
||||||
|
|
||||||
|
variables:
|
||||||
|
use_sun_flag: !input use_sun
|
||||||
|
dont_disturb_flag: !input dont_disturb
|
||||||
|
light_target_var: !input light_target
|
||||||
|
motion_entity1_var: !input motion_entity1
|
||||||
|
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- motion_entity1_on
|
||||||
|
then:
|
||||||
|
sequence:
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ use_sun_flag }}"
|
||||||
|
then: # Sun and luminescence controlled
|
||||||
|
- if:
|
||||||
|
- or:
|
||||||
|
# external light is LOW (below Helper daylight_luminescence set value)
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}"
|
||||||
|
# after sunrise and before sunset
|
||||||
|
- condition: sun
|
||||||
|
after: sunset
|
||||||
|
after_offset: "-01:00:00"
|
||||||
|
before: sunrise
|
||||||
|
before_offset: "+01:00:00"
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- and:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ dont_disturb_flag }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: 100
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else: # Always active
|
||||||
|
- if:
|
||||||
|
- and:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ dont_disturb_flag }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: 100
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- motion_entity1_off
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(motion_entity1_var,'off') }}"
|
||||||
|
then:
|
||||||
|
- alias: "Wait for delay set before turn off"
|
||||||
|
delay: !input no_motion_wait
|
||||||
|
- alias: "Turn off the light"
|
||||||
|
action: light.turn_off
|
||||||
|
target: !input light_target
|
||||||
188
blueprints/automation/homeassistant/motion_light_pro_triple.yaml
Normal file
188
blueprints/automation/homeassistant/motion_light_pro_triple.yaml
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
blueprint:
|
||||||
|
name: Motion-activated-Light PRO (triple motion sensors)
|
||||||
|
description: Turn on a light when motion is detected PRO (triple motion sensor)
|
||||||
|
domain: automation
|
||||||
|
author: Tiziano Trabattoni
|
||||||
|
input:
|
||||||
|
motion_entity1:
|
||||||
|
name: Motion-sensor1
|
||||||
|
description: First Sensor motion entity
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
device_class: motion
|
||||||
|
domain: binary_sensor
|
||||||
|
motion_entity2:
|
||||||
|
name: Motion-sensor2
|
||||||
|
description: Second Sensor motion entity
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
device_class: motion
|
||||||
|
domain: binary_sensor
|
||||||
|
motion_entity3:
|
||||||
|
name: Motion-sensor3
|
||||||
|
description: Third Sensor motion entity
|
||||||
|
selector:
|
||||||
|
entity:
|
||||||
|
filter:
|
||||||
|
device_class: motion
|
||||||
|
domain: binary_sensor
|
||||||
|
light_target:
|
||||||
|
name: Light
|
||||||
|
description: Entity of the Lamp to be controlled
|
||||||
|
selector:
|
||||||
|
target:
|
||||||
|
entity:
|
||||||
|
domain: light
|
||||||
|
use_sun:
|
||||||
|
name: Sun_driven
|
||||||
|
description: Controlled by sunrise and sunset flag
|
||||||
|
default: on
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
dont_disturb:
|
||||||
|
name: dont_disturb_light_control
|
||||||
|
description: Controls if lamp brightness has to be reduced to not disturb
|
||||||
|
default: on
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
no_motion_wait:
|
||||||
|
name: Wait time
|
||||||
|
description: Time to leave the light on after last motion is detected.
|
||||||
|
default: 20
|
||||||
|
selector:
|
||||||
|
number:
|
||||||
|
min: 0
|
||||||
|
max: 300
|
||||||
|
unit_of_measurement: seconds
|
||||||
|
|
||||||
|
# Every motion state change is captured and managed by the script therefore we need to restart by queueing triggers
|
||||||
|
# in this automation the poweroff of light is started only if all managed motion sensor are in clear state (= "off")
|
||||||
|
mode: restart
|
||||||
|
max_exceeded: silent
|
||||||
|
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity1
|
||||||
|
from: "off"
|
||||||
|
to: "on"
|
||||||
|
id: motion_entity1_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity2
|
||||||
|
from: "off"
|
||||||
|
to: "on"
|
||||||
|
id: motion_entity2_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity3
|
||||||
|
from: "off"
|
||||||
|
to: "on"
|
||||||
|
id: motion_entity3_on
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity1
|
||||||
|
from: "on"
|
||||||
|
to: "off"
|
||||||
|
id: motion_entity1_off
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity2
|
||||||
|
from: "on"
|
||||||
|
to: "off"
|
||||||
|
id: motion_entity2_off
|
||||||
|
- trigger: state
|
||||||
|
entity_id: !input motion_entity3
|
||||||
|
from: "on"
|
||||||
|
to: "off"
|
||||||
|
id: motion_entity3_off
|
||||||
|
|
||||||
|
variables:
|
||||||
|
use_sun_flag: !input use_sun
|
||||||
|
dont_disturb_flag: !input dont_disturb
|
||||||
|
light_target_var: !input light_target
|
||||||
|
motion_entity1_var: !input motion_entity1
|
||||||
|
motion_entity2_var: !input motion_entity2
|
||||||
|
motion_entity3_var: !input motion_entity3
|
||||||
|
|
||||||
|
actions:
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- motion_entity1_on
|
||||||
|
- motion_entity2_on
|
||||||
|
- motion_entity3_on
|
||||||
|
then:
|
||||||
|
sequence:
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ use_sun_flag }}"
|
||||||
|
then: # Sun and luminescence controlled
|
||||||
|
- if:
|
||||||
|
- or:
|
||||||
|
# external light is LOW (below Helper daylight_luminescence set value)
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}"
|
||||||
|
# after sunrise and before sunset
|
||||||
|
- condition: sun
|
||||||
|
after: sunset
|
||||||
|
after_offset: "-01:00:00"
|
||||||
|
before: sunrise
|
||||||
|
before_offset: "+01:00:00"
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- and:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ dont_disturb_flag }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: 100
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else: # Always active
|
||||||
|
- if:
|
||||||
|
- and:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ dont_disturb_flag }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}"
|
||||||
|
then:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}"
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
else:
|
||||||
|
- action: light.turn_on
|
||||||
|
target: !input light_target
|
||||||
|
data:
|
||||||
|
brightness_pct: 100
|
||||||
|
color_temp_kelvin: 2500
|
||||||
|
- if:
|
||||||
|
- condition: trigger
|
||||||
|
id:
|
||||||
|
- motion_entity1_off
|
||||||
|
- motion_entity2_off
|
||||||
|
- motion_entity3_off
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(motion_entity1_var,'off') }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(motion_entity2_var,'off') }}"
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ is_state(motion_entity3_var,'off') }}"
|
||||||
|
then:
|
||||||
|
- alias: "Wait for delay set before turn off"
|
||||||
|
delay: !input no_motion_wait
|
||||||
|
- alias: "Turn off the light"
|
||||||
|
action: light.turn_off
|
||||||
|
target: !input light_target
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
blueprint:
|
|
||||||
name: Dual Sensor Sunset and Luminescence Motion-activated Light
|
|
||||||
description: Turn on a light when motion is detected (with Sunrise / Sunset / Luminance).
|
|
||||||
domain: automation
|
|
||||||
# source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml
|
|
||||||
author: Tiziano Trabattoni
|
|
||||||
input:
|
|
||||||
motion_entity_down:
|
|
||||||
name: Motion Sensor (Sensore Basso)
|
|
||||||
description: Sensore parte bassa della scala
|
|
||||||
selector:
|
|
||||||
entity:
|
|
||||||
filter:
|
|
||||||
device_class: motion
|
|
||||||
domain: binary_sensor
|
|
||||||
motion_entity_up:
|
|
||||||
name: Motion Sensor (Sensore Alto)
|
|
||||||
description: Sensore parte alta della scala
|
|
||||||
selector:
|
|
||||||
entity:
|
|
||||||
filter:
|
|
||||||
device_class: motion
|
|
||||||
domain: binary_sensor
|
|
||||||
light_target:
|
|
||||||
name: Light
|
|
||||||
selector:
|
|
||||||
target:
|
|
||||||
entity:
|
|
||||||
domain: light
|
|
||||||
sun_condition:
|
|
||||||
name: Sun_driven
|
|
||||||
description: Controlled by sunrise and sunset
|
|
||||||
default: on
|
|
||||||
selector:
|
|
||||||
boolean:
|
|
||||||
dont_disturb_condition:
|
|
||||||
name: dont_disturb_light_control
|
|
||||||
description: Controls if lamp brightness has to be reduced to not disturb
|
|
||||||
default: on
|
|
||||||
selector:
|
|
||||||
boolean:
|
|
||||||
no_motion_wait:
|
|
||||||
name: Wait time
|
|
||||||
description: Time to leave the light on after last motion is detected.
|
|
||||||
default: 30
|
|
||||||
selector:
|
|
||||||
number:
|
|
||||||
min: 10
|
|
||||||
max: 120
|
|
||||||
unit_of_measurement: seconds
|
|
||||||
|
|
||||||
trigger_variables:
|
|
||||||
use_sun: !input sun_condition
|
|
||||||
|
|
||||||
triggers:
|
|
||||||
- trigger: state
|
|
||||||
entity_id:
|
|
||||||
- !input motion_entity_up
|
|
||||||
- !input motion_entity_down
|
|
||||||
to: "on"
|
|
||||||
id: motion-detected
|
|
||||||
- trigger: state
|
|
||||||
entity_id:
|
|
||||||
- !input motion_entity_up
|
|
||||||
- !input motion_entity_down
|
|
||||||
to: "off"
|
|
||||||
for:
|
|
||||||
hours: 0
|
|
||||||
minutes: 0
|
|
||||||
seconds: !input no_motion_wait
|
|
||||||
|
|
||||||
conditions: []
|
|
||||||
|
|
||||||
actions:
|
|
||||||
- choose:
|
|
||||||
- conditions:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ use_sun }}"
|
|
||||||
sequence:
|
|
||||||
# we need to use either external luminescence or sunrise and sunset conditions
|
|
||||||
- if:
|
|
||||||
- or:
|
|
||||||
# external light is LOW (below Helper daylight_luminescence set value)
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}"
|
|
||||||
# after sunrise and before sunset
|
|
||||||
- condition: sun
|
|
||||||
after: sunset
|
|
||||||
after_offset: "-01:00:00"
|
|
||||||
before: sunrise
|
|
||||||
before_offset: "+01:00:00"
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
- condition: trigger
|
|
||||||
id:
|
|
||||||
- motion-detected
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ dont_disturb_condition }}"
|
|
||||||
then:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: states('input_number.dont_disturb_light_brightness')
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
else:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: 100
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
else:
|
|
||||||
- action: light.turn_off
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
transition: 10
|
|
||||||
target: !input light_target
|
|
||||||
default:
|
|
||||||
# the motion light is always active
|
|
||||||
- if:
|
|
||||||
- condition: trigger
|
|
||||||
id:
|
|
||||||
- motion-detected
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ dont_disturb_condition }}"
|
|
||||||
then:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: states('input_number.dont_disturb_light_brightness')
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
else:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: 100
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
else:
|
|
||||||
- action: light.turn_off
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
transition: 10
|
|
||||||
target: !input light_target
|
|
||||||
|
|
||||||
mode: single
|
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
blueprint:
|
|
||||||
name: Tris Sensor Sunset and Luminescence Motion-activated Light
|
|
||||||
description: Turn on a light when motion is detected (with Sunrise / Sunset / Luminance).
|
|
||||||
domain: automation
|
|
||||||
# source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml
|
|
||||||
author: Tiziano Trabattoni
|
|
||||||
input:
|
|
||||||
motion_entity_uno:
|
|
||||||
name: Motion Sensor (Sensore Uno)
|
|
||||||
description: Sensore Uno
|
|
||||||
selector:
|
|
||||||
entity:
|
|
||||||
filter:
|
|
||||||
device_class: motion
|
|
||||||
domain: binary_sensor
|
|
||||||
motion_entity_due:
|
|
||||||
name: Motion Sensor (Sensore Due)
|
|
||||||
description: Sensore Due
|
|
||||||
selector:
|
|
||||||
entity:
|
|
||||||
filter:
|
|
||||||
device_class: motion
|
|
||||||
domain: binary_sensor
|
|
||||||
motion_entity_tre:
|
|
||||||
name: Motion Sensor (Sensore Tre)
|
|
||||||
description: Sensore tre
|
|
||||||
selector:
|
|
||||||
entity:
|
|
||||||
filter:
|
|
||||||
device_class: motion
|
|
||||||
domain: binary_sensor
|
|
||||||
light_target:
|
|
||||||
name: Light
|
|
||||||
selector:
|
|
||||||
target:
|
|
||||||
entity:
|
|
||||||
domain: light
|
|
||||||
sun_condition:
|
|
||||||
name: Sun_driven
|
|
||||||
description: Controlled by sunrise and sunset
|
|
||||||
default: on
|
|
||||||
selector:
|
|
||||||
boolean:
|
|
||||||
|
|
||||||
dont_disturb_condition:
|
|
||||||
name: dont_disturb_light_control
|
|
||||||
description: Controls if lamp brightness has to be reduced to not disturb
|
|
||||||
default: on
|
|
||||||
selector:
|
|
||||||
boolean:
|
|
||||||
|
|
||||||
no_motion_wait:
|
|
||||||
name: Wait time
|
|
||||||
description: Time to leave the light on after last motion is detected.
|
|
||||||
default: 30
|
|
||||||
selector:
|
|
||||||
number:
|
|
||||||
min: 10
|
|
||||||
max: 120
|
|
||||||
unit_of_measurement: seconds
|
|
||||||
|
|
||||||
trigger_variables:
|
|
||||||
use_sun: !input sun_condition
|
|
||||||
# use_dont_disturb: !input dont_disturb_nighttime
|
|
||||||
|
|
||||||
triggers:
|
|
||||||
- trigger: state
|
|
||||||
entity_id:
|
|
||||||
- !input motion_entity_uno
|
|
||||||
- !input motion_entity_due
|
|
||||||
- !input motion_entity_tre
|
|
||||||
to: "on"
|
|
||||||
id: motion-detected
|
|
||||||
- trigger: state
|
|
||||||
entity_id:
|
|
||||||
- !input motion_entity_uno
|
|
||||||
- !input motion_entity_due
|
|
||||||
- !input motion_entity_tre
|
|
||||||
to: "off"
|
|
||||||
for:
|
|
||||||
hours: 0
|
|
||||||
minutes: 0
|
|
||||||
seconds: !input no_motion_wait
|
|
||||||
id: motion-cleared
|
|
||||||
|
|
||||||
conditions: []
|
|
||||||
|
|
||||||
actions:
|
|
||||||
- choose:
|
|
||||||
- conditions:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ use_sun }}"
|
|
||||||
sequence:
|
|
||||||
# we need to use either external luminescence or sunrise and sunset conditions
|
|
||||||
- if:
|
|
||||||
- or:
|
|
||||||
# external light is LOW (below Helper daylight_luminescence set value)
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}"
|
|
||||||
# after sunrise and before sunset
|
|
||||||
- condition: sun
|
|
||||||
after: sunset
|
|
||||||
after_offset: "-01:00:00"
|
|
||||||
before: sunrise
|
|
||||||
before_offset: "+01:00:00"
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
- condition: trigger
|
|
||||||
id:
|
|
||||||
- motion-detected
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ dont_disturb_condition }}"
|
|
||||||
then:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: states('dont_disturb_light_brightness')
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
else:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: 100
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
|
|
||||||
else:
|
|
||||||
- action: light.turn_off
|
|
||||||
target: !input light_target
|
|
||||||
metadata: {}
|
|
||||||
data:
|
|
||||||
transition: 10
|
|
||||||
|
|
||||||
default:
|
|
||||||
# the motion light is always active
|
|
||||||
- if:
|
|
||||||
- condition: trigger
|
|
||||||
id:
|
|
||||||
- motion-detected
|
|
||||||
then:
|
|
||||||
- if:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ dont_disturb_condition }}"
|
|
||||||
then:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: states('dont_disturb_light_brightness')
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
else:
|
|
||||||
- action: light.turn_on
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
brightness_pct: 100
|
|
||||||
color_temp_kelvin: 2500
|
|
||||||
|
|
||||||
else:
|
|
||||||
- action: light.turn_off
|
|
||||||
target: !input light_target
|
|
||||||
data:
|
|
||||||
transition: 10
|
|
||||||
|
|
||||||
mode: single
|
|
||||||
Reference in New Issue
Block a user