Send all cached status on hass/status:online. #105

This commit is contained in:
Koenkk
2018-06-13 19:51:40 +02:00
parent 7041637e5b
commit 3196c0a974
+15
View File
@@ -69,6 +69,10 @@ class Controller {
`${settings.get().mqtt.base_topic}/bridge/config/+`,
];
if (settings.get().homeassistant) {
subscriptions.push('hass/status');
}
this.mqtt.connect(this.handleMQTTMessage, subscriptions, () => this.handleMQTTConnected());
}
});
@@ -87,6 +91,10 @@ class Controller {
}
// Resend all cached states.
this.sendAllCachedStates();
}
sendAllCachedStates() {
this.zigbee.getAllClients().forEach((device) => {
if (this.stateCache.hasOwnProperty(device.ieeeAddr)) {
this.mqttPublishDeviceState(device.ieeeAddr, this.stateCache[device.ieeeAddr], false);
@@ -312,6 +320,13 @@ class Controller {
this.handleMQTTMessageConfig(topic, message);
} else if (topic.match(mqttDeviceRegex) || topic.match(mqttDevicePrefixRegex)) {
this.handleMQTTMessageDevice(topic, message, topic.match(mqttDevicePrefixRegex));
} else if (topic === 'hass/status') {
if (message.toString().toLowerCase() === 'online') {
const timer = setTimeout(() => {
this.sendAllCachedStates();
clearTimeout(timer);
}, 3000);
}
} else {
logger.warn(`Cannot handle MQTT message with topic '${topic}' and message '${message}'`);
}