Maybe the easiest blueprint I’ve ever seen, 3 things to fill and done. Thank you for your work. Keep up the good stuff!
Thank you for making this, makes it so much easier to integrate the keypad. Had a a bit of a fight to get the device functioning but suddenly it worked.
It would be awesome if you could add support for the SOS button, maybe just the option to link an action to it.
@neliss " * Other (communication error or similar): communication icon will blink green for 5 seconds, then becomes red, followed by 3 beeps."
So this is happening to me when trying to set a pin for the first time on the linkind keypad. How do I resolve?
For this blueprint to work correctly, you should initially tell the linkind keypad which state the alarm is in.
What I did is arm + disarm the alarm once, via the HA entity directly (or via alarmo-card).
Afterwards the linkind keypad showed the correct state (the icon with LED) and commands are handled correctly.
Note that you don’t set (store) the pin on the keypad, but in Alarmo.
I can’t disable or enable alarm of the keypad via HA. The thing is literally not showing me what all you guys see. Very frustrating to get this keypad working.
This is what I see in entities. No option to arm or disarm in there.
Install Alarmo first. This will create the alarm_control_panel entity you will be controlling via the keypad. Please read the description carefully.
I am using this blueprint and it is amazing. The only difference is my keypad Universal Electronics Inc XHK1-UE control via MQTT | Zigbee2MQTT also has an arm_night_zones
button. I am trying to tweak the blueprint to make this work as well but its a bit over my head. Any guidance would be greatly appreciated!
EDIT: I did figure out how to add the armed night mode to the blueprint and have it working on my end. If you would like me to share the changes, I am happy to. I don’t want to hijack your great work and make a new one.
Did you end up publishing your blueprint?
I did not but it is working great. I will put it up when I get home tonight.
That would be awesome!
Perhaps we can add your improvements to this blueprint?
I would prefer if we can provide a ‘one fits all’ solution to the user.
What is contained by this blueprint so far is based on what my own linkind keypad supports.
I have the same keypad, the xfinity. It gets the state from alarmo (the led and keypads change color) but nothing seems to happen when I use the pin on the keypad (the alarm state never updates). Any advice?
Sounds good to me. Ill post it up. I am using it with multiple keypads now. I do need a separate automation for each keypad. I suppose it would be amazing if there was 1 automation which could control as many keypads as possible, but thats a bit over my head.
blueprint:
name: Alarmo Keypad Sync - JD Rev
description: Keypad sync with Alarmo - JD Rev
domain: automation
input:
state_topic:
name: MQTT State Topic of your Zigbee2MQTT Keypad
description: 'The State Topic is composed of your Zigbee2MQTT base_topic (see
your Z2M Addon Configuration) and the Friendly Name of your keypad in Z2M.
Example: zigbee2mqtt/Keypad'
selector:
text: {}
set_topic:
name: MQTT Set Topic of your Zigbee2MQTT Keypad
description: 'This is the same as your State Topic, with the addition of /set.
Example: zigbee2mqtt/Keypad/set'
selector:
text: {}
entity:
name: Alarmo entity
description: An alarm control panel entity from alarmo.
selector:
entity:
domain: alarm_control_panel
integration: alarmo
multiple: false
trigger:
- platform: state
entity_id: !input entity
to: disarmed
id: to_state_armed_night
- platform: state
entity_id: !input entity
to: disarmed
id: to_state_disarmed
- platform: state
entity_id: !input entity
to: armed_home
id: to_state_armed_home
- platform: state
entity_id: !input entity
to: armed_away
id: to_state_armed_away
- platform: state
entity_id: !input entity
to: arming
id: to_state_arming
- platform: state
entity_id: !input entity
to: pending
id: to_state_pending
- platform: state
entity_id: !input entity
to: triggered
id: to_state_triggered
- platform: mqtt
topic: !input state_topic
id: keypad_command
- platform: event
event_type: alarmo_failed_to_arm
id: event_arm_failure
- platform: event
event_type: alarmo_command_success
id: event_command_success
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: to_state_disarmed
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"disarm\"\n }\n}"
- conditions:
- condition: trigger
id: to_state_armed_home
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"arm_day_zones\"\n }\n}"
- conditions:
- condition: trigger
id: to_state_armed_night
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"arm_night_zones\"\n }\n}"
- conditions:
- condition: trigger
id: to_state_armed_away
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"arm_all_zones\"\n }\n}"
- conditions:
- condition: trigger
id: to_state_arming
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"exit_delay\"\n }\n}"
- conditions:
- condition: trigger
id: to_state_pending
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"entry_delay\"\n }\n}"
- conditions:
- condition: trigger
id: to_state_triggered
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"mode\": \"in_alarm\"\n }\n}"
- conditions:
- condition: trigger
id: keypad_command
sequence:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.payload_json.action == "disarm" }}'
sequence:
- service: alarmo.disarm
data:
entity_id: !input entity
code: '{{ trigger.payload_json.action_code }}'
context_id: '{{ trigger.payload_json.action_transaction }}'
- conditions:
- condition: template
value_template: '{{ trigger.payload_json.action == "arm_all_zones" }}'
sequence:
- service: alarmo.arm
data:
entity_id: !input entity
mode: away
code: '{{ trigger.payload_json.action_code }}'
context_id: '{{ trigger.payload_json.action_transaction }}'
- conditions:
- condition: template
value_template: '{{ trigger.payload_json.action == "arm_day_zones" }}'
sequence:
- service: alarmo.arm
data:
entity_id: !input entity
mode: home
code: '{{ trigger.payload_json.action_code }}'
context_id: '{{ trigger.payload_json.action_transaction }}'
- conditions:
- condition: template
value_template: '{{ trigger.payload_json.action == "arm_night_zones" }}'
sequence:
- service: alarmo.arm
data:
entity_id: !input entity
mode: home
code: '{{ trigger.payload_json.action_code }}'
context_id: '{{ trigger.payload_json.action_transaction }}'
- conditions:
- condition: trigger
id: event_arm_failure
sequence:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.event.data.reason == ''invalid_code'' }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"invalid_code\"\n }\n}"
- conditions:
- condition: template
value_template: '{{ trigger.event.data.reason == ''open_sensors'' }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"not_ready\"\n }\n}"
- conditions:
- condition: template
value_template: '{{ trigger.event.data.reason == ''not_allowed'' }}'
- condition: template
value_template: '{{ trigger.event.data.command|lower == ''disarm'' }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"already_disarmed\"\n }\n}"
- conditions:
- condition: trigger
id: event_command_success
sequence:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.event.data.action == ''arm'' }}'
- condition: template
value_template: '{{ trigger.event.data.context_id != null }}'
- condition: template
value_template: '{{ trigger.event.data.mode == ''away'' }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"arm_all_zones\"\n }\n}"
- conditions:
- condition: template
value_template: '{{ trigger.event.data.action == ''arm'' }}'
- condition: template
value_template: '{{ trigger.event.data.context_id != null }}'
- condition: template
value_template: '{{ trigger.event.data.mode == ''home'' }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"arm_day_zones\"\n }\n}"
- conditions:
- condition: template
value_template: '{{ trigger.event.data.action == ''arm'' }}'
- condition: template
value_template: '{{ trigger.event.data.context_id != null }}'
- condition: template
value_template: '{{ trigger.event.data.mode == ''home'' }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"arm_night_zones\"\n }\n}"
- conditions:
- condition: template
value_template: '{{ trigger.event.data.action == ''disarm'' }}'
- condition: template
value_template: '{{ trigger.event.data.context_id != null }}'
sequence:
- service: mqtt.publish
data_template:
topic: !input set_topic
payload: "{\n \"arm_mode\": \n {\n \"transaction\": {{ trigger.event.data.context_id
}},\n \"mode\": \"disarm\"\n }\n}"
mode: parallel
max: 10
Thanks for posting it!
For me, disarm works with just the code. Arming requires me to hit the arming mode button and than any 4 digits trigger it to be set. Would be nice if the button alone did it, but it seems to be a hardware related limitation that a code is required to send the arm command.
Hmmm. That’s what I’ve been trying. Thanks for the advice I appreciate the feedback. I’ll have to do more debugging.
Have you checked the logs in zigbee2mqtt?
Yeah I have. It looks correct to me (see example output):
Zigbee2MQTT:info 2022-09-07 09:22:57: MQTT publish: topic 'zigbee2mqtt/Kitchen Door Keypad', payload '{"action":"arm_all_zones","action_code":"1234","action_zone":23,"battery":100,"battery_low":false,"contact":true,"linkquality":0,"occupancy":false,"tamper":false,"temperature":20,"voltage":6300}'
Great work.
Do you have entry delay working?
Got it more or less all working except the entry delay.