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