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)