Skip to content

Instantly share code, notes, and snippets.

@cjackson234
Created September 10, 2019 20:52
Show Gist options
  • Save cjackson234/9879ca00e621e3803b35079f335180c4 to your computer and use it in GitHub Desktop.
Save cjackson234/9879ca00e621e3803b35079f335180c4 to your computer and use it in GitHub Desktop.
lockmanager.yaml
#################################################################
# Rename your Entity ID's Names for the lock, alarm type & level#
# zwave.lock_front_door_deadbolt, zwave.lock_back_door_deadbolt #
# lock.front_door_lock, lock.back_door_lock #
# sensor.lock_front_door_deadbolt_alarm_type, #
# sensor.lock_front_door_deadbolt_alarm_level #
# sensor.lock_back_door_deadbolt_alarm_type, #
# sensor.lock_back_door_deadbolt_alarm_level #
# also recommend you use the recorder component in your #
# configuration.yaml, as well as the uptime sensor component #
# and for notifications I use pushbullet, but replace with #
# notifier of your choice. #
#################################################################
automation:
- alias: Keypad switch turned on
trigger:
- platform: state
to: 'on'
entity_id:
- input_boolean.door_keypad_1_front_switch
- input_boolean.door_keypad_2_front_switch
- input_boolean.door_keypad_3_front_switch
- input_boolean.door_keypad_4_front_switch
- input_boolean.door_keypad_5_front_switch
- input_boolean.door_keypad_6_front_switch
- input_boolean.door_keypad_7_front_switch
- input_boolean.door_keypad_8_front_switch
- input_boolean.door_keypad_9_front_switch
- input_boolean.door_keypad_10_front_switch
- input_boolean.door_keypad_11_front_switch
- input_boolean.door_keypad_12_front_switch
- input_boolean.door_keypad_13_front_switch
- input_boolean.door_keypad_14_front_switch
- input_boolean.door_keypad_15_front_switch
- input_boolean.door_keypad_16_front_switch
- input_boolean.door_keypad_17_front_switch
- input_boolean.door_keypad_18_front_switch
- input_boolean.door_keypad_1_back_switch
- input_boolean.door_keypad_2_back_switch
- input_boolean.door_keypad_3_back_switch
- input_boolean.door_keypad_4_back_switch
- input_boolean.door_keypad_5_back_switch
- input_boolean.door_keypad_6_back_switch
- input_boolean.door_keypad_7_back_switch
- input_boolean.door_keypad_8_back_switch
- input_boolean.door_keypad_9_back_switch
- input_boolean.door_keypad_10_back_switch
- input_boolean.door_keypad_11_back_switch
- input_boolean.door_keypad_12_back_switch
- input_boolean.door_keypad_13_back_switch
- input_boolean.door_keypad_14_back_switch
- input_boolean.door_keypad_15_back_switch
- input_boolean.door_keypad_16_back_switch
- input_boolean.door_keypad_17_back_switch
- input_boolean.door_keypad_18_back_switch
condition:
- condition: template
value_template: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = "_".join(object_id.split("_")[2:-2]) %}
{% set select_id = 'door_keypad_' ~ code_slot ~ '_access_schedule' %}
{{ states['input_select'][select_id].state in ['Always', 'Enabled'] }}
action:
# if your lock does not end in "door_lock" ie. often its "door_locked" change line 3 below to match
# no other things should need to be changed
- service: lock.set_usercode
data_template:
node_id: >-
{% set object_id = trigger.to_state.object_id %}
{% set lock_name = "_".join(object_id.split("_")[3:-1]) %}
{% set lock_id = '' ~ lock_name ~ '_door_lock' %}
{{ states['lock'][lock_id].attributes.node_id }}
code_slot: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = "_".join(object_id.split("_")[2:-2]) %}
{{ code_slot }}
usercode: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = "_".join(object_id.split("_")[2:-2]) %}
{% set user_code_id = 'door_keypad_' ~ code_slot ~ '_code' %}
{{ states['input_text'][user_code_id].state }}
- alias: Keypad switch turned off
trigger:
- platform: state
to: 'off'
entity_id:
- input_boolean.door_keypad_1_front_switch
- input_boolean.door_keypad_2_front_switch
- input_boolean.door_keypad_3_front_switch
- input_boolean.door_keypad_4_front_switch
- input_boolean.door_keypad_5_front_switch
- input_boolean.door_keypad_6_front_switch
- input_boolean.door_keypad_7_front_switch
- input_boolean.door_keypad_8_front_switch
- input_boolean.door_keypad_9_front_switch
- input_boolean.door_keypad_10_front_switch
- input_boolean.door_keypad_11_front_switch
- input_boolean.door_keypad_12_front_switch
- input_boolean.door_keypad_13_front_switch
- input_boolean.door_keypad_14_front_switch
- input_boolean.door_keypad_15_front_switch
- input_boolean.door_keypad_16_front_switch
- input_boolean.door_keypad_17_front_switch
- input_boolean.door_keypad_18_front_switch
- input_boolean.door_keypad_1_back_switch
- input_boolean.door_keypad_2_back_switch
- input_boolean.door_keypad_3_back_switch
- input_boolean.door_keypad_4_back_switch
- input_boolean.door_keypad_5_back_switch
- input_boolean.door_keypad_6_back_switch
- input_boolean.door_keypad_7_back_switch
- input_boolean.door_keypad_8_back_switch
- input_boolean.door_keypad_9_back_switch
- input_boolean.door_keypad_10_back_switch
- input_boolean.door_keypad_11_back_switch
- input_boolean.door_keypad_12_back_switch
- input_boolean.door_keypad_13_back_switch
- input_boolean.door_keypad_14_back_switch
- input_boolean.door_keypad_15_back_switch
- input_boolean.door_keypad_16_back_switch
- input_boolean.door_keypad_17_back_switch
- input_boolean.door_keypad_18_back_switch
condition:
- condition: template
value_template: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = "_".join(object_id.split("_")[2:-2]) %}
{% set select_id = 'door_keypad_' ~ code_slot ~ '_access_schedule' %}
{{ states['input_select'][select_id].state in ['Always', 'Disabled'] }}
action:
# this is where usercodes get deleted, for the Schlage locks there seems to be an issue with
# clear usercode, setting to 0000 works for some locks, but for the schalge it sets 0000 as a
# valid code, so this sets a random code, of course that means there is an unknown code in the cleared
# slots. If you dont like that set a specific code that only you know
# Update 9/4/18 - I have updated my openzwave for the locks and the clear usercode now works. I have commented
# out the section with the random number. If you are are using the release version you can uncommoment that section
# and comment out the clear user code sections
# - service: lock.set_usercode
# data_template:
# usercode: >-
# {{ range(1000, 9999) | random }}
## if your lock does not end in "door_lock" ie. often its "door_locked" change line 3 below to match
## no other things should need to be changed
# node_id: >-
# {% set object_id = trigger.to_state.object_id %}
# {% set lock_name = "_".join(object_id.split("_")[3:-1]) %}
# {% set lock_id = 'lock_' ~ lock_name ~ '_door_lock' %}
# {{ states['lock'][lock_id].attributes.node_id }}
#
# code_slot: >-
# {% set object_id = trigger.to_state.object_id %}
# {% set code_slot = "_".join(object_id.split("_")[2:-2]) %}
# {{ code_slot }}
- service: lock.clear_usercode
data_template:
node_id: >-
{% set object_id = trigger.to_state.object_id %}
{% set lock_name = "_".join(object_id.split("_")[3:-1]) %}
{% set lock_id = '' ~ lock_name ~ '_door_lock' %}
{{ states['lock'][lock_id].attributes.node_id }}
code_slot: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = "_".join(object_id.split("_")[2:-2]) %}
{{ code_slot }}
- alias: Keypad temporary code start (Front)
trigger:
- platform: state
to: 'True'
entity_id:
- sensor.keypad_1_temp_lock_turn_on
- sensor.keypad_2_temp_lock_turn_on
- sensor.keypad_3_temp_lock_turn_on
- sensor.keypad_4_temp_lock_turn_on
- sensor.keypad_5_temp_lock_turn_on
- sensor.keypad_6_temp_lock_turn_on
- sensor.keypad_7_temp_lock_turn_on
- sensor.keypad_8_temp_lock_turn_on
- sensor.keypad_9_temp_lock_turn_on
- sensor.keypad_10_temp_lock_turn_on
- sensor.keypad_11_temp_lock_turn_on
- sensor.keypad_12_temp_lock_turn_on
- sensor.keypad_13_temp_lock_turn_on
- sensor.keypad_14_temp_lock_turn_on
- sensor.keypad_15_temp_lock_turn_on
# if you changed the name of your switch from "front" change below to match
condition:
- condition: template
value_template: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set input = 'door_keypad_' ~ code_slot ~ '_front_switch' %}
{{ states['input_boolean'][input].state == 'on' }}
action:
- service: lock.set_usercode
data_template:
usercode: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set input = 'door_keypad_' ~ code_slot ~ '_code' %}
{{ states['input_text'][input].state }}
node_id: >-
{{ states['lock']['front_door_lock'].attributes.node_id }}
code_slot: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{{ code_slot }}
- service: notify.pushover
data_template:
message: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set usercode_input = 'door_keypad_' ~ code_slot ~ '_code' %}
{% set usercode = states['input_text'][usercode_input].state %}
{% set name_input = 'door_keypad_' ~ code_slot ~ '_name' %}
{% set name = states['input_text'][name_input].state %}
{% set start_input = 'door_keypad_' ~ code_slot ~ '_date_start' %}
{% set start = states['input_datetime'][start_input].state %}
{% set end_input = 'door_keypad_' ~ code_slot ~ '_date_end' %}
{% set end = states['input_datetime'][end_input].state %}
The pin code {{ usercode }} is now temporarily enabled for {{ name }} from {{ start }} to {{ end }}.
title: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set switch_input = 'door_keypad_' ~ code_slot ~ '_front_switch' %}
{% set switch_name = states['input_boolean'][switch_input].attributes.friendly_name %}
Beach House: Temporary code enabled on {{ switch_name }}
- alias: Keypad temporary code start (Back)
trigger:
- platform: state
to: 'True'
entity_id:
- sensor.keypad_1_temp_lock_turn_on
- sensor.keypad_2_temp_lock_turn_on
- sensor.keypad_3_temp_lock_turn_on
- sensor.keypad_4_temp_lock_turn_on
- sensor.keypad_5_temp_lock_turn_on
- sensor.keypad_6_temp_lock_turn_on
- sensor.keypad_7_temp_lock_turn_on
- sensor.keypad_8_temp_lock_turn_on
- sensor.keypad_9_temp_lock_turn_on
- sensor.keypad_10_temp_lock_turn_on
- sensor.keypad_11_temp_lock_turn_on
- sensor.keypad_12_temp_lock_turn_on
- sensor.keypad_13_temp_lock_turn_on
- sensor.keypad_14_temp_lock_turn_on
- sensor.keypad_15_temp_lock_turn_on
# if you changed the name of your switch from "back" change below to match
condition:
- condition: template
value_template: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set input = 'door_keypad_' ~ code_slot ~ '_back_switch' %}
{{ states['input_boolean'][input].state == 'on' }}
action:
- service: lock.set_usercode
data_template:
usercode: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set input = 'door_keypad_' ~ code_slot ~ '_code' %}
{{ states['input_text'][input].state }}
node_id: >-
{{ states['lock']['back_door_lock'].attributes.node_id }}
code_slot: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{{ code_slot }}
- service: notify.pushover
data_template:
message: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set usercode_input = 'door_keypad_' ~ code_slot ~ '_code' %}
{% set usercode = states['input_text'][usercode_input].state %}
{% set name_input = 'door_keypad_' ~ code_slot ~ '_name' %}
{% set name = states['input_text'][name_input].state %}
{% set start_input = 'door_keypad_' ~ code_slot ~ '_date_start' %}
{% set start = states['input_datetime'][start_input].state %}
{% set end_input = 'door_keypad_' ~ code_slot ~ '_date_end' %}
{% set end = states['input_datetime'][end_input].state %}
The pin code {{ usercode }} is now temporarily enabled for {{ name }} from {{ start }} to {{ end }}.
title: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-18] %}
{% set switch_input = 'door_keypad_' ~ code_slot ~ '_back_switch' %}
{% set switch_name = states['input_boolean'][switch_input].attributes.friendly_name %}
Beach House: Temporary code enabled on {{ switch_name }}
- alias: Keypad temporary code end
trigger:
- platform: state
to: 'True'
entity_id:
- sensor.keypad_1_temp_lock_turn_off
- sensor.keypad_2_temp_lock_turn_off
- sensor.keypad_3_temp_lock_turn_off
- sensor.keypad_4_temp_lock_turn_off
- sensor.keypad_5_temp_lock_turn_off
- sensor.keypad_6_temp_lock_turn_off
- sensor.keypad_7_temp_lock_turn_off
- sensor.keypad_8_temp_lock_turn_off
- sensor.keypad_9_temp_lock_turn_off
- sensor.keypad_10_temp_lock_turn_off
- sensor.keypad_11_temp_lock_turn_off
- sensor.keypad_12_temp_lock_turn_off
- sensor.keypad_13_temp_lock_turn_off
- sensor.keypad_14_temp_lock_turn_off
- sensor.keypad_15_temp_lock_turn_off
# this is where usercodes get deleted, for the Schlage locks there seems to be an issue with
# clear usercode, setting to 0000 works for some locks, but for the schalge it sets 0000 as a
# valid code, so this sets a random code, of course that means there is an unknown code in the cleared
# slots. If you dont like that set a specific code that only you know
# Update 9/4/18 - I have updated my openzwave for the locks and the clear usercode now works. I have commented
# out the section with the random number. If you are are using the release version you can uncommoment that section
# and comment out the clear user code sections
action:
# - service: lock.set_usercode
# data_template:
# usercode: >-
# {{ range(1000, 9999) | random }}
## Front Door Deadbolt. You must put in the zwave node id's here
# node_id: 82
# code_slot: >-
# {% set object_id = trigger.to_state.object_id %}
# {% set code_slot = object_id[7:-19] %}
# {{ code_slot }}
#
# - service: lock.set_usercode
# data_template:
# usercode: >-
# {{ range(1000, 9999) | random }}
## Back Door Deadbolt. You must put in the zwave node id's here
# node_id: 99
# code_slot: >-
# {% set object_id = trigger.to_state.object_id %}
# {% set code_slot = object_id[7:-19] %}
# {{ code_slot }}
- service: lock.clear_usercode
data_template:
# Front Door Deadbolt. You must put in the zwave node id's here
node_id: 8
code_slot: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-19] %}
{{ code_slot }}
- service: lock.clear_usercode
data_template:
# Back Door Deadbolt. You must put in the zwave node id's here
node_id: 7
code_slot: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-19] %}
{{ code_slot }}
- service: notify.pushover
data_template:
message: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-19] %}
{% set usercode_input = 'door_keypad_' ~ code_slot ~ '_code' %}
{% set usercode = states['input_text'][usercode_input].state %}
{% set name_input = 'door_keypad_' ~ code_slot ~ '_name' %}
{% set name = states['input_text'][name_input].state %}
The pin code {{ usercode }} for {{ name }} has now been removed from all doors.
title: "Beach House: Temporary code disabled on all doors"
- condition: and
conditions:
- condition: template
value_template: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-19] %}
{% set input = 'door_keypad_' ~ code_slot ~ '_access_schedule' %}
{% set input_value = states['input_select'][input].state %}
{{ input_value == 'Temporary' }}
- service: script.turn_on
data_template:
entity_id: >-
{% set object_id = trigger.to_state.object_id %}
{% set code_slot = object_id[7:-19] %}
{{ 'script.door_keypad_' ~ code_slot ~ '_delete' }}
- alias: Keypad set random code for one time use
trigger:
- platform: state
to: 'Enabled'
entity_id:
- input_select.door_keypad_16_access_schedule
- input_select.door_keypad_17_access_schedule
- input_select.door_keypad_18_access_schedule
# This just sets the input boolean to a random number. The code wont actually be set until you select the door switch you
# want to use
action:
- service: input_text.set_value
data_template:
entity_id: >
{% set object_id = trigger.to_state.entity_id %}
{% set code_slot = "_".join(object_id.split("_")[3:-2]) %}
{% set user_code_id = 'input_text.door_keypad_' ~ code_slot ~ '_code' %}
{{ user_code_id }}
value: '{{ range(1000, 9999) | random }}'
- alias: Keypad clear code after one time use code is used for 16 through 18
# When the code from slots 16. 17 or 18 are used, this immediately runs the delete script, removing the code from all doors
# notice that the alarm level is used to determine which slot was used, make sure the names match your config. Added condition
# for keypad unlock to keep codes from being deleted when set (Yale Locks did this)
trigger:
- platform: numeric_state
entity_id:
- sensor.lock_front_door_deadbolt_alarm_level
- sensor.lock_back_door_deadbolt_alarm_level
above: 15
below: 19
condition:
- condition: and
conditions:
- condition: or
conditions:
- condition: template
value_template: "{{ states('sensor.front_door_report').lower().startswith('keypad unlock') }}"
- condition: template
value_template: "{{ states('sensor.back_door_report').lower().startswith('keypad unlock') }}"
- condition: numeric_state
entity_id: sensor.ha_runtime_in_minutes
above: 1
action:
- service: script.turn_on
data_template:
entity_id: >
{% set code_slot = trigger.to_state.state %}
{{ 'script.door_keypad_' ~ code_slot ~ '_delete' }}
- service: notify.pushover
data:
message: "door delete test "
title: "Testing of delete script door keypad"
- alias: Keypad clear code after one time use is set to disabled for 16 through 18
# This will also delete the code from all doors when you change the option from enabled to disabled
trigger:
- platform: state
to: 'Disabled'
entity_id:
- input_select.door_keypad_16_access_schedule
- input_select.door_keypad_17_access_schedule
- input_select.door_keypad_18_access_schedule
action:
- service: script.turn_on
data_template:
entity_id: >
{% set object_id = trigger.to_state.entity_id %}
{% set code_slot = "_".join(object_id.split("_")[3:-2]) %}
{% set script_to_run = 'script.door_keypad_' ~ code_slot ~ '_delete' %}
{{ script_to_run }}
- alias: Set Front Door Lock Options
trigger:
- platform: state
entity_id:
- input_select.lock_zwave_option_3_front
- input_select.lock_zwave_option_4_front
- input_select.lock_zwave_option_5_front
- input_select.lock_zwave_option_7_front
- input_select.lock_zwave_option_8_front
- input_select.lock_zwave_option_9_front
- input_select.lock_zwave_option_10_front
- input_select.lock_zwave_option_11_front
- input_select.lock_zwave_option_15_front
- input_select.lock_zwave_option_16_front
action:
- service: zwave.set_config_parameter
data_template:
# Front Door Deadbolt. You must put in the zwave node id's here
node_id: 8
parameter: >-
{% if trigger.entity_id == 'input_select.lock_zwave_option_3_front' %}
3
{% elif trigger.entity_id == 'input_select.lock_zwave_option_4_front' %}
4
{% elif trigger.entity_id == 'input_select.lock_zwave_option_5_front' %}
5
{% elif trigger.entity_id == 'input_select.lock_zwave_option_7_front' %}
7
{% elif trigger.entity_id == 'input_select.lock_zwave_option_8_front' %}
8
{% elif trigger.entity_id == 'input_select.lock_zwave_option_9_front' %}
9
{% elif trigger.entity_id == 'input_select.lock_zwave_option_10_front' %}
10
{% elif trigger.entity_id == 'input_select.lock_zwave_option_11_front' %}
11
{% elif trigger.entity_id == 'input_select.lock_zwave_option_15_front' %}
15
{% elif trigger.entity_id == 'input_select.lock_zwave_option_16_front' %}
16
{% else %}
0
{% endif %}
value: >-
{{ trigger.to_state.state }}
- alias: Set Back Door Lock Options
trigger:
- platform: state
entity_id:
- input_select.lock_zwave_option_3_back
- input_select.lock_zwave_option_4_back
- input_select.lock_zwave_option_5_back
- input_select.lock_zwave_option_7_back
- input_select.lock_zwave_option_8_back
- input_select.lock_zwave_option_9_back
- input_select.lock_zwave_option_10_back
- input_select.lock_zwave_option_11_back
- input_select.lock_zwave_option_15_back
- input_select.lock_zwave_option_16_back
action:
- service: zwave.set_config_parameter
data_template:
# Back Door Deadbolt. You must put in the zwave node id's here
node_id: 7
parameter: >-
{% if trigger.entity_id == 'input_select.lock_zwave_option_3_back' %}
3
{% elif trigger.entity_id == 'input_select.lock_zwave_option_4_back' %}
4
{% elif trigger.entity_id == 'input_select.lock_zwave_option_5_back' %}
5
{% elif trigger.entity_id == 'input_select.lock_zwave_option_7_back' %}
7
{% elif trigger.entity_id == 'input_select.lock_zwave_option_8_back' %}
8
{% elif trigger.entity_id == 'input_select.lock_zwave_option_9_back' %}
9
{% elif trigger.entity_id == 'input_select.lock_zwave_option_10_back' %}
10
{% elif trigger.entity_id == 'input_select.lock_zwave_option_11_back' %}
11
{% elif trigger.entity_id == 'input_select.lock_zwave_option_15_back' %}
15
{% elif trigger.entity_id == 'input_select.lock_zwave_option_16_back' %}
16
{% else %}
0
{% endif %}
value: >-
{{ trigger.to_state.state }}
group:
# you can choose to hide your main entry codes so they will not show in the UI, but, they are still visible in the States
# so its not really possible to hide the codes from the UI at this time.
keypads:
name: Door Lock Information, Codes and Configuration
view: yes
icon: mdi:lock-smart
entities:
- group.door_keypad_1
- group.door_keypad_2
- group.door_keypad_3
- group.door_keypad_4
- group.door_keypad_5
- group.door_keypad_6
- group.door_keypad_7
- group.door_keypad_8
- group.door_keypad_9
- group.door_keypad_10
- group.door_keypad_11
- group.door_keypad_12
- group.door_keypad_13
- group.door_keypad_14
- group.door_keypad_15
- group.door_keypad_16
- group.door_keypad_17
- group.door_keypad_18
- group.zwave_front_door_lock_options
- group.zwave_back_door_lock_options
- group.front_door_info
- group.back_door_info
zwave_front_door_lock_options:
name: Front Door Configuration Options
view: no
entities:
- input_select.lock_zwave_option_3_front
- input_select.lock_zwave_option_4_front
- input_select.lock_zwave_option_5_front
- input_select.lock_zwave_option_7_front
- input_select.lock_zwave_option_8_front
- input_select.lock_zwave_option_9_front
- input_select.lock_zwave_option_10_front
- input_select.lock_zwave_option_11_front
- input_select.lock_zwave_option_15_front
- input_select.lock_zwave_option_16_front
zwave_back_door_lock_options:
name: Back Door Configuration Options
view: no
entities:
- input_select.lock_zwave_option_3_back
- input_select.lock_zwave_option_4_back
- input_select.lock_zwave_option_5_back
- input_select.lock_zwave_option_7_back
- input_select.lock_zwave_option_8_back
- input_select.lock_zwave_option_9_back
- input_select.lock_zwave_option_10_back
- input_select.lock_zwave_option_11_back
- input_select.lock_zwave_option_15_back
- input_select.lock_zwave_option_16_back
front_door_info:
name: Front Door Info
view: no
entities:
- lock.front_door_lock
- sensor.front_door_report
- sensor.frontdoor_code
back_door_info:
name: Back Door Info
entities:
- lock.back_door_lock
- sensor.back_door_report
- sensor.backdoor_code
# again use the names for your locks if named different
door_lock_information:
name: Door Locks
entities:
- lock.back_door_lock
- lock.front_door_lock
door_keypad_1:
control: hidden
name: Entry Code 1
entities:
- input_text.door_keypad_1_name
- input_text.door_keypad_1_code
- input_select.door_keypad_1_access_schedule
- input_datetime.door_keypad_1_date_start
- input_datetime.door_keypad_1_date_end
- input_boolean.door_keypad_1_front_switch
- input_boolean.door_keypad_1_back_switch
- script.door_keypad_1_delete
door_keypad_2:
control: hidden
name: Entry Code 2
entities:
- input_text.door_keypad_2_name
- input_text.door_keypad_2_code
- input_select.door_keypad_2_access_schedule
- input_datetime.door_keypad_2_date_start
- input_datetime.door_keypad_2_date_end
- input_boolean.door_keypad_2_front_switch
- input_boolean.door_keypad_2_back_switch
- script.door_keypad_2_delete
door_keypad_3:
control: hidden
name: Entry Code 3
entities:
- input_text.door_keypad_3_name
- input_text.door_keypad_3_code
- input_select.door_keypad_3_access_schedule
- input_datetime.door_keypad_3_date_start
- input_datetime.door_keypad_3_date_end
- input_boolean.door_keypad_3_front_switch
- input_boolean.door_keypad_3_back_switch
- script.door_keypad_3_delete
door_keypad_4:
control: hidden
name: Entry Code 4
entities:
- input_text.door_keypad_4_name
- input_text.door_keypad_4_code
- input_select.door_keypad_4_access_schedule
- input_datetime.door_keypad_4_date_start
- input_datetime.door_keypad_4_date_end
- input_boolean.door_keypad_4_front_switch
- input_boolean.door_keypad_4_back_switch
- script.door_keypad_4_delete
door_keypad_5:
control: hidden
name: Entry Code 5
entities:
- input_text.door_keypad_5_name
- input_text.door_keypad_5_code
- input_select.door_keypad_5_access_schedule
- input_datetime.door_keypad_5_date_start
- input_datetime.door_keypad_5_date_end
- input_boolean.door_keypad_5_front_switch
- input_boolean.door_keypad_5_back_switch
- script.door_keypad_5_delete
door_keypad_6:
control: hidden
name: Entry Code 6
entities:
- input_text.door_keypad_6_name
- input_text.door_keypad_6_code
- input_select.door_keypad_6_access_schedule
- input_datetime.door_keypad_6_date_start
- input_datetime.door_keypad_6_date_end
- input_boolean.door_keypad_6_front_switch
- input_boolean.door_keypad_6_back_switch
- script.door_keypad_6_delete
door_keypad_7:
control: hidden
name: Entry Code 7
entities:
- input_text.door_keypad_7_name
- input_text.door_keypad_7_code
- input_select.door_keypad_7_access_schedule
- input_datetime.door_keypad_7_date_start
- input_datetime.door_keypad_7_date_end
- input_boolean.door_keypad_7_front_switch
- input_boolean.door_keypad_7_back_switch
- script.door_keypad_7_delete
door_keypad_8:
control: hidden
name: Entry Code 8
entities:
- input_text.door_keypad_8_name
- input_text.door_keypad_8_code
- input_select.door_keypad_8_access_schedule
- input_datetime.door_keypad_8_date_start
- input_datetime.door_keypad_8_date_end
- input_boolean.door_keypad_8_front_switch
- input_boolean.door_keypad_8_back_switch
- script.door_keypad_8_delete
door_keypad_9:
control: hidden
name: Entry Code 9
entities:
- input_text.door_keypad_9_name
- input_text.door_keypad_9_code
- input_select.door_keypad_9_access_schedule
- input_datetime.door_keypad_9_date_start
- input_datetime.door_keypad_9_date_end
- input_boolean.door_keypad_9_front_switch
- input_boolean.door_keypad_9_back_switch
- script.door_keypad_9_delete
door_keypad_10:
control: hidden
name: Entry Code 10
entities:
- input_text.door_keypad_10_name
- input_text.door_keypad_10_code
- input_select.door_keypad_10_access_schedule
- input_datetime.door_keypad_10_date_start
- input_datetime.door_keypad_10_date_end
- input_boolean.door_keypad_10_front_switch
- input_boolean.door_keypad_10_back_switch
- script.door_keypad_10_delete
door_keypad_11:
control: hidden
name: Entry Code 11
entities:
- input_text.door_keypad_11_name
- input_text.door_keypad_11_code
- input_select.door_keypad_11_access_schedule
- input_datetime.door_keypad_11_date_start
- input_datetime.door_keypad_11_date_end
- input_boolean.door_keypad_11_front_switch
- input_boolean.door_keypad_11_back_switch
- script.door_keypad_11_delete
door_keypad_12:
control: hidden
name: Entry Code 12
entities:
- input_text.door_keypad_12_name
- input_text.door_keypad_12_code
- input_select.door_keypad_12_access_schedule
- input_datetime.door_keypad_12_date_start
- input_datetime.door_keypad_12_date_end
- input_boolean.door_keypad_12_front_switch
- input_boolean.door_keypad_12_back_switch
- script.door_keypad_12_delete
door_keypad_13:
control: hidden
name: Entry Code 13
entities:
- input_text.door_keypad_13_name
- input_text.door_keypad_13_code
- input_select.door_keypad_13_access_schedule
- input_datetime.door_keypad_13_date_start
- input_datetime.door_keypad_13_date_end
- input_boolean.door_keypad_13_front_switch
- input_boolean.door_keypad_13_back_switch
- script.door_keypad_13_delete
door_keypad_14:
control: hidden
name: Entry Code 14
entities:
- input_text.door_keypad_14_name
- input_text.door_keypad_14_code
- input_select.door_keypad_14_access_schedule
- input_datetime.door_keypad_14_date_start
- input_datetime.door_keypad_14_date_end
- input_boolean.door_keypad_14_front_switch
- input_boolean.door_keypad_14_back_switch
- script.door_keypad_14_delete
door_keypad_15:
control: hidden
name: Entry Code 15
entities:
- input_text.door_keypad_15_name
- input_text.door_keypad_15_code
- input_select.door_keypad_15_access_schedule
- input_datetime.door_keypad_15_date_start
- input_datetime.door_keypad_15_date_end
- input_boolean.door_keypad_15_front_switch
- input_boolean.door_keypad_15_back_switch
- script.door_keypad_15_delete
door_keypad_16:
control: hidden
name: One Time Use Code 1
entities:
- input_select.door_keypad_16_access_schedule
- input_text.door_keypad_16_name
- input_text.door_keypad_16_code
- input_boolean.door_keypad_16_front_switch
- input_boolean.door_keypad_16_back_switch
- script.door_keypad_16_delete
door_keypad_17:
control: hidden
name: One Time Use Code 2
entities:
- input_select.door_keypad_17_access_schedule
- input_text.door_keypad_17_name
- input_text.door_keypad_17_code
- input_boolean.door_keypad_17_front_switch
- input_boolean.door_keypad_17_back_switch
- script.door_keypad_17_delete
door_keypad_18:
control: hidden
name: One Time Use Code 3
entities:
- input_select.door_keypad_18_access_schedule
- input_text.door_keypad_18_name
- input_text.door_keypad_18_code
- input_boolean.door_keypad_18_front_switch
- input_boolean.door_keypad_18_back_switch
- script.door_keypad_18_delete
input_text:
door_keypad_1_name:
name: Name
door_keypad_1_code:
name: Code
pattern: '[0-9]*'
door_keypad_2_name:
name: Name
door_keypad_2_code:
name: Code
pattern: '[0-9]*'
door_keypad_3_name:
name: Name
door_keypad_3_code:
name: Code
pattern: '[0-9]*'
door_keypad_4_name:
name: Name
door_keypad_4_code:
name: Code
pattern: '[0-9]*'
door_keypad_5_name:
name: Name
door_keypad_5_code:
name: Code
pattern: '[0-9]*'
door_keypad_6_name:
name: Name
door_keypad_6_code:
name: Code
pattern: '[0-9]*'
door_keypad_7_name:
name: Name
door_keypad_7_code:
name: Code
pattern: '[0-9]*'
door_keypad_8_name:
name: Name
door_keypad_8_code:
name: Code
pattern: '[0-9]*'
door_keypad_9_name:
name: Name
door_keypad_9_code:
name: Code
pattern: '[0-9]*'
door_keypad_10_name:
name: Name
door_keypad_10_code:
name: Code
pattern: '[0-9]*'
door_keypad_11_name:
name: Name
door_keypad_11_code:
name: Code
pattern: '[0-9]*'
door_keypad_12_name:
name: Name
door_keypad_12_code:
name: Code
pattern: '[0-9]*'
door_keypad_13_name:
name: Name
door_keypad_13_code:
name: Code
pattern: '[0-9]*'
door_keypad_14_name:
name: Name
door_keypad_14_code:
name: Code
pattern: '[0-9]*'
door_keypad_15_name:
name: Name
door_keypad_15_code:
name: Code
pattern: '[0-9]*'
door_keypad_16_name:
name: Name
door_keypad_16_code:
name: Code
pattern: '[0-9]*'
door_keypad_17_name:
name: Name
door_keypad_17_code:
name: Code
pattern: '[0-9]*'
door_keypad_18_name:
name: Name
door_keypad_18_code:
name: Code
pattern: '[0-9]*'
last_person_to_unlock:
name: Name
input_select:
door_keypad_1_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_2_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_3_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_4_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_5_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_6_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_7_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_8_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_9_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_10_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_11_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_12_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_13_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_14_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_15_access_schedule:
name: Access Schedule
options:
- Always
- Recurring
- Temporary
door_keypad_16_access_schedule:
name: One Time Use
options:
- Disabled
- Enabled
door_keypad_17_access_schedule:
name: One Time Use
options:
- Disabled
- Enabled
door_keypad_18_access_schedule:
name: One Time Use
options:
- Disabled
- Enabled
lock_zwave_option_3_front:
name: Enable or disable the beeper.
options:
- Enable Beeper
- Disable Beeper
lock_zwave_option_4_front:
name: Prevents all user codes from unlocking the deadbolt
options:
- Disable Vacation Mode
- Enable Vacation Mode
lock_zwave_option_5_front:
name: Press the Outside Schlage Button to lock the deadbolt
options:
- Enable Lock & Leave
- Disable Lock & Leave
lock_zwave_option_7_front:
name: Alarm sounds based on door activity
options:
- Alarm Off
- Activity
- Tamper
- Forced Entry
lock_zwave_option_8_front:
name: Activity Alarm Sensitivity
options:
- Medium Sensitivity
- Most Sensitive
- Medium/high Sensitivity
- Medium/low Sensitivity
- Least Sensitivity
lock_zwave_option_9_front:
name: Tamper Alarm Sensitivity
options:
- Medium Sensitivity
- Most Sensitive
- Medium/high Sensitivity
- Medium/low Sensitivity
- Least Sensitivity
lock_zwave_option_10_front:
name: Forced Entry Alarm Sensitivity
options:
- Medium Sensitivity
- Most Sensitive
- Medium/high Sensitivity
- Medium/low Sensitivity
- Least Sensitivity
lock_zwave_option_11_front:
name: Disable Local Alarm Controls
options:
- Enable local alarm controls
- Disable local alarm controls
lock_zwave_option_15_front:
name: Auto lock
options:
- Disable auto lock
- Enable auto lock
lock_zwave_option_16_front:
name: User code pin length (changing Length erases all codes)
options:
- 4
- 5
- 6
- 7
- 8
lock_zwave_option_3_back:
name: Enable or disable the beeper.
options:
- Enable Beeper
- Disable Beeper
lock_zwave_option_4_back:
name: Prevents all user codes from unlocking the deadbolt
options:
- Disable Vacation Mode
- Enable Vacation Mode
lock_zwave_option_5_back:
name: Press the Outside Schlage Button to lock the deadbolt
options:
- Enable Lock & Leave
- Disable Lock & Leave
lock_zwave_option_7_back:
name: Alarm sounds based on door activity
options:
- Alarm Off
- Activity
- Tamper
- Forced Entry
lock_zwave_option_8_back:
name: Activity Alarm Sensitivity
options:
- Medium Sensitivity
- Most Sensitive
- Medium/high Sensitivity
- Medium/low Sensitivity
- Least Sensitivity
lock_zwave_option_9_back:
name: Tamper Alarm Sensitivity
options:
- Medium Sensitivity
- Most Sensitive
- Medium/high Sensitivity
- Medium/low Sensitivity
- Least Sensitivity
lock_zwave_option_10_back:
name: Forced Entry Alarm Sensitivity
options:
- Medium Sensitivity
- Most Sensitive
- Medium/high Sensitivity
- Medium/low Sensitivity
- Least Sensitivity
lock_zwave_option_11_back:
name: Disable Local Alarm Controls
options:
- Enable local alarm controls
- Disable local alarm controls
lock_zwave_option_15_back:
name: Auto lock
options:
- Disable auto lock
- Enable auto lock
lock_zwave_option_16_back:
name: User code pin length (changing Length erases all codes)
options:
- 4
- 5
- 6
- 7
- 8
input_datetime:
door_keypad_1_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_1_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_2_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_2_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_3_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_3_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_4_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_4_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_5_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_5_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_6_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_6_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_7_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_7_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_8_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_8_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_9_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_9_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_10_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_10_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_11_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_11_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_12_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_12_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_13_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_13_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_14_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_14_date_end:
name: End Time
has_date: true
has_time: true
door_keypad_15_date_start:
name: Start Time
has_date: true
has_time: true
door_keypad_15_date_end:
name: End Time
has_date: true
has_time: true
input_boolean:
door_keypad_1_front_switch:
name: Front Door
door_keypad_1_back_switch:
name: Back Door
door_keypad_2_front_switch:
name: Front Door
door_keypad_2_back_switch:
name: Back Door
door_keypad_3_front_switch:
name: Front Door
door_keypad_3_back_switch:
name: Back Door
door_keypad_4_front_switch:
name: Front Door
door_keypad_4_back_switch:
name: Back Door
door_keypad_5_front_switch:
name: Front Door
door_keypad_5_back_switch:
name: Back Door
door_keypad_6_front_switch:
name: Front Door
door_keypad_6_back_switch:
name: Back Door
door_keypad_7_front_switch:
name: Front Door
door_keypad_7_back_switch:
name: Back Door
door_keypad_8_front_switch:
name: Front Door
door_keypad_8_back_switch:
name: Back Door
door_keypad_9_front_switch:
name: Front Door
door_keypad_9_back_switch:
name: Back Door
door_keypad_10_front_switch:
name: Front Door
door_keypad_10_back_switch:
name: Back Door
door_keypad_11_front_switch:
name: Front Door
door_keypad_11_back_switch:
name: Back Door
door_keypad_12_front_switch:
name: Front Door
door_keypad_12_back_switch:
name: Back Door
door_keypad_13_front_switch:
name: Front Door
door_keypad_13_back_switch:
name: Back Door
door_keypad_14_front_switch:
name: Front Door
door_keypad_14_back_switch:
name: Back Door
door_keypad_15_front_switch:
name: Front Door
door_keypad_15_back_switch:
name: Back Door
door_keypad_16_front_switch:
name: Front Door
door_keypad_16_back_switch:
name: Back Door
door_keypad_17_front_switch:
name: Front Door
door_keypad_17_back_switch:
name: Back Door
door_keypad_18_front_switch:
name: Front Door
door_keypad_18_back_switch:
name: Back Door
script:
door_keypad_1_delete:
alias: Delete Door Code 1
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_1_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_1_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_1_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_1_front_switch
- input_boolean.door_keypad_1_back_switch
door_keypad_2_delete:
alias: Delete Door Code 2
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_2_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_2_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_2_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_2_front_switch
- input_boolean.door_keypad_2_back_switch
door_keypad_3_delete:
alias: Delete Door Code 3
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_3_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_3_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_3_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_3_front_switch
- input_boolean.door_keypad_3_back_switch
door_keypad_4_delete:
alias: Delete Door Code 4
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_4_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_4_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_4_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_4_front_switch
- input_boolean.door_keypad_4_back_switch
door_keypad_5_delete:
alias: Delete Door Code 5
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_5_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_5_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_5_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_5_front_switch
- input_boolean.door_keypad_5_back_switch
door_keypad_6_delete:
alias: Delete Door Code 6
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_6_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_6_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_6_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_6_front_switch
- input_boolean.door_keypad_6_back_switch
door_keypad_7_delete:
alias: Delete Door Code 7
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_7_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_7_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_7_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_7_front_switch
- input_boolean.door_keypad_7_back_switch
door_keypad_8_delete:
alias: Delete Door Code 8
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_8_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_8_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_8_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_8_front_switch
- input_boolean.door_keypad_8_back_switch
door_keypad_9_delete:
alias: Delete Door Code 9
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_9_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_9_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_9_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_9_front_switch
- input_boolean.door_keypad_9_back_switch
door_keypad_10_delete:
alias: Delete Door Code 10
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_10_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_10_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_10_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_10_front_switch
- input_boolean.door_keypad_10_back_switch
door_keypad_11_delete:
alias: Delete Door Code 11
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_11_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_11_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_11_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_11_front_switch
- input_boolean.door_keypad_11_back_switch
door_keypad_12_delete:
alias: Delete Door Code 12
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_12_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_12_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_12_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_12_front_switch
- input_boolean.door_keypad_12_back_switch
door_keypad_13_delete:
alias: Delete Door Code 13
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_13_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_13_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_13_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_13_front_switch
- input_boolean.door_keypad_13_back_switch
door_keypad_14_delete:
alias: Delete Door Code 14
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_14_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_14_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_14_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_14_front_switch
- input_boolean.door_keypad_14_back_switch
door_keypad_15_delete:
alias: Delete Door Code 15
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_15_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_15_code
- service: input_select.select_option
data:
option: 'Always'
entity_id: input_select.door_keypad_15_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_15_front_switch
- input_boolean.door_keypad_15_back_switch
door_keypad_16_delete:
alias: Delete Door Code 16
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_16_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_16_code
- service: input_select.select_option
data:
option: 'Disabled'
entity_id: input_select.door_keypad_16_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_16_front_switch
- input_boolean.door_keypad_16_back_switch
door_keypad_17_delete:
alias: Delete Door Code 17
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_17_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_17_code
- service: input_select.select_option
data:
option: 'Disabled'
entity_id: input_select.door_keypad_17_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_17_front_switch
- input_boolean.door_keypad_17_back_switch
door_keypad_18_delete:
alias: Delete Door Code 18
sequence:
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_18_name
- service: input_text.set_value
data:
value: ''
entity_id: input_text.door_keypad_18_code
- service: input_select.select_option
data:
option: 'Disabled'
entity_id: input_select.door_keypad_18_access_schedule
- service: input_boolean.turn_off
entity_id:
- input_boolean.door_keypad_18_front_switch
- input_boolean.door_keypad_18_back_switch
sensor:
- platform: template
sensors:
keypad_1_temp_lock_turn_on:
friendly_name: Turn keypad 1 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_1_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_1_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_2_temp_lock_turn_on:
friendly_name: Turn keypad 2 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_2_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_2_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_3_temp_lock_turn_on:
friendly_name: Turn keypad 3 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_3_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_3_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_4_temp_lock_turn_on:
friendly_name: Turn keypad 4 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_4_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_4_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_5_temp_lock_turn_on:
friendly_name: Turn keypad 5 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_5_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_5_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_6_temp_lock_turn_on:
friendly_name: Turn keypad 6 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_6_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_6_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_7_temp_lock_turn_on:
friendly_name: Turn keypad 7 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_7_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_7_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_8_temp_lock_turn_on:
friendly_name: Turn keypad 8 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_8_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_8_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_9_temp_lock_turn_on:
friendly_name: Turn keypad 9 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_9_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_9_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_10_temp_lock_turn_on:
friendly_name: Turn keypad 10 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_10_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_10_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_11_temp_lock_turn_on:
friendly_name: Turn keypad 11 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_11_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_11_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_12_temp_lock_turn_on:
friendly_name: Turn keypad 12 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_12_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_12_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_13_temp_lock_turn_on:
friendly_name: Turn keypad 13 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_13_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_13_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_14_temp_lock_turn_on:
friendly_name: Turn keypad 14 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_14_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_14_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_15_temp_lock_turn_on:
friendly_name: Turn keypad 15 on
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_15_date_start'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_15_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_1_temp_lock_turn_off:
friendly_name: Turn keypad 1 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_1_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_1_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_2_temp_lock_turn_off:
friendly_name: Turn keypad 2 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_2_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_2_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_3_temp_lock_turn_off:
friendly_name: Turn keypad 3 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_3_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_3_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_4_temp_lock_turn_off:
friendly_name: Turn keypad 4 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_4_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_4_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_5_temp_lock_turn_off:
friendly_name: Turn keypad 5 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_5_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_5_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_6_temp_lock_turn_off:
friendly_name: Turn keypad 6 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_6_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_6_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_7_temp_lock_turn_off:
friendly_name: Turn keypad 7 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_7_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_7_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_8_temp_lock_turn_off:
friendly_name: Turn keypad 8 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_8_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_8_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_9_temp_lock_turn_off:
friendly_name: Turn keypad 9 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_9_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_9_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_10_temp_lock_turn_off:
friendly_name: Turn keypad 10 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_10_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_10_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_11_temp_lock_turn_off:
friendly_name: Turn keypad 11 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_11_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_11_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_12_temp_lock_turn_off:
friendly_name: Turn keypad 12 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_12_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_12_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_13_temp_lock_turn_off:
friendly_name: Turn keypad 13 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_13_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_13_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_14_temp_lock_turn_off:
friendly_name: Turn keypad 14 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_14_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_14_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
keypad_15_temp_lock_turn_off:
friendly_name: Turn keypad 15 off
entity_id: sensor.date_time
value_template: >-
{% set input = states['input_datetime']['door_keypad_15_date_end'] %}
{% set time_now = states['sensor']['date_time'].state | replace(',', '') ~ ':00' %}
{% set access_schedule = states['input_select']['door_keypad_15_access_schedule'].state %}
{{ (access_schedule == 'Temporary' or access_schedule == 'Recurring') and input.state == time_now }}
# This Sensor uses the alarm type to determine what is happening with the lock. The codes should be standard across locks
# but not all locks will use all values. As before make sure the names matches your locks
back_door_report:
friendly_name: 'Back Door Report'
value_template: >
{% set number = states('sensor.lock_back_door_deadbolt_alarm_level') %}
{% set alarm_type_value = states('sensor.lock_back_door_deadbolt_alarm_type') %}
{% set entity_id = 'input_text.door_keypad_' + number + '_name' %}
{% set user = 'Master' if number == '0' else states(entity_id) %}
{% set alarm_type_value = '24' if (as_timestamp(now())-as_timestamp(states.lock.back_door_lock.last_changed)) < 15 and (as_timestamp(now())-as_timestamp(states.sensor.lock_back_door_deadbolt_alarm_type.last_changed)) > 15 and (states.lock.back_door_lock.state) == 'locked' else alarm_type_value %}
{% set alarm_type_value = '25' if (as_timestamp(now())-as_timestamp(states.lock.back_door_lock.last_changed)) < 15 and (as_timestamp(now())-as_timestamp(states.sensor.lock_back_door_deadbolt_alarm_type.last_changed)) > 15 and (states.lock.back_door_lock.state) == 'unlocked' else alarm_type_value %}
{% set alarm_type_general_actions = {
'0':'No Status Reported',
'9':'Lock Jammed',
'17':'Keypad Lock Jammed',
'21':'Manual Lock',
'22':'Manual Unlock',
'23':'HA Lock Jammed',
'24':'HA Lock',
'25':'HA Unlock',
'26':'Auto Lock Jammed',
'27':'Auto Lock',
'32':'All Codes Deleted',
'161':'Bad Code Entered',
'167':'Battery Low',
'168':'Battery Critical',
'169':'Battery Too Low To Operate Lock' } %}
{% set alarm_type_lock_actions = {
'18':'Keypad Lock',
'19':'Keypad Unlock',
'162':'Lock Code Attempt Outside of Schedule' } %}
{% set alarm_type_code_actions = {
'33':'Code Deleted',
'112':'Code Changed',
'113':'Duplicate Code' } %}
{% if alarm_type_value in alarm_type_code_actions %}
{{ alarm_type_code_actions[alarm_type_value] }} (Code {{ number}})
{% elif alarm_type_value in alarm_type_lock_actions and number == '0' %}
{{ alarm_type_lock_actions[alarm_type_value] }} with Schlage Button
{% elif alarm_type_value in alarm_type_lock_actions %}
{{ alarm_type_lock_actions[alarm_type_value] }} with Code {{ number }} ({{ user }})
{% elif alarm_type_value in alarm_type_general_actions %}
{{ alarm_type_general_actions[alarm_type_value] }}
{% else %}
Unknown Alarm Type Value {{ states('sensor.lock_back_door_deadbolt_alarm_type') }}
{% endif %}
# This sensor will just be a friendly name of whoever unlocked the door, Use for other automations if you want.
backdoor_code:
friendly_name: 'Last Person to unlock with Keypad (Back Door)'
value_template: >
{% set number = states('sensor.lock_back_door_deadbolt_alarm_level') %}
{% set entity_id = 'input_text.door_keypad_' + number + '_name' %}
{% set user = 'Master' if number == '0' else states(entity_id) %}
{{ user }}
front_door_report:
friendly_name: 'Front Door Report'
value_template: >
{% set number = states('sensor.lock_front_door_deadbolt_alarm_level') %}
{% set alarm_type_value = states('sensor.lock_front_door_deadbolt_alarm_type') %}
{% set entity_id = 'input_text.door_keypad_' + number + '_name' %}
{% set user = 'Master' if number == '0' else states(entity_id) %}
{% set alarm_type_value = '24' if (as_timestamp(now())-as_timestamp(states.lock.front_door_lock.last_changed)) < 15 and (as_timestamp(now())-as_timestamp(states.sensor.lock_front_door_deadbolt_alarm_type.last_changed)) > 15 and (states.lock.front_door_lock.state) == 'locked' else alarm_type_value %}
{% set alarm_type_value = '25' if (as_timestamp(now())-as_timestamp(states.lock.front_door_lock.last_changed)) < 15 and (as_timestamp(now())-as_timestamp(states.sensor.lock_front_door_deadbolt_alarm_type.last_changed)) > 15 and (states.lock.front_door_lock.state) == 'unlocked' else alarm_type_value %}
{% set alarm_type_general_actions = {
'0':'No Status Reported',
'9':'Lock Jammed',
'17':'Keypad Lock Jammed',
'21':'Manual Lock',
'22':'Manual Unlock',
'23':'HA Lock Jammed',
'24':'HA Lock',
'25':'HA Unlock',
'26':'Auto Lock Jammed',
'27':'Auto Lock',
'32':'All Codes Deleted',
'161':'Bad Code Entered',
'167':'Battery Low',
'168':'Battery Critical',
'169':'Battery Too Low To Operate Lock' } %}
{% set alarm_type_lock_actions = {
'18':'Keypad Lock',
'19':'Keypad Unlock',
'162':'Lock Code Attempt Outside of Schedule' } %}
{% set alarm_type_code_actions = {
'33':'Code Deleted',
'112':'Code Changed',
'113':'Duplicate Code' } %}
{% if alarm_type_value in alarm_type_code_actions %}
{{ alarm_type_code_actions[alarm_type_value] }} (Code {{ number}})
{% elif alarm_type_value in alarm_type_lock_actions and number == '0' %}
{{ alarm_type_lock_actions[alarm_type_value] }} with Schlage Button
{% elif alarm_type_value in alarm_type_lock_actions %}
{{ alarm_type_lock_actions[alarm_type_value] }} with Code {{ number }} ({{ user }})
{% elif alarm_type_value in alarm_type_general_actions %}
{{ alarm_type_general_actions[alarm_type_value] }}
{% else %}
Unknown Alarm Type Value {{ states('sensor.lock_front_door_deadbolt_alarm_type') }}
{% endif %}
frontdoor_code:
friendly_name: 'Last Person to unlock with Keypad (Front Door)'
value_template: >
{% set number = states('sensor.lock_front_door_deadbolt_alarm_level') %}
{% set entity_id = 'input_text.door_keypad_' + number + '_name' %}
{% set user = 'Master' if number == '0' else states(entity_id) %}
{{ user }}
# Battery info, use your custom name if needed. Also I had some issues that I thought was related to this
# and had this commented out for a while, but it seems to be working well now, so might not be a problem
# if you notice any issues, try commenting this out
door_lock_batteries_front_door:
friendly_name: Front Door Lock Battery Level
value_template: "{% if states.zwave.lock_front_door_deadbolt %}
{{ states.zwave.lock_front_door_deadbolt.attributes.battery_level }}
{% else %}
unknown
{% endif %}"
unit_of_measurement: '%'
icon_template: >-
{% set battery_level = states('sensor.door_lock_batteries_front_door')|int('unknown') %}
{% set battery_round = (battery_level|int / 10)|int * 10 %}
{% if battery_level == 'unknown' %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
door_lock_batteries_back_door:
friendly_name: Back Door Lock Battery Level
value_template: "{% if states.zwave.lock_back_door_deadbolt %}
{{ states.zwave.lock_back_door_deadbolt.attributes.battery_level }}
{% else %}
unknown
{% endif %}"
unit_of_measurement: '%'
icon_template: >-
{% set battery_level = states('sensor.door_lock_batteries_back_door')|int('unknown') %}
{% set battery_round = (battery_level|int / 10)|int * 10 %}
{% if battery_level == 'unknown' %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment