Guest User

Untitled

a guest
Nov 8th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # config: utf-8
  3.  
  4. """
  5. MQTTの簡単なパブリッシャー
  6.  
  7. usage: mqtt_publish.py [-h] [-H HOST] [-P PORT] [-t TOPIC] [-u USER] [-p PASSWORD] [-r]
  8. [-d]
  9. message
  10.  
  11. positional arguments:
  12. message
  13.  
  14. optional arguments:
  15. -h, --help show this help message and exit
  16. -H HOST, --host HOST host
  17. -P PORT, --port PORT port
  18. -t TOPIC, --topic TOPIC
  19. -u USER, --user USER
  20. -p PASSWORD, --password PASSWORD
  21. -r, --retain
  22. -d, --debug
  23.  
  24.  
  25. $ python3 mqtt_publish.py -H test.mosquitto.org -P 1883 -t 'aichi/nagoya' 'message'
  26.  
  27. 必須パッケージ
  28. - paho-mqtt
  29. """
  30.  
  31. from logging import getLogger, DEBUG, INFO, StreamHandler
  32. import sys
  33. logger = getLogger(__name__)
  34. logger.setLevel(INFO)
  35. logger.addHandler(StreamHandler(stream=sys.stdout))
  36.  
  37. import argparse
  38. import paho.mqtt.client as mqtt
  39. import os
  40.  
  41. parser = argparse.ArgumentParser(description="")
  42. parser.add_argument('-H', '--host', action='store', type=str, default='localhost', help='host')
  43. parser.add_argument('-P', '--port', action='store', type=int, default=1883, help='port')
  44. parser.add_argument('-t', '--topic', action='store', type=str, default='test')
  45. parser.add_argument('-u', '--user', action='store', type=str, default=None)
  46. parser.add_argument('-p', '--password', action='store', type=str, default=None)
  47. parser.add_argument('-r', '--retain', action='store_true', default=False)
  48. parser.add_argument('-d', '--debug', action='store_true', default=False)
  49. parser.add_argument('message', metavar='message', action='store', type=str, default=None)
  50.  
  51. def main():
  52. arg = parser.parse_args()
  53. topic = arg.topic
  54.  
  55. if arg.debug:
  56. logger.setLevel(DEBUG)
  57.  
  58. logger.debug(arg)
  59.  
  60. message = arg.message
  61. if not os.isatty(0):
  62. message = sys.stdin.read()
  63.  
  64. if not message:
  65. sys.stdout.write("EMPTY MESSAGE. \r\n")
  66. sys.exit(1)
  67.  
  68. client = mqtt.Client(protocol=mqtt.MQTTv311)
  69.  
  70. if arg.user:
  71. client.username_pw_set(arg.user, password=arg.password)
  72.  
  73. try:
  74. client.connect(arg.host, arg.port)
  75. client.publish(topic, message, retain=arg.retain)
  76. finally:
  77. client.disconnect()
  78.  
  79.  
  80. if __name__ == '__main__':
  81. try:
  82. main()
  83. except KeyboardInterrupt:
  84. sys.exit(0)
Add Comment
Please, Sign In to add comment