import paho.mqtt.client as mqtt
import json
#Message Queue Telemetry Tasnport
class Mqtt:
def __init__(self):
self.init()
pass
def on_connect(self,client, userdata, flags, rc):
if rc == 0:
print("completely connected")
else:
print("Bad connection Returned code=", rc)
def on_disconnect(self,client, userdata, flags, rc=0):
print(str(rc))
def on_subscribe(self,client, userdata, mid, granted_qos):
print("subscribed: " + str(mid) + " " + str(granted_qos))
def on_publish(self,client, userdata, mid):
print("In on_pub callback mid= ", mid)
def on_message(self,client, userdata, msg):
print(str(msg.payload.decode("utf-8")))
def init(self):
self.client = mqtt.Client() # 새로운 클라이언트 생성
self.client.on_connect = self.on_connect
self.client.on_disconnect = self.on_disconnect
self.client.on_publish = self.on_publish
self.client.on_subscribe = self.on_subscribe
self.client.on_message = self.on_message
self.client.connect('broker.hivemq.com', 1883) ## 원격 mqtt broker에 연결 address : broker.hivemq.com port: 1883 에 연결
#self.client.loop_start()
def subscribe(self,topic,cat=1):
self.client.subscribe(topic, cat)
self.client.loop_forever()
#self.client.loop_stop()
#self.client.disconnect()
#self.client.loop_forever()
def publish(self,topic,msg,cat=1):
self.client.publish(topic, msg,cat)
self.client.loop_forever()
def close(self):
self.client.loop_stop()
self.client.disconnect()
def __del__(self):
self.close()
if __name__=="__main__":
m=Mqtt()
m.subscribe('test/hello')