diff --git a/lib/controller.js b/lib/controller.js index 73f3f60cc..41ebcb6d2 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -156,7 +156,14 @@ class Controller { } // Convert the MQTT message to a Zigbee message. - const json = JSON.parse(message); + let json = null; + try { + json = JSON.parse(message); + } catch (e) { + // Cannot be parsed to JSON, assume state message. + json = {state: message.toString()}; + } + Object.keys(json).forEach((key) => { // Find converter for this key. const converter = mqtt2zigbee[key]; diff --git a/lib/converters/zigbee2mqtt.js b/lib/converters/zigbee2mqtt.js index ab36a8683..6c672d488 100644 --- a/lib/converters/zigbee2mqtt.js +++ b/lib/converters/zigbee2mqtt.js @@ -195,7 +195,7 @@ const parsers = [ devices: ['ZNCZ02LM'], cid: 'genOnOff', type: 'attReport', - convert: (msg) => {return {state: msg.data.data['onOff'] === 1 ? '{"state": "ON"}': '{"state": "OFF"}'}} + convert: (msg) => {return {state: msg.data.data['onOff'] === 1 ? "ON" : "OFF"}} }, { devices: ['ZNCZ02LM'], diff --git a/lib/homeassistant.js b/lib/homeassistant.js index a099dbe56..5e987edc2 100644 --- a/lib/homeassistant.js +++ b/lib/homeassistant.js @@ -122,8 +122,8 @@ const homeassistant = { type: 'switch', object_id: 'switch', discovery_payload: { - payload_off: '{"state": "OFF"}', - payload_on: '{"state": "ON"}', + payload_off: 'OFF', + payload_on: 'ON', value_template: '{{ value_json.state }}', command_topic: true }