mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-10-23 06:12:23 +00:00
Home Assistant discovery: add color_mode for lights (#7057)
* Home Assistant add color_mode. * Fix tests * Fix coverage
This commit is contained in:
1 parent
8802354ca9
commit
7631c191c5
2 files changed
+27
-9
No files matched your search
@@ -82,17 +82,36 @@ class HomeAssistant extends Extension {
|
||||
let discoveryEntry = null;
|
||||
/* istanbul ignore else */
|
||||
if (expose.type === 'light') {
|
||||
const supportsXY = !!expose.features.find((e) => e.name === 'color_xy');
|
||||
const supportsHS = !!expose.features.find((e) => e.name === 'color_hs');
|
||||
const colorXY = expose.features.find((e) => e.name === 'color_xy');
|
||||
const colorHS = expose.features.find((e) => e.name === 'color_hs');
|
||||
const brightness = expose.features.find((e) => e.name === 'brightness');
|
||||
const colorTemp = expose.features.find((e) => e.name === 'color_temp');
|
||||
const colorModes = [];
|
||||
// Ignore else, all bulbs support atleast brightness
|
||||
/* istanbul ignore else */
|
||||
if (colorTemp || colorHS || colorXY) {
|
||||
if (colorXY) {
|
||||
colorModes.push('xy');
|
||||
} else if (colorHS) {
|
||||
colorModes.push('hs');
|
||||
}
|
||||
|
||||
if (colorTemp) {
|
||||
colorModes.push('color_temp');
|
||||
}
|
||||
} else if (brightness) {
|
||||
colorModes.push('brightness');
|
||||
} else {
|
||||
colorModes.push('onoff');
|
||||
}
|
||||
|
||||
discoveryEntry = {
|
||||
type: 'light',
|
||||
object_id: expose.endpoint ? `light_${expose.endpoint}` : 'light',
|
||||
discovery_payload: {
|
||||
brightness: !!expose.features.find((e) => e.name === 'brightness'),
|
||||
color_temp: !!colorTemp,
|
||||
xy: supportsXY,
|
||||
hs: !supportsXY && supportsHS,
|
||||
brightness: !!brightness,
|
||||
color_mode: true,
|
||||
supported_color_modes: colorModes,
|
||||
schema: 'json',
|
||||
command_topic: true,
|
||||
brightness_scale: 254,
|
||||
|
||||
@@ -248,7 +248,8 @@ describe('HomeAssistant extension', () => {
|
||||
],
|
||||
"brightness":true,
|
||||
"brightness_scale":254,
|
||||
"color_temp":true,
|
||||
"color_mode": true,
|
||||
"supported_color_modes": ["color_temp"],
|
||||
"min_mireds": 250,
|
||||
"max_mireds": 454,
|
||||
"command_topic":"zigbee2mqtt/bulb/set",
|
||||
@@ -270,13 +271,11 @@ describe('HomeAssistant extension', () => {
|
||||
"finish_effect",
|
||||
"stop_effect"
|
||||
],
|
||||
"hs":false,
|
||||
"json_attributes_topic":"zigbee2mqtt/bulb",
|
||||
"name":"bulb",
|
||||
"schema":"json",
|
||||
"state_topic":"zigbee2mqtt/bulb",
|
||||
"unique_id":"0x000b57fffec6a5b2_light_zigbee2mqtt",
|
||||
"xy":false
|
||||
};
|
||||
|
||||
expect(MQTT.publish).toHaveBeenCalledWith(
|
||||
|
||||
Reference in new issue
Block a user