Initial version
This commit is contained in:
46
energy_usage/mqtt_client.py
Normal file
46
energy_usage/mqtt_client.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import logging
|
||||
|
||||
import paho.mqtt.client as mqtt
|
||||
|
||||
class MqttClient:
|
||||
def __init__(self, server, port, username, password, topic, ca_certs, msg_q):
|
||||
self.username = username
|
||||
self.password = password
|
||||
self.topic = topic
|
||||
self.ca_certs = ca_certs
|
||||
self.server = server
|
||||
self.port = port
|
||||
self.msg_q = msg_q
|
||||
|
||||
self.logger = logging.getLogger(__name__)
|
||||
|
||||
self.client = mqtt.Client()
|
||||
self.client.on_connect = self.on_connect
|
||||
self.client.on_message = self.on_message
|
||||
|
||||
def __del__(self):
|
||||
self.client.loop_stop()
|
||||
|
||||
def connect(self):
|
||||
self.client.username_pw_set(self.username, password=self.password)
|
||||
self.client.tls_set(ca_certs=self.ca_certs)
|
||||
self.client.connect(self.server, self.port, 60)
|
||||
|
||||
def run(self):
|
||||
# Blocking call that processes network traffic, dispatches callbacks and
|
||||
# handles reconnecting.
|
||||
# Other loop*() functions are available that give a threaded interface and a
|
||||
# manual interface.
|
||||
self.client.loop_start()
|
||||
|
||||
# The callback for when the client receives a CONNACK response from the server.
|
||||
def on_connect(self, client, userdata, flags, rc):
|
||||
self.logger.info("Connected with result code " + str(rc))
|
||||
|
||||
# Subscribing in on_connect() means that if we lose the connection and
|
||||
# reconnect then subscriptions will be renewed.
|
||||
client.subscribe(self.topic)
|
||||
|
||||
# The callback for when a PUBLISH message is received from the server.
|
||||
def on_message(self, client, userdata, msg):
|
||||
self.msg_q.put(msg)
|
||||
Reference in New Issue
Block a user