#导入Word文档图片# MQTT协议连接百度物联网IOT服务器

Posted DS小龙哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#导入Word文档图片# MQTT协议连接百度物联网IOT服务器相关的知识,希望对你有一定的参考价值。

创建第一个温度设备和温度仪表盘​

在登录百度天工物接设备前需要先注册百度账号。

https://cloud.baidu.com/

#导入Word文档图片#

#导入Word文档图片#

每个月有1百万条免费信息可以使用。

https://console.bce.baidu.com/iot2/hub/order/create/COMMON

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

注意: 后面创建物可视界面时,需要使用到存储配置,在后面的截图会进行创建,存储数据需要使用数据库,需单独购买。

#导入Word文档图片#

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

#导入Word文档图片#

#导入Word文档图片#

下面将进行创建web仪表盘,生成网页界面文件,可生成链接分享给其他人,通过浏览器访问即可看到设计的页面,硬件设备上传的数据可以通过该仪表盘进行同步显示。

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

完成数据表和存储配置之后,回到UI设计界面,对仪表盘进行数据来源绑定,这样仪表盘就可以显示来至数据源的数据了。

#导入Word文档图片#

#导入Word文档图片#

二、下载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,中划线和下划线,不支持其它字符。

#导入Word文档图片#

打开src/SubscriberSync.c,配置以下参数:

参数名称

解释

PRIVATE_FILE

输入认证文件所在目录

USER

创建物接入设备后返回的用户名,参见创建物接入设备​中的步骤3

PWD

创建身份后返回的密钥,参见创建物接入身份

clientId

用来标识设备的ID,用户可自己定义,在同一个实例下,每个实体设备需要有一个唯一的ID,不同实体设备使用同一个client id建立连接会导致其它连接下线。client id只支持英文大小写字母,数字0-9,中划线和下划线,不支持其它字符。

#导入Word文档图片#

打开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客户端代码​

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

项目名称和密码在创建设备之后返回的对话框里有。

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

#导入Word文档图片#

三、IoT Edge SDK ​

下载页面: https://cloud.baidu.com/doc/IOT/IoTEdgeSDK.html#IoT.20Edge.20SDK-1

#导入Word文档图片#

3.1 百度云天工物联网平台 IoT Edge SDK for C​

此代码库包含以下组件:

  1. iothub_client(物接入Edge SDK for C) 帮助设备快速接入百度云天工物接入服务
  2. Serializer函数库帮助进行序列化和反序列化数据,来进行数据在设备上的存储或读取

3.2 物接入Edge SDK for C​

  1. 代码使用ANSI C(C99)规范,从而使代码更方便移植到不同的平台中
  2. 请避免使用编译器扩展选项,防止在不同平台上编译的不同行为表现
  3. 在物接入Edge SDK中,使用了一个平台抽象层,以隔离操作系统相关性(线程和互斥机制,通信协议,例如HTTP等)。

3.3 如何克隆资源库​

该代码库使用了一些第三方库作为子模块依赖关系。为了自动克隆这些子模块,您需要使用如下所述的--recursive选项:

git clone --recursive https://github.com/baidu/iot-edge-c-sdk.git

3.4 OS平台和硬件兼容性​

百度天工IoT Edge SDK可用于广泛的操作系统平台和设备。对于设备的最低要求是:

  1. 能够建立IP连接:只有IP功能的设备可以直接与天工物接入(IoT Hub)进行通信。
  2. 支持TLS(可选):推荐设备使用TLS来与物接入(IoT Hub)进行安全连接。 但这不是必需的。 IoT Edge SDK也支持使用用户名/密码的方式
  3. 支持SHA-256(可选):用于使用服务认证设备的安全令牌。
  4. 具有实时时钟或实现代码连接到NTP服务器(可选):如果你使用TLS连接或使用安全令牌以进行身份验证,时钟同步是必需的。
  5. 具有至少64KB的RAM:SDK的具体内存占用取决于所使用的SDK文件、协议以及目标平台。我们尽可能将占用减到最低。

3.5 SDK目录结构​

  1. /c-utility引用的git子模块,使用的第三方工具库。请注意,其中可能包含嵌套子模块。
  2. /umqtt引用的git子模块,使用的第三方MQTT客户端。请注意,其中可能包含嵌套子模块。
  3. /parson引用的git子模块,使用的第三方的JSON库。请注意,其中可能包含嵌套子模块
  4. /certs包含与物接入进行通信所需的证书。
  5. /build_all包含客户端库和相关组件的针对指定平台的编译脚本。
  6. /iothub_client包含物接入IoT Hub客户端组件,将消息发往云端的物接入服务。有关如何使用它的信息,请参阅https://cloud.baidu.com/doc/IOT/API.html
  7. /serializer

包含在原始消息库之上提供存储和JSON序列化功能的库。这些库便于上传结构化数据以及用于物接入服务的命令和控制。

3.6 准备开发环境​

这篇文章介绍如何准备开发环境来使用百度云天工的c语言版本的IoT Edge sDK。这里主要介绍如何配置windows和Linux下的开发环境。

3.7 关于openssl​

目前openssl LTS的版本有两个:1.0.2x1.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的开发环境​

  1. 安装Visual Studio 2015。你可以使用Visual Studio Community免费版本通过遵循license许可
  2. 安装Visual C++ 和 NuGet安装包管理工具
  3. 安装git确认git是否在你的PATH环境变量目录列表,你可以使用git version来检查git的版本
    git version
  4. 安装CMake确认CMake在你的PATH环境变量目录列表,你可以使用cmake –version来测试安装是否正常并且检测版本。可以使用CMake来创建Visual Studio的项目,还可以编译libraries和样例。
  5. 确认最新发布SDK版本的tag目前发布版本的tag命名方式是yyyy-mm-dd
  6. 选择你需要clone的tag版本,通过使用下面的命令来clone到本地机器
  7. git clone -b <yyyy-mm-dd> --recursive https://github.com/baidu/iot-edge-c-sdk.git 通过传递参数—recursive告诉git来clone git项目依赖的所有SDK。你可以从这里找到所有的依赖
  8. 编译C语言SDK

如果你想在本地编译开发和测试SDK的话,可以通过执行下面的步骤来生成项目文件:

  1. 打开” Developer Command Prompt for VS2015”终端
  2. 在respository的根目录运行CMake这个命令:
  3. 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
  4. 在visual studio里面打开cmake\\iot_edge_c_sdk.sln,或者运行下面的命令来生成项目文件:
  5. cmake --build . -- /m /p:Configuration=Release
  6. 你也可以使用MSBuild argument编译用于调试的文件:
  7. cmake --build . -- /m /p:Configuration=Debug
  8. 同时,你也可以编译和运行unit tests:
  9. cmake -G "Visual Studio 14 2015" -Drun_unittests=ON .. cmake --build . -- /m /p:Configuration=Debug
  10. ctest -C "debug" -V
  11. 编译使用TLS的样例

iothub_client_sample依赖openssl库的ssleay32和libeay32,在你使用他们之前,你需要首先编译并且安装这些库。

下面的步骤介绍如何编译和安装opens

以上是关于#导入Word文档图片# MQTT协议连接百度物联网IOT服务器的主要内容,如果未能解决你的问题,请参考以下文章

word文档如何选择全部图片粘贴

物联家居第四章:传输协议--mqtt配置与测试

#导入Word文档图片# VM虚拟机网络设置

#导入Word文档图片# Linux下网络编程(socket)

Openfiler安装配置 #导入Word文档图片#

百度富文本编辑器支持从word复制粘贴保留格式和图片的插件