mirror of
https://github.com/tsightler/ring-mqtt.git
synced 2025-10-25 09:40:26 +08:00
Initial device state framework
This commit is contained in:
14
lib/mqtt.js
14
lib/mqtt.js
@@ -9,7 +9,7 @@ class Mqtt {
|
||||
this.connected = false
|
||||
|
||||
// Configure event listeners
|
||||
utils.event.on('ringState', async (state) => {
|
||||
utils.event.on('ring_state', async (state) => {
|
||||
if (!this.client && state === 'connected') {
|
||||
// Ring API connected, short wait before starting MQTT client
|
||||
await utils.sleep(2)
|
||||
@@ -17,13 +17,13 @@ class Mqtt {
|
||||
}
|
||||
})
|
||||
|
||||
utils.event.on('mqttPublish', (topic, message) => {
|
||||
utils.event.on('mqtt_publish', (topic, message) => {
|
||||
this.client.publish(topic, (typeof message === 'number') ? message.toString() : message, { qos: 1 }, () => {
|
||||
// Just a dummy callback to prevent MQTT memory leak in 4.3.5/4.3.6
|
||||
})
|
||||
})
|
||||
|
||||
utils.event.on('mqttSubscribe', (topic) => {
|
||||
utils.event.on('mqtt_subscribe', (topic) => {
|
||||
this.client.subscribe(topic)
|
||||
})
|
||||
}
|
||||
@@ -61,7 +61,7 @@ class Mqtt {
|
||||
this.client.on('connect', () => {
|
||||
if (!this.connected) {
|
||||
this.connected = true
|
||||
utils.event.emit('mqttState', 'connected')
|
||||
utils.event.emit('mqtt_state', 'connected')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -72,20 +72,20 @@ class Mqtt {
|
||||
debug('Attempting to reconnect to MQTT broker...')
|
||||
}
|
||||
this.connected = false
|
||||
utils.event.emit('mqttState', 'disconnected')
|
||||
utils.event.emit('mqtt_state', 'disconnected')
|
||||
})
|
||||
|
||||
this.client.on('error', (error) => {
|
||||
debug('Unable to connect to MQTT broker', error.message)
|
||||
this.connected = false
|
||||
utils.event.emit('mqttState', 'disconnected')
|
||||
utils.event.emit('mqtt_state', 'disconnected')
|
||||
})
|
||||
|
||||
// Process MQTT messages from subscribed command topics
|
||||
this.client.on('message', (topic, message) => {
|
||||
message = message.toString()
|
||||
if (topic === utils.config.hass_topic || topic === 'hass/status' || topic === 'hassio/status') {
|
||||
utils.event.emit('haStatus', topic, message)
|
||||
utils.event.emit('ha_status', topic, message)
|
||||
} else {
|
||||
utils.event.emit(topic, topic.split("/").slice(-2).join("/"), message)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user