Home Assistant discovery: add color_mode for lights (#7057)

* Home Assistant add color_mode.

* Fix tests

* Fix coverage
This commit is contained in:
Koen Kanters authored and GitHub committed 2021-04-25 14:56:59 +02:00
1 parent 8802354ca9
commit 7631c191c5
2 files changed
+27 -9

No files matched your search

+25 -6
View File
@@ -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,
+2 -3
View File
@@ -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(