170 lines
5.8 KiB
YAML
170 lines
5.8 KiB
YAML
---
|
|
zigbee2mqtt:
|
|
# Input select for Zigbee2MQTT debug level
|
|
input_select:
|
|
zigbee2mqtt_log_level:
|
|
name: Zigbee2MQTT Log Level
|
|
options:
|
|
- debug
|
|
- info
|
|
- warning
|
|
- error
|
|
initial: warning
|
|
icon: mdi:format-list-bulleted
|
|
|
|
# Input number for joining time remaining (in minutes)
|
|
input_number:
|
|
zigbee2mqtt_join_minutes:
|
|
name: "Zigbee2MQTT join minutes"
|
|
initial: 2
|
|
min: 1
|
|
max: 5
|
|
step: 1
|
|
mode: slider
|
|
|
|
# Input text to input Zigbee2MQTT friendly_name for scripts
|
|
input_text:
|
|
zigbee2mqtt_old_name:
|
|
name: Zigbee2MQTT Old Name
|
|
initial: ""
|
|
zigbee2mqtt_new_name:
|
|
name: Zigbee2MQTT New Name
|
|
initial: ""
|
|
zigbee2mqtt_remove:
|
|
name: Zigbee2MQTT Remove
|
|
initial: ""
|
|
|
|
# Input boolean to set the force remove flag for devices
|
|
input_boolean:
|
|
zigbee2mqtt_force_remove:
|
|
name: Zigbee2MQTT Force Remove
|
|
initial: False
|
|
icon: mdi:alert-remove
|
|
|
|
# Scripts for renaming & removing devices
|
|
script:
|
|
zigbee2mqtt_rename:
|
|
alias: Zigbee2MQTT Rename
|
|
sequence:
|
|
service: mqtt.publish
|
|
data_template:
|
|
topic: zigbee2mqtt/bridge/request/device/rename
|
|
payload: >-
|
|
{
|
|
"from": "{{ states.input_text.zigbee2mqtt_old_name.state | string }}",
|
|
"to": "{{ states.input_text.zigbee2mqtt_new_name.state | string }}"
|
|
}
|
|
zigbee2mqtt_remove:
|
|
alias: Zigbee2MQTT Remove
|
|
sequence:
|
|
service: mqtt.publish
|
|
data_template:
|
|
topic: zigbee2mqtt/bridge/request/device/remove
|
|
payload: >-
|
|
{
|
|
"id": "{{ states.input_text.zigbee2mqtt_remove.state | string }}",
|
|
"force": {% if states.input_boolean.zigbee2mqtt_force_remove.state == "off" %}false{% else %}true{% endif %}
|
|
}
|
|
|
|
# Timer for joining time remaining (254 sec)
|
|
timer:
|
|
zigbee_permit_join:
|
|
name: Time remaining
|
|
duration: 254
|
|
|
|
mqtt:
|
|
sensor:
|
|
# Sensor for monitoring the bridge state
|
|
- name: Zigbee2MQTT Bridge state
|
|
unique_id: zigbee2mqtt_bridge_state_sensor
|
|
state_topic: "zigbee2mqtt/bridge/state"
|
|
icon: mdi:router-wireless
|
|
# Sensor for Showing the Zigbee2MQTT Version
|
|
- name: Zigbee2MQTT Version
|
|
unique_id: zigbee2mqtt_version_sensor
|
|
state_topic: "zigbee2mqtt/bridge/info"
|
|
value_template: "{{ value_json.version }}"
|
|
icon: mdi:zigbee
|
|
# Sensor for Showing the Coordinator Version
|
|
- name: Zigbee2MQTT Coordinator Version
|
|
unique_id: zigbee2mqtt_coordinator_version_sensor
|
|
state_topic: "zigbee2mqtt/bridge/info"
|
|
value_template: "{{ value_json.coordinator.meta.revision }}"
|
|
icon: mdi:chip
|
|
- name: Zigbee2mqtt Networkmap
|
|
unique_id: zigbee2mqtt_networkmap_sensor
|
|
# if you change base_topic of Zigbee2mqtt, change state_topic accordingly
|
|
state_topic: zigbee2mqtt/bridge/networkmap/raw
|
|
value_template: >-
|
|
{{ now().strftime('%Y-%m-%d %H:%M:%S') }}
|
|
# again, if you change base_topic of Zigbee2mqtt, change json_attributes_topic accordingly
|
|
json_attributes_topic: zigbee2mqtt/bridge/networkmap/raw
|
|
|
|
# Switch for enabling joining
|
|
switch:
|
|
- name: "Zigbee2MQTT Main join"
|
|
unique_id: zigbee2mqtt_main_join_switch
|
|
state_topic: "zigbee2mqtt/bridge/info"
|
|
value_template: "{{ value_json.permit_join | lower }}"
|
|
command_topic: "zigbee2mqtt/bridge/request/permit_join"
|
|
payload_on: "true"
|
|
payload_off: "false"
|
|
|
|
automation:
|
|
# Automation for sending MQTT message on input select change
|
|
- alias: Zigbee2MQTT Log Level
|
|
initial_state: "on"
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_select.zigbee2mqtt_log_level
|
|
action:
|
|
- service: mqtt.publish
|
|
data:
|
|
topic: zigbee2mqtt/bridge/request/config/log_level
|
|
payload: "{{ states('input_select.zigbee2mqtt_log_level') }}"
|
|
# Automation to start timer when enable join is turned on
|
|
- id: zigbee_join_enabled
|
|
alias: Zigbee Join Enabled
|
|
trigger:
|
|
platform: state
|
|
entity_id: switch.zigbee2mqtt_main_join
|
|
to: "on"
|
|
action:
|
|
service: timer.start
|
|
entity_id: timer.zigbee_permit_join
|
|
data_template:
|
|
duration: "{{ '00:0%i:00' % (states('input_number.zigbee2mqtt_join_minutes') | int ) }}"
|
|
# Automation to stop timer when switch turned off and turn off switch when timer finished
|
|
- id: zigbee_join_disabled
|
|
alias: Zigbee Join Disabled
|
|
trigger:
|
|
- platform: event
|
|
event_type: timer.finished
|
|
event_data:
|
|
entity_id: timer.zigbee_permit_join
|
|
- platform: state
|
|
entity_id: switch.zigbee2mqtt_main_join
|
|
to: "off"
|
|
action:
|
|
- service: timer.cancel
|
|
data:
|
|
entity_id: timer.zigbee_permit_join
|
|
- service: switch.turn_off
|
|
entity_id: switch.zigbee2mqtt_main_join
|
|
- id: "zigbee2mqtt_create_notification_on_successful_interview"
|
|
alias: Zigbee Device Joined Notification
|
|
trigger:
|
|
platform: mqtt
|
|
topic: "zigbee2mqtt/bridge/event"
|
|
condition:
|
|
condition: template
|
|
value_template: '{{trigger.payload_json.type == "device_interview" and trigger.payload_json.data.status == "successful" and trigger.payload_json.data.supported}}'
|
|
action:
|
|
- service: persistent_notification.create
|
|
data_template:
|
|
title: Device joined the Zigbee2MQTT network
|
|
message: "Name: {{trigger.payload_json.data.friendly_name}},
|
|
Vendor: {{trigger.payload_json.data.definition.vendor}},
|
|
Model: {{trigger.payload_json.data.definition.model}},
|
|
Description: {{trigger.payload_json.data.definition.description}}"
|