Robert Svensson 03cb62b726 Update deconz.markdown (#5307)
* Update deconz.markdown

* Add link to official list of supported devices
2018-05-08 16:28:15 +02:00

6.3 KiB

layout, title, description, date, sidebar, comments, sharing, footer, logo, ha_category, ha_release, ha_iot_class
layout title description date sidebar comments sharing footer logo ha_category ha_release ha_iot_class
page deCONZ Instructions on how to setup Conbee/Raspbee devices with deCONZ from Dresden Elektronik within Home Assistant. 2017-11-12 16:30 true false true true deconz.jpeg Hub 0.61 Local Push

deCONZ by Dresden Elektronik is a software that communicates with Conbee/Raspbee Zigbee gateways and exposes Zigbee devices that are connected to the gateway.

deCONZ REST API.

Use community container by Marthoc for your deCONZ needs. It works both as a standalone container as well as with HASS.io.

{% linkable_title Supported devices %}

See deCONZ wiki for a list of supported devices.

{% linkable_title Configuration %}

Home Assistant will automatically discover deCONZ presence on your network, if discovery: is present in your configuration.yaml file.

If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to Menu -> Settings -> Unlock Gateway in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry.

You can add the following to your configuration.yaml file if you are not using the discovery: component:

# Example configuration.yaml entry
deconz:
  host: IP_ADDRESS

{% configuration %} host: description: The IP address of your deCONZ web server. required: false type: string api_key: description: The API key to access your deCONZ web server. required: false type: string port: description: Configure port deCONZ web server is accessible from. required: false default: 80 type: int {% endconfiguration %}

A full configuration could look like this:

# Example configuration.yaml entry
deconz:
  host: 127.0.0.1
  api_key: 0123456789
  port: 80

{% linkable_title Debugging component %}

If you have problems with deCONZ or the component you can add debug prints to the log.

logger:
  default: info
  logs:
    pydeconz: debug
    homeassistant.components.deconz: debug

{% linkable_title Device services %}

Available services: configure.

{% linkable_title Service deconz.configure %}

Set attribute of device in Deconz using Rest API.

Service data attribute Optional Description
field No String representing a specific device in deCONZ.
entity No String representing a specific HASS entity of a device in deCONZ.
data No Data is a JSON object with what data you want to alter.

Field and entity are exclusive, i.e you can only use one in a request.

{ "field": "/lights/1", "data": {"name": "light2"} }

{ "entity": "light.light1", "data": {"name": "light2"} }

{ "field": "/config", "data": {"permitjoin": 60} }

{% linkable_title Remote control devices %}

Remote controls (ZHASwitch category) will be not be exposed as a regular entity, but as events named 'deconz_event' with a payload of 'id' and 'event'. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level.

Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here.

Switch code Description
1XXX Button #1 up to #8
XXX1 Button hold
XXX2 Button short release
XXX3 Button long release

Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up button.

For the IKEA Tradfri remote, 1 is the middle button, 2 is up, 3 is down, 4 is left, and 5 is right.

{% linkable_title Examples %}

{% linkable_title Step up and step down input number with wireless dimmer %}

YAML

{% raw %}

automation:
  - alias: 'Toggle lamp from dimmer'
    initial_state: 'on'
    trigger:
      platform: event
      event_type: deconz_event
      event_data:
        id: remote_control_1
        event: 1002
    action:
      service: light.toggle
      entity_id: light.lamp

  - alias: 'Increase brightness of lamp from dimmer'
    initial_state: 'on'
    trigger:
      platform: event
      event_type: deconz_event
      event_data:
        id: remote_control_1
        event: 2002
    action:
      - service: light.turn_on
        data_template:
          entity_id: light.lamp
          brightness: >
            {% set bri = states.light.lamp.attributes.brightness | int %}
            {{ [bri+30, 249] | min }}

  - alias: 'Decrease brightness of lamp from dimmer'
    initial_state: 'on'
    trigger:
      platform: event
      event_type: deconz_event
      event_data:
        id: remote_control_1
        event: 3002
    action:
      - service: light.turn_on
        data_template:
          entity_id: light.lamp
          brightness: >
            {% set bri = states.light.lamp.attributes.brightness | int %}
            {{ [bri-30, 0] | max }}

{% endraw %}

Appdaemon

{% raw %}

remote_control_living_room:
  module: remote_control
  class: RemoteControl
  event: deconz_event
  id: dimmer_switch_3
import appdaemon.plugins.hass.hassapi as hass

class RemoteControl(hass.Hass):

    def initialize(self):
        if 'event' in self.args:
            self.listen_event(self.handle_event, self.args['event'])

    def handle_event(self, event_name, data, kwargs):
        if data['id'] == self.args['id']:
            self.log(data['event'])
            if data['event'] == 1002:
                self.log('Button on')
            elif data['event'] == 2002:
                self.log('Button dim up')
            elif data['event'] == 3002:
                self.log('Button dim down')
            elif data['event'] == 4002:
                self.log('Button off')

{% endraw %}