Skip to content

Commit

Permalink
Refs Koenkk/zigbee2mqtt#12952: lib/extend - allow to exclude `power…
Browse files Browse the repository at this point in the history
…_on_behavior` converters for the rest of light variants
  • Loading branch information
gorbunovav committed Jun 29, 2022
1 parent 10be688 commit 63e2dc3
Showing 1 changed file with 30 additions and 9 deletions.
39 changes: 30 additions & 9 deletions lib/extend.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,23 @@ const extend = {
return result;
},
light_onoff_brightness_colortemp: (options={}) => {
options = {disableEffect: false, disableColorTempStartup: false, ...options};
options = {disableEffect: false, disableColorTempStartup: false, disablePowerOnBehavior: false, ...options};
const exposes = [e.light_brightness_colortemp(options.colorTempRange), ...(!options.disableEffect ? [e.effect()] : [])];
const toZigbee = [tz.light_onoff_brightness, tz.light_colortemp, tz.ignore_transition, tz.ignore_rate, tz.light_brightness_move,
tz.light_colortemp_move, tz.light_brightness_step, tz.light_colortemp_step, tz.light_colortemp_startup, tz.level_config,
tz.power_on_behavior, tz.light_color_options, tz.light_color_mode, ...(!options.disableEffect ? [tz.effect] : [])];
const fromZigbee = [fz.color_colortemp, fz.on_off, fz.brightness, fz.level_config, fz.power_on_behavior, fz.ignore_basic_report];
tz.light_color_options, tz.light_color_mode, ...(!options.disableEffect ? [tz.effect] : [])];
const fromZigbee = [fz.color_colortemp, fz.on_off, fz.brightness, fz.level_config, fz.ignore_basic_report];

if (options.disableColorTempStartup) {
exposes[0].removeFeature('color_temp_startup');
toZigbee.splice(toZigbee.indexOf(tz.light_colortemp_startup), 1);
}

if (!options.disablePowerOnBehavior) {
fromZigbee.push(fz.power_on_behavior);
toZigbee.push(tz.power_on_behavior);
}

const result = {exposes, fromZigbee, toZigbee};
if (!options.noConfigure) {
result.configure = async (device, coordinatorEndpoint, logger) => {
Expand All @@ -55,14 +60,19 @@ const extend = {
return result;
},
light_onoff_brightness_color: (options={}) => {
options = {disableEffect: false, supportsHS: false, preferHS: false, ...options};
options = {disableEffect: false, supportsHS: false, preferHS: false, disablePowerOnBehavior: false, ...options};
const exposes = [(options.supportsHS ? e.light_brightness_color(options.preferHS) : e.light_brightness_colorxy()),
...(!options.disableEffect ? [e.effect()] : [])];
const fromZigbee = [fz.color_colortemp, fz.on_off, fz.brightness, fz.level_config, fz.power_on_behavior, fz.ignore_basic_report];
const fromZigbee = [fz.color_colortemp, fz.on_off, fz.brightness, fz.level_config, fz.ignore_basic_report];
const toZigbee = [tz.light_onoff_brightness, tz.light_color, tz.ignore_transition, tz.ignore_rate, tz.light_brightness_move,
tz.light_brightness_step, tz.level_config, tz.power_on_behavior, tz.light_hue_saturation_move,
tz.light_brightness_step, tz.level_config, tz.light_hue_saturation_move,
tz.light_hue_saturation_step, tz.light_color_options, tz.light_color_mode, ...(!options.disableEffect ? [tz.effect] : [])];

if (!options.disablePowerOnBehavior) {
fromZigbee.push(fz.power_on_behavior);
toZigbee.push(tz.power_on_behavior);
}

const result = {exposes, fromZigbee, toZigbee};
if (!options.noConfigure) {
result.configure = async (device, coordinatorEndpoint, logger) => {
Expand All @@ -73,21 +83,32 @@ const extend = {
return result;
},
light_onoff_brightness_colortemp_color: (options={}) => {
options = {disableEffect: false, supportsHS: false, disableColorTempStartup: false, preferHS: false, ...options};
options = {
disableEffect: false,
supportsHS: false,
disableColorTempStartup: false,
preferHS: false,
disablePowerOnBehavior: false,
...options};
const exposes = [(options.supportsHS ? e.light_brightness_colortemp_color(options.colorTempRange, options.preferHS) :
e.light_brightness_colortemp_colorxy(options.colorTempRange)), ...(!options.disableEffect ? [e.effect()] : [])];
const fromZigbee = [fz.color_colortemp, fz.on_off, fz.brightness, fz.level_config, fz.power_on_behavior, fz.ignore_basic_report];
const fromZigbee = [fz.color_colortemp, fz.on_off, fz.brightness, fz.level_config, fz.ignore_basic_report];
const toZigbee = [
tz.light_onoff_brightness, tz.light_color_colortemp, tz.ignore_transition, tz.ignore_rate, tz.light_brightness_move,
tz.light_colortemp_move, tz.light_brightness_step, tz.light_colortemp_step, tz.light_hue_saturation_move,
tz.light_hue_saturation_step, tz.light_colortemp_startup, tz.level_config, tz.power_on_behavior, tz.light_color_options,
tz.light_hue_saturation_step, tz.light_colortemp_startup, tz.level_config, tz.light_color_options,
tz.light_color_mode, ...(!options.disableEffect ? [tz.effect] : [])];

if (options.disableColorTempStartup) {
exposes[0].removeFeature('color_temp_startup');
toZigbee.splice(toZigbee.indexOf(tz.light_colortemp_startup), 1);
}

if (!options.disablePowerOnBehavior) {
fromZigbee.push(fz.power_on_behavior);
toZigbee.push(tz.power_on_behavior);
}

const result = {exposes, fromZigbee, toZigbee};
if (!options.noConfigure) {
result.configure = async (device, coordinatorEndpoint, logger) => {
Expand Down

0 comments on commit 63e2dc3

Please sign in to comment.