mqtt.cli.old 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/usr/bin/env python3
  2. import paho.mqtt.client as mqtt
  3. import RPi.GPIO as GPIO
  4. import datetime
  5. import time
  6. import json
  7. def on_connect(client, userdata, flags, reason_code, properties):
  8. print('connesso',reason_code)
  9. client.subscribe('sensor/+',0)
  10. client.subscribe('message/+',0)
  11. client.subscribe('request/#',0)
  12. client.subscribe('Irrigatore/#',0)
  13. client.subscribe('Pompa/#',0)
  14. client.subscribe('Valvola/#',0)
  15. #client.subscribe('$SYS/#',0)
  16. client.publish('message',"{'message':'avvio'}")
  17. def on_message(client,userdata,msg):
  18. ora = datetime.datetime.now().strftime("%H:%M:%S %d-%m-%Y")
  19. print('tipo dato ricevuto',type(msg.payload.decode()))
  20. print('msg.topic',msg.topic)
  21. print('msg.payload',str(msg.payload))
  22. # if type(msg.payload) == bytes:
  23. # print('msg.payload:',msg.payload.decode())
  24. data=None
  25. ok=False
  26. try:
  27. data = json.loads(msg.payload)
  28. print("{}: {}".format(ora,data))
  29. ok=True
  30. except json.decoder.JSONDecodeError as jse:
  31. print("errore",jse)
  32. print('payload',msg.payload)
  33. if ok:
  34. if 'irrigatore' in data:
  35. print(data['irrigatore'],data['status'],type(data['irrigatore']))
  36. if data['status'] == 1:
  37. GPIO.output(data['irrigatore'],GPIO.HIGH)
  38. else:
  39. GPIO.output(data['irrigatore'],GPIO.LOW)
  40. if 'pompa' in data:
  41. print(data['pompa'],data['status'],type(data['pompa']))
  42. if data['status'] == 1:
  43. GPIO.output(data['pompa'],GPIO.HIGH)
  44. else:
  45. GPIO.output(data['pompa'],GPIO.LOW)
  46. if 'valvola' in data:
  47. print(data['valvola'],data['status'],type(data['valvola']))
  48. if data['status'] == 1:
  49. GPIO.output(data['valvola'],GPIO.HIGH)
  50. else:
  51. GPIO.output(data['valvola'],GPIO.LOW)
  52. if 'request' in data:
  53. print('ricevuta richiesta')
  54. GPIO.setmode(GPIO.BCM)
  55. GPIO.setwarnings(False)
  56. for i in range(4,12):
  57. print('linea',i)
  58. GPIO.setup(i,GPIO.OUT)
  59. client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)
  60. client.on_connect = on_connect
  61. client.on_message = on_message
  62. client.username_pw_set('swarn','Abcd.1234')
  63. client.connect('nuc',1883,60)
  64. client.loop_forever()