Integrate pyezviz MQTT with doorbell

This commit is contained in:
2021-10-06 22:02:16 -06:00
parent c8bc300077
commit b20e2845b5
3 changed files with 61 additions and 20 deletions

View File

@@ -1,4 +1,9 @@
"""Ezviz cloud MQTT client for push messages."""
import os
import logging
logging.basicConfig(
format='[%(asctime)s] %(levelname)s %(module)s/%(funcName)s - %(message)s',
level=logging.DEBUG if os.environ.get('DEBUG') else logging.INFO)
import base64
import json
@@ -23,28 +28,28 @@ APP_SECRET = "17454517-cc1c-42b3-a845-99b4a15dd3e6"
def on_subscribe(client, userdata, mid, granted_qos):
"""On MQTT message subscribe."""
# pylint: disable=unused-argument
print("Subscribed: " + str(mid) + " " + str(granted_qos))
logging.info("Subscribed: " + str(mid) + " " + str(granted_qos))
def on_connect(client, userdata, flags, return_code):
"""On MQTT connect."""
# pylint: disable=unused-argument
if return_code == 0:
print("connected OK Returned code=", return_code)
logging.info("connected OK Returned code=%s", return_code)
else:
print("Bad connection Returned code=", return_code)
logging.info("Bad connection Returned code=%s", return_code)
client.reconnect()
def on_message(client, userdata, msg):
"""On MQTT message receive."""
# pylint: disable=unused-argument
mqtt_message = json.loads(msg.payload)
mqtt_message["ext"] = mqtt_message["ext"].split(",")
# Print payload message
decoded_message = {mqtt_message['ext'][2]:{'id':mqtt_message['id'], 'alert':mqtt_message['alert'], 'time':mqtt_message['ext'][1], 'alert type':mqtt_message['ext'][4], 'image':mqtt_message['ext'][16]}}
print(decoded_message)
#def on_message(client, userdata, msg):
# """On MQTT message receive."""
# # pylint: disable=unused-argument
# mqtt_message = json.loads(msg.payload)
# mqtt_message["ext"] = mqtt_message["ext"].split(",")
#
# # Print payload message
# decoded_message = {mqtt_message['ext'][2]:{'id':mqtt_message['id'], 'alert':mqtt_message['alert'], 'time':mqtt_message['ext'][1], 'alert type':mqtt_message['ext'][4], 'image':mqtt_message['ext'][16]}}
# print(decoded_message)
class MQTTClient(threading.Thread):
@@ -53,6 +58,7 @@ class MQTTClient(threading.Thread):
def __init__(
self,
token,
callback,
timeout=DEFAULT_TIMEOUT,
):
"""Initialize the client object."""
@@ -64,6 +70,7 @@ class MQTTClient(threading.Thread):
"username": None,
"api_url": "apiieu.ezvizlife.com",
}
self._callback = callback
self._timeout = timeout
self._stop_event = threading.Event()
self._mqtt_data = {
@@ -80,7 +87,7 @@ class MQTTClient(threading.Thread):
)
ezviz_mqtt_client.on_connect = on_connect
ezviz_mqtt_client.on_subscribe = on_subscribe
ezviz_mqtt_client.on_message = on_message
ezviz_mqtt_client.on_message = self._callback
ezviz_mqtt_client.username_pw_set(MQTT_APP_KEY, APP_SECRET)
ezviz_mqtt_client.connect(self._mqtt_data["push_url"], 1882, 60)