mqtt.cli.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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('$SYS/#',0)
  15. client.publish('message',"{'message':'avvio'}")
  16. def on_message(client,userdata,msg):
  17. ora = datetime.datetime.now().strftime("%H:%M:%S %d-%m-%Y")
  18. print('tipo dato ricevuto',type(msg.payload.decode()))
  19. print('msg.topic',msg.topic)
  20. print('msg.payload',str(msg.payload))
  21. # if type(msg.payload) == bytes:
  22. # print('msg.payload:',msg.payload.decode())
  23. data=None
  24. ok=False
  25. try:
  26. data = json.loads(msg.payload)
  27. print("{}: {}".format(ora,data))
  28. ok=True
  29. except json.decoder.JSONDecodeError as jse:
  30. print("errore",jse)
  31. print('payload',msg.payload)
  32. if ok:
  33. print(data['irrigatore'],data['status'],type(data['irrigatore']))
  34. if data['status'] == 1:
  35. GPIO.output(data['irrigatore'],GPIO.HIGH)
  36. else:
  37. GPIO.output(data['irrigatore'],GPIO.LOW)
  38. GPIO.setmode(GPIO.BCM)
  39. GPIO.setwarnings(False)
  40. for i in range(4,12):
  41. print('linea',i)
  42. GPIO.setup(i,GPIO.OUT)
  43. client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)
  44. client.on_connect = on_connect
  45. client.on_message = on_message
  46. client.username_pw_set('swarn','Abcd.1234')
  47. client.connect('nuc',1883,60)
  48. client.loop_forever()