From 6fdd58be8a6dd9f8819b4ed5a7bf7c3b4b3af2ef Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 8 Jan 2019 22:07:13 +0100 Subject: [PATCH] Update zigbee-shepherd-converters to 7.0.12. --- docs/getting_started/pairing_devices.md | 23 ++++++++- docs/images/E1524_group.png | Bin 0 -> 59674 bytes docs/images/devices/E1524.jpg | Bin 0 -> 14998 bytes docs/information/supported_devices.md | 3 +- docs/integration/home_assistant.md | 27 ++++++++++ lib/controller.js | 6 ++- lib/extension/coordinatorGroup.js | 63 ++++++++++++++++++++++++ lib/extension/homeassistant.js | 1 + npm-shrinkwrap.json | 35 ++++++++----- package.json | 4 +- 10 files changed, 143 insertions(+), 19 deletions(-) create mode 100644 docs/images/E1524_group.png create mode 100644 docs/images/devices/E1524.jpg create mode 100644 lib/extension/coordinatorGroup.js diff --git a/docs/getting_started/pairing_devices.md b/docs/getting_started/pairing_devices.md index 7a3eed086..8a8e40cb5 100644 --- a/docs/getting_started/pairing_devices.md +++ b/docs/getting_started/pairing_devices.md @@ -29,6 +29,27 @@ I start with bulb on, then off, and then 6 “on’s”, where I kill the light * To factory reset the TRADFRI drivers (ICPSHC24-10EU-IL-1 and ICPSHC24-30EU-IL-1) use a small pin or paperclip to push the reset button once. +### IKEA TRADFRI remote control (E1524) +This device requires extra setup as it is meant to only control groups. Therefore it does not send any information directly to the coordinator. As the group ID is randomized upon factor reset we need to find out the group ID where it sends its commands to. This can be done by using Zigbee sniffing. + +1. Pair the remote to Zigbee2mqtt by holding it close to the coordinator and pressing the button next to the battery 4 times. The red light on the remote will now flash a few times. +2. Setup your Zigbee traffic sniffer by following [How to sniff Zigbee traffic](../how_tos/how_to_sniff_zigbee_traffic.md). +3. Press the middle (power) button on the remote, this will produce the following message in Wireshark: +![E1524 group](../images/E1524_group.png) +4. Retrieve the group from the message, which is `0xeb12` in the above example. +5. Add the group to the device in `configuration.yaml`, example: +```yaml +devices: + '0x000b57fffecb472d': + friendly_name: '0x000b57fffecb472d' + retain: false + coordinator_group: 0xeb12 +``` +6. Restart Zigbee2mqtt, when everything went OK you will see: +``` +zigbee2mqtt:info 1/8/2019, 8:42:40 PM Sucesfully applied coordinator group for IKEA TRADFRI remote control (0x000b57fffecb472d) +``` + ## Philips Hue Factory reset the light bulb see [HOWTO: Factory reset a Hue bulb](https://www.youtube.com/watch?v=qvlEAELiJKs). After resetting the bulb will automatically connect. @@ -68,7 +89,7 @@ will rapidly flash green. - After fast flashes, Z809A will reboot, and the restore is completed. The socket will automatically connect now. ## Gledopto -Some of the Gledopto devices are not providing a `modelID`, in that case the modelID `undefined` is shown. Sometimes it helps to repair the device while keeping it close to the coordinator (less than one meter). +Some of the Gledopto devices are not providing a `modelID`, in that case the modelID `undefined` is shown. Sometimes it helps to repair the device while keeping it close to the coordinator (less than one meter). If this fails, the `modelID` has to be set manually in `data/database.db`. First find out the `modelID` of your devices from the [Supported devices page](../information/supported_devices.md). Then open `data/database.db` and add the `modelId` as highlighted in **bold** below. diff --git a/docs/images/E1524_group.png b/docs/images/E1524_group.png new file mode 100644 index 0000000000000000000000000000000000000000..62fc90d71427086d7ea61c0971b69508b7d9e69c GIT binary patch literal 59674 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 literal 0 HcmV?d00001 diff --git a/docs/images/devices/E1524.jpg b/docs/images/devices/E1524.jpg new file mode 100644 index 0000000000000000000000000000000000000000..99d266e5b60bca82d65bd5b769549c09bc31975b GIT binary patch literal 14998 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 AKL7v# literal 0 HcmV?d00001 diff --git a/docs/information/supported_devices.md b/docs/information/supported_devices.md index 9ab07e701..9b87423cc 100644 --- a/docs/information/supported_devices.md +++ b/docs/information/supported_devices.md @@ -2,7 +2,7 @@ *NOTE: This file has been generated, do not edit this file manually!* -Currently **174** devices are supported from **34** different vendors. +Currently **175** devices are supported from **34** different vendors. In case you own a Zigbee device which is **NOT** listed here, please see [How to support new devices](https://koenkk.github.io/zigbee2mqtt/how_tos/how_to_support_new_devices.html). @@ -138,6 +138,7 @@ In case you own a Zigbee device which is **NOT** listed here, please see | L1528 | IKEA FLOALT LED light panel, dimmable, white spectrum (30x90 cm) (on/off, brightness, color temperature) | ![../images/devices/L1528.jpg](../images/devices/L1528.jpg) | | L1531 | IKEA SURTE door light panel, dimmable, white spectrum (38x64 cm) (on/off, brightness, color temperature) | ![../images/devices/L1531.jpg](../images/devices/L1531.jpg) | | E1603 | IKEA TRADFRI control outlet (on/off) | ![../images/devices/E1603.jpg](../images/devices/E1603.jpg) | +| E1524 | IKEA TRADFRI remote control (toggle, arrow left/right click/hold/release, brightness up/down click/hold/release (**[requires additional setup!](https://github.com/Koenkk/zigbee2mqtt/blob/dev/docs/getting_started/pairing_devices.md)**)) | ![../images/devices/E1524.jpg](../images/devices/E1524.jpg) | ### Innr diff --git a/docs/integration/home_assistant.md b/docs/integration/home_assistant.md index 323faa447..3fcd8221d 100644 --- a/docs/integration/home_assistant.md +++ b/docs/integration/home_assistant.md @@ -1247,6 +1247,33 @@ switch: ``` {% endraw %} +### E1524 +{% raw %} +```yaml +sensor: + - platform: "mqtt" + state_topic: "zigbee2mqtt/" + availability_topic: "zigbee2mqtt/bridge/state" + icon: "mdi:gesture-double-tap" + value_template: "{{ value_json.action }}" + json_attributes: + - "linkquality" + - "angle" + - "side" + - "from_side" + - "to_side" + - "brightness" + - "angle_x_absolute" + - "angle_y_absolute" + - "angle_z" + - "angle_y" + - "angle_x" + - "unknown_data" + - "last_seen" + force_update: true +``` +{% endraw %} + ### 7299760PH {% raw %} ```yaml diff --git a/lib/controller.js b/lib/controller.js index 9743bc5ae..63ce0b159 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -17,8 +17,9 @@ const ExtensionDeviceReceive = require('./extension/deviceReceive'); const ExtensionMarkOnlineXiaomi = require('./extension/markOnlineXiaomi'); const ExtensionBridgeConfig = require('./extension/bridgeConfig'); const ExtensionGroups = require('./extension/groups'); -const DeviceAvailability = require('./extension/deviceAvailability'); +const ExtensionDeviceAvailability = require('./extension/deviceAvailability'); const ExtensionBind = require('./extension/bind'); +const ExtensionCoordinatorGroup = require('./extension/coordinatorGroup'); class Controller { constructor() { @@ -43,6 +44,7 @@ class Controller { new ExtensionBridgeConfig(this.zigbee, this.mqtt, this.state, this.publishDeviceState), new ExtensionGroups(this.zigbee, this.mqtt, this.state, this.publishDeviceState), new ExtensionBind(this.zigbee, this.mqtt, this.state, this.publishDeviceState), + new ExtensionCoordinatorGroup(this.zigbee, this.mqtt, this.state, this.publishDeviceState), ]; if (settings.get().homeassistant) { @@ -58,7 +60,7 @@ class Controller { } if (settings.get().experimental.availability_timeout) { - this.extensions.push(new DeviceAvailability( + this.extensions.push(new ExtensionDeviceAvailability( this.zigbee, this.mqtt, this.state, this.publishDeviceState )); } diff --git a/lib/extension/coordinatorGroup.js b/lib/extension/coordinatorGroup.js new file mode 100644 index 000000000..cabac482f --- /dev/null +++ b/lib/extension/coordinatorGroup.js @@ -0,0 +1,63 @@ +const zigbeeShepherdConvertersDevices = require('zigbee-shepherd-converters').devices; +const settings = require('../util/settings'); +const logger = require('../util/logger'); + +// IKEA TRADFRI remote control +const E1524 = zigbeeShepherdConvertersDevices.find((d) => d.model === 'E1524'); + +const devices = [E1524]; + +/** + * This extensions adds the coordinator to a group which is required for some devices to work properly. + */ +class CoordinatorGroup { + constructor(zigbee, mqtt, state, publishDeviceState) { + this.zigbee = zigbee; + this.mqtt = mqtt; + this.state = state; + this.publishDeviceState = publishDeviceState; + } + + onZigbeeStarted() { + this.zigbee.getAllClients().forEach((device) => { + devices.forEach((mappedDevice) => { + if (mappedDevice.zigbeeModel.includes(device.modelId)) { + this.setup(mappedDevice, device); + } + }); + }); + } + + setup(mappedDevice, device) { + const deviceLog = `${mappedDevice.vendor} ${mappedDevice.description} (${device.ieeeAddr})`; + + // Check if there is a coordinator_group defined for this device. + const deviceSettings = settings.getDevice(device.ieeeAddr); + if (!deviceSettings || !deviceSettings.coordinator_group) { + logger.error( + `Device ${deviceLog} requires extra configuration!` + + ` Please see https://github.com/Koenkk/zigbee2mqtt/blob/dev/docs/getting_started/pairing_devices.md` + ); + return; + } + + // Add the coordinator to the group, first check if it's already in the group. + const findPayload = {endpoint: 1, groupid: deviceSettings.coordinator_group}; + this.zigbee.shepherd.controller.request('ZDO', 'extFindGroup', findPayload, (error, data) => { + if (error) { + const addPayload = {endpoint: 1, groupid: deviceSettings.coordinator_group, namelen: 0, groupname: ''}; + this.zigbee.shepherd.controller.request('ZDO', 'extAddGroup', addPayload, (error, data) => { + if (!error) { + logger.info(`Sucesfully applied coordinator group for ${deviceLog}`); + } else { + logger.error(`Failed to apply coordinator group for ${deviceLog}`); + } + }); + } + + logger.info(`Sucesfully applied coordinator group for ${deviceLog}`); + }); + } +} + +module.exports = CoordinatorGroup; diff --git a/lib/extension/homeassistant.js b/lib/extension/homeassistant.js index 7b1452cb1..ee091e916 100644 --- a/lib/extension/homeassistant.js +++ b/lib/extension/homeassistant.js @@ -479,6 +479,7 @@ const mapping = { 'D1532': [configurations.light_brightness], 'AV2010/32': [], 'HGZB-07A': [configurations.light_brightness_colortemp_colorxy], + 'E1524': [configurations.sensor_action], }; /** diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index c765ad0d8..8ad8b3c6c 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -4776,13 +4776,23 @@ } }, "zcl-packet": { - "version": "git+https://github.com/Koenkk/zcl-packet.git#fbd8c936bbd4be0597ad3e934be0ca722b0128a6", - "from": "git+https://github.com/Koenkk/zcl-packet.git#fbd8c936bbd4be0597ad3e934be0ca722b0128a6", + "version": "git+https://github.com/Koenkk/zcl-packet.git#9fdecf5d684fb664b416bde982436c4a22187062", + "from": "git+https://github.com/Koenkk/zcl-packet.git#9fdecf5d684fb664b416bde982436c4a22187062", "requires": { "concentrate": "^0.2.3", "dissolve-chunks": "^1.3.0", "enum": "^2.3.0", - "zcl-id": "^0.2.0" + "zcl-id": "git+https://github.com/Koenkk/zcl-id.git#509f77ab620ece6ad8e83a008283457a5280c8db" + }, + "dependencies": { + "zcl-id": { + "version": "git+https://github.com/Koenkk/zcl-id.git#509f77ab620ece6ad8e83a008283457a5280c8db", + "from": "git+https://github.com/Koenkk/zcl-id.git#509f77ab620ece6ad8e83a008283457a5280c8db", + "requires": { + "busyman": "^0.3.0", + "enum": "^2.5.0" + } + } } }, "ziee": { @@ -4795,8 +4805,8 @@ } }, "zigbee-shepherd": { - "version": "git+https://github.com/Koenkk/zigbee-shepherd.git#bc2445dc0bb7a2a1d5b4a461c231e28d07f517e7", - "from": "git+https://github.com/Koenkk/zigbee-shepherd.git#bc2445dc0bb7a2a1d5b4a461c231e28d07f517e7", + "version": "git+https://github.com/Koenkk/zigbee-shepherd.git#43278a2219d1733180ed353deb4b724b2b9437fa", + "from": "git+https://github.com/Koenkk/zigbee-shepherd.git#43278a2219d1733180ed353deb4b724b2b9437fa", "requires": { "areq": "^0.2.0", "busyman": "^0.3.0", @@ -4805,16 +4815,15 @@ "objectbox": "^0.3.0", "proving": "^0.1.0", "q": "^1.5.1", - "zcl-id": "^0.4.0", - "zcl-packet": "git+https://github.com/Koenkk/zcl-packet.git#fbd8c936bbd4be0597ad3e934be0ca722b0128a6", + "zcl-id": "git+https://github.com/Koenkk/zcl-id.git#509f77ab620ece6ad8e83a008283457a5280c8db", + "zcl-packet": "git+https://github.com/Koenkk/zcl-packet.git#9fdecf5d684fb664b416bde982436c4a22187062", "ziee": "^0.3.0", "zstack-constants": "^0.2.0" }, "dependencies": { "zcl-id": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/zcl-id/-/zcl-id-0.4.0.tgz", - "integrity": "sha512-XN7diHjvF/qQmrs78xURDEpZcw7Y5+R0ScuNwR3X+xfUfJo94Dj9UGkKniSzOATEZWlLZjg/P23y4GwKFRMptA==", + "version": "git+https://github.com/Koenkk/zcl-id.git#509f77ab620ece6ad8e83a008283457a5280c8db", + "from": "git+https://github.com/Koenkk/zcl-id.git#509f77ab620ece6ad8e83a008283457a5280c8db", "requires": { "busyman": "^0.3.0", "enum": "^2.5.0" @@ -4823,9 +4832,9 @@ } }, "zigbee-shepherd-converters": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/zigbee-shepherd-converters/-/zigbee-shepherd-converters-7.0.11.tgz", - "integrity": "sha512-VaInDvJDKKxvwRnis2dWdJX9fDOx34tzeb2eDYmZqjP3poHnEhQpue9Qvbay+JOeLLGy8YdDNn2nHkM69ARB0Q==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/zigbee-shepherd-converters/-/zigbee-shepherd-converters-7.0.12.tgz", + "integrity": "sha512-72Q6WgRN4qbe7VCAnI9U947otx7blAl5Ai/ap9y54kkbfnGhqR+b/cgKGAorrqMntFW5UqKd76rhY8b7QORHdw==", "requires": { "debounce": "*", "debug": "3.2.6", diff --git a/package.json b/package.json index 00cfcab4a..cbb9d4221 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,8 @@ "semver": "*", "winston": "2.4.2", "ziee": "*", - "zigbee-shepherd": "git+https://github.com/Koenkk/zigbee-shepherd.git#bc2445dc0bb7a2a1d5b4a461c231e28d07f517e7", - "zigbee-shepherd-converters": "7.0.11", + "zigbee-shepherd": "git+https://github.com/Koenkk/zigbee-shepherd.git#43278a2219d1733180ed353deb4b724b2b9437fa", + "zigbee-shepherd-converters": "7.0.12", "zive": "*" }, "devDependencies": {