Universal Electronics Inc XHK1-UE

   
Model XHK1-UE
Vendor Universal Electronics Inc
Description Xfinity security keypad
Exposes battery, voltage, occupancy, battery_low, tamper, presence, contact, temperature, action_code, action_transaction, action_zone, action, linkquality
Picture Universal Electronics Inc XHK1-UE

Notes

Arming/Disarming from the server

To set arming mode publish the following payload to zigbee2mqtt/FRIENDLY_NAME/set topic:

{
    "arm_mode": {
        "mode": "arm_all_zones"
    }
}

Valid mode values as per ZCL specifications are disarm, arm_day_zones, arm_night_zones, arm_all_zones, exit_delay, entry_delay, not_ready, in_alarm, arming_stay, arming_night, arming_away.

Arming/Disarming from the keypad

When an attempt to set arm mode is done on the keypad, Zigbee2MQTT will publish the following payload to topic zigbee2mqtt/FRIENDLY_NAME:

{
    "action": "arm_all_zones", // This is the example
    "action_code": "123", // The code being entered
    "action_zone": 0, // The zone being armed (always 0)
    "action_transaction": 99 // The transaction number
}

The automation server must validate the request and send a notification to the keypad, confirming or denying the request.

Do so by sending the following payload to zigbee2mqtt/FRIENDLY_NAME/set:

{
    "arm_mode": {
        "transaction": 99, // Transaction number (this must be the same as the keypad request `action_transaction`)
        "mode": "arm_all_zones" // Mode (this must be the same as the keypad request `action`)
    }
}

Valid mode values are disarm, arm_day_zones, arm_night_zones, arm_all_zones, invalid_code, not_ready, already_disarmed

The automation server must follow the notification with an actual change to the correct arm mode. For the example above, the server should respond with exit_delay, count the elapsed time (e.g 30 secs), then change mode again to arm_all_zones (see “Arming/Disarming from the server” section above)

Options

How to use device type specific configuration

  • temperature_precision: Number of digits after decimal point for temperature, takes into effect on next report of device. The value must be a number with a minimum value of 0 and with a with a maximum value of 3

  • temperature_calibration: Calibrates the temperature value (absolute offset), takes into effect on next report of device. The value must be a number.

  • occupancy_timeout: Time in seconds after which occupancy is cleared after detecting it (default 90 seconds). The value must be a number with a minimum value of 0

Exposes

Battery (numeric)

Remaining battery in %, can take up to 24 hours before reported.. Value can be found in the published state on the battery property. It’s not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.

Voltage (numeric)

Voltage of the battery in millivolts. Value can be found in the published state on the voltage property. It’s not possible to read (/get) or write (/set) this value. The unit of this value is mV.

Occupancy (binary)

Indicates whether the device detected occupancy. Value can be found in the published state on the occupancy property. It’s not possible to read (/get) or write (/set) this value. If value equals true occupancy is ON, if false OFF.

Battery_low (binary)

Indicates if the battery of this device is almost empty. Value can be found in the published state on the battery_low property. It’s not possible to read (/get) or write (/set) this value. If value equals true battery_low is ON, if false OFF.

Tamper (binary)

Indicates whether the device is tampered. Value can be found in the published state on the tamper property. It’s not possible to read (/get) or write (/set) this value. If value equals true tamper is ON, if false OFF.

Presence (binary)

Indicates whether the device detected presence. Value can be found in the published state on the presence property. It’s not possible to read (/get) or write (/set) this value. If value equals true presence is ON, if false OFF.

Contact (binary)

Indicates if the contact is closed (= true) or open (= false). Value can be found in the published state on the contact property. It’s not possible to read (/get) or write (/set) this value. If value equals false contact is ON, if true OFF.

Temperature (numeric)

Measured temperature value. Value can be found in the published state on the temperature property. It’s not possible to read (/get) or write (/set) this value. The unit of this value is °C.

Action_code (numeric)

Pin code introduced.. Value can be found in the published state on the action_code property. It’s not possible to read (/get) or write (/set) this value.

Action_transaction (numeric)

Last action transaction number.. Value can be found in the published state on the action_transaction property. It’s not possible to read (/get) or write (/set) this value.

Action_zone (text)

Alarm zone. Default value 0. Value can be found in the published state on the action_zone property. It’s not possible to read (/get) or write (/set) this value.

Action (enum)

Triggered action (e.g. a button click). Value can be found in the published state on the action property. It’s not possible to read (/get) or write (/set) this value. The possible values are: disarm, arm_day_zones, identify, arm_night_zones, arm_all_zones, exit_delay, emergency.

Linkquality (numeric)

Link quality (signal strength). Value can be found in the published state on the linkquality property. It’s not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 255. The unit of this value is lqi.