zigbee-herdsman-converters
Version:
Collection of device converters to be used with zigbee-herdsman
561 lines (556 loc) • 25.4 kB
JavaScript
const exposes = require('../lib/exposes');
const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
const tz = require('../converters/toZigbee');
const ota = require('../lib/ota');
const constants = require('../lib/constants');
const reporting = require('../lib/reporting');
const extend = require('../lib/extend');
const e = exposes.presets;
const ea = exposes.access;
const bulbOnEvent = async (type, data, device) => {
/**
* IKEA bulbs lose their configured reportings when losing power.
* A deviceAnnounce indicates they are powered on again.
* Reconfigure the configured reoprting here.
* NOTE: binds are not lost so rebinding is not needed!
*/
if (type === 'deviceAnnounce') {
for (const endpoint of device.endpoints) {
for (const c of endpoint.configuredReportings) {
await endpoint.configureReporting(c.cluster.name, [{
attribute: c.attribute.name, minimumReportInterval: c.minimumReportInterval,
maximumReportInterval: c.maximumReportInterval, reportableChange: c.reportableChange,
}]);
}
}
}
};
const tradfriExtend = {
light_onoff_brightness: (options = {}) => ({
...extend.light_onoff_brightness(options),
exposes: extend.light_onoff_brightness(options).exposes.concat(e.power_on_behavior()),
ota: ota.tradfri,
onEvent: bulbOnEvent,
}),
light_onoff_brightness_colortemp: (options = {colorTempRange: [250, 454]}) => ({
...extend.light_onoff_brightness_colortemp(options),
exposes: extend.light_onoff_brightness_colortemp(options).exposes.concat(e.power_on_behavior()),
ota: ota.tradfri,
onEvent: bulbOnEvent,
}),
light_onoff_brightness_colortemp_color: (options = {disableColorTempStartup: true, colorTempRange: [250, 454]}) => ({
...extend.light_onoff_brightness_colortemp_color(options),
exposes: extend.light_onoff_brightness_colortemp_color(options).exposes.concat(e.power_on_behavior()),
ota: ota.tradfri,
onEvent: bulbOnEvent,
}),
};
module.exports = [
{
zigbeeModel: ['ASKVADER on/off switch'],
model: 'E1836',
vendor: 'IKEA',
description: 'ASKVADER on/off switch',
extend: extend.switch(),
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
await reporting.onOff(endpoint);
},
},
{
zigbeeModel: ['TRADFRI bulb E27 WS opal 980lm', 'TRADFRI bulb E26 WS opal 980lm', 'TRADFRI bulb E27 WS\uFFFDopal 980lm'],
model: 'LED1545G12',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E26/E27 980 lumen, dimmable, white spectrum, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI Light Engine'],
model: 'T2011',
description: 'Osvalla panel round',
vendor: 'IKEA',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb E27 WS clear 950lm', 'TRADFRI bulb E26 WS clear 950lm'],
model: 'LED1546G12',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E26/E27 950 lumen, dimmable, white spectrum, clear',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb E27 opal 1000lm', 'TRADFRI bulb E27 W opal 1000lm'],
model: 'LED1623G12',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E27 1000 lumen, dimmable, opal white',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb GU10 WS 400lm'],
model: 'LED1537R6/LED1739R5',
vendor: 'IKEA',
description: 'TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb GU10 W 400lm'],
model: 'LED1650R5',
vendor: 'IKEA',
description: 'TRADFRI LED bulb GU10 400 lumen, dimmable',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb E14 WS opal 400lm', 'TRADFRI bulb E12 WS opal 400lm'],
model: 'LED1536G5',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E12/E14 400 lumen, dimmable, white spectrum, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb E14 WS 470lm', 'TRADFRI bulb E12 WS 450lm'],
model: 'LED1903C5/LED1835C6',
vendor: 'IKEA',
description: 'TRADFRI bulb E12/E14 WS 450/470 lumen, dimmable, white spectrum, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb GU10 WW 400lm'],
model: 'LED1837R5',
vendor: 'IKEA',
description: 'TRADFRI LED bulb GU10 400 lumen, dimmable',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb E27 WW clear 250lm', 'TRADFRI bulb E26 WW clear 250lm'],
model: 'LED1842G3',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E27 WW clear 250 lumen, dimmable',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb E14 WS opal 600lm'],
model: 'LED1733G7',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E14 600 lumen, dimmable, white spectrum, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb E26 opal 1000lm', 'TRADFRI bulb E26 W opal 1000lm'],
model: 'LED1622G12',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E26 1000 lumen, dimmable, opal white',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb E27 CWS opal 600lm', 'TRADFRI bulb E26 CWS opal 600lm', 'TRADFRI bulb E14 CWS opal 600lm',
'TRADFRI bulb E12 CWS opal 600lm'],
model: 'LED1624G9',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E14/E26/E27 600 lumen, dimmable, color, opal white',
extend: extend.light_onoff_brightness_color(),
ota: ota.tradfri,
meta: {supportsHueAndSaturation: false},
onEvent: bulbOnEvent,
},
{
zigbeeModel: ['TRADFRI bulb E27 CWS 806lm'],
model: 'LED1924G9',
vendor: 'IKEA',
description: 'TRADFRI bulb E27 CWS 806 lumen, dimmable, color, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp_color(),
},
{
zigbeeModel: ['TRADFRI bulb E14 W op/ch 400lm', 'TRADFRI bulb E12 W op/ch 400lm', 'TRADFRI bulb E17 W op/ch 400lm'],
model: 'LED1649C5',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E12/E14/E17 400 lumen, dimmable warm white, chandelier opal',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb E27 WS opal 1000lm', 'TRADFRI bulb E26 WS opal 1000lm'],
model: 'LED1732G11',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E27 1000 lumen, dimmable, white spectrum, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb E27 WW 806lm', 'TRADFRI bulb E26 WW 806lm'],
model: 'LED1836G9',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E26/E27 806 lumen, dimmable, warm white',
extend: tradfriExtend.light_onoff_brightness(),
},
{
zigbeeModel: ['TRADFRI bulb E27 WS clear 806lm', 'TRADFRI bulb E26 WS clear 806lm'],
model: 'LED1736G9',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E26/E27 806 lumen, dimmable, white spectrum, clear',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['LEPTITER Recessed spot light'],
model: 'T1820',
vendor: 'IKEA',
description: 'LEPTITER Recessed spot light, dimmable, white spectrum',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI wireless dimmer'],
model: 'ICTC-G-1',
vendor: 'IKEA',
description: 'TRADFRI wireless dimmer',
fromZigbee: [fz.legacy.cmd_move, fz.legacy.cmd_move_with_onoff, fz.legacy.cmd_stop, fz.legacy.cmd_stop_with_onoff,
fz.legacy.cmd_move_to_level_with_onoff, fz.battery],
exposes: [e.battery(), e.action(['brightness_move_up', 'brightness_move_down', 'brightness_stop', 'brightness_move_to_level'])],
toZigbee: [],
meta: {battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genLevelCtrl', 'genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
ota: ota.tradfri,
},
{
zigbeeModel: ['TRADFRI transformer 10W', 'TRADFRI Driver 10W'],
model: 'ICPSHC24-10EU-IL-1',
vendor: 'IKEA',
description: 'TRADFRI driver for wireless control (10 watt)',
extend: extend.light_onoff_brightness(),
ota: ota.tradfri,
onEvent: bulbOnEvent,
},
{
zigbeeModel: ['TRADFRI transformer 30W', 'TRADFRI Driver 30W'],
model: 'ICPSHC24-30EU-IL-1',
vendor: 'IKEA',
description: 'TRADFRI driver for wireless control (30 watt)',
extend: extend.light_onoff_brightness(),
ota: ota.tradfri,
onEvent: bulbOnEvent,
},
{
zigbeeModel: ['SILVERGLANS IP44 LED driver'],
model: 'ICPSHC24-30-IL44-1',
vendor: 'IKEA',
description: 'SILVERGLANS IP44 LED driver for wireless control (30 watt)',
extend: extend.light_onoff_brightness(),
ota: ota.tradfri,
onEvent: bulbOnEvent,
},
{
zigbeeModel: ['FLOALT panel WS 30x30'],
model: 'L1527',
vendor: 'IKEA',
description: 'FLOALT LED light panel, dimmable, white spectrum (30x30 cm)',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['FLOALT panel WS 60x60'],
model: 'L1529',
vendor: 'IKEA',
description: 'FLOALT LED light panel, dimmable, white spectrum (60x60 cm)',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['JORMLIEN door WS 40x80'],
model: 'L1530',
vendor: 'IKEA',
description: 'JORMLIEN door light panel, dimmable, white spectrum (40x80 cm)',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['FLOALT panel WS 30x90'],
model: 'L1528',
vendor: 'IKEA',
description: 'FLOALT LED light panel, dimmable, white spectrum (30x90 cm)',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['SURTE door WS 38x64'],
model: 'L1531',
vendor: 'IKEA',
description: 'SURTE door light panel, dimmable, white spectrum (38x64 cm)',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI control outlet'],
model: 'E1603/E1702',
description: 'TRADFRI control outlet',
vendor: 'IKEA',
extend: extend.switch(),
toZigbee: extend.switch().toZigbee.concat([tz.power_on_behavior]),
fromZigbee: extend.switch().fromZigbee.concat([fz.power_on_behavior]),
// power_on_behavior 'toggle' does not seem to be supported
exposes: extend.switch().exposes.concat([exposes.enum('power_on_behavior', ea.ALL, ['off', 'previous', 'on'])
.withDescription('Controls the behaviour when the device is powered on')]),
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
await reporting.onOff(endpoint);
},
ota: ota.tradfri,
},
{
zigbeeModel: ['TRADFRI remote control'],
model: 'E1524/E1810',
description: 'TRADFRI remote control',
vendor: 'IKEA',
fromZigbee: [fz.battery, fz.E1524_E1810_toggle, fz.E1524_E1810_levelctrl, fz.ikea_arrow_click, fz.ikea_arrow_hold,
fz.ikea_arrow_release],
exposes: [e.battery(), e.action(['brightness_down_release', 'toggle_hold',
'toggle', 'arrow_left_click', 'arrow_right_click', 'arrow_left_hold', 'arrow_right_hold', 'arrow_left_release',
'arrow_right_release', 'brightness_up_click', 'brightness_down_click', 'brightness_up_hold', 'brightness_up_release'])],
toZigbee: [],
ota: ota.tradfri,
meta: {battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
// See explanation in E1743, only applies to E1810 (for E1524 it has no effect)
// https://github.com/Koenkk/zigbee2mqtt/issues/2772#issuecomment-577389281
await endpoint.bind('genOnOff', constants.defaultBindGroup);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['Remote Control N2'],
model: 'W2049',
vendor: 'IKEA',
description: 'STYRBAR remote control N2',
fromZigbee: [fz.battery, fz.command_on, fz.command_off, fz.command_move, fz.command_stop, fz.ikea_arrow_click,
fz.ikea_arrow_hold, fz.ikea_arrow_release],
exposes: [e.battery(), e.action(['brightness_up_click', 'brightness_down_click', 'brightness_up_hold', 'brightness_down_hold',
'brightness_up_release', 'brightness_down_release', 'arrow_left_click', 'arrow_right_click', 'arrow_left_hold',
'arrow_right_hold', 'arrow_left_release', 'arrow_right_release'])],
toZigbee: [],
ota: ota.tradfri,
meta: {battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await endpoint.bind('genOnOff', constants.defaultBindGroup);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['TRADFRI on/off switch'],
model: 'E1743',
vendor: 'IKEA',
description: 'TRADFRI ON/OFF switch',
fromZigbee: [fz.command_on, fz.legacy.genOnOff_cmdOn, fz.command_off, fz.legacy.genOnOff_cmdOff, fz.command_move, fz.battery,
fz.legacy.E1743_brightness_up, fz.legacy.E1743_brightness_down, fz.command_stop, fz.legacy.E1743_brightness_stop],
exposes: [e.battery(), e.action(['on', 'off', 'brightness_move_down', 'brightness_move_up', 'brightness_stop'])],
toZigbee: [],
ota: ota.tradfri,
meta: {disableActionGroup: true, battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
// By default this device controls group 0, some devices are by default in
// group 0 causing the remote to control them.
// By binding it to a random group, e.g. 901, it will send the commands to group 901 instead of 0
// https://github.com/Koenkk/zigbee2mqtt/issues/2772#issuecomment-577389281
await endpoint.bind('genOnOff', constants.defaultBindGroup);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['KNYCKLAN Open/Close remote'],
model: 'E1841',
vendor: 'IKEA',
description: 'KNYCKLAN open/close remote water valve',
fromZigbee: [fz.command_on, fz.command_off, fz.battery],
exposes: [e.battery(), e.action(['on', 'off'])],
toZigbee: [],
ota: ota.tradfri,
meta: {disableActionGroup: true, battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
// By default this device controls group 0, some devices are by default in
// group 0 causing the remote to control them.
// By binding it to a random group, e.g. 901, it will send the commands to group 901 instead of 0
// https://github.com/Koenkk/zigbee2mqtt/issues/2772#issuecomment-577389281
await endpoint.bind('genOnOff', constants.defaultBindGroup);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['KNYCKLAN receiver'],
model: 'E1842',
description: 'KNYCKLAN receiver electronic water valve shut-off',
vendor: 'IKEA',
extend: extend.switch(),
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
await reporting.onOff(endpoint);
},
ota: ota.tradfri,
},
{
zigbeeModel: ['TRADFRI SHORTCUT Button'],
model: 'E1812',
vendor: 'IKEA',
description: 'TRADFRI shortcut button',
fromZigbee: [fz.command_on, fz.command_move, fz.command_stop, fz.battery],
exposes: [e.battery(), e.action(['on', 'brightness_move_up', 'brightness_stop'])],
toZigbee: [],
ota: ota.tradfri,
meta: {disableActionGroup: true, battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
// By default this device controls group 0, some devices are by default in
// group 0 causing the remote to control them.
// By binding it to a random group, e.g. 901, it will send the commands to group 901 instead of 0
await reporting.bind(endpoint, constants.defaultBindGroup, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['SYMFONISK Sound Controller'],
model: 'E1744',
vendor: 'IKEA',
description: 'SYMFONISK sound controller',
fromZigbee: [fz.legacy.cmd_move, fz.legacy.cmd_stop, fz.legacy.E1744_play_pause, fz.legacy.E1744_skip, fz.battery],
toZigbee: [],
exposes: [e.battery(), e.action([
'brightness_move_up', 'brightness_move_down', 'brightness_stop', 'toggle', 'brightness_step_up', 'brightness_step_down'])],
ota: ota.tradfri,
meta: {battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genLevelCtrl', 'genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['TRADFRI motion sensor'],
model: 'E1525/E1745',
vendor: 'IKEA',
description: 'TRADFRI motion sensor',
fromZigbee: [fz.battery, fz.tradfri_occupancy, fz.E1745_requested_brightness],
toZigbee: [],
exposes: [e.battery(), e.occupancy(),
exposes.numeric('requested_brightness_level', ea.STATE).withValueMin(76).withValueMax(254),
exposes.numeric('requested_brightness_percent', ea.STATE).withValueMin(30).withValueMax(100)],
ota: ota.tradfri,
meta: {battery: {dontDividePercentage: true}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
device.powerSource = 'Battery';
device.save();
},
},
{
zigbeeModel: ['TRADFRI signal repeater'],
model: 'E1746',
description: 'TRADFRI signal repeater',
vendor: 'IKEA',
fromZigbee: [fz.linkquality_from_basic],
toZigbee: [],
ota: ota.tradfri,
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
const payload = [{attribute: 'modelId', minimumReportInterval: 3600, maximumReportInterval: 14400}];
await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
await endpoint.configureReporting('genBasic', payload);
},
exposes: [],
},
{
zigbeeModel: ['FYRTUR block-out roller blind'],
model: 'E1757',
vendor: 'IKEA',
description: 'FYRTUR roller blind',
fromZigbee: [fz.cover_position_tilt, fz.battery],
toZigbee: [tz.cover_state, tz.cover_position_tilt],
meta: {battery: {dontDividePercentage: true}},
ota: ota.tradfri,
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
await reporting.batteryPercentageRemaining(endpoint);
await reporting.currentPositionLiftPercentage(endpoint);
},
exposes: [e.cover_position(), e.battery()],
},
{
zigbeeModel: ['KADRILJ roller blind'],
model: 'E1926',
vendor: 'IKEA',
description: 'KADRILJ roller blind',
fromZigbee: [fz.cover_position_tilt, fz.battery],
toZigbee: [tz.cover_state, tz.cover_position_tilt],
meta: {battery: {dontDividePercentage: true}},
ota: ota.tradfri,
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
await reporting.batteryPercentageRemaining(endpoint);
await reporting.currentPositionLiftPercentage(endpoint);
},
exposes: [e.cover_position(), e.battery()],
},
{
zigbeeModel: ['TRADFRI open/close remote'],
model: 'E1766',
vendor: 'IKEA',
description: 'TRADFRI open/close remote',
fromZigbee: [fz.battery, fz.command_cover_close, fz.legacy.cover_close, fz.command_cover_open, fz.legacy.cover_open,
fz.command_cover_stop, fz.legacy.cover_stop],
exposes: [e.battery(), e.action(['close', 'open', 'stop'])],
toZigbee: [],
meta: {battery: {dontDividePercentage: true}},
ota: ota.tradfri,
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
// By default this device controls group 0, some devices are by default in
// group 0 causing the remote to control them.
// By binding it to a random group, e.g. 901, it will send the commands to group 901 instead of 0
// https://github.com/Koenkk/zigbee2mqtt/issues/2772#issuecomment-577389281
await endpoint.bind('genOnOff', constants.defaultBindGroup);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
await reporting.batteryPercentageRemaining(endpoint);
},
},
{
zigbeeModel: ['GUNNARP panel round'],
model: 'T1828',
description: 'GUNNARP panel round',
vendor: 'IKEA',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['GUNNARP panel 40*40'],
model: 'T1829',
description: 'GUNNARP panel 40*40',
vendor: 'IKEA',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb E12 WS opal 600lm'],
model: 'LED1738G7',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E12 600 lumen, dimmable, white spectrum, opal white',
extend: tradfriExtend.light_onoff_brightness_colortemp(),
},
{
zigbeeModel: ['TRADFRI bulb GU10 CWS 345lm'],
model: 'LED1923R5',
vendor: 'IKEA',
description: 'TRADFRI LED bulb GU10 345 lumen, dimmable, white spectrum, color spectrum',
extend: tradfriExtend.light_onoff_brightness_colortemp_color(),
},
{
zigbeeModel: ['TRADFRI bulb E14 CWS 470lm'],
model: 'LED1925G6',
vendor: 'IKEA',
description: 'TRADFRI LED bulb E14 470 lumen, opal, dimmable, white spectrum, color spectrum',
extend: tradfriExtend.light_onoff_brightness_colortemp_color(),
},
];