diff --git a/lib/extension/bridgeConfig.js b/lib/extension/bridgeConfig.js index 49f0b0ed2..b38e67635 100644 --- a/lib/extension/bridgeConfig.js +++ b/lib/extension/bridgeConfig.js @@ -20,6 +20,7 @@ class BridgeConfig { this.reset = this.reset.bind(this); this.logLevel = this.logLevel.bind(this); this.devices = this.devices.bind(this); + this.groups = this.groups.bind(this); this.rename = this.rename.bind(this); this.remove = this.remove.bind(this); this.ban = this.ban.bind(this); @@ -35,6 +36,7 @@ class BridgeConfig { 'reset': this.reset, 'log_level': this.logLevel, 'devices': this.devices, + 'groups': this.groups, 'rename': this.rename, 'remove': this.remove, 'ban': this.ban, @@ -141,6 +143,10 @@ class BridgeConfig { this.mqtt.log('devices', devices); } + groups(topic, message) { + this.mqtt.log('groups', settings.getGroups()); + } + rename(topic, message) { const invalid = `Invalid rename message format expected {old: 'friendly_name', new: 'new_name} ` + `got ${message.toString()}`; diff --git a/lib/util/settings.js b/lib/util/settings.js index ae6de4b01..a51bbdba6 100644 --- a/lib/util/settings.js +++ b/lib/util/settings.js @@ -289,6 +289,7 @@ module.exports = { getDevice, getGroup, + getGroups, getDevices, addDevice: (ieeeAddr) => addDevice(ieeeAddr), removeDevice: (ieeeAddr) => removeDevice(ieeeAddr), diff --git a/test/bridgeConfig.test.js b/test/bridgeConfig.test.js index 16924204d..4fe865672 100644 --- a/test/bridgeConfig.test.js +++ b/test/bridgeConfig.test.js @@ -7,6 +7,7 @@ const configurationFile = data.joinPath('configuration.yaml'); const mqtt = { subscribe: (topic) => {}, + log: (type, message) => {}, }; describe('BridgeConfig', () => { @@ -114,4 +115,26 @@ describe('BridgeConfig', () => { expect(read(configurationFile)).toStrictEqual(expected); }); + + it('Get groups', async () => { + jest.spyOn(mqtt, 'log').mockImplementation((type, message) => { + expect(type).toBe('groups'); + expect(Object.keys(message)).toHaveLength(2); + expect(message['1'].friendly_name).toBe('test1'); + expect(message['4711'].friendly_name).toBe('test42'); + }); + + write(configurationFile, { + groups: { + '1': { + friendly_name: 'test1', + }, + '4711': { + friendly_name: 'test42', + }, + }, + }); + + bridgeConfig.onMQTTMessage('zigbee2mqtt/bridge/config/groups', 'whatever'); + }); });