From ec0ee53c7a1e69cbf66b09ad8d162ce527280966 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Wed, 20 Feb 2019 17:57:28 +0100 Subject: [PATCH] Log zigbee publish errors to MQTT. #1123 --- lib/extension/devicePublish.js | 11 +++++++++++ lib/mqtt.js | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/extension/devicePublish.js b/lib/extension/devicePublish.js index a332a1a92..149a07bb0 100644 --- a/lib/extension/devicePublish.js +++ b/lib/extension/devicePublish.js @@ -102,6 +102,15 @@ class DevicePublish { return {type: type, ID: ID, postfix: postfix}; } + handlePublishError(entity, message, error) { + const meta = { + entity, + message: message.toString(), + }; + + this.mqtt.log('zigbee_publish_error', error.toString(), meta); + } + handlePublished(entity, topic, converter, converted) { if (entity.type === 'device' && topic.type === 'set') { // Devices do not report when they go off, this ensures state (on/off) is always in sync. @@ -216,6 +225,8 @@ class DevicePublish { (error, rsp) => { if (!error) { this.handlePublished(entity, topic, converter, converted); + } else { + this.handlePublishError(entity, message, error); } } ); diff --git a/lib/mqtt.js b/lib/mqtt.js index fb3a22f67..1e303dd07 100644 --- a/lib/mqtt.js +++ b/lib/mqtt.js @@ -95,8 +95,13 @@ class MQTT { this.client.publish(topic, payload, options, callback); } - log(type, message) { + log(type, message, meta=null) { const payload = {type: type, message: message}; + + if (meta) { + payload.meta = meta; + } + this.publish('bridge/log', JSON.stringify(payload), {retain: false}); } }