前言

8.1.1 物联网平台搭建

8.2.1 LinkDevelop平台使用

8.2.2 iotkit-embedded


前言

传统的物联网项目,需要嵌入式硬件、云平台。对于我们做嵌入式的来说,从零开始搭建一个物联网云平台几乎是不现实的。

这里涉及到许多前后端的知识。

通过阿里云物联网平台,我们可以在不懂前后端开发的基础上,半个小时候左右就可以搭建一个智慧农业的物联网云平台框架。

效果如下:

大数据面板:

设备管理:

设备地图分布:

支持视频监控:

多个组件图标功能:

8.1.1 物联网平台搭建

物联网平台搭建的话,我放在了bilibili这里:

https://www.bilibili.com/video/bv1DK4y1s7Pc

8.2.1 LinkDevelop平台使用

1.注册

打开LinkDevelop官网:https://iot.aliyun.com/products/linkdevelop。单击“立即使用”按钮,如图8.3所示。

图8.3 LinkDevelop官网

2.新建项目

单击左侧的“项目管理”按钮,随后再单击“新建项目”按钮,进入新建项目界面,如图8.4所示。

图8.4 项目管理界面

随后在弹出来的新建项目界面上,单击“新建空白项目”按钮,如图8.5所示。

图8.5 新建项目界面

弹出新建空白项目界面后,在“项目名称”中输入test,在“描述”中输入这是一个测试项目,单击“确认”按钮,如图8.6所示。

图8.6 新建空白项目界面

3.创建产品

单击左侧的“产品”按钮,在弹出的界面中,单击“创建产品”按钮,如图8.7所示。

图8.7 产品界面

在“产品名称”中输入“sensor”,如图8.8所示。

图8.8 创建产品

单击“请选择标准品类”下拉框,弹出“选择品类”选择框,阿里云物联网平台预置了许多产品类型,读者可以根据自己的需求选择对应,本书选择“地磁检测器”,如图8.9所示。

图8.9 选择产品种类

其他选项按默认值即可,单击“保存”按钮,如图8.10所示。

图8.10 创建产品

4.创建设备

页面左上角有个三角形下拉框,可以选择项目,选择我们刚才创建的test项目,再单击“设备”按钮,最后单击“新增设备”按钮,如图8.11所示。

图8.11 设备界面

在“产品”选择下拉框中,选择我们刚才创建的产品sensor,单击“提交”按钮,如图8.12所示。

图8.12 新增设备

在弹出的新界面中,单击“下载激活凭证”按钮,下载sheet.xlsx文件,如图8.13所示。保存sheet.xlsx文件,里面的内容后续会用到

图8.13 下载激活凭证

8.2.2 iotkit-embedded

iotkit-embedded是阿里云物联网平台提供的一套C语言编写的SDK包。通过该SDK包,我们可以使我们的嵌入式设备接入到阿里云物联网平台。

SDK使用MQTT/HTTP连接物联网平台,因此要求设备支持TCP/IP协议栈;对于Zigbee、ZWave之类的不支持TCP/IP协议栈的设备,需要通过网关接入物联网平台,这种情况下网关需要集成SDK。

iotkit-embedded下载地址:https://github.com/aliyun/iotkit-embedded 。

SDK提供了API供设备厂商调用,用于实现与阿里云IoT平台通信以及一些其他的辅助功能,例如WiFi配网、本地控制等。

另外,C语言版本的SDK被设计为可以在不同的操作系统上运行,例如Linux、FreeRTOS、Windows,因此SDK需要OS或者硬件支持的操作被定义为一些HAL函数,在使用SDK开发产品时需要将这些HAL函数进行实现。

产品的业务逻辑、SDK、HAL的关系如图8.15所示。

图8.15 SDK 框架

表8.1列出了SDK包的相关功能:

功能模块

功能点

设备连云

MQTT连云,设备可通过MQTT与阿里云IoT物联网平台通信。
CoAP连云,设备可通过CoAP与阿里云IoT物联网平台通信,用于设备主动上报信息的场景。
HTTPS连云,设备可通过HTTPS与阿里云IoT物联网平台通信,用于设备主动上报信息的场景。

设备身份认证

一机一密。
一型一密。

物模型

使用属性、服务、事件对设备进行描述以及实现,包括:
属性上报、设置。
服务调用。
事件上报。

OTA

设备固件升级。

远程配置

设备配置文件获取。

子设备管理

用于让网关设备添加、删除子设备,以及对子设备进行控制。

WiFi配网

将WiFi热点的SSID/密码传输给WiFi设备,包括:
一键配网。
手机热点配网。
设备热点配网。
零配。

设备本地控制

局域网内,通过CoAP协议对设备进行控制,包括:ALCS Server,被控端实现ALCS Client,控制端实现,通常被希望通过本地控制设备的网关使用。

设备绑定支持

设备绑定token维护,设备通过WiFI、以太网接入,并且通过阿里云开放智能生活平台管理时使用。

设备影子

在云端存储设备指定信息供APP查询,避免总是从设备获取信息引入的延时。

Reset支持

当设备执行Factory Reset时,通知云端清除记录。例如清除设备与用户的绑定关系,清除网关与子设备的关联关系等。

时间获取

从阿里云物联网平台获取当前最新的时间。

文件上传

通过HTTP2上传文件。

8.2.3 ali-iotkit

1.简介

ali-iotkit是 RT-Thread 移植的用于连接阿里云 IoT 平台的软件包。基础 SDK是阿里提供的iotkit-embedded。

iotkit SDK 为了方便设备上云封装了丰富的连接协议,如 MQTT、CoAP、HTTP、TLS,并且对硬件平台进行了抽象,使其不受具体的硬件平台限制而更加灵活。在代码架构方面,iotkit SDK 分为三层,如图8.16所示:

图8.16 iotkit SDK框架

硬件平台抽象层:也简称HAL层(Hardware Abstract Layer),抽象不同的嵌入式目标板上,操作系统对SDK的支撑函数,包括网络收发、 TLS/DTLS 通道建立和读写, 内存申请是否和互斥量加锁解锁等。

中间层称为SDK内核实现层(IoT SDK Core Implements):物联网平台 C-SDK 的核心实现部分, 它基于 HAL 层接口完成了 MQTT/CoAP 通道等的功能封装, 包括 MQTT 的连接建立、 报文收发、CoAP 的连接建立、报文收发、 OTA 的固件状态查询和 OTA 的固件下载等。中间层的封装,使得用户无需关心内部实现逻辑,可以不经修改地应用。

最上层称为SDK接口声明层(IoT SDK Interface Layer):最上层是为应用提供 API 的,用户使用该层的 API 完成具体的业务逻辑。

2.配置

RT-Thread已经为我们集成了ali-iotkit软件,通过简单的menuconfig配置即可使用。配置项位于:RT-Thread online packages→ IoT - internet of things→ IoT Cloud,如图8.17所示。

图8.17 Ali-iotkit配置项

按空格键选中“Ali-iotkit”后,再按回车键进入详细配置项。

(1)version选择v2.0.3。

(2)Config Product Key (NEW)填写我们之前下载的激活凭证sheet.xlsx文件中的Productkey项的内容。

(3)Config Device Name (NEW)填写sheet.xlsx文件中的DeviceName项的内容。

(4)Config Device Secret (NEW)填写sheet.xlsx文件中的DeviceName项的内容。

其他配置项如图8.18所示。

图8.18 Ali-iotkit详细配置

阿里 TLS 认证过程中数据包较大,这里需要增加 TLS 帧大小,OTA 的时候至少需要 8K 大小,修改menuconfig配置项:RT-Thread online packages→security packages →mbedtls: An portable and flexible SSL/TLS library,把Maxium fragment length in bytes的数值改成8192,如图8.19所示。

图8.19 mbedtls配置

退出menuconfig,输入pkgs --update更新下载ali-iotkit软件包,下载软件包后,输入scons --target=mdk5重新生成工程文件。

需要注意的是,ali-iotkit自带mqtt相关功能,如果之前代码配置选择了Paho MQTT,需要把Paho MQTT软件包去掉,否则编译报错。

软件包位于Chapter8\rt-thread\bsp\stm32\stm32f407-atk-explorer\packages\ali-iotkit-v2.0.3软件包目录如图8.20所示。

图8.20 ali-iotkit软件包目录

其中各文件说明如下:

docs:软件包说明文档。

iotkit-embedded:阿里云物联网平台提供的SDK包。

ports:RT-Thread相关移植文件。

samples:RT-Thread提供的一个简单测试程序。

8.2.4 实验

1.上传消息到云端

(1)打开Chapter8\rt-thread\bsp\stm32\stm32f407-atk-explorer\ project.uvprojx工程文件,其中SDK包相关的代码文件包含在ali-iotkit文件夹下,如图8.21所示。

图8.21 项目工程

(2)编译并下载程序到开发板,先确保开发板能ping通阿里云服务器。输入ping iot.aliyun.com并发送回车,有看到如下打印信息则代表网络正常。

msh />ping iot.aliyun.com60 bytes from 42.120.219.14 icmp_seq=0 ttl=230 time=42 ms60 bytes from 42.120.219.14 icmp_seq=1 ttl=230 time=41 ms60 bytes from 42.120.219.14 icmp_seq=2 ttl=230 time=41 ms60 bytes from 42.120.219.14 icmp_seq=3 ttl=230 time=41 ms

(3)打开LinkDevelop的设备管理界面,可以看到之前创建的设备的状态是“未激活”,如图8.22所示。

图8.22 设备列表

(4)打开串口工具,发送ali_mqtt_test start命令给开发板,可以看到开发板有如下打印信息:

msh />ali_mqtt_test start[inf] iotx_device_info_init(40): device_info created successfully![dbg] iotx_device_info_set(50): start to set device info![dbg] iotx_device_info_set(64): device_info set successfully![dbg] guider_print_dev_guider_info(271): ....................................................[dbg] guider_print_dev_guider_info(272):           ProductKey : a1wUxrR2Xd4[dbg] guider_print_dev_guider_info(273):           DeviceName : 3mX9eDe8wt0FDt2hIRxf[dbg] guider_print_dev_guider_info(274):             DeviceID : a1wUxrR2Xd4.3mX9eDe8wt0FDt2hIRxfhost: a1wuxrr2xd4.iot-as-mqtt.cn-shanghai.aliyuncs.com[inf] iotx_mc_init(1703): MQTT init success![inf] _ssl_client_init(175): Loading the CA root certificate ...[inf] iotx_mc_connect(2035): mqtt connect success![dbg] iotx_mc_report_mid(2259): MID Report: started in MQTT[dbg] iotx_mc_report_mid(2276): MID Report: json data = '{"id":"a1wUxrR2Xd4_3mX9eDe8wt0FDt2hIRxf_mid","params":{"_sys_device_mid":"example.demo.module-id","_sys_device_pid":"example.demo.partner-id"}}'

(5)有看到[inf] iotx_mc_connect(2035): mqtt connect success!则表示成功连接上LinkDevelop。重新查看LinkDevelop的设备管理界面,可以看到之前创建的设备的状态是“在线”,说明设备和LinkDevelop通信正常,如图8.23所示。

图8.23 设备列表

(6)输入ali_mqtt_test pub open并发送回车,开发板将会推送数据到云端,串口打印信息显示code值为200,则表示推送数据成功。

_demo_message_arrive|203 :: Payload: '{"code":200,"data":{"LightSwitch":"tsl parse: params not exist","RGBColor":"tsl parse: params not exist"},"id":"1","\0

(7)在设备列表中单击“查看”按钮,如图8.24所示:

图8.24设备列表

(8)在弹出来的设备详情页中,单击“日志服务”按钮,再单击“上行消息分析”按钮,可以看到开发板总共发送了2条消息,其中时间较早的消息是开发板登录时发送的,最新的信息是刚才的ali_mqtt_test pub open命令所发送得到消息。

图8.25 设备详情

(9)单击对应消息的MessageID,可以查看消息的具体内容,如图8.26所示。

图8.26 消息内容

2.云端发布消息

(1)单击左上角的小三角形,选择 test,然后单击“产品”按钮,单击“sensor”对应的“查看”按钮,如图8.27所示。

图8.27 产品列表

(3)单击“功能定义”按钮,随后单击“自定义功能”按钮,最后单击“添加自定义功能”按钮,如图8.28所示。

图8.28 功能定义

(4)功能名称选择“测试001”,其他选型默认即可,单击“确认”,如图8.29所示。

图8.29 自定义功能

(5)单击右上角的“发布”按钮,发布新功能,如图8.30所示。

图8.30 发布功能

(6)再弹出来的界面中,把所有的“请确认”按钮后面的

都选上,单击“发布”按钮,如图8.31所示。

图8.31 确认发布

(7)回到刚才的设备详情页,单击“在线调试”按钮,单击“调试真实设备” 按钮,单击“属性调试”按钮,调试功能选择“测试001(Test001)”,方法选择“设置”,如图8.32所示。

图8.32 在线调试

修改调试信息的内容为{ "Test001": "1"},如图8.33所示,单击“发送指令”按钮。

图8.33 发送指令

(8)可以看到开发板有如下打印信息:

'/sys/a1NegcqX690/AwpDLCcqeb7TSbNevNAr/thing/service/property/set' (Length: 64)_demo_message_arrive|203 :: Payload: '{"method":"thing.service.property.set","id":"1302514310","params":{"Test001":"1"},"version":"1.0.0"}' (Length: 100)_demo_message_arrive|207 :: ----

可以看到接收到LinkDevelop发送的{"Test001": "1"}消息,通信成功。

搭建智慧农业物联网云平台——基于阿里云物联网平台构建相关推荐

  1. 比心云平台基于阿里云容器服务 ACK 的弹性架构实践

    作者:韩韬|比心技术 前言 应用容器化改造后,不可避免地会面临这样一个问题:Kubernetes 集群的 Node 资源配置不足会导致 Pod 无法及时运行,购买过多的 Node 又会导致资源的闲置浪 ...

  2. docker个人容器云(基于阿里云)

    创建个人的docker镜像(目前阿里云是十个免费) 1.登陆阿里云 2.操作: 选择容器服务--->容器镜像服务---->镜像列表--->创建镜像仓库(先要完成Registry的配置 ...

  3. 上海市新能源汽车数据平台引入阿里云Lindorm数据库,成本下降20%

    简介:浦东.闵行.宝山.嘉定是上海新能源汽车分布最多的4个区域:上海私用新能源车工作日平均行驶里程40多公里--目前,上海市新能源汽车数据平台日采集信息已经超过6.6亿条,平台数据采集量已超PB,为全 ...

  4. 基于阿里云HiTSDB搭建工业物联网平台实践

    摘要: 基于阿里云全面的物联网.云计算与大数据技术搭建云端的企业能源管理物联网平台实现能耗数据采集.统计分析.平衡调度.节能优化等全面的能源管控协同平台.是企业生产运行保障的利器,也是大量企业实现云上 ...

  5. 基于阿里云物联网平台,我们这样实现简易出入监控

    本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景 在公司大门入口处布点树莓派和红外感应,实现出入口人员出 ...

  6. 基于阿里云物联网平台实现的简易出入监控

    本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景 在公司大门入口处布点树莓派和红外感应,实现出入口人员出 ...

  7. 阿里云物联网平台python_基于阿里云物联网平台,我们这样实现简易出入监控

    本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景 在公司大门入口处布点树莓派和红外感应,实现出入口人员出 ...

  8. 基于阿里云物联网平台的设备之间传输十六进制数据

    基于阿里云物联网平台的设备之间传输十六进制数据 文章目录 基于阿里云物联网平台的设备之间传输十六进制数据 1. 创建阿里云物联网产品 1.1 创建新的产品 1.2 为产品创建自定义topic 1.3 ...

  9. 基于阿里云搭建hadoop平台

    文章目录 1. 前言 2. 添加hadoop用户 3. 配置/etc/hosts文件 4. 设置ssh免密登录 4.1 安装ssh 4.2 设置免密 5. 安装JDK 6. 安装hadoop 7. 配 ...

  10. 基于阿里云物联网的无人值守远程农业智慧盒DIY之(三)arduino土壤湿度监测短信平台(1)

    基于阿里云物联网的无人值守远程农业智慧盒DIY之(三)arduino土壤湿度监测短信平台. csdn的网友Onetuzi今天留言催更.最近一直忙活别的事情,没有及时更新,希望大家见谅哈.为表达歉意,今 ...

最新文章

  1. 男孩子学计算机和学医哪个好,你认为学医好还是读211大学的电子信息好?
  2. 一线互联网技术:Java工程师架构知识系统化汇总,面完45K!
  3. .net mvc web api 返回 json 内容时过滤值为null的属性
  4. 中国女足在2022女足亚洲杯决赛中击败韩国队,时隔16年再夺亚洲杯冠军。
  5. armadillo 配置
  6. from import 导入时找不到module的解决办法(Python模块包中_init_.py文件的作用)
  7. ASP.NET Core 中基于工厂的中间件激活
  8. leetcode266. 回文排列
  9. python迷宫小游戏大全_Python迷宫小游戏源代码、源程序
  10. mysql增加sort_buffer_MySQL数据库之MySQL中的sort_buffer_size参数大小的设置问题
  11. XMPP系列2:如何掌握XMPP协议
  12. Shell脚本监控LVS后台服务器存活状态
  13. 软件工程领域国际会议列表
  14. Wox主题样式基础的自定义
  15. window10删除2345流氓软件
  16. crawlergo带cookie爬虫
  17. 网络安全知识竞赛题库
  18. 北航计算机学院王华峰,软件学院学术论坛第四次宣讲会——SCI投稿论文宣讲与点评...
  19. return R.ok()
  20. Rolling back JDBC Connection [org.sqlite.jdbc4.JDBC4Connection

热门文章

  1. 墨天轮访谈 | 腾讯张铭:带你探索王者荣耀背后的游戏数据库 TcaplusDB
  2. ODL:OpenDayLight项目中子项目统计(二)
  3. 消息队列之kafka在虚拟机安装使用与整合springboot详解教程
  4. 黑马程序员_IO输入输出流
  5. 使用 tf.nn.dynamic_rnn 展开时间维度
  6. 打造零售数据中台 数澜助百果园数字化转型
  7. popupWindow在5.0版本以下不显示的问题
  8. 大脑计算机马云,马云对话马斯克:人和机器谁更聪明?两马吵起来了
  9. 机顶盒ttl无法输入_中兴机顶盒B8601.1T TTL后跑码无法输入指令
  10. 多值逻辑与计算机科学,多值逻辑