communicate-RaspberryPi.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536
  1. if __name__ == '__main__':
  2. # 配置树莓派GPIO引脚
  3. GPIO.setmode(GPIO.BOARD) # BOARD编号方式,基于插座引脚编号
  4. GPIO.setup(11, GPIO.OUT) # 输出模式
  5. # 配置MQTT连接信息
  6. client_id = DEV_NAME
  7. username = PRO_ID
  8. password = token(PRO_ID, DEV_NAME, DEV_KEY)
  9. print('username:' + username)
  10. print('password:' + password)
  11. client = mqtt.Client(client_id=client_id, clean_session=True, protocol=mqtt.MQTTv311)
  12. client.on_connect = on_connect
  13. client.on_message = on_message
  14. client.on_publish = on_publish
  15. client.on_subscribe = on_subscribe
  16. client.on_disconnect = on_disconnect
  17. client.username_pw_set(username=username, password=password)
  18. # client.tls_set(ca_certs='MQTTS-certificate.pem') # 加密方式需要使用鉴权证书
  19. # client.tls_insecure_set(True) #关验证
  20. client.connect(HOST, int(PORT), keepalive=1200)
  21. # 按照OneENT要求的格式,配置数据发布和订阅的主题
  22. topic_dp = '$sys/%s/%s/dp/post/json/+' % (username, DEV_NAME) # 设备上报数据主题
  23. topic_cmd = '$sys/%s/%s/cmd/#' % (username, DEV_NAME) # 设备接受命令主题
  24. topic_cmds = '$sys/%s/%s/cmd/request/' % (username, DEV_NAME) # 设备接受命令主题
  25. topic_publish = '$sys/%s/%s/dp/post/json' %(username,DEV_NAME)
  26. client.loop_start()
  27. count = 0
  28. while True:
  29. count += 1
  30. # 树莓派循环发布数据到OneNET
  31. client.publish(topic=topic_publish, payload=data(count, random.randint(0,100)), qos=1)
  32. print("-------------------------------------------------------------------------------")
  33. time.sleep(3)