mqtt_subscribe.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import mqtt
  2. import time
  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 = time
  29. # T.sleep_s(5)
  30. out = client.listSubscribeTopic()
  31. print('listSubscribeTopic out', out)
  32. # client.unsubscribe('topic_pikapy_qos0');
  33. # client.unsubscribe('topic_pikapy_qos1');
  34. # client.unsubscribe('topic_pikapy_qos2');
  35. # T.sleep_s(5)
  36. # out2 = client.listSubscribeTopic()
  37. # print('listSubscribeTopic out2',out2)
  38. ret = client.setDisconnectHandler(reconnect_mq)
  39. print("setDisconnectHandler:%d" % ret)
  40. # ret = client.setWill('topic_will','lost mqtt connect')
  41. # print("setWill:%d" % ret)
  42. # client.publish('topic_will', 'hello pikascript', 1)
  43. # T.sleep_s(5)
  44. # print("sleep_s:5s")
  45. # T.sleep_s(30)
  46. # exit()
  47. ret = client.disconnect()
  48. print("disconnect ret:%d" % ret)