#导入Word文档图片# MQTT协议连接百度物联网IOT服务器
Posted DS小龙哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#导入Word文档图片# MQTT协议连接百度物联网IOT服务器相关的知识,希望对你有一定的参考价值。
创建第一个温度设备和温度仪表盘
在登录百度天工物接设备前需要先注册百度账号。
每个月有1百万条免费信息可以使用。
https://console.bce.baidu.com/iot2/hub/order/create/COMMON
注意: 后面创建物可视界面时,需要使用到存储配置,在后面的截图会进行创建,存储数据需要使用数据库,需单独购买。
TCP Address:tcp://a7cysdm.mqtt.iot.gz.baidubce.com:1883 SSL Address:ssl://a7cysdm.mqtt.iot.gz.baidubce.com:1884 WSS Address:wss://a7cysdm.mqtt.iot.gz.baidubce.com:443 name:a7cysdm/temp key:p3s1wztrxpfth12w |
下面将进行创建web仪表盘,生成网页界面文件,可生成链接分享给其他人,通过浏览器访问即可看到设计的页面,硬件设备上传的数据可以通过该仪表盘进行同步显示。
完成数据表和存储配置之后,回到UI设计界面,对仪表盘进行数据来源绑定,这样仪表盘就可以显示来至数据源的数据了。
二、下载MQTT客户端代码
SDK下载页面: https://cloud.baidu.com/doc/IOT/IOTService.html#.16.E9.B0.78.14.44.44.D9.38.48.96.FF.7C.DA.76.5F
2.1 下载TLS认证文件
物接入支持SSL/TLS加密传输方式,保障用户的数据传输安全。用户在执行示例代码前,需先下载TLS认证文件,并在代码中指定认证文件的存放路径。
下载TLS认证文件 ,并将认证文件保存至示例代码路径下。
2.2 下载MQTT-c压缩包 ,解压MQTT-c,目录结构如下:
MQTT-c ├── include ├── lib ├── src ├── ConnectorSync.c ├── PublisherSync.c ├── SubscriberSync.c ├── Makefile ├── root_cert.pem |
打开src/PublisherSync.c,配置以下参数:
参数名称 | 解释 |
PRIVATE_FILE | 输入认证文件所在目录 |
USER | 创建物接入设备后返回的用户名,参见创建物接入设备中的步骤3 |
PWD | 创建身份后返回的密钥,参见创建物接入身份 |
publisher | 用来标识设备的ID,用户可自己定义,在同一个实例下,每个实体设备需要有一个唯一的ID,不同实体设备使用同一个client id建立连接会导致其它连接下线。client id只支持英文大小写字母,数字0-9,中划线和下划线,不支持其它字符。 |
打开src/SubscriberSync.c,配置以下参数:
参数名称 | 解释 |
PRIVATE_FILE | 输入认证文件所在目录 |
USER | 创建物接入设备后返回的用户名,参见创建物接入设备中的步骤3 |
PWD | 创建身份后返回的密钥,参见创建物接入身份 |
clientId | 用来标识设备的ID,用户可自己定义,在同一个实例下,每个实体设备需要有一个唯一的ID,不同实体设备使用同一个client id建立连接会导致其它连接下线。client id只支持英文大小写字母,数字0-9,中划线和下划线,不支持其它字符。 |
打开Makefile文件:
编辑`LIB_PATH`和`INCLUDE_PATH`,路径为MQTT -c文件的当前存储位置。
LIB_PATH = /home/iot/MQTT-c/lib INCLUDE_PATH = /home/iot/MQTT-c/include |
编辑后执行`make all`编译文件,生成“PublisherSync”和“SubscriberSync”文件。
运行“SubscriberSync”文件,参照命令格式Subscriber [host:port] [topic],执行订阅操作:
`./SubscriberSync ssl://yourendpointname.mqtt.iot.gz.baiduce.com:1884 topic` |
运行“PublisherSync”文件,参照命令格式publish [host:port] [topic] [payload],执行发布操作
`./PublisherSync ssl://yourendpointname.mqtt.iot.gz.baiduce.com:1884 topic publishmessage` |
返回message,说明发布成功。
说明:
如果提示"libpaho-mqtt3cs.so.1"无法找到,请执行export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/iot/MQTT-c/lib |
2.3 下载并运行MQTT客户端代码
项目名称和密码在创建设备之后返回的对话框里有。
三、IoT Edge SDK
下载页面: https://cloud.baidu.com/doc/IOT/IoTEdgeSDK.html#IoT.20Edge.20SDK-1
3.1 百度云天工物联网平台 IoT Edge SDK for C
此代码库包含以下组件:
- iothub_client(物接入Edge SDK for C) 帮助设备快速接入百度云天工物接入服务
- Serializer函数库帮助进行序列化和反序列化数据,来进行数据在设备上的存储或读取
3.2 物接入Edge SDK for C
- 代码使用ANSI C(C99)规范,从而使代码更方便移植到不同的平台中
- 请避免使用编译器扩展选项,防止在不同平台上编译的不同行为表现
- 在物接入Edge SDK中,使用了一个平台抽象层,以隔离操作系统相关性(线程和互斥机制,通信协议,例如HTTP等)。
3.3 如何克隆资源库
该代码库使用了一些第三方库作为子模块依赖关系。为了自动克隆这些子模块,您需要使用如下所述的--recursive选项:
git clone --recursive https://github.com/baidu/iot-edge-c-sdk.git
3.4 OS平台和硬件兼容性
百度天工IoT Edge SDK可用于广泛的操作系统平台和设备。对于设备的最低要求是:
- 能够建立IP连接:只有IP功能的设备可以直接与天工物接入(IoT Hub)进行通信。
- 支持TLS(可选):推荐设备使用TLS来与物接入(IoT Hub)进行安全连接。 但这不是必需的。 IoT Edge SDK也支持使用用户名/密码的方式
- 支持SHA-256(可选):用于使用服务认证设备的安全令牌。
- 具有实时时钟或实现代码连接到NTP服务器(可选):如果你使用TLS连接或使用安全令牌以进行身份验证,时钟同步是必需的。
- 具有至少64KB的RAM:SDK的具体内存占用取决于所使用的SDK文件、协议以及目标平台。我们尽可能将占用减到最低。
3.5 SDK目录结构
- /c-utility引用的git子模块,使用的第三方工具库。请注意,其中可能包含嵌套子模块。
- /umqtt引用的git子模块,使用的第三方MQTT客户端。请注意,其中可能包含嵌套子模块。
- /parson引用的git子模块,使用的第三方的JSON库。请注意,其中可能包含嵌套子模块
- /certs包含与物接入进行通信所需的证书。
- /build_all包含客户端库和相关组件的针对指定平台的编译脚本。
- /iothub_client包含物接入IoT Hub客户端组件,将消息发往云端的物接入服务。有关如何使用它的信息,请参阅https://cloud.baidu.com/doc/IOT/API.html
- /serializer
包含在原始消息库之上提供存储和JSON序列化功能的库。这些库便于上传结构化数据以及用于物接入服务的命令和控制。
3.6 准备开发环境
这篇文章介绍如何准备开发环境来使用百度云天工的c语言版本的IoT Edge sDK。这里主要介绍如何配置windows和Linux下的开发环境。
3.7 关于openssl
目前openssl LTS的版本有两个:1.0.2x和1.1.x ,两者的区别在于,后者在前者的基础上优化了API接口,一些数据结构已经对开发者透明,也就是说,如果在1.0.2x可以编译成功的软件,在1.1.x版本的openssl下就无法编译成功了。正是因为这个原因,openssl组织仍需要维护之前老接口的openssl版本(因为大量软件使用的仍旧是老接口),也就是1.0.2x,但这两个版本在安全性上是等价的。本sdk使用的是1.0.2x版本。请务必下载最新版本的openssl!如果是用git clone openssl仓库,也务必使用-b参数注明版本!
git clone https://github.com/openssl/openssl.git -b OpenSSL_1_0_2-stable
3.8 配置Windows的开发环境
- 安装Visual Studio 2015。你可以使用Visual Studio Community免费版本通过遵循license许可
- 安装Visual C++ 和 NuGet安装包管理工具
- 安装git确认git是否在你的PATH环境变量目录列表,你可以使用git version来检查git的版本
git version - 安装CMake确认CMake在你的PATH环境变量目录列表,你可以使用cmake –version来测试安装是否正常并且检测版本。可以使用CMake来创建Visual Studio的项目,还可以编译libraries和样例。
- 确认最新发布SDK版本的tag目前发布版本的tag命名方式是yyyy-mm-dd
- 选择你需要clone的tag版本,通过使用下面的命令来clone到本地机器
- git clone -b <yyyy-mm-dd> --recursive https://github.com/baidu/iot-edge-c-sdk.git 通过传递参数—recursive告诉git来clone git项目依赖的所有SDK。你可以从这里找到所有的依赖
- 编译C语言SDK
如果你想在本地编译开发和测试SDK的话,可以通过执行下面的步骤来生成项目文件:
- 打开” Developer Command Prompt for VS2015”终端
- 在respository的根目录运行CMake这个命令:
- cd iot-edge-c-sdk mkdir cmake cd cmake cmake -G "Visual Studio 14 2015" .. 如果想编译64位程序,修改cmake参数:
cmake .. -G "Visual Studio 14 2015 Win64"
如果项目文件成功生成的话,你应该可以看到一个Visual Studio的工程文件.sln在cmakefolder下面,可以通过下面的步骤来编译SDK - 在visual studio里面打开cmake\\iot_edge_c_sdk.sln,或者运行下面的命令来生成项目文件:
- cmake --build . -- /m /p:Configuration=Release
- 你也可以使用MSBuild argument编译用于调试的文件:
- cmake --build . -- /m /p:Configuration=Debug
- 同时,你也可以编译和运行unit tests:
- cmake -G "Visual Studio 14 2015" -Drun_unittests=ON .. cmake --build . -- /m /p:Configuration=Debug
- ctest -C "debug" -V
- 编译使用TLS的样例
iothub_client_sample依赖openssl库的ssleay32和libeay32,在你使用他们之前,你需要首先编译并且安装这些库。
下面的步骤介绍如何编译和安装opens 以上是关于#导入Word文档图片# MQTT协议连接百度物联网IOT服务器的主要内容,如果未能解决你的问题,请参考以下文章