forked from platypush/platypush
Refactored Zigbee backend and remove unused logic for keeping devices up-to-date
This commit is contained in:
parent
4c5a52417e
commit
314c01ef97
2 changed files with 19 additions and 43 deletions
|
@ -82,47 +82,29 @@ class ZigbeeMqttBackend(MqttBackend):
|
|||
:param password: Specify it if the MQTT server requires authentication (default: None)
|
||||
"""
|
||||
|
||||
if host:
|
||||
self.base_topic = base_topic
|
||||
listeners = [{
|
||||
'host': host,
|
||||
'port': port or self._default_mqtt_port,
|
||||
'tls_cafile': tls_cafile,
|
||||
'tls_certfile': tls_certfile,
|
||||
'tls_ciphers': tls_ciphers,
|
||||
'tls_keyfile': tls_keyfile,
|
||||
'tls_version': tls_version,
|
||||
'username': username,
|
||||
'password': password,
|
||||
'topics': [
|
||||
base_topic + '/' + topic
|
||||
for topic in ['bridge/state', 'bridge/log']
|
||||
],
|
||||
}]
|
||||
else:
|
||||
plugin = get_plugin('zigbee.mqtt')
|
||||
self.base_topic = plugin.base_topic
|
||||
listeners = [{
|
||||
'host': plugin.host,
|
||||
'port': plugin.port or self._default_mqtt_port,
|
||||
'tls_cafile': plugin.tls_cafile,
|
||||
'tls_certfile': plugin.tls_certfile,
|
||||
'tls_ciphers': plugin.tls_ciphers,
|
||||
'username': plugin.username,
|
||||
'password': plugin.password,
|
||||
'topics': [
|
||||
plugin.base_topic + '/' + topic
|
||||
for topic in ['bridge/state', 'bridge/log']
|
||||
],
|
||||
}]
|
||||
plugin = get_plugin('zigbee.mqtt')
|
||||
self.base_topic = base_topic or plugin.base_topic
|
||||
listeners = [{
|
||||
'host': host or plugin.host,
|
||||
'port': port or plugin.port or self._default_mqtt_port,
|
||||
'tls_cafile': tls_cafile or plugin.tls_cafile,
|
||||
'tls_certfile': tls_certfile or plugin.tls_certfile,
|
||||
'tls_ciphers': tls_ciphers or plugin.tls_ciphers,
|
||||
'tls_keyfile': tls_keyfile or plugin.tls_keyfile,
|
||||
'tls_version': tls_version or plugin.tls_version,
|
||||
'username': username or plugin.username ,
|
||||
'password': password or plugin.password,
|
||||
'topics': [
|
||||
self.base_topic + '/' + topic
|
||||
for topic in ['bridge/state', 'bridge/log']
|
||||
],
|
||||
}]
|
||||
|
||||
super().__init__(subscribe_default_topic=False, listeners=listeners, *args, **kwargs)
|
||||
self._devices = {}
|
||||
|
||||
def _process_state_message(self, client, msg):
|
||||
if msg == 'online':
|
||||
evt = ZigbeeMqttOnlineEvent
|
||||
self._refresh_devices(client)
|
||||
elif msg == 'offline':
|
||||
evt = ZigbeeMqttOfflineEvent
|
||||
self.logger.warning('zigbee2mqtt service is offline')
|
||||
|
@ -132,9 +114,6 @@ class ZigbeeMqttBackend(MqttBackend):
|
|||
# noinspection PyProtectedMember
|
||||
self.bus.post(evt(host=client._host, port=client._port))
|
||||
|
||||
def _refresh_devices(self, client):
|
||||
client.publish(self.base_topic + '/' + 'bridge/config/devices/get')
|
||||
|
||||
def _process_log_message(self, client, msg):
|
||||
msg_type = msg.get('type')
|
||||
msg = msg.get('message')
|
||||
|
@ -146,13 +125,10 @@ class ZigbeeMqttBackend(MqttBackend):
|
|||
for dev in (msg or []):
|
||||
devices[dev['friendly_name']] = dev
|
||||
client.subscribe(self.base_topic + '/' + dev['friendly_name'])
|
||||
|
||||
self._devices = devices
|
||||
elif msg_type == 'pairing':
|
||||
self.bus.post(ZigbeeMqttDevicePairingEvent(device=msg, **args))
|
||||
elif msg_type == 'device_connected':
|
||||
self.bus.post(ZigbeeMqttDeviceConnectedEvent(device=msg, **args))
|
||||
self._refresh_devices(client)
|
||||
elif msg_type in ['device_ban', 'device_banned']:
|
||||
self.bus.post(ZigbeeMqttDeviceBannedEvent(device=msg, **args))
|
||||
elif msg_type in ['device_removed', 'device_force_removed']:
|
||||
|
@ -165,7 +141,6 @@ class ZigbeeMqttBackend(MqttBackend):
|
|||
self.bus.post(ZigbeeMqttDeviceWhitelistedEvent(device=msg, **args))
|
||||
elif msg_type == 'device_renamed':
|
||||
self.bus.post(ZigbeeMqttDeviceRenamedEvent(device=msg, **args))
|
||||
self._refresh_devices(client)
|
||||
elif msg_type == 'device_bind':
|
||||
self.bus.post(ZigbeeMqttDeviceBindEvent(device=msg, **args))
|
||||
elif msg_type == 'device_unbind':
|
||||
|
|
|
@ -844,4 +844,5 @@ class ZigbeeMqttPlugin(MqttPlugin):
|
|||
self.publish(topic=self._topic('bridge/unbind/' + source),
|
||||
msg=target, **self._mqtt_args(**kwargs))
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
Loading…
Reference in a new issue