diff --git a/lib/controller.js b/lib/controller.js index 5dc05be5..8ef7e79d 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -263,7 +263,7 @@ class Controller { } const options = { - retain: entity.settings.retain, + retain: entity.settings.hasOwnProperty('retain') ? entity.settings.retain : false, qos: entity.settings.hasOwnProperty('qos') ? entity.settings.qos : 0, }; diff --git a/lib/util/settings.js b/lib/util/settings.js index b6810a1c..54db7827 100644 --- a/lib/util/settings.js +++ b/lib/util/settings.js @@ -205,7 +205,7 @@ const schema = { retain: {type: 'boolean'}, qos: {type: 'number'}, }, - required: ['friendly_name', 'retain'], + required: ['friendly_name'], }, }, }, @@ -224,7 +224,7 @@ const schema = { optimistic: {type: 'boolean'}, qos: {type: 'number'}, }, - required: ['friendly_name', 'retain'], + required: ['friendly_name'], }, }, }, @@ -447,7 +447,7 @@ function addDevice(ID) { settings.devices = {}; } - settings.devices[ID] = {friendly_name: ID, retain: false}; + settings.devices[ID] = {friendly_name: ID}; write(); return getDevice(ID); } @@ -507,7 +507,7 @@ function addGroup(name, ID=null) { } } - settings.groups[ID] = {friendly_name: name, retain: false}; + settings.groups[ID] = {friendly_name: name}; write(); return getGroup(ID); diff --git a/test/bridgeConfig.test.js b/test/bridgeConfig.test.js index 5fcc4474..0cc81e08 100644 --- a/test/bridgeConfig.test.js +++ b/test/bridgeConfig.test.js @@ -205,7 +205,7 @@ describe('Bridge config', () => { zigbeeHerdsman.createGroup.mockClear(); MQTT.events.message('zigbee2mqtt/bridge/config/add_group', 'new_group'); await flushPromises(); - expect(settings.getGroup('new_group')).toStrictEqual({"ID": 3, "friendlyName": "new_group", "friendly_name": "new_group", "retain": false, devices: [], optimistic: true}); + expect(settings.getGroup('new_group')).toStrictEqual({"ID": 3, "friendlyName": "new_group", "friendly_name": "new_group", devices: [], optimistic: true}); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledTimes(1); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledWith(3) }); @@ -214,7 +214,7 @@ describe('Bridge config', () => { zigbeeHerdsman.createGroup.mockClear(); MQTT.events.message('zigbee2mqtt/bridge/config/add_group', '{"friendly_name": "new_group"}'); await flushPromises(); - expect(settings.getGroup('new_group')).toStrictEqual({"ID": 3, "friendlyName": "new_group", "friendly_name": "new_group", "retain": false, devices: [], optimistic: true}); + expect(settings.getGroup('new_group')).toStrictEqual({"ID": 3, "friendlyName": "new_group", "friendly_name": "new_group", devices: [], optimistic: true}); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledTimes(1); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledWith(3) }); @@ -223,7 +223,7 @@ describe('Bridge config', () => { zigbeeHerdsman.createGroup.mockClear(); MQTT.events.message('zigbee2mqtt/bridge/config/add_group', '{"friendly_name": "new_group", "id": 42}'); await flushPromises(); - expect(settings.getGroup('new_group')).toStrictEqual({"ID": 42, "friendlyName": "new_group", "friendly_name": "new_group", "retain": false, devices: [], optimistic: true}); + expect(settings.getGroup('new_group')).toStrictEqual({"ID": 42, "friendlyName": "new_group", "friendly_name": "new_group", devices: [], optimistic: true}); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledTimes(1); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledWith(42) }); @@ -232,7 +232,7 @@ describe('Bridge config', () => { zigbeeHerdsman.createGroup.mockClear(); MQTT.events.message('zigbee2mqtt/bridge/config/add_group', '{"id": 42}'); await flushPromises(); - expect(settings.getGroup('group_42')).toStrictEqual({"ID": 42, "friendlyName": "group_42", "friendly_name": "group_42", "retain": false, devices: [], optimistic: true}); + expect(settings.getGroup('group_42')).toStrictEqual({"ID": 42, "friendlyName": "group_42", "friendly_name": "group_42", devices: [], optimistic: true}); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledTimes(1); expect(zigbeeHerdsman.createGroup).toHaveBeenCalledWith(42) }); diff --git a/test/controller.test.js b/test/controller.test.js index 02af3a79..5dda197f 100644 --- a/test/controller.test.js +++ b/test/controller.test.js @@ -238,7 +238,7 @@ describe('Controller', () => { const payload = {device, endpoint: device.getEndpoint(1), type: 'attributeReport', linkquality: 10, groupID: 0, cluster: 'genBasic', data: {modelId: device.modelID}}; await zigbeeHerdsman.events.message(payload); await flushPromises(); - expect(settings.getDevice(device.ieeeAddr)).toStrictEqual({"ID": "0x0017880104e45519", "friendlyName": "0x0017880104e45519", "friendly_name": "0x0017880104e45519", "retain": false}); + expect(settings.getDevice(device.ieeeAddr)).toStrictEqual({"ID": "0x0017880104e45519", "friendlyName": "0x0017880104e45519", "friendly_name": "0x0017880104e45519"}); }); it('On zigbee deviceJoined', async () => { diff --git a/test/settings.test.js b/test/settings.test.js index 6765e6c5..6ce094c0 100644 --- a/test/settings.test.js +++ b/test/settings.test.js @@ -55,7 +55,6 @@ describe('Settings', () => { devices: { '0x12345678': { friendly_name: '0x12345678', - retain: false, }, }, }; @@ -178,7 +177,6 @@ describe('Settings', () => { }, '0x1234': { friendly_name: '0x1234', - retain: false, }, }; @@ -199,7 +197,6 @@ describe('Settings', () => { const expected = { '0x1234': { friendly_name: '0x1234', - retain: false, }, }; @@ -302,7 +299,6 @@ describe('Settings', () => { const expectedDevice = { '0x1234': { friendly_name: '0x1234', - retain: false, }, }; @@ -325,7 +321,6 @@ describe('Settings', () => { ID: '0x1234', friendlyName: '0x1234', friendly_name: '0x1234', - retain: false, }; expect(settings.getDevice('0x1234')).toStrictEqual(expectedDevice2); @@ -338,7 +333,6 @@ describe('Settings', () => { const expected = { '1': { friendly_name: 'test123', - retain: false, }, }; @@ -352,7 +346,6 @@ describe('Settings', () => { const expected = { '123': { friendly_name: 'test123', - retain: false, }, }; @@ -369,7 +362,6 @@ describe('Settings', () => { const expected = { '1': { friendly_name: 'test123', - retain: false, }, }; @@ -386,7 +378,6 @@ describe('Settings', () => { const expected = { '123': { friendly_name: 'test123', - retain: false, }, }; @@ -408,7 +399,6 @@ describe('Settings', () => { const expected = { '1': { friendly_name: 'test123', - retain: false, devices: ['0x123'], }, };