diff --git a/lib/extension/bridge.js b/lib/extension/bridge.js index 34df9ed64..935c9364b 100644 --- a/lib/extension/bridge.js +++ b/lib/extension/bridge.js @@ -361,6 +361,7 @@ class Bridge extends Extension { version: this.zigbee2mqttVersion.version, commit: this.zigbee2mqttVersion.commitHash, coordinator: this.coordinatorVersion, + network: utils.toSnakeCase(await this.zigbee.getNetworkParameters()), log_level: logger.getLevel(), permit_join: await this.zigbee.getPermitJoin(), }; diff --git a/lib/extension/legacy/bridgeLegacy.js b/lib/extension/legacy/bridgeLegacy.js index b74b9f422..a1add6174 100644 --- a/lib/extension/legacy/bridgeLegacy.js +++ b/lib/extension/legacy/bridgeLegacy.js @@ -378,6 +378,7 @@ class BridgeLegacy extends Extension { version: info.version, commit: info.commitHash, coordinator, + network: await this.zigbee.getNetworkParameters(), log_level: logger.getLevel(), permit_join: await this.zigbee.getPermitJoin(), }; diff --git a/lib/util/utils.js b/lib/util/utils.js index 15c6d97d9..e76c48635 100644 --- a/lib/util/utils.js +++ b/lib/util/utils.js @@ -162,8 +162,11 @@ function* getExternalConvertersDefinitions(settings) { function toSnakeCase(value) { if (typeof value === 'object') { for (const key of Object.keys(value)) { - value[toSnakeCase(key)] = value[key]; - delete value[key]; + const keySnakeCase = toSnakeCase(key); + if (key !== keySnakeCase) { + value[keySnakeCase] = value[key]; + delete value[key]; + } } return value; } else { diff --git a/lib/zigbee.js b/lib/zigbee.js index e1d818754..2a94f377d 100644 --- a/lib/zigbee.js +++ b/lib/zigbee.js @@ -102,6 +102,10 @@ class Zigbee extends events.EventEmitter { return this.herdsman.getCoordinatorVersion(); } + async getNetworkParameters() { + return this.herdsman.getNetworkParameters(); + } + async reset(type) { await this.herdsman.reset(type); } diff --git a/test/bridge.test.js b/test/bridge.test.js index 35de421f4..5fe544994 100644 --- a/test/bridge.test.js +++ b/test/bridge.test.js @@ -38,7 +38,7 @@ describe('Bridge', () => { const version = await require('../lib/util/utils').getZigbee2mqttVersion(); expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/info', - JSON.stringify({"version":version.version,"commit":version.commitHash,"coordinator":{"type":"z-Stack","meta":{"version":1,"revision":20190425}},"log_level":"info","permit_join":false}), + JSON.stringify({"version":version.version,"commit":version.commitHash,"coordinator":{"type":"z-Stack","meta":{"version":1,"revision":20190425}},"network":{"channel":15,"pan_id":5674,"extended_pan_id":[0,11,22]},"log_level":"info","permit_join":false}), { retain: true, qos: 0 }, expect.any(Function) ); diff --git a/test/legacy/bridgeLegacy.test.js b/test/legacy/bridgeLegacy.test.js index cfbcbfe03..e319fa113 100644 --- a/test/legacy/bridgeLegacy.test.js +++ b/test/legacy/bridgeLegacy.test.js @@ -29,7 +29,7 @@ describe('Bridge legacy', () => { it('Should publish bridge configuration on startup', async () => { expect(MQTT.publish).toHaveBeenCalledWith( 'zigbee2mqtt/bridge/config', - JSON.stringify({"version":this.version.version,"commit":this.version.commitHash,"coordinator":{"type":"z-Stack","meta":{"version":1, "revision": 20190425}},"log_level":'info',"permit_join":false}), + JSON.stringify({"version":this.version.version,"commit":this.version.commitHash,"coordinator":{"type":"z-Stack","meta":{"version":1, "revision": 20190425}},"network":{"panID":5674,"extendedPanID":[0,11,22],"channel":15},"log_level":'info',"permit_join":false}), { retain: true, qos: 0 }, expect.any(Function) );