mqtt_client.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import paho.mqtt.client as mqtt
  2. import json
  3. import config_info_model as md
  4. from config_info_model import configInfoModel
  5. class mqttClient(object):
  6. confModel = None
  7. def __init__(self, confModel):
  8. self.confModel = confModel
  9. self.init_mqtt()
  10. # The callback for when the client receives a CONNACK response from the server.
  11. def on_connect(self, client, userdata, flags, rc):
  12. print("Connected with result code "+str(rc)) #rc的值很重要,为0代表连接成功。
  13. # Subscribing in on_connect() means that if we lose the connection and
  14. # reconnect then subscriptions will be renewed.
  15. self.client.subscribe("$SYS/#") #订阅$SYS/下的所有主题
  16. def init_mqtt(self):
  17. self.client = mqtt.Client(self.confModel.ip)
  18. self.client.username_pw_set(self.confModel.username, password=self.confModel.password)
  19. self.client.on_connect = self.on_connect #连接broker时broker响应的回调
  20. self.client.on_message = self.on_message #接收到订阅消息时的回调
  21. def subscribe_update_topic(self):
  22. self.client.connect(self.confModel.ip, 1883, 600) #连接到broker
  23. self.client.subscribe("1/1/9", 0)
  24. self.client.loop_forever()
  25. # 回调数据
  26. def on_message(self, client, userdata, msg):
  27. data = msg.payload
  28. jsonStr = data.decode('utf-8')
  29. data = json.loads(jsonStr)['values']
  30. data_dict = {}
  31. for i in range(len(data)):
  32. v = data[i]
  33. data_dict[v['code']] = v['v']
  34. print(data_dict)
  35. def data_to_array(jsonStr):
  36. data = json.loads(jsonStr)
  37. print(type(data))
  38. if __name__ == "__main__":
  39. cf = md.configInfoModel('jinfeng')
  40. ct = mqttClient(cf)
  41. ct.subscribe_update_topic()
  42. # ew = mqttClient()
  43. # ew.subscribe_update_topic()