From 076ada23257dccbe206ae9de9e70be850e756262 Mon Sep 17 00:00:00 2001 From: Massimiliano <56152515+Trexano99@users.noreply.github.com> Date: Sun, 6 Oct 2024 21:35:46 +0200 Subject: [PATCH] fix: Fix group state change for open/close devices (#24226) * Fix group state change if OPEN * Runned Prettier --- lib/extension/groups.ts | 11 ++++++++--- lib/util/settings.schema.json | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/extension/groups.ts b/lib/extension/groups.ts index 4e834c2e1..c462359b6 100644 --- a/lib/extension/groups.ts +++ b/lib/extension/groups.ts @@ -228,17 +228,22 @@ export default class Groups extends Extension { } private shouldPublishPayloadForGroup(group: Group, payload: KeyValue): boolean { - return group.options.off_state === 'last_member_state' || !payload || payload.state !== 'OFF' || this.areAllMembersOff(group); + return ( + group.options.off_state === 'last_member_state' || + !payload || + (payload.state !== 'OFF' && payload.state !== 'CLOSE') || + this.areAllMembersOffOrClosed(group) + ); } - private areAllMembersOff(group: Group): boolean { + private areAllMembersOffOrClosed(group: Group): boolean { for (const member of group.zh.members) { const device = this.zigbee.resolveEntity(member.getDevice())!; if (this.state.exists(device)) { const state = this.state.get(device); - if (state.state === 'ON') { + if (state.state === 'ON' || state.state === 'OPEN') { return false; } } diff --git a/lib/util/settings.schema.json b/lib/util/settings.schema.json index 7cbcbe0d7..7ee31ebe7 100644 --- a/lib/util/settings.schema.json +++ b/lib/util/settings.schema.json @@ -950,7 +950,7 @@ "title": "Group off state", "default": "auto", "requiresRestart": true, - "description": "Control when to publish state OFF for a group. 'all_members_off': only publish state OFF when all group members are in state OFF, 'last_member_state': publish state OFF whenever one of its members changes to OFF" + "description": "Control when to publish state OFF or CLOSE for a group. 'all_members_off': only publish state OFF/CLOSE when all group members are in state OFF/CLOSE, 'last_member_state': publish state OFF whenever one of its members changes to OFF" }, "filtered_attributes": { "type": "array",