Skip to content

Commit 0301c13

Browse files
committed
fix(homeassistant): mark cover config controls
1 parent 3760e63 commit 0301c13

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

lib/extension/homeassistant.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ const COVER_STOPPED_LOOKUP: ReadonlyArray<string> = ["stopped", "stop", "pause",
5151
const CONFIG_SWITCH_DISCOVERY_LOOKUP: {[s: string]: KeyValue} = {
5252
auto_lock: {entity_category: "config", icon: "mdi:lock"},
5353
away_mode: {entity_category: "config", icon: "mdi:home-export-outline"},
54+
tilt_mode: {entity_category: "config", icon: "mdi:angle-acute"},
5455
valve_detection: {entity_category: "config", icon: "mdi:pipe-valve"},
5556
window_detection: {entity_category: "config", icon: "mdi:window-open-variant"},
5657
} as const;
@@ -111,6 +112,7 @@ const BINARY_DISCOVERY_LOOKUP: {[s: string]: KeyValue} = {
111112
temperature_scale: {entity_category: "config", icon: "mdi:temperature-celsius"},
112113
test: {entity_category: "diagnostic", icon: "mdi:test-tube"},
113114
th_heater: {icon: "mdi:heat-wave"},
115+
tilt_mode: {entity_category: "config", icon: "mdi:angle-acute"},
114116
trigger_indicator: {icon: "mdi:led-on"},
115117
valve_alarm: {device_class: "problem"},
116118
valve_detection: {entity_category: "config", icon: "mdi:pipe-valve"},
@@ -298,6 +300,7 @@ const ENUM_DISCOVERY_LOOKUP: {[s: string]: KeyValue} = {
298300
mode_phase_control: {entity_category: "config", icon: "mdi:tune"},
299301
mode: {entity_category: "config", icon: "mdi:tune"},
300302
mode_switch: {icon: "mdi:tune"},
303+
motor_direction: {entity_category: "config", icon: "mdi:arrow-left-right"},
301304
motion_sensitivity: {entity_category: "config", icon: "mdi:tune"},
302305
operation_mode: {entity_category: "config", icon: "mdi:tune"},
303306
power_on_behavior: {entity_category: "config", icon: "mdi:power-settings"},
@@ -308,6 +311,7 @@ const ENUM_DISCOVERY_LOOKUP: {[s: string]: KeyValue} = {
308311
sensitivity: {entity_category: "config", icon: "mdi:tune"},
309312
sensor: {icon: "mdi:tune"},
310313
sensors_type: {entity_category: "config", icon: "mdi:tune"},
314+
set_limits: {entity_category: "config", icon: "mdi:ray-start-end"},
311315
sound_volume: {entity_category: "config", icon: "mdi:volume-high"},
312316
status: {icon: "mdi:state-machine"},
313317
switch_type: {entity_category: "config", icon: "mdi:tune"},

test/extensions/homeassistant.test.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,39 @@ describe("Extension: HomeAssistant", () => {
174174
}
175175
});
176176

177+
it("Should mark cover calibration controls as config entities", () => {
178+
const getDiscoveryConfigs = (expose: zhc.Expose): KeyValueAny[] => {
179+
const device = {
180+
definition: {},
181+
isDevice: (): boolean => true,
182+
isGroup: (): boolean => false,
183+
endpoint: () => undefined,
184+
options: {},
185+
exposes: (): zhc.Expose[] => [expose],
186+
zh: {endpoints: []},
187+
};
188+
// @ts-expect-error private method and minimal test device
189+
return extension.getConfigs(device);
190+
};
191+
192+
const enumExposes = [
193+
new zhc.Enum("set_limits", zhc.access.STATE_SET, ["START", "END", "RESET"]),
194+
new zhc.Enum("motor_direction", zhc.access.STATE_SET, ["forward", "back"]),
195+
];
196+
197+
for (const expose of enumExposes) {
198+
const [config] = getDiscoveryConfigs(expose);
199+
expect(config.type).toStrictEqual("select");
200+
expect(config.object_id).toStrictEqual(expose.property);
201+
expect(config.discovery_payload.entity_category).toStrictEqual("config");
202+
}
203+
204+
const [binaryConfig] = getDiscoveryConfigs(new zhc.Binary("tilt_mode", zhc.access.STATE_SET, "ON", "OFF"));
205+
expect(binaryConfig.type).toStrictEqual("switch");
206+
expect(binaryConfig.object_id).toStrictEqual("switch_tilt_mode");
207+
expect(binaryConfig.discovery_payload.entity_category).toStrictEqual("config");
208+
});
209+
177210
it("Should apply expose-level Home Assistant discovery metadata", () => {
178211
const createDevice = (exposes: zhc.Expose[]): Device =>
179212
({

0 commit comments

Comments
 (0)