KeyMaster Z-Wave lock manager and scheduler

I am stuck on the part to run the script…not sure where to run it. My HA instance is running on an RPI. I have console access, logged in with root, and tried executing the script from there…I get a result saying “No such file or directory”. Do I need to enter the pull path of the script? Or is there somewhere else I should be executing the script from?

Hey Matt,

Did you change the rights on the file first (chmod +x setup.sh)? If so, then just go to the directory of the script in your console and run the script (./setup.sh).

That’s part of my confusion…I get the “No such file or directory” when trying to run the chmod +x setup.sh command.

Is that something I actually add within the script file itself? Or is it a command to be run from console (or elsewhere)?

Hey All,

Has anyone sorted out the issue with multiple locks yet? It seems like there are several people on here facing the same problem: 1 lock works but when you introduce a second then that second throws an error when attempting to set a code to a position:

LOCK_NAME Clear Code: Error executing script. Invalid data for call_service at pos 1: expected int for dictionary value @ data['code_slot']

If I go into the script and hard code position 1 as the code slot in the clear code automation, I then get:

Error rendering data template: str: Invalid entity ID 'input_text.garagesd_pin_'

I am convinced that code_slot is not properly setting and is likely conflicting with the script of the first lock that is working. Not sure where to go from here… anyone have any luck?

This is a general linux command that changes the rights on a particular file. You should run that command from the terminal window WHILE in the same directory as the setup.sh file

This would only occur if the objects all had the same names, and that won’t happen, so there’s not conflict.

Why not post the bit of code for troubleshooting from the generated yaml?

Thanks to @tmman for getting me pointed in the right direction.

I also ran into the issue others had reported with the error of “lock_manager.ini is incomplete or does not exist”. But, as @firstof9 recommended, running “apk add gawk” before running the script allowed it to run.

I now see the folder created for my front door, with a bunch of yaml files. That said, I did still receive an error from the setup.sh:

Is this going to throw anything off down the line? Or is that just noise? For reference, I am only setting up a front door lock (no sensors or any other locks). And like I said, the frontdoor folder was created and is populated with a bunch of yaml files.

Definitely not good.
Seems like based on the error message maybe you didn’t fill in all the bits in the .ini file

Assuming you’re referring to the lock-manager.ini file, what needs to be set? There isn’t anything in the instructions that talks about it, so I haven’t made any modifications to it.

Edit: also, since it didn’t run without errors, should I delete the frontdoor folder that was created, along with the associated yaml files, then run it again once the lock_manager.ini is set correctly?

I would.

Not sure you’ll need to open it up and read it.

I really don’t know what I’m looking for, but I don’t see anything that appears blank or needing attention. When you went through this configuration, did you need to make any adjustments in your lock_manager.ini?

For my case, I checked lock_manager.ini for a reference to “configuration_lockmanager” (since that is referenced in the error text), and there is nothing in the file for that. Nor is there a reference to “sensorname”.
In the setup script, I searched for those terms and found references on various lines (but not line 32).

I can upload my lock_manager.ini if that is needed for reference, but I pulled it from github yesterday and have made no changes to it.

Post the ini file you setup for your device before you ran setup.sh

Hey,

Thanks for the reply. Here is the code that seems to be erroring out when I attempt to enable a code on my “garagesd” lock:

    - alias: GarageSD Clear Code
      condition:
        - condition: state
          entity_id: 'binary_sensor.allow_automation'
          state: 'on' 
      trigger:
        entity_id: binary_sensor.active_garagesd_1, binary_sensor.active_garagesd_2, binary_sensor.active_garagesd_3, binary_sensor.active_garagesd_4, binary_sensor.active_garagesd_5, binary_sensor.active_garagesd_6
        platform: state
        to: 'off'
      action:
        # - service: lock.clear_usercode
        #   data_template:
        #     node_id: >- 
        #         {{states.lock.schlage_allegion_be469zp_connect_smart_deadbolt_locked_garagesd.attributes.node_id}}
        #     code_slot: >-
        #         {% set object_id = trigger.to_state.object_id %}
        #         {% set index = 17 %}
        #         {% set code_slot = object_id[inex:] %}
        #         {{ code_slot  }}
        - service: lock.set_usercode
          data_template:
            node_id: >- 
              {{states.lock.schlage_allegion_be469zp_connect_smart_deadbolt_locked_garagesd.attributes.node_id}}
            code_slot: >-
              {% set index = 17 %}
              {% set object_id = trigger.to_state.object_id %}
              {% set code_slot = object_id[index:] %}
              {{ code_slot  }}
            usercode: >-
              {{ range(1000, 9999) | random | int }}

Likewise, the code that runs successfully for my “frontdoor” is:

    - alias: FrontDoor Clear Code
      condition:
        - condition: state
          entity_id: 'binary_sensor.allow_automation'
          state: 'on' 
      trigger:
        entity_id: binary_sensor.active_frontdoor_1, binary_sensor.active_frontdoor_2, binary_sensor.active_frontdoor_3, binary_sensor.active_frontdoor_4, binary_sensor.active_frontdoor_5, binary_sensor.active_frontdoor_6
        platform: state
        to: 'off'
      action:
        # - service: lock.clear_usercode
        #   data_template:
        #     node_id: >- 
        #         {{states.lock.schlage_allegion_be469zp_connect_smart_deadbolt_locked_frontdoor.attributes.node_id}}
        #     code_slot: >-
        #         {% set object_id = trigger.to_state.object_id %}
        #         {% set index = 17 %}
        #         {% set code_slot = object_id[inex:] %}
        #         {{ code_slot  }}
        - service: lock.set_usercode
          data_template:
            node_id: >- 
              {{states.lock.schlage_allegion_be469zp_connect_smart_deadbolt_locked_frontdoor.attributes.node_id}}
            code_slot: >-
              {% set index = 17 %}
              {% set object_id = trigger.to_state.object_id %}
              {% set code_slot = object_id[index:] %}
              {{ code_slot  }}
            usercode: >-
              {{ range(1000, 9999) | random | int }}

I have also posted my setup here: https://github.com/tmman2/lockmanager

Thanks!

I’ve posted the lock_manager.ini and frontdoor.ini files (I’m not sure exactly which one you’re referring to).

FrontDoor.ini:

#See README for more information.
[lockmanager]

#number of PINS to setup in lovelace
numcodes=10

#the name or location of the lock you are setting up (no spaces)
lockname="FrontDoor"

#the "lowest common denominator" of the factory lock name.  
lockfactoryname="schlage_allegion_be469_touchscreen_deadbolt"

#The name of the (optional) door sensor.
sensorname="frontdoor sensor"

#the "lowest common denominator" of the factory door sensor name.  
sensorfactoryname="vision_security_zd2105us_5_recessed_door_window_sensor"

#the Home Assistant EntityID of your (optional) garage door
garageentityid="cover.garage_door_opener"

lock_manager.txt:

############  input_number:  #####################  
input_number:
  accesscount_LOCKNAME_TEMPLATENUM:
    name: Access Count
    min: 0
    max: 100
    step: 1
    unit_of_measurement: "Openings Left"

#################  input_datetime:  ##############  
input_datetime:
  end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: false
    has_date: true
  start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: false
    has_date: true

  sun_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  sun_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false

  mon_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  mon_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false

  tue_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  tue_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false

  wed_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  wed_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false

  thu_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  thu_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false

  fri_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  fri_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false

  sat_start_date_LOCKNAME_TEMPLATENUM:
    name: 'Start'
    has_time: true
    has_date: false
  sat_end_date_LOCKNAME_TEMPLATENUM:
    name: 'End'
    has_time: true
    has_date: false


####################  input_text:  ###############  
input_text:
  LOCKNAME_name_TEMPLATENUM:
    name: 'Name'
  LOCKNAME_pin_TEMPLATENUM:
    name: 'PIN'

#################  input_boolean: ################  
input_boolean:
  notify_LOCKNAME_TEMPLATENUM:
    name: 'Notifications'
  daterange_LOCKNAME_TEMPLATENUM:
    name: 'Use Date Range'
  smtwtfs_LOCKNAME_TEMPLATENUM:
    name: 'Use SMTWTFS'
  enabled_LOCKNAME_TEMPLATENUM:
    name: 'Enabled'
  accesslimit_LOCKNAME_TEMPLATENUM:
    name: 'Limit Access Count'
    initial: off
  reset_advanced_LOCKNAME_TEMPLATENUM:
    name: 'Reset Advanaced Options'
    initial: off

  sun_LOCKNAME_TEMPLATENUM:
    name: 'Sunday'
    initial: on

  mon_LOCKNAME_TEMPLATENUM:
    name: 'Monday'
    initial: on

  tue_LOCKNAME_TEMPLATENUM:
    name: 'Tuesday'
    initial: on

  wed_LOCKNAME_TEMPLATENUM:
    name: 'Wednesday'
    initial: on

  thu_LOCKNAME_TEMPLATENUM:
    name: 'Thursday'
    initial: on

  fri_LOCKNAME_TEMPLATENUM:
    name: 'Friday'
    initial: on

  sat_LOCKNAME_TEMPLATENUM:
    name: 'Saturday'
    initial: on

################  automation: #################  
automation:

- alias: reset_advanced_CASE_LOCK_NAME_TEMPLATENUM
  trigger:
    entity_id: input_boolean.reset_advanced_LOCKNAME_TEMPLATENUM
    platform: state
    to: 'on'
  action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.accesscount_LOCKNAME_TEMPLATENUM
        value: "0"
      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.sun_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.sun_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.mon_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.mon_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.tue_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.tue_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.wed_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.wed_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.thu_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.thu_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.fri_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.fri_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.sat_start_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
    - service: input_datetime.set_datetime
      entity_id: input_datetime.sat_end_date_LOCKNAME_TEMPLATENUM
      data_template:
        time: >
          {{  (("00:00")  | timestamp_custom("%H:%M"))  }}      
          
    - service: input_datetime.set_datetime
      entity_id: input_datetime.start_date_LOCKNAME_TEMPLATENUM
      data_template:
        date: >
          {{  (("1980-01-01")  | timestamp_custom("%Y %m %d"))  }}      
          
    - service: input_datetime.set_datetime
      entity_id: input_datetime.end_date_LOCKNAME_TEMPLATENUM
      data_template:
        date: >
          {{  (("1980-01-01")  | timestamp_custom("%Y %m %d"))  }}      

    - service: input_boolean.turn_off
      entity_id: input_boolean.daterange_LOCKNAME_TEMPLATENUM

    - service: input_boolean.turn_off
      entity_id: input_boolean.accesslimit_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_off
      entity_id: input_boolean.reset_advanced_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.sun_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.mon_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.tue_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.wed_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.thu_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.fri_LOCKNAME_TEMPLATENUM
      
    - service: input_boolean.turn_on
      entity_id: input_boolean.sat_LOCKNAME_TEMPLATENUM
      
################  binary_sensor: #################  
binary_sensor:

- platform: template
  sensors:

    enabled_LOCKNAME_TEMPLATENUM:
      value_template: "{{ is_state('input_boolean.enabled_LOCKNAME_TEMPLATENUM', 'on') }}"

    daterange_LOCKNAME_TEMPLATENUM:
      value_template: "{{ (is_state('input_boolean.daterange_LOCKNAME_TEMPLATENUM', 'off') or ((states.input_datetime.start_date_LOCKNAME_TEMPLATENUM.attributes.timestamp| int | timestamp_custom('%Y%m%d', False)|int)|string <= now().strftime('%Y%m%d')) and (states.input_datetime.end_date_LOCKNAME_TEMPLATENUM.attributes.timestamp| int | timestamp_custom('%Y%m%d', False)|int)|string >=  now().strftime('%Y%m%d'))}}"

    sun_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.sun_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.sun_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.sun_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Sunday') and ((states.input_datetime.sun_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.sun_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.sun_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.sun_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"

    mon_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.mon_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.mon_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.mon_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Monday') and ((states.input_datetime.mon_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.mon_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.mon_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.mon_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"

    tue_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.tue_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.tue_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.tue_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Tuesday') and ((states.input_datetime.tue_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.tue_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.tue_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.tue_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"

    wed_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.wed_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.wed_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.wed_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Wednesday') and ((states.input_datetime.wed_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.wed_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.wed_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.wed_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"

    thu_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.thu_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.thu_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.thu_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Thursday') and ((states.input_datetime.thu_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.thu_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.thu_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.thu_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"

    fri_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.fri_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.fri_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.fri_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Friday') and ((states.input_datetime.fri_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.fri_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.fri_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.fri_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"

    sat_LOCKNAME_TEMPLATENUM:
      entity_id:
        - sensor.time
        - input_datetime.sat_start_date_LOCKNAME_TEMPLATENUM
        - input_datetime.sat_end_date_LOCKNAME_TEMPLATENUM
      value_template: "{{ ((is_state('input_boolean.sat_LOCKNAME_TEMPLATENUM', 'on'))) and (strptime(states('sensor.date'), '%Y-%m-%d').strftime('%A') == 'Saturday') and ((states.input_datetime.sat_start_date_LOCKNAME_TEMPLATENUM.state  == states.input_datetime.sat_end_date_LOCKNAME_TEMPLATENUM.state) or ((states('sensor.time') >= states('input_datetime.sat_start_date_LOCKNAME_TEMPLATENUM')[0:5]) and (states('sensor.time') <= states('input_datetime.sat_end_date_LOCKNAME_TEMPLATENUM')[0:5]))) }}"


    smtwtfs_LOCKNAME_TEMPLATENUM:
      friendly_name: "Status"
      value_template: >-
         {{
            is_state('binary_sensor.sun_LOCKNAME_TEMPLATENUM', 'on')  or  
            is_state('binary_sensor.mon_LOCKNAME_TEMPLATENUM', 'on')  or  
            is_state('binary_sensor.tue_LOCKNAME_TEMPLATENUM', 'on')  or  
            is_state('binary_sensor.wed_LOCKNAME_TEMPLATENUM', 'on')  or  
            is_state('binary_sensor.thu_LOCKNAME_TEMPLATENUM', 'on')  or  
            is_state('binary_sensor.fri_LOCKNAME_TEMPLATENUM', 'on')  or  
            is_state('binary_sensor.sat_LOCKNAME_TEMPLATENUM', 'on')   
         }}

    
    access_count_LOCKNAME_TEMPLATENUM:
      friendly_name: "Access Count"
      value_template: >-
         {{
            (is_state('input_boolean.accesslimit_LOCKNAME_TEMPLATENUM', 'off'))  or  
            (states.input_number.accesscount_LOCKNAME_TEMPLATENUM.state | int > 0)
         }}


    active_LOCKNAME_TEMPLATENUM:
      friendly_name: "Status"
      value_template: >-
         {{
            is_state('binary_sensor.enabled_LOCKNAME_TEMPLATENUM', 'on')  and  
            is_state('binary_sensor.access_count_LOCKNAME_TEMPLATENUM', 'on')  and  
            is_state('binary_sensor.daterange_LOCKNAME_TEMPLATENUM', 'on') and
            is_state('binary_sensor.smtwtfs_LOCKNAME_TEMPLATENUM', 'on')  
         }}
      device_class: connectivity


###################  sensor:  ####################

Just post the ini you edited for now. Also please use code blocks when posting… This is too hard to read.

How do you post a code block? I was looking for that option. I’m assuming that’s different from a blockquote.

Also, I figured out my issue. Since I wasn’t setting up a sensor, I didn’t pay any attention to the default sensor name in the FrontDoor.ini file…the default value there is spelled out with a space (“frontdoor sensor”), which it should not have. I removed the space, re-ran the script, and it ran without errors this time.

1 Like

Awesome… I was just about to write that back. Glad you found it. Now make sure you go in and change your entity names to append ‘_frontdoor’ to them, per the instructions.

Yes, did that before I took on the script.

Change:

              {% set index = 17 %}

to

              {% set index = 16 %}

for the one that isn’t working. The index number should change based on the length of the binary_sensor not sure why the script didn’t account for that.

haha, wow… you wouldn’t believe how long I’ve stared at that exact line of code and wondered what it did! Thank you very much, this fixed the problem!!! I replaced that index number in the 2 or 3 other places in the same ini.

@nVINCEble, take a look at this solution… worked for me!