Skip to main content

Library implementing Zigpy quirks for ZHA in Home Assistant

Project description

Build Status

ZHA Device Handlers For Home Assistant

ZHA Device Handlers are custom quirks implementations for Zigpy, the library that provides the Zigbee support for the ZHA component in Home Assistant.

ZHA device handlers bridge the functionality gap created when manufacturers deviate from the ZCL specification, handling deviations and exceptions by parsing custom messages to and from Zigbee devices. Zigbee devices that deviate from or do not fully conform to the standard specifications set by the Zigbee Alliance may require the development of custom ZHA Device Handlers (ZHA custom quirks handler implementation) to for all their functions to work properly with the ZHA component in Home Assistant.

Custom quirks implementations for zigpy implemented as ZHA Device Handlers are a similar concept to that of Hub-connected Device Handlers for the SmartThings Classics platform as well that of Zigbee-Herdsman Converters / Zigbee-Shepherd Converters as used by Zigbee2mqtt, meaning they are virtual representation of a physical device that expose additional functionality that is not provided out-of-the-box by the existing integration between these platforms. See Device Specifics for details.

How to contribute

For specific Zigbee debugging instructions on capturing logs and more, see the contributing guidelines in the CONTRIBUTING.md file:

If you are looking to make your first code contribution to this project then we also suggest that you follow the steps in these guides:

Currently Supported Devices:

CentraLite

Xiaomi Aqara

Osram

SmartThings

Keen Home

Lutron

WAXMANN

Digi

Yale

Tuya-based

  • TS0601 switch: Tuya-based 1-gang switches with neutral (e.g. Lerlink, Lonsonho)

Configuration:

  1. Update Home Assistant to 0.85.1 or a later version.

NOTE: Some devices will need to be unpaired and repaired in order to see sensor values populate in Home Assistant.

Device Specifics:

Centralite

  • All supported devices report battery level
  • Dimmer Switch publishes events to Home Assistant
  • Dimmer Switch temperature sensor is removed because it is non functional
  • 3321-S reports acceleration
  • 3310-S reports humidity

Osram

  • Dimmer Switch publishes events to Home Assistant and reports battery level
  • Dimmer Switch temperature sensor is removed because it is non functional

Xiaomi Aqara

  • All supported devices report battery level
  • All supported devices report temperature but I am unsure if it is correct or accurate
  • Vibration sensor exposes a binary sensor in Home Assistant that reports current vibration state
  • Vibration sensor sends tilt and drop events to Home Assistant
  • Cube sends the following events: flip (90 and 180 degrees), rotate_left, rotate_right, knock, drop, slide and shake
  • Motion sensor exposes binary sensors for motion and occupancy.
  • Button sends events to Home Assistant
  • All supported plugs report power consumption and can be toggled

SmartThings

  • All supported devices report battery level
  • tagV4 exposed as a device tracker in Home Assistant. The current implementation will use batteries rapidly
  • MultiV4 reports acceleration

Lutron

  • Connected bulb remote publishes events to Home Assistant

WAXMANN

  • leakSMART water sensor is exposed as a binary_sensor with DEVICE_CLASS_MOISTURE

Digi XBee

  • Some functionality requires a coordinator device to be XBee as well
  • GPIO pins are exposed to Home Assistant as switches
  • Analog inputs are exposed as sensors
  • PWM output on XBee3 can be controlled by writing 0x0055 (present_value) cluster attribute with zha.set_zigbee_cluster_attribute service
  • Outgoing UART data can be sent with zha.issue_zigbee_cluster_command service
  • Incoming UART data will generate zha_event event.
  • PWM can be controlled with zha.set_zigbee_cluster_attribute service

Please refer to xbee.md for details on configuration and usage examples.

Yale

  • All supported devices report battery level

Testing new releases

Testing a new release of the zha-quirks package before it is released in Home Assistant.

If you are using Supervised Home Assistant (formerly known as the Hassio/Hass.io distro):

If you are instead using some custom python installation of Home Assistant then do this:

  • Activate your python virtual env
  • Update package with pip
    pip install zha-quirks==0.0.38
    
    

Testing quirks in development in docker based install

If you are using Supervised Home Assistant (formerly known as the Hassio/Hass.io distro) you will need to get access to the home-assistant docker container. Directions below are given for using the portainer add-on to do this, there are other methods as well not covered here.

  • Install the portainer add-on (https://github.com/hassio-addons/addon-portainer) from Home Assistant Community Add-ons.

  • Follow the add-on documentation to un-hide the home-assistant container (https://github.com/hassio-addons/addon-portainer/blob/master/portainer/DOCS.md)

  • Stage the update quirk in a directory within your config directory

  • Use portainer to access a console in the home-assistant container:

  • Access the quirks directory

    • on HA > 0.113: /usr/local/lib/python3.8/site-packages/zhaquirks/
    • on HA < 0.113: /usr/local/lib/python3.7/site-packages/zhaquirks/
  • Copy updated/new quirk to zhaquirks directory: cp -a /config/temp/NEW_QUIRK ./

  • Remove the pycache folder so it is regenerated rm -rf ./__pycache__/

  • Close out the console and restart HA.

  • Note: The added/update quirk will not survive a HA version update.

Thanks

  • Special thanks to damarco for the majority of the device tracker code
  • Special thanks to Yoda-x for the Xioami attribute parsing code
  • Special thanks to damarco and Adminiuga for allowing me to bounce ideas off of them and for listening to me ramble

Related projects

Zigpy

zigpy is Zigbee protocol stack integration project to implement the Zigbee Home Automation standard as a Python 3 library. Zigbee Home Automation integration with zigpy allows you to connect one of many off-the-shelf Zigbee adapters using one of the available Zigbee radio library modules compatible with zigpy to control Zigbee based devices. There is currently support for controlling Zigbee device types such as binary sensors (e.g., motion and door sensors), sensors (e.g., temperature sensors), lightbulbs, switches, locks, fans, covers (blinds, marquees, and more). A working implementation of zigpy exist in Home Assistant (Python based open source home automation software) as part of its ZHA component

ZHA Map

zha-map project allow building a Zigbee network topology map for ZHA component in Home Assistant.

zha-network-visualization-card

zha-network-visualization-card is a custom Lovelace element for visualizing the Zigbee network map for ZHA component in Home Assistant.

ZHA Network Card

zha-network-card is a custom Lovelace card that displays ZHA network and device information in Home Assistant

zigpy-deconz-parser

zigpy-deconz-parser project can parse Home Assistant ZHA component debug log using zigpy-deconz library if you have ConBee or RaspBee hardware.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zha-quirks-0.0.45.tar.gz (71.3 kB view details)

Uploaded Source

Built Distribution

zha_quirks-0.0.45-py3-none-any.whl (154.2 kB view details)

Uploaded Python 3

File details

Details for the file zha-quirks-0.0.45.tar.gz.

File metadata

  • Download URL: zha-quirks-0.0.45.tar.gz
  • Upload date:
  • Size: 71.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.6

File hashes

Hashes for zha-quirks-0.0.45.tar.gz
Algorithm Hash digest
SHA256 9f0640d2844939118c631d88df18d78adfa17d01cac3e04d7156e5f99e41bc7d
MD5 f586651ac7eef6cc0009fa3e553afcca
BLAKE2b-256 e2c9304c975c2d24f78687f985ce59c9b689b047701184382d9dae58331299a3

See more details on using hashes here.

File details

Details for the file zha_quirks-0.0.45-py3-none-any.whl.

File metadata

  • Download URL: zha_quirks-0.0.45-py3-none-any.whl
  • Upload date:
  • Size: 154.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.6

File hashes

Hashes for zha_quirks-0.0.45-py3-none-any.whl
Algorithm Hash digest
SHA256 8afbb08486cf6818a378a2334e94c72d951f44e66c1115bde28b39c6a31c3624
MD5 74ef6c6d522d0911b56fefad15849a20
BLAKE2b-256 3b6c4e5c20f5047488c8b2cfdf85736f4413cf1c0236af3d9ad7431c48ea657a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page