mqtt_subscribe.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import mqtt
  2. import PikaStdDevice
  3. client = mqtt.MQTT('broker.emqx.io', port=1883,
  4. clinetID='clientid', username='name_', password='passwd_')
  5. ret = client.connect()
  6. print("connect ret:%d" % ret)
  7. def callback0(evt):
  8. print("py0 cb: %s-qos:%d-->>%s" % (evt.topic, evt.qos, evt.msg))
  9. def callback1(evt):
  10. print("py1 cb: %s-qos:%d-->>%s" % (evt.topic, evt.qos, evt.msg))
  11. def callback2(evt):
  12. print("py2 cb: %s-qos:%d-->>%s" % (evt.topic, evt.qos, evt.msg))
  13. def reconnect_mq(signal):
  14. print('lost mqtt connect and try to reconnect')
  15. print('signal:', signal)
  16. client.setKeepAlive(5)
  17. ret = client.subscribe('topic_pikapy_qos0', callback0, 0)
  18. print("subscribe ret:%d" % ret)
  19. ret = client.subscribe('topic_pikapy_qos1', callback1, 1)
  20. print("subscribe ret:%d" % ret)
  21. ret = client.subscribe('topic_pikapy_qos2', callback2, 2)
  22. print("subscribe ret:%d" % ret)
  23. client._fakeMsg("topic_pikapy_qos0", 0, "hello qos0")
  24. client._fakeMsg("topic_pikapy_qos1", 1, "hello qos1")
  25. client._fakeMsg("topic_pikapy_qos2", 2, "hello qos2")
  26. # sleep wait for recv data
  27. T = PikaStdDevice.Time()
  28. # T.sleep_s(5)
  29. out = client.listSubscribeTopic()
  30. print('listSubscribeTopic out', out)
  31. # client.unsubscribe('topic_pikapy_qos0');
  32. # client.unsubscribe('topic_pikapy_qos1');
  33. # client.unsubscribe('topic_pikapy_qos2');
  34. # T.sleep_s(5)
  35. # out2 = client.listSubscribeTopic()
  36. # print('listSubscribeTopic out2',out2)
  37. ret = client.setDisconnectHandler(reconnect_mq)
  38. print("setDisconnectHandler:%d" % ret)
  39. # ret = client.setWill('topic_will','lost mqtt connect')
  40. # print("setWill:%d" % ret)
  41. # client.publish('topic_will', 'hello pikascript', 1)
  42. # T.sleep_s(5)
  43. # print("sleep_s:5s")
  44. # T.sleep_s(30)
  45. # exit()
  46. ret = client.disconnect()
  47. print("disconnect ret:%d" % ret)