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

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

https://cloud.baidu.com/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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文档图片# MQTT协议连接百度物联网IOT服务器​_html_13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、下载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文档图片# MQTT协议连接百度物联网IOT服务器​_html_31

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

参数名称

解释

PRIVATE_FILE

输入认证文件所在目录

USER

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

PWD

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

clientId

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

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

打开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文档图片# MQTT协议连接百度物联网IOT服务器​_物联网_33

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、IoT Edge SDK ​

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

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

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,在你使用他们之前,你需要首先编译并且安装这些库。

下面的步骤介绍如何编译和安装openssl的库,具体步骤编译openssl-1.0.2k,如下

  1. 访问[OpenSSL Github Repository],同时执行命令:
  2. git clone https://github.com/openssl/openssl.git -b OpenSSL_1_0_2k就可以把openssl相关的源代码可以checkout出来
  3. 更多关于支持的配置,需要安装什么library,以及编译步骤可以访问openSSL Installation和Compilation and Installation
  4. X86相关的配置,可以打开VS2015 x86 Native Tools Command Prompt的命令行,然后执行INSTALL.W32文件里面的命令
  5. X64相关的配置,可以打开VS2015 x64 Native Tools Command Prompt的命令行,然后执行INSTALL.W64文件里面的命令

当确认OpenSSL相关的library和DLL被安装到OpenSSL的安装目录之后,下面是介绍如何编译样例的步骤:

  1. 打开“Developer Command Prompt for VS2015”命令行,切换到build_all\windows 目录
  2. 设置OpenSSLDir和OPENSSL_ROOT_DIR的环境变量,变量的value设置成为OpenSSL的安装目录,例如,如果你的OpenSSL的安装目录是C:\usr\local\ssl,你需要执行下面命令:
  3. set OpenSSLDir=C:\usr\local\ssl set OPENSSL_ROOT_DIR=C:\usr\local\ssl
  4. 编译SDK,同时包括编译支持TLS的样例
  5. cd iot-edge-c-sdk mkdir cmake cd cmake cmake -G "Visual Studio 14 2015" .. cmake --build . -- /m /p:Configuration=Release

这个命令会编译C SDK,同时也会编译iothub_client_sample的样例

3.9 设置Linux开发环境​

这一节会介绍如何设置C SDK在ubuntu下面的开发环境。可以使用CMake来创建makefiles,执行命令make调用gcc来将他们编译成为C语言版本的SDK

  1. 安装IDE开发工具,你可以下载Clion工具,链接地址:https://www.jetbrains.com/clion/, 可以直接导入现有项目,不要覆盖当前的CMake项目
  2. 在编译SDK之前确认所有的依赖库都已经安装好,例如ubuntu平台,你可以执行apt-get这个命令区安装对应的安装包
  3. sudo apt-get update sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev
  4. 验证CMake是不是最低允许的版本2.8.12
  5. cmake --version关于如何在ubuntu 14.04上将Cmake升级到3.x,可以阅读 How to install CMake 3.2 on Ubuntu 14.04
  6. 验证gcc是不是最低允许的版本呢4.4.7
  7. gcc --version
  8. 关于如何在ubuntu 14.04上将gcc升级的信息可以阅读 How do I use the latest GCC 4.9 on Ubuntu 14.04.
  9. 定位最新发布SDK版本的tag目前我们发布版本tag的格式是时间值,例如yyyy-mm-dd格式
  10. 下面的命令是使用tag名字复制最新发布版本SDK到你的本地机器
  11. git clone -b <yyyy-mm-dd> --recursive https://github.com/baidu /iot-edge-c-sdk.git 参数—recursive是告诉git复制github的repos依赖的所有git库。所有的依赖列举在here.
  12. 编译C版本的SDK

执行下面命令编译SDK:

cd iot-edge-c-sdk

mkdir cmake

cd cmake

cmake ..

cmake --build . # append '-- -j <n>' to run <n> jobs in parallel

如果要调试可以编译binaries的话,可以通过传递下面的参数个CMake,这样就可以生成可以调试的binaries了

cmake -DCMAKE_BUILD_TYPE=Debug ..

同时你还可以编译和运行unit tests

cmake -Drun_unittests=ON ..

cmake --build .

ctest -C "debug" -V

3.10设置macOS的开发环境​

这一节介绍如何设置C语言SDK在macOS上的开发环境。CMake可以生成makefiles,make使用makefiles可以将他们编译成为c语言SDK利用clang,clang默认会包含在XCode里面,我们已经测试过c语言版本的SDK在Sierra上,对应XCode版本是8.

  1. 安装IDE开发工具,你可以下载Clion工具,链接地址:https://www.jetbrains.com/clion/, 可以直接导入现有项目,不要覆盖当前的CMake项目
  2. 在编译SDK之前,确保所有的dependencies都安装好。对于macOS系统,你可以使用Homebrew来安装正确的packages brew update brew install git cmake pkgconfig openssl ossp-uuid
  3. 验证CMake是不是允许最低版本2.8.12
  4. cmake --version
  5. 定位最新发布SDK版本的tag目前我们发布版本tag的格式是时间值,例如yyyy-mm-dd格式
  6. 下面的命令是使用tag名字复制最新发布版本SDK到你的本地机器 git clone -b --recursive https://github.com/baidu/iot-edge-c-sdk.git参数—recursive是告诉git复制github的repos依赖的所有git库。所有的依赖列举在here.
  7. 编译C语言SDK
  8. cd iot-edge-c-sdk
  9. mkdir cmake
  10. cd cmake
  11. cmake -DOPENSSL_ROOT_DIR:PATH=/usr/local/opt/openssl ..
  12. cmake --build . # append '-- -j <n>' to run <n> jobs in parallel
  13. 如果需要编译可以调试的binaries的话,可以添加一个参数到CMake
  14. cmake -DOPENSSL_ROOT_DIR:PATH=/usr/local/opt/openssl -DCMAKE_BUILD_TYPE=Debug ..
  15. 同时你还可以编译和运行unit tests
  16. cmake -Drun_unittests=ON ..
  17. cmake --build .
  18. ctest -C "debug" -V

以上是百度IoT edge SDK的C语言版本介绍,若在其他平台上使用,请参考如何移植百度天工IOT HUB C语言SDK到其他平台.

四、ESP8266与STM32物联网套件​

https://github.com/baidu/iot-edge-sdk-samples

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

"# iot-edge-sdk-samples"

This repository is for iot-edge-sdk samples.

该project包含乐鑫ESP8266,乐鑫ESP32和ST公司的STM32系列芯片适配到百度云IoT平台的样例。

IoT Edge SDK包含了物接入(IoT Hub)的C语言客户端、序列化和反序列化、设备管理、协议解析等功能组件,涵盖了实现设备上云时在断线缓存、在线检测、设备管理、数据安全传输等场景

We have adapted the following hardware

ST

B-L475E-IOT01

32L496GDISCOVERY

目前已适配硬件的例程和教程有ST的B-L475E-IOT01物 联 网开发套件:)

ST官网下载链接: https://www.stmcu.com.cn/Designresource/design_resource_detail?file_name=Baidu%E4%BA%91B_L475E_IOT01A%E6%8E%A2%E7%B4%A2%E5%A5%97%E4%BB%B6%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8E&lang=EN&ver=1

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

五、下载MQTT客户端源码进行编译​

百度云MQTT客户端兼容PAHO,PAHO也是一个开源的MQTT协议项目。下面需要写客户端对接服务,百度云提供了如下语言的支持:

https://cloud.baidu.com/doc/IOT/MQTTClientSDK.html

由于是物 联 网设备,我选择Embedded C/C++。点击进入github工程页面:

https://github.com/eclipse/paho.mqtt.embedded-c

在Linux环境下输入下载命令:

git clone https://github.com/eclipse/paho.mqtt.embedded-c.git

cd 到工程根目录 ,输入make命令进行编译。

在ubuntu系统下,如果缺少git命令,可以在线进行安装: # apt install git

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

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

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

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