Raspberry Pi 3B+连接华为云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 创建产品
进入华为物联网平台中的产品页面,如下
单击 创建产品,进入如下界面,填写相关信息。
上述信息填写完成后,单击 立即创建。就在系统中创建了一个产品。在产品列表中能看到
1.2 增加服务功能
点击上图中的 Raspberry Pi 3Bplus_Demo1 进入如下界面
在上述界面中,点击 自定义功能,进入弹出如下界面
在新增服务界面中填入
服务名称: DeviceInfo 。 服务名称必填。
服务描述:demo。 可以不填。
如下图。点击确定
上述图中点击确定后,进入如下界面。在界面中能看到增加的服务 DeviceInfo。
1.3 增加属性Temperature
在上图中 单击 DeviceInfo 左边的向下箭头,出现如下界面
在上图中,单击 添加属性,弹出如下界面
在新增属性对话框中,填写信息如下
填写完成后单击确认。之后在服务DeviceInfo中能看到属性Temperature。如下图所示
上述操作,在物联网平台中建立可一个产品模型。
1.4 注册设备
在物联网平台中的如下界面
单击 注册设备,弹出如下界面。
在该界面中填写相关信息,如下图
其中设备标识码和设备名称 自己命名填写。填写时满足名称的规则要求。会有提示。设备认证类型选择密钥。
密钥 和 确认密钥可以不用填。之后,单击确定,出现如下界面。重要的界面!
在上述界面中,要记住 设备ID 下面的那串字符。要记住 设备密钥 下面的那串字符。切记。后续编写程序时会需要这两个字符串。这两个字符串中的设备密钥 以后也可以再次生成新的密钥。
记下这两个字符串后,点击 确认。进入如下界面
在设备列表中,能看到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.cn/forum/thread-54097-1-1.html
Openssl动态库的安装可以参考:https://bbs.huaweicloud.cn/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.cn/forum/thread-54086-1-1.html)
下载完成后,在当前文件夹下面的 huaweicloud-iot-device-sdk-c文件夹 就是源代码仓库。
2.3 修改源代码
2.3.1 修改MQTTAsync.h文件
将原文件中如下的
约1149行
修改为如下,注意红圈中的是修改过的
修改之后,记得保存
2.3.2 修改device_demo.c
2.3.2.1.将原文件中的
修改为如下,修改的部分见图中红框中的内容。
这里的username 就是在 物联网平台注册设备成功后,产生的设备ID。password就是设备密钥。
2.3.2.2 将源文件中
修改为如下。修改的地方,见图中红框中的。
这里的 Temperature 就是在物联网平台 增加的属性Temperature. service_id 就是在物联网平台增加的服务DeviceInfo.
修改完成后,记得保存。
修改到此结束。
3.编译和验证
3.1 编译
3.1.1 拷贝相关库文件
将系统中的中的 libcrypto.so.1.1、libssl.so.1.1、libcrypto.so、libssl.so,libpaho-mqtt3as.so、libpaho-mqtt3as.so.1拷贝到huaweicloud-iot-device-sdk-c/lib 文件夹下。这些库文件可以在/usr/local/lib 文件夹下面找到,如下图
拷贝完成后,可以在huaweicloud-iot-device-sdk-c/lib 文件夹下看到这些库文件,如下图
3.1.2 编译源代码
将源代码文件夹中的Makefile文件中的 -m64去掉。
在源代码文件夹中,命令行执行
make
make完成之后,能看到在源代码文件夹中有个
MQTT_Demo.o文件,这个就是可执行Demo文件
3.2 执行Demo程序,在物联网平台验证Demo效果
在源代码文件夹中,命令行执行
export LD_LIBRARY_PATH=/lib/
然后
./MQTT_Demo.o
执行后可以看到如下信息
设备端的MQTT_Demo程序已经跟物联网平台连接成功,并设备的服务DeviceInfo中的属性Temperature的值传到物联网平台
此时到物联网平台查看,设备已经在线,上传输的属性值已经可以看到。如下图
至此,一个Demo完成了。后续可能会在Demo中增加更多的软件功能.
上述的方法,主要是打通了Raspberry Pi 3B+与华为IoT平台的连接。连接打通后,就可以在这个连接的基础上,根据自己的业务需求,开发更多功能。
- 点赞
- 收藏
- 关注作者
评论(0)