国外网站如何做seo,淘宝开店网站怎么做,常用的网站制作软件,wordpress网站加密码破解【RT摩拳擦掌】RT云端测试之百度天工物接入构建#xff08;设备型#xff09; 一#xff0c; 文档介绍二#xff0c; 物接入IOT Hub物影子构建2.1 创建设备型项目2.2 创建物模型2.3 创建物影子 三#xff0c; MQTT fx客户端连接云端3.1 MQTT fx配置3.2 MQTT fx订阅3.3 MQT… 【RT摩拳擦掌】RT云端测试之百度天工物接入构建设备型 一 文档介绍二 物接入IOT Hub物影子构建2.1 创建设备型项目2.2 创建物模型2.3 创建物影子 三 MQTT fx客户端连接云端3.1 MQTT fx配置3.2 MQTT fx订阅3.3 MQTT fx发布3.4 发布数据测试结果 四 RT1060-EVK客户端连接云端4.1 代码修改点4.2 RT1060-EVK开发板测试结果 一 文档介绍
随着科技的进一步发展物联网广泛应用于各行各业比如工业农业环境交通物流安防等基础设施物联网的使用使我们的生活变得更加丰富多彩并且智能化。而爆发式发展的物联网首先离不开物联网平台云端目前市场上的云服务也是种类繁多比如Amazone的AWS微软的azure, google clould iot, 国内的阿里云百度物接入IOT hub 移动的oneNet等。 百度云作为中国一款流行的云在物联网这块也推出了针对物接入云的平台。百度天工物接入是一个全托管的云服务可以建立设备与云端之间的双向通信同时可以支撑海量设备的数据手机监控故障预测等物种物联网场景百度云物接入支持MQTT协议使用发布和订阅模式实现机器与云端的数据交互。 本文主要讲如何构建一个百度云设备型使用物影子方式实现云端服务器与设备端MQTT fx以及NXP 跨界处理器RT作为另外一个设备端点通过以太网的方式实现数据沟通。本文的云端拓扑结构如下
二 物接入IOT Hub物影子构建
首先进入百度智能云物联网物接入IoT Hub
https://cloud.baidu.com/product/iot.html 点击立即使用
2.1 创建设备型项目
创建项目选择设备型输入项目名称。设备型可以使用物影子作为设备在云端的映像可以直接查看数据的变化情况。创建好后会生成一个endpoint,以及对应的地址
2.2 创建物模型
物模型主要是建立物影子中所需要的各种属性比如温度湿度其他变量并且给与值的类型其实也是构成实际MQTT通信中json格式的表项。 点进刚刚新建的设备型项目这里可以新建物模型或者物影子
我们这里建立三个属性LEDstatushumidtemp 分别用以表示LED灯的状态湿度温度等便于实现云端与RT开发板的通信与控制。创建之后会得到如下图中情况
2.3 创建物影子
同样是在设备型项目里面可以选择物影子构建自己的物影子平台,输入名称并且选择物模型为刚刚新建的包含三个属性的物模型新建之后可以得到物影子的详情
同时还会生成该物影子相关的链接名称以及密钥我这里的测试平台情况如下
TCP Address: tcp://rndrjc9.mqtt.iot.gz.baidubce.com:1883
SSL Address: ssl://rndrjc9.mqtt.iot.gz.baidubce.com:1884
WSS Address: wss://rndrjc9.mqtt.iot.gz.baidubce.com:443
name: rndrjc9/RT1060BTCDShadow
key: y92ewvgjz23nzhgn端口1883不支持传输数据加密 端口1884, 支持SSL/TLS加密传输 端口8884, 支持wesockets方式连接同样包含SSL加密。 本篇文章作为第一篇简单的百度云物联网文章先使用无传输数据加密的1883端口。 到目前为止已经完成了百度云设备型云端物影子的构建下面可以使用MQTTfx工具去连接测试
三 MQTT fx客户端连接云端
MQTT.fx 是一款基于EclipsePaho使用Java 语言编写的MQTT 客户端工具支持通过Topic 订阅和发布消息。可以到如下连接下载
http://mqttfx.jensd.de/index.php/download 目前最新版本是1.7.1.
3.1 MQTT fx配置
下载安装之后可以打开首先需要配置下点击edit connection
Profile nameconnect的名称我们这里取名和云端影子一致便于后面更多云测试的时候识别。 Profile type: MQTT broker Broker address: 新建设备型项目的时候产生的链接这里使用1883无加密传输方式。 Broker port:1883无加密方式 Client ID: 这里同样配置为影子设备的名称RT1060BTCDShadow注意这么配置的原因是如果不一致那么不能直接看到云端影子已经上线如果配置和影子名字一致则一旦MQTT FX连接成功就能够看到云端影子也已经上线。 User credentials, 这里有User name和password,填入刚刚生成影子的时候界面给出的文件中的用户名和密钥。 到次已经配置好相关选项可以点击连接并且刷新物影子网页 连接前
连接后
3.2 MQTT fx订阅
涉及到订阅发布那么发布订阅的主题是怎样的呢 这里可以打开自己新建的物影子选择交互可以看到页面已经给出对应的主题情况
所以我们这里选择订阅的主题为
$baidu/iot/shadow/RT1060BTCDShadow/update/accepted 发布的主题为
$baidu/iot/shadow/RT1060BTCDShadow/update点击subscribe可以发现已经可以订阅。
3.3 MQTT fx发布
Publish这边需要输入发布的主题为
$baidu/iot/shadow/RT1060BTCDShadow/update当然还要输入发布的内容这里要注意下物影子并不像数据型设备那样可以实现数据的透传这里发布的数据需要是满足物影子物模型的json格式有人可能想那么我到底应该发什么数据呢 其实格式可以在物影子的原始数据里面已经给出了格式
我们这里可以不写desired,直接给出reported的json数据
{reported : {LEDstatus : true,humid : 88,temp : 11}
}其实这个json数据也可以通过网页版工具查看 https://www.bejson.com/jsonviewernew/
输入发布数据并且点击发布按钮
3.4 发布数据测试结果
发布之前清空并查看网页物模型数据
MQTT fx发布数据并查看订阅数据以及网页情况
可以看到发布的数据以及完全可以显示在物影子以及客户端订阅的地方。说明整个百度云的物影子已经连接成功。
四 RT1060-EVK客户端连接云端
本章主要使用NXP MIMXRT1060-EVK开发板的MQTT例程通过以太网方式连接百度云物影子并实现数据的订阅与发布具体温度采集和led控制后续会在百度云数据型测试中添加进去这里给出物影子方式RT开发板数据的发布与订阅打印已经查看云端是否能够接受到RT1060板子发出的数据。 代码使用官方SDK_2.8.0_EVK-MIMXRT1060下载链接为 https://mcuxpresso.nxp.com/ SDK_2.8.0_EVK-MIMXRT1060\boards\evkmimxrt1060\lwip_examples\lwip_mqtt
4.1 代码修改点
要实现和百度云物影子的链接需要注意如下几个点 客户端IDEXAMPLE_MQTT_CLIENT_ID 服务器主机 MQTT服务器端口号 用户名 密码 订阅主题 发布主题与数据 本文使用的是MCUXPresso IDE导入lwip_mqtt_freertos工程之后主要修改lwip_mqtt_freertos.c
#define EXAMPLE_MQTT_CLIENT_ID RT1060BTCDShadow_evk//
#define EXAMPLE_MQTT_SERVER_HOST rndrjc9.mqtt.iot.gz.baidubce.com
#define EXAMPLE_MQTT_USER rndrjc9/RT1060BTCDShadow
#define EXAMPLE_MQTT_PASS y92ewvgjz23nzhgn
#define EXAMPLE_MQTT_SERVER_PORT 1883static const struct mqtt_connect_client_info_t mqtt_client_info {.client_id EXAMPLE_MQTT_CLIENT_ID,//(const char *)client_id[0],.client_user EXAMPLE_MQTT_USER,.client_pass EXAMPLE_MQTT_PASS,.keep_alive 100,.will_topic NULL,.will_msg NULL,.will_qos 0,.will_retain 0,
#if LWIP_ALTCP LWIP_ALTCP_TLS.tls_config NULL,
#endif
};static void mqtt_subscribe_topics(mqtt_client_t *client)
{static const char *topics[] {$baidu/iot/shadow/RT1060BTCDShadow/update/accepted, $baidu/iot/shadow/RT1060BTCDShadow/update};int qos[] {0, 1};err_t err;int i0;mqtt_set_inpub_callback(client, mqtt_incoming_publish_cb, mqtt_incoming_data_cb,LWIP_CONST_CAST(void *, mqtt_client_info));// for (i 0; i ARRAY_SIZE(topics); i){err mqtt_subscribe(client, topics[i], qos[i], mqtt_topic_subscribed_cb, LWIP_CONST_CAST(void *, topics[i]));if (err ERR_OK){PRINTF(Subscribing to the topic \%s\ with QoS %d...\r\n, topics[i], qos[i]);}else{PRINTF(Failed to subscribe to the topic \%s\ with QoS %d: %d.\r\n, topics[i], qos[i], err);}}
}static void publish_message(void *ctx)
{static const char *topic $baidu/iot/shadow/RT1060BTCDShadow/update;static const char *message {\reported\ : { \LEDstatus\ : true , \humid\ : 66, \temp\ : 32 } };mqtt_publish(mqtt_client, topic, message, strlen(message), 1, 0, mqtt_message_published_cb, (void *)topic);
}发布内容不能直接给成json格式需要使用https://www.bejson.com/实现json压缩转义 {“reported” : { “LEDstatus” : true, “humid” : 88, “temp” : 11 } } 下面就可以编译代码并且烧录测试了。
4.2 RT1060-EVK开发板测试结果
测试结果如下可以看到代码一共发布5次而MQTT fx订阅的也收到了5次并且网页版物影子数据已经刷成RT1060-EVK 开发板的数据并且开发板串口也打印出自己订阅的数据,从结果可以发现RT1060-evk开发板也成功实现了百度云端的物影子数据发布与订阅下面就可以进一步开发自己嵌入式对接数据的控制情况了。
打印结果如下
Initializing PHY...************************************************MQTT client example
************************************************
Getting IP address from DHCP...IPv4 Address : 192.168.43.200
IPv4 Subnet mask : 255.255.255.0
IPv4 Gateway : 192.168.43.1Resolving rndrjc9.mqtt.iot.gz.baidubce.com...
Connecting to MQTT broker at 183.240.93.18...
MQTT client RT1060BTCDShadow_evk connected.
Subscribing to the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted with QoS 0...
Subscribed to the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted.
Published to the topic $baidu/iot/shadow/RT1060BTCDShadow/update.
Received 250 bytes from the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted: {requestId:30f56100-68ba-4466-9477-a365535d900c,reported:{LEDstatus:true,humid:66,temp:32},desired:{},lastUpdatedTime:{reported:{LEDstatus:1595853248732,humid:1595853248732,temp:1595853248732},desired:{}},profileVersion:2}
Published to the topic $baidu/iot/shadow/RT1060BTCDShadow/update.
Received 250 bytes from the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted: {requestId:86e3e1bd-ffad-4576-bc76-bab8f75cfa06,reported:{LEDstatus:true,humid:66,temp:32},desired:{},lastUpdatedTime:{reported:{LEDstatus:1595853249735,humid:1595853249735,temp:1595853249735},desired:{}},profileVersion:3}
Published to the topic $baidu/iot/shadow/RT1060BTCDShadow/update.
Received 250 bytes from the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted: {requestId:2b37aa8c-7cd4-4dcf-bcfa-a89529314329,reported:{LEDstatus:true,humid:66,temp:32},desired:{},lastUpdatedTime:{reported:{LEDstatus:1595853250715,humid:1595853250715,temp:1595853250715},desired:{}},profileVersion:4}
Published to the topic $baidu/iot/shadow/RT1060BTCDShadow/update.
Received 250 bytes from the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted: {requestId:ebf596d7-74e3-4799-8d61-35460a0fae18,reported:{LEDstatus:true,humid:66,temp:32},desired:{},lastUpdatedTime:{reported:{LEDstatus:1595853251966,humid:1595853251966,temp:1595853251966},desired:{}},profileVersion:5}
Published to the topic $baidu/iot/shadow/RT1060BTCDShadow/update.
Received 250 bytes from the topic $baidu/iot/shadow/RT1060BTCDShadow/update/accepted: {requestId:39164f97-51c8-4ead-9b92-7b8ff5d0c0b6,reported:{LEDstatus:true,humid:66,temp:32},desired:{},lastUpdatedTime:{reported:{LEDstatus:1595853252721,humid:1595853252721,temp:1595853252721},desired:{}},profileVersion:6}