Raspberry Pi 3B+连接华为云IoT平台的方法

举报
Jasonchenbj 发表于 2020/05/25 18:04:18 2020/05/25
【摘要】 Raspberry Pi 具有很好的性价比,可以满足物联网中的网关和具有物联网功能的控制器的应用开发。本文介绍了Raspberry Pi 3B+连接华为IoT平台的方法,要包括了:第一步在物联网平台端建立产品和设备。第二步在设备端,在华为的SDK- huaweicloud-iot-device-sdk-c基础上,进行程序的修改。第三步编译、执行和验证。实现了与华为IoT的成功连接。

       Raspberry Pi 3B,3B+,以及最新的4B, 以其小巧而强大的功能,低廉的价格,吸引不少开发者的目光。 Raspberry Pi 3B+是典型的一个型号,具有WiFi和以太网联网功能,具有40个GPIO引脚,支持串行通信,常用的IIC,SPI通信,支持摄像头。官方推出了专用于Raspberry Pi 的 Raspbian操作系统,是一种类Linux操作系统,而且还有对应GPIO控制类库供使用。这些都为Raspberry Pi 3B+在物联网的应用,提供了很好的基础。可以用Raspberry Pi 3B+来做一个接入物联网的网关,也可以用它来做可以直接接入物联网的控制器,控制现场的电机、采集现场的传感器信号。要完成实现这样的网关或者控制器,让设备接入物联网是必须的功能。

      本文介绍一种让Raspberry Pi 3B+接入华为IoT平台的方法。主要包括三大步骤,如下。

1.物联网平台上的开发工作

1.1 创建产品

进入华为物联网平台中的产品页面,如下

image.png

单击 创建产品,进入如下界面,填写相关信息。

 image.png 

上述信息填写完成后,单击 立即创建。就在系统中创建了一个产品。在产品列表中能看到

image.png

1.2 增加服务功能

点击上图中的 Raspberry Pi 3Bplus_Demo1 进入如下界面

image.png

在上述界面中,点击 自定义功能,进入弹出如下界面

image.png

在新增服务界面中填入

服务名称: DeviceInfo 。 服务名称必填。

服务描述:demo。    可以不填。

如下图。点击确定

image.png

上述图中点击确定后,进入如下界面。在界面中能看到增加的服务 DeviceInfo。

image.png

1.3 增加属性Temperature

在上图中 单击 DeviceInfo 左边的向下箭头,出现如下界面

image.png

在上图中,单击 添加属性,弹出如下界面

image.png

在新增属性对话框中,填写信息如下

image.png

填写完成后单击确认。之后在服务DeviceInfo中能看到属性Temperature。如下图所示

image.png

 

上述操作,在物联网平台中建立可一个产品模型。

1.4 注册设备

在物联网平台中的如下界面

image.png

单击 注册设备,弹出如下界面。

image.png

在该界面中填写相关信息,如下图

image.png

其中设备标识码和设备名称 自己命名填写。填写时满足名称的规则要求。会有提示。设备认证类型选择密钥。

密钥 和 确认密钥可以不用填。之后,单击确定,出现如下界面。重要的界面!

image.png

在上述界面中,要记住 设备ID 下面的那串字符。要记住 设备密钥 下面的那串字符。切记。后续编写程序时会需要这两个字符串。这两个字符串中的设备密钥 以后也可以再次生成新的密钥。 

记下这两个字符串后,点击 确认。进入如下界面

image.png

在设备列表中,能看到RaspberryPi3bplus设备已经添加成功。但是状态显示  未激活。

怎么才能激活,需要在开发设备端程序。即在Raspberry Pi 3b+上需要开发设备端的程序。

至此,物联网平台上的开发工作完成了。

2.Raspberry Pi 3B+端的程序修改

2.1开发前的准备工作

Raspberry Pi 3b+安装了Raspbian操作系统。Raspbian系统是专门用于Raspberry Pi的,也是一类Linux系统。

在系统中确认安装好了paho.mqtt.c动态库,openssl动态库,以及必要的编译环境gcc, make.

Paho.mqtt.c动态库的安装可以参考:https://bbs.huaweicloud.com/forum/thread-54097-1-1.html

Openssl动态库的安装可以参考:https://bbs.huaweicloud.com/blogs/163398

GCC,MAKE可以使用

sudo apt-get install gcc

sudo apt-get install make

安装合适Raspberry Pi硬件和操作系统的 gcc 和 make。

2.2 下载huaweicloud-iot-device-sdk-c源代码

在命令行执行

git clone git@github.com:huaweicloud/huaweicloud-iot-device-sdk-c.git

(这里使用git下载,git的配置可以参考: https://bbs.huaweicloud.com/forum/thread-54086-1-1.html

下载完成后,在当前文件夹下面的 huaweicloud-iot-device-sdk-c文件夹 就是源代码仓库。

      image.png

2.3 修改源代码

2.3.1 修改MQTTAsync.h文件

将原文件中如下的

约1149行

      image.png

修改为如下,注意红圈中的是修改过的

image.png

修改之后,记得保存

2.3.2 修改device_demo.c

2.3.2.1.将原文件中的

      image.png

修改为如下,修改的部分见图中红框中的内容。

image.png

这里的username 就是在 物联网平台注册设备成功后,产生的设备ID。password就是设备密钥。

2.3.2.2 将源文件中

image.png  

修改为如下。修改的地方,见图中红框中的。

image.png

这里的 Temperature 就是在物联网平台 增加的属性Temperature. service_id 就是在物联网平台增加的服务DeviceInfo.

修改完成后,记得保存。

修改到此结束。

3.编译和验证

3.1 编译

3.1.1 拷贝相关库文件

将系统中的中的 libcrypto.so.1.1libssl.so.1.1libcrypto.solibssl.solibpaho-mqtt3as.solibpaho-mqtt3as.so.1拷贝到huaweicloud-iot-device-sdk-c/lib 文件夹下。这些库文件可以在/usr/local/lib 文件夹下面找到,如下图

image.png

拷贝完成后,可以在huaweicloud-iot-device-sdk-c/lib 文件夹下看到这些库文件,如下图

image.png

       3.1.2 编译源代码

将源代码文件夹中的Makefile文件中的 -m64去掉。

在源代码文件夹中,命令行执行

make

make完成之后,能看到在源代码文件夹中有个

MQTT_Demo.o文件,这个就是可执行Demo文件

3.2 执行Demo程序,在物联网平台验证Demo效果

在源代码文件夹中,命令行执行

export LD_LIBRARY_PATH=/lib/

然后

./MQTT_Demo.o

执行后可以看到如下信息

image.png

设备端的MQTT_Demo程序已经跟物联网平台连接成功,并设备的服务DeviceInfo中的属性Temperature的值传到物联网平台

此时到物联网平台查看,设备已经在线,上传输的属性值已经可以看到。如下图

image.png

image.png

    至此,一个Demo完成了。后续可能会在Demo中增加更多的软件功能.

   上述的方法,主要是打通了Raspberry Pi 3B+与华为IoT平台的连接。连接打通后,就可以在这个连接的基础上,根据自己的业务需求,开发更多功能。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。