커뮤니티

  Python   view

  MQTT2021-05-11 15:42/김윤중/1306

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

re m d      LIST