From a2a90bcdbd963cd5deae7a4b0c2a1a374a905cc1 Mon Sep 17 00:00:00 2001 From: Oli <932481+tb-killa@users.noreply.github.com> Date: Sun, 17 Mar 2019 20:04:51 +0100 Subject: [PATCH] Log zigbee2mqtt version information to bridge/config (#1267) * add coordinator_firmware to bridge/config * Add zigbee2mqtt version and commit * Whoops --- lib/controller.js | 22 +++------------------- lib/extension/bridgeConfig.js | 18 ++++++++++++------ lib/util/utils.js | 23 +++++++++++++++++++++++ lib/zigbee.js | 6 +++++- 4 files changed, 43 insertions(+), 26 deletions(-) diff --git a/lib/controller.js b/lib/controller.js index a7890b8b..76160ee7 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -5,6 +5,7 @@ const logger = require('./util/logger'); const settings = require('./util/settings'); const zigbeeShepherdConverters = require('zigbee-shepherd-converters'); const objectAssignDeep = require('object-assign-deep'); +const utils = require('./util/utils'); // Extensions const ExtensionNetworkMap = require('./extension/networkMap'); @@ -180,25 +181,8 @@ class Controller { } startupLogVersion(callback) { - const git = require('git-last-commit'); - const packageJSON = require('../package.json'); - const version = packageJSON.version; - - git.getLastCommit((err, commit) => { - let commitHash = null; - - if (err) { - try { - commitHash = require('../.hash.json').hash; - } catch (error) { - commitHash = 'unknown'; - } - } else { - commitHash = commit.shortHash; - } - - logger.info(`Starting zigbee2mqtt version ${version} (commit #${commitHash})`); - + utils.getZigbee2mqttVersion((info) => { + logger.info(`Starting zigbee2mqtt version ${info.version} (commit #${info.commitHash})`); callback(); }); } diff --git a/lib/extension/bridgeConfig.js b/lib/extension/bridgeConfig.js index a182497e..49f0b0ed 100644 --- a/lib/extension/bridgeConfig.js +++ b/lib/extension/bridgeConfig.js @@ -1,6 +1,7 @@ const settings = require('../util/settings'); const logger = require('../util/logger'); const zigbeeShepherdConverters = require('zigbee-shepherd-converters'); +const utils = require('../util/utils'); const configRegex = new RegExp(`${settings.get().mqtt.base_topic}/bridge/config/\\w+`, 'g'); const allowedLogLevels = ['error', 'warn', 'info', 'debug']; @@ -240,13 +241,18 @@ class BridgeConfig { } publish() { - const topic = `bridge/config`; - const payload = { - log_level: logger.transports.console.level, - permit_join: this.zigbee.getPermitJoin(), - }; + utils.getZigbee2mqttVersion((info) => { + const topic = `bridge/config`; + const payload = { + version: info.version, + commit: info.commitHash, + coordinator_firmware: this.zigbee.getFirmwareVersion(), + log_level: logger.transports.console.level, + permit_join: this.zigbee.getPermitJoin(), + }; - this.mqtt.publish(topic, JSON.stringify(payload), {retain: true, qos: 0}, null); + this.mqtt.publish(topic, JSON.stringify(payload), {retain: true, qos: 0}, null); + }); } } diff --git a/lib/util/utils.js b/lib/util/utils.js index e61df1bc..671b31f0 100644 --- a/lib/util/utils.js +++ b/lib/util/utils.js @@ -67,6 +67,28 @@ function getEndpointByEntityID(zigbee, entityID, epName) { return endpoint; } +function getZigbee2mqttVersion(callback) { + const git = require('git-last-commit'); + const packageJSON = require('../../package.json'); + const version = packageJSON.version; + + git.getLastCommit((err, commit) => { + let commitHash = null; + + if (err) { + try { + commitHash = require('../.hash.json').hash; + } catch (error) { + commitHash = 'unknown'; + } + } else { + commitHash = commit.shortHash; + } + + callback({commitHash, version}); + }); +} + module.exports = { millisecondsToSeconds: (milliseconds) => milliseconds / 1000, secondsToMilliseconds: (seconds) => seconds * 1000, @@ -76,4 +98,5 @@ module.exports = { toLocalISOString: (dDate) => toLocalISOString(dDate), getPostfixes: () => postfixes, getEndpointByEntityID, + getZigbee2mqttVersion, }; diff --git a/lib/zigbee.js b/lib/zigbee.js index d68ecc47..cbc6411b 100644 --- a/lib/zigbee.js +++ b/lib/zigbee.js @@ -87,10 +87,14 @@ class Zigbee { logStartupInfo() { logger.info('zigbee-shepherd started'); - logger.info(`Coordinator firmware version: '${this.shepherd.info().firmware.revision}'`); + logger.info(`Coordinator firmware version: '${this.getFirmwareVersion()}'`); logger.debug(`zigbee-shepherd info: ${JSON.stringify(this.shepherd.info())}`); } + getFirmwareVersion() { + return this.shepherd.info().firmware.revision; + } + softReset(callback) { this.shepherd.reset('soft', callback); }