|
|
|
@ -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) |
|
|
|
|