71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import paho.mqtt.client as mqtt
|
||
|
import config
|
||
|
|
||
|
"""
|
||
|
MQTT class
|
||
|
"""
|
||
|
|
||
|
__author__ = "@tormakris"
|
||
|
__copyright__ = "Copyright 2020, Birbnetes Team"
|
||
|
__module_name__ = "mqtt"
|
||
|
__version__text__ = "1"
|
||
|
|
||
|
|
||
|
class MQTT:
|
||
|
"""
|
||
|
MQTT class used to make sending mqtt messages nice and simple
|
||
|
"""
|
||
|
|
||
|
def __init__(self, host=config.MQTT_HOSTNAME, port=config.MQTT_PORT, client_id=config.CLIENT_ID, qos=2,
|
||
|
retain=True):
|
||
|
"""
|
||
|
Init variables
|
||
|
:param host:
|
||
|
:param port:
|
||
|
:param client_id:
|
||
|
:param qos:
|
||
|
:param retain:
|
||
|
"""
|
||
|
self.client = None
|
||
|
self.host = host
|
||
|
self.port = port
|
||
|
self.client_id = client_id
|
||
|
self.topic = None
|
||
|
self.qos = qos
|
||
|
self.retain = retain
|
||
|
|
||
|
def get_topic(self) -> str:
|
||
|
"""
|
||
|
Set topic
|
||
|
:return:
|
||
|
"""
|
||
|
return self.topic
|
||
|
|
||
|
def set_topic(self, topic: str) -> None:
|
||
|
"""
|
||
|
Get current topic
|
||
|
:param topic:
|
||
|
:return:
|
||
|
"""
|
||
|
self.topic = topic
|
||
|
|
||
|
topic = property(get_topic, set_topic)
|
||
|
|
||
|
def connect(self) -> None:
|
||
|
"""
|
||
|
Setup client and connect to broker
|
||
|
:return:
|
||
|
"""
|
||
|
self.client = mqtt.Client(client_id=self.client_id, clean_session=True, userdata=None, protocol=mqtt.MQTTv311,
|
||
|
transport="tcp")
|
||
|
self.client.connect(host=self.host, port=self.port, keepalive=60)
|
||
|
|
||
|
def publish(self, message: str) -> None:
|
||
|
"""
|
||
|
Publish a message
|
||
|
:param message:
|
||
|
:return:
|
||
|
"""
|
||
|
self.client.publish(self.topic, message, qos=self.qos, retain=self.retain)
|