From 42e780cb6958e05ec3d5b58f508d78a4fed38473 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Thu, 4 Jan 2018 20:45:45 +0100 Subject: [PATCH] homematic switch device feedback --- src/AHomematicItem.js | 5 +++-- src/HomematicSwitchItem.js | 13 ++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/AHomematicItem.js b/src/AHomematicItem.js index 923a250..a68b0e1 100644 --- a/src/AHomematicItem.js +++ b/src/AHomematicItem.js @@ -5,8 +5,9 @@ class AHomematicItem extends AItem { constructor(floor, room, item, hmId) { super(floor, room, item); this.hmId = hmId; - this.actionTopicPre = `homegear/instance1/set/${this.hmId}`; - this.deviceTopicPre = `homegear/instance1/plain/${this.hmId}`; + this.homegearTopicPre = 'homegear/instance1'; + this.actionTopicPre = `${this.homegearTopicPre}/set/${this.hmId}`; + this.deviceTopicPre = `${this.homegearTopicPre}/plain/${this.hmId}`; } } diff --git a/src/HomematicSwitchItem.js b/src/HomematicSwitchItem.js index 267bf9c..19497c5 100644 --- a/src/HomematicSwitchItem.js +++ b/src/HomematicSwitchItem.js @@ -8,9 +8,11 @@ class HomematicSwitchItem extends AHomematicItem { super(floor, room, item, hmId); this.stateTopic = `${this.topicFirstPart}/state`; this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`; + this.deviceFeedbackTopic = `${this.deviceTopicPre}/1/STATE`; this.actionTopic = `${this.actionTopicPre}/1/STATE`; this.subscribeTopics = [ - this.stateTopic + this.stateTopic, + this.deviceFeedbackTopic ]; this.state = 'OFF'; this.oldState = undefined; @@ -31,6 +33,15 @@ class HomematicSwitchItem extends AHomematicItem { this.oldState = this.state; } break; + case this.deviceFeedbackTopic: + if (payload == 'true') { + this.state = 'ON'; + } else { + this.state = 'OFF'; + } + this.oldState = this.state; + mqtt.send(this.stateFeedbackTopic, this.state); + break; } } }