随着智能家居技术的发展和人们对高品质生活的追求日益增长,智能鱼缸作为一种结合了科技与自然美的家居装饰品,正逐渐成为智能家居领域的新宠。本项目旨在设计一款基于华为云智慧生活生态链的智能鱼缸,它不仅能够提供一个安全舒适的环境让鱼儿健康生长,还能让用户通过手机应用远程管理和监控鱼缸的各种状态。通过集成多种传感器和执行机构,这款智能鱼缸能够自动监测水质、维持适宜的水温和氧气水平,并且还能实现自动投喂、自动换水、鱼缸壁清洁等功能,极大地减轻了养鱼爱好者的工作负担,提升了养鱼的乐趣和便捷性。
考虑到现代人忙碌的生活节奏和对个性化需求的追求,本项目集成了华为云的智慧生活App,这使得用户可以通过手机轻松地设置鱼缸的各项参数,包括但不限于恒温温度、换水阈值、投喂间隔和量等,甚至还能根据用户所选养的鱼种自动优化这些设置。此外,为了进一步提升用户体验,还引入了全景视频监控功能,用户可以在手机端360度无死角地观察鱼缸内部情况;同时,鱼缸还支持氛围灯调节,可通过华为云的小艺助手进行智慧联动控制,营造出不同的观赏效果。整体而言,这款智能鱼缸不仅代表了智能家居技术的最新进展,也为养鱼爱好者提供了一个更加智能化、人性化的养鱼体验。
本项目的目标是设计并开发一款基于华为云智慧生活生态链的智能鱼缸,为用户提供一个高度自动化、智能化的养鱼体验。该智能鱼缸集成了多项先进技术,包括水质监测、远程控制、自动维护等功能,解决传统鱼缸在养鱼过程中遇到的一系列问题,如频繁的手动维护、难以精确控制的水质条件等。
通过本项目的实施具体目标:
帮助文档:https://device.harmonyos.com/cn/docs/documentation/DevicePartner-Guides/ai-life-app-dev-overview-0000001367032228
智慧生活App作为华为全场景智慧体验的重要入口,可以实现华为自研设备与生态伙伴设备的统一管理。通过开发H5接入智慧生活App,为消费者带来如下功能体验:
接入原理
为了更好地说明本项目的系统架构,我们可以将其分为几个主要部分:硬件架构、软件架构以及网络架构。下面是对这些部分的具体描述:
(1)环境监测:
(2)水质控制与维护:
(3)远程监控与控制:
(4)用户定制与一键设置:
(5)联动与场景编排:
(6)通信与网络:
(7)电源管理:
(8)安全保障:
本项目的主控单元是整个智能鱼缸系统的中枢神经,它负责收集来自各个传感器的数据、处理这些数据并据此作出决策来控制执行器的动作。主控单元的核心是STM32L431RCT6微控制器,这是一款高性能且低功耗的微控制器,非常适合应用于需要实时处理能力及长电池寿命的应用场合。
主控单元的设计围绕STM32L431RCT6微控制器展开,该微控制器基于Arm® Cortex®-M4内核,具备FPU(浮点运算单元)和DSP指令集,能够在处理复杂的计算任务时提供出色的性能。它还拥有丰富的外设接口,如USART、SPI、I2C、ADC等,这些接口使得主控单元能够轻松地与外部传感器和其他组件进行通信。为了满足智能鱼缸的长时间运行需求,STM32L431RCT6还提供了先进的电源管理模式,可在保证系统正常运行的同时显著降低功耗。
在硬件层面,主控单元集成了多种传感器,包括但不限于溶解氧传感器、TDS传感器、温度传感器等,这些传感器持续监测鱼缸内的水质参数和环境条件。一旦这些传感器捕获到相关数据,它们会立即将数据发送给主控单元。主控单元通过内置的ADC转换器将模拟信号转换为数字信号,然后由STM32L431RCT6进行数据处理。基于这些数据,主控单元能够判断水质是否达到预设的标准,如果发现任何参数偏离了理想的范围,它会迅速采取行动,例如启动充氧泵增加水中氧气含量、激活自动换水机制以保持水质清洁,或者控制鱼缸壁自动清洁装置清除附着物等。
除了处理传感器数据外,主控单元还需要与执行器进行交互,如控制充氧泵、自动换水系统和清洁装置等。这些执行器的驱动通常通过PWM(脉宽调制)信号来实现,而STM32L431RCT6提供了足够的PWM输出通道来支持这些操作。此外,主控单元还负责与用户界面进行交互,包括接收用户的设置指令并通过Wi-Fi或4G模块与远程服务器进行通信,以实现对智能鱼缸的远程监控和控制。
为了确保系统的稳定性和安全性,主控单元还包括电源管理电路、看门狗定时器、实时时钟RTC等组件。电源管理电路确保即使在外部电源不稳定的情况下也能提供稳定的电压供应;看门狗定时器则在发生故障时复位系统,防止死锁情况的发生;实时时钟RTC则用于提供准确的时间基准,这对于定时任务和数据记录至关重要。
主控单元不仅是一个数据处理中心,还是一个协调者,它连接了所有的传感器和执行器,并通过高效的算法和精确的控制逻辑确保智能鱼缸能够自动维持一个适宜鱼类生活的环境。通过这种方式,用户可以享受到更加轻松愉快的养鱼体验,同时确保鱼儿能够在一个健康稳定的环境中茁壮成长。
含氧量检测传感器是智能鱼缸系统中非常重要的组成部分之一,它用于监测鱼缸中水体的溶解氧(Dissolved Oxygen, DO)含量。准确测量水中的溶解氧含量对于维持鱼缸内鱼类的健康至关重要,因为溶解氧水平直接影响到鱼类的呼吸和生存。下面详细介绍含氧量检测传感器的工作原理及其在本项目中的应用。
含氧量检测传感器通常采用极谱法或光学法来进行测量。在本项目中,我们使用的是极谱法传感器,因为它在水体监测中广泛使用并且具有较高的准确性和稳定性。
工作原理:
极谱法含氧量检测传感器的工作原理基于电化学反应。这种传感器通常包含两个电极——参考电极和工作电极,以及电解液。工作电极(通常是铂或金制成的圆盘或线圈)浸没在水中,而参考电极(通常是银/氯化银电极)则与工作电极相连。电解液(通常是氯化钾溶液)用于在两电极之间形成电导通路。
当传感器工作时,会在工作电极上施加一个恒定的电压(通常为0.6V到0.8V),这会在电极表面产生一个电流。在这个电压下,溶解在水中的氧气在工作电极上被还原,产生电子和离子。这一过程可以表示为:
KaTeX parse error: Undefined control sequence: \[ at position 2: \̲[̲ \text{O}_2 + 2…
产生的电子流经外部电路到达参考电极,而在参考电极处,这些电子被消耗掉。因此,通过测量流过电路的电流大小,就可以推算出水体中溶解氧的浓度。电流与溶解氧浓度之间存在线性关系,这意味着电流的大小可以直接转化为溶解氧的浓度值。
为了确保测量的准确性,含氧量检测传感器通常会配备温度补偿电路。这是因为水体中的溶解氧浓度会受到温度的影响,温度升高会导致溶解氧浓度下降。通过温度补偿,传感器可以校正温度变化对测量结果的影响,从而提供更准确的读数。
在本项目中,含氧量检测传感器会持续监测鱼缸中的溶解氧含量,并将数据发送给主控单元STM32L431RCT6。主控单元会对这些数据进行处理,并根据设定的阈值来决定是否需要启动充氧泵来增加水中的溶解氧含量。此外,主控单元还会将这些数据上传至华为云IoT平台,以便用户通过手机应用实时监控鱼缸的含氧量,并在必要时采取措施。
通过这种方式,含氧量检测传感器确保了鱼缸中的溶解氧水平始终处于适宜鱼类生存的最佳范围内,从而为鱼缸内的生物提供了一个健康稳定的居住环境。
TDS值检测器是智能鱼缸系统中的一个重要组成部分,用于监测水体中的总溶解固体(Total Dissolved Solids, TDS)含量。TDS值是指水中溶解的矿物质、盐分、金属离子等物质的总量,这些物质的存在会影响水质,进而影响鱼缸中鱼类的健康和生存。下面详细介绍TDS值检测器的工作原理及其在本项目中的应用。
工作原理:
TDS值检测器的工作原理基于电导率测量。水是一种导体,其导电性取决于其中溶解的离子的数量。一般来说,水中溶解的离子越多,水的电导率就越高。TDS值检测器通过测量水的电导率来间接估算其中的TDS含量。电导率与TDS含量之间存在近似线性的关系,因此可以通过测量电导率来推算出TDS值。
具体过程:
在本项目中,TDS值检测器会持续监测鱼缸中的水质,并将数据发送给主控单元STM32L431RCT6。主控单元会对这些数据进行处理,并根据设定的阈值来决定是否需要启动自动换水系统来改善水质。此外,主控单元还会将这些数据上传至华为云IoT平台,以便用户通过手机应用实时监控鱼缸的TDS值,并在必要时采取措施。
通过这种方式,TDS值检测器确保了鱼缸中的水质始终处于适宜鱼类生存的最佳范围内,从而为鱼缸内的生物提供了一个健康稳定的居住环境。
在本项目中使用的温度传感器是DS18B20防水探头,这是一种非常流行的数字温度传感器,广泛应用于各种需要精确温度测量的场合,包括智能家居、工业控制等领域。下面详细介绍DS18B20防水探头的工作原理及其在智能鱼缸系统中的应用。
DS18B20防水探头的工作原理
DS18B20是一种单线数字温度传感器,它通过一根数据线(加上电源和地线)与微控制器进行通信。这种传感器的优点在于它只需要一个数据引脚就能与微控制器通信,大大简化了硬件连接。DS18B20的温度测量范围通常为-55°C 至 +125°C,精度可达±0.5°C,非常适合用于需要精确温度控制的应用。
DS18B20采用了1-Wire(一总线)通信协议,这意味着它可以通过一根数据线与微控制器进行数据交换。1-Wire协议不仅减少了所需的引脚数量,还支持在同一根线上连接多个DS18B20传感器,只需通过每个传感器唯一的序列号进行区分即可。
DS18B20内部包含一个温度敏感元件和一个1-Wire通信接口。当温度发生变化时,温度敏感元件会产生相应的电信号变化,然后通过1-Wire接口将这些变化转换为数字信号发送给微控制器。
在智能鱼缸系统中的应用
在智能鱼缸系统中,DS18B20防水探头用于监测鱼缸内的水温。温度数据会被发送给主控单元STM32L431RCT6进行处理。主控单元根据接收到的温度数据,可以控制加热器的开启或关闭,以维持水温在适宜的范围内。此外,温度数据也会通过4G模块Air724UG上传至华为云IoT平台,用户可以通过智慧生活App实时查看鱼缸的温度,并根据需要设置恒温温度。
通过这种方式,DS18B20防水探头确保了智能鱼缸系统能够准确地监测并控制水温,为鱼缸内的生物提供一个健康稳定的居住环境。
Air724UG 4G模块是智能鱼缸系统中用于实现无线数据传输的关键组件之一,它主要用于将鱼缸系统收集到的数据通过4G网络发送到华为云IoT平台,同时也支持从云平台接收指令。下面详细介绍Air724UG 4G模块的工作原理及其在本项目中的应用。
Air724UG是一款高性能的4G LTE Cat.4模块,支持全球多个频段,能够在全球范围内提供可靠的4G连接。该模块采用Quectel的芯片组,具有体积小巧、功耗低的特点,适合嵌入式应用。
Air724UG模块支持多种通信协议,包括TCP/IP、UDP、FTP、HTTP等,这些协议使得模块能够与远程服务器进行高效的数据交换。此外,它还支持AT命令集,允许主控单元通过简单的文本命令控制模块的操作。
Air724UG模块支持多种4G LTE频段,可以根据所在地区的网络条件自动选择最优的频段进行连接。它还支持自动重连功能,确保在网络信号不稳定的情况下也能保持稳定的连接。
Air724UG模块具有较低的功耗特点,适合长期运行的应用场景。模块还支持多种省电模式,可以在不需要传输数据时进入低功耗状态,从而节省电力。
在本项目中,Air724UG 4G模块的主要作用是作为鱼缸系统与华为云IoT平台之间的通信桥梁。当鱼缸中的传感器检测到数据时,这些数据会被主控单元STM32L431RCT6收集并处理。处理后的数据随后被发送给Air724UG模块,该模块通过4G网络将数据上传至华为云IoT平台。用户可以通过智慧生活App查看这些数据,并根据需要发送指令来控制鱼缸系统的各项功能。
此外,Air724UG模块还支持从华为云IoT平台接收指令,例如用户通过智慧生活App更改鱼缸的设置时,这些指令会被发送到模块,再由模块转发给主控单元执行相应的操作。
通过这种方式,Air724UG 4G模块确保了智能鱼缸系统能够实现远程监控和控制,为用户提供了一个高度自动化的养鱼体验。
智慧生活App的H5设计有三种方式,包括公版卡片、线上开发与线下开发,便于伙伴根据时间情况进行选择。
总体而言,从公版卡片、线上开发到线下开发,开发过程所需的工作量递增、适用的产品范围更加广泛、能够实现的功能也更加丰富。
分类 | 公版卡片 | 线上开发 | 线下开发 | |
---|---|---|---|---|
适用范围 | - | 仅支持牙刷与智能水杯两种品类。 | 与通信类型及产品品类相关,详见[支持线上开发的品类。 | 适用于所有场景。 |
能力差异 | UX/UI设计 | 自动生成,无需审核。 | 根据物模型自动生成符合规范的操作界面,可在线调整组件、预览效果。设计稿无需提交审核。 | 需要按照产品Profile文件与设计规范进行设计,并在平台提交UX和UI设计稿的审核。 |
H5开发 | 仅支持预览,不支持编辑。 | 支持在线配置功能项及对应参数。不支持二级页面的开发。 | 需要按照Profile文件与UI设计文件进行功能开发。支持二级页面的开发。 | |
H5调测 | 线下调测。 | 线下调测。 | 线下调测。 | |
H5开发包提交 | 单击“下一步”提交。 | 在线保存,并单击“下一步”提交。 | H5开发完成后,需按要求打包并上传至平台。 |
公版卡片/线上开发
通过公版卡片或线上开发H5方式接入智慧生活App的操作流程如下:
图1 公版开发/线上开发H5流程
线下开发H5
通过线下开发H5方式接入智慧生活App的操作流程如下:
图2 线下开发H5流程
华为云官网: https://www.huaweicloud.com/
打开官网,搜索物联网,就能快速找到 设备接入IoTDA。
华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。
使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。
物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。
设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。
业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。
地址: https://www.huaweicloud.com/product/iothub.html
点击立即创建。
正在创建标准版实例,需要等待片刻。
创建完成之后,点击实例名称。 可以看到标准版实例的设备接入端口和地址。
在上面也能看到 免费单元的限制。
开通之后,点击总览,也能查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。
总结:
端口号: MQTT (1883)| MQTTS (8883)
接入地址:ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com
**根据域名地址得到IP地址信息: **
打开Windows电脑的命令行控制台终端,使用ping 命令。ping一下即可。
Microsoft Windows [版本 10.0.19045.4170]
(c) Microsoft Corporation。保留所有权利。
C:\Users\11266>ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com
正在 Ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com [117.78.5.125] 具有 32 字节的数据:
来自 117.78.5.125 的回复: 字节=32 时间=35ms TTL=93
来自 117.78.5.125 的回复: 字节=32 时间=36ms TTL=93
来自 117.78.5.125 的回复: 字节=32 时间=36ms TTL=93
来自 117.78.5.125 的回复: 字节=32 时间=39ms TTL=93
117.78.5.125 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 35ms,最长 = 39ms,平均 = 36ms
C:\Users\11266>
MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。
根据自己产品名字填写,下面的设备类型选择自定义类型。
创建完成之后点击查看详情。
产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。
模型简单来说: 就是存放设备上传到云平台的数据。
你可以根据自己的产品进行创建。
比如:
烟雾可以叫 MQ2
温度可以叫 Temperature
湿度可以叫 humidity
火焰可以叫 flame
其他的传感器自己用单词简写命名即可。 这就是你的单片机设备端上传到服务器的数据名字。
先点击自定义模型。
再创建一个服务ID。
接着点击新增属性。
产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。
创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。
当前的设备是采用MQTT协议与华为云平台进行通信。
MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。目前MQTT拥有各种平台和设备上的客户端,已经形成了初步的生态系统。
MQTT是一种消息队列协议,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,相对于其他协议,开发更简单;MQTT协议是工作在TCP/IP协议上;由TCP/IP协议提供稳定的网络连接;所以,只要具备TCP协议栈的网络设备都可以使用MQTT协议。 本次设备采用的ESP8266就具备TCP协议栈,能够建立TCP连接,所以,配合STM32代码里封装的MQTT协议,就可以与华为云平台完成通信。
华为云的MQTT协议接入帮助文档在这里: https://support.huaweicloud.com/devg-iothub/iot_02_2200.html
业务流程:
描述 | 限制 |
---|---|
支持的MQTT协议版本 | 3.1.1 |
与标准MQTT协议的区别 | 支持Qos 0和Qos 1支持Topic自定义不支持QoS2不支持will、retain msg |
MQTTS支持的安全等级 | 采用TCP通道基础 + TLS协议(最高TLSv1.3版本) |
单帐号每秒最大MQTT连接请求数 | 无限制 |
单个设备每分钟支持的最大MQTT连接数 | 1 |
单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关 | 3KB/s |
MQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝 | 1MB |
MQTT连接心跳时间建议值 | 心跳时间限定为30至1200秒,推荐设置为120秒 |
产品是否支持自定义Topic | 支持 |
消息发布与订阅 | 设备只能对自己的Topic进行消息发布与订阅 |
每个订阅请求的最大订阅数 | 无限制 |
帮助文档地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html
对于设备而言,一般会订阅平台下发消息给设备 这个主题。
设备想接收平台下发的消息,就需要订阅平台下发消息给设备 的主题,订阅后,平台下发消息给设备,设备就会收到消息。
如果设备想要知道平台下发的消息,需要订阅上面图片里标注的主题。
以当前设备为例,最终订阅主题的格式如下:
$oc/devices/{device_id}/sys/messages/down
最终的格式:
$oc/devices/663cb18871d845632a0912e7_dev1/sys/messages/down
对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。
这个操作称为:属性上报。
帮助文档地址:https://support.huaweicloud.com/usermanual-iothub/iot_06_v5_3010.html
根据帮助文档的介绍, 当前设备发布主题,上报属性的格式总结如下:
发布的主题格式:
$oc/devices/{device_id}/sys/properties/report
最终的格式:
$oc/devices/663cb18871d845632a0912e7_dev1/sys/properties/report
发布主题时,需要上传数据,这个数据格式是JSON格式。
上传的JSON数据格式如下:
{
"services": [
{
"service_id": <填服务ID>,
"properties": {
"<填属性名称1>": <填属性值>,
"<填属性名称2>": <填属性值>,
..........
}
}
]
}
根据JSON格式,一次可以上传多个属性字段。 这个JSON格式里的,服务ID,属性字段名称,属性值类型,在前面创建产品的时候就已经介绍了,不记得可以翻到前面去查看。
根据这个格式,组合一次上传的属性数据:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":30,"DHT11_H":10,"BH1750":1,"MQ135":0}}]}
MQTT协议登录需要填用户ID,设备ID,设备密码等信息,就像我们平时登录QQ,微信一样要输入账号密码才能登录。MQTT协议登录的这3个参数,一般称为MQTT三元组。
接下来介绍,华为云平台的MQTT三元组参数如何得到。
要登录MQTT服务器,首先记得先知道服务器的地址是多少,端口是多少。
帮助文档地址:https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home
MQTT协议的端口支持1883和8883,它们的区别是:8883 是加密端口更加安全。但是单片机上使用比较困难,所以当前的设备是采用1883端口进连接的。
根据上面的域名和端口号,得到下面的IP地址和端口号信息: 如果设备支持填写域名可以直接填域名,不支持就直接填写IP地址。 (IP地址就是域名解析得到的)
华为云的MQTT服务器地址:117.78.5.125
华为云的MQTT端口号:1883
如何得到IP地址?如何域名转IP? 打开Windows的命令行输入以下命令。
ping ad635970a1.st1.iotda-device.cn-north-4.myhuaweicloud.com
华为云提供了一个在线工具,用来生成MQTT鉴权三元组: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
打开这个工具,填入设备的信息(也就是刚才创建完设备之后保存的信息),点击生成,就可以得到MQTT的登录信息了。
下面是打开的页面:
填入设备的信息: (上面两行就是设备创建完成之后保存得到的)
直接得到三元组信息。
得到三元组之后,设备端通过MQTT协议登录鉴权的时候,填入参数即可。
ClientId 663cb18871d845632a0912e7_dev1_0_0_2024050911
Username 663cb18871d845632a0912e7_dev1
Password 71b82deae83e80f04c4269b5bbce3b2fc7c13f610948fe210ce18650909ac237
经过上面的步骤介绍,已经创建了产品,设备,数据模型,得到MQTT登录信息。 接下来就用MQTT客户端软件模拟真实的设备来登录平台。测试与服务器通信是否正常。
打开MQTT客户端软件,对号填入相关信息(就是上面的文本介绍)。然后,点击登录,订阅主题,发布主题。
完成上面的操作之后,打开华为云网页后台,可以看到设备已经在线了。
点击详情页面,可以看到上传的数据:
到此,云平台的部署已经完成,设备已经可以正常上传数据了。
MQTT服务器: 117.78.5.125
MQTT端口号: 183
//物联网服务器的设备信息
#define MQTT_ClientID "663cb18871d845632a0912e7_dev1_0_0_2024050911"
#define MQTT_UserName "663cb18871d845632a0912e7_dev1"
#define MQTT_PassWord "71b82deae83e80f04c4269b5bbce3b2fc7c13f610948fe210ce18650909ac237"
//订阅与发布的主题
#define SET_TOPIC "$oc/devices/663cb18871d845632a0912e7_dev1/sys/messages/down" //订阅
#define POST_TOPIC "$oc/devices/663cb18871d845632a0912e7_dev1/sys/properties/report" //发布
发布的数据:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":30,"DHT11_H":10,"BH1750":1,"MQ135":0}}]}
创建一个IAM账户,因为接下来开发上位机,需要使用云平台的API接口,这些接口都需要token进行鉴权。简单来说,就是身份的认证。 调用接口获取Token时,就需要填写IAM账号信息。所以,接下来演示一下过程。
地址: https://console.huaweicloud.com/iam/?region=cn-north-4#/iam/users
**【1】获取项目凭证 ** 点击左上角用户名,选择下拉菜单里的我的凭证
项目凭证:
28add376c01e4a61ac8b621c714bf459
【2】创建IAM用户
鼠标放在左上角头像上,在下拉菜单里选择统一身份认证。
点击左上角创建用户。
创建成功:
【3】创建完成
用户信息如下:
主用户名 l19504562721
IAM用户 ds_abc
密码 DS12345678
帮助文档:https://support.huaweicloud.com/api-iothub/iot_06_v5_0079.html
设备影子介绍:
设备影子是一个用于存储和检索设备当前状态信息的JSON文档。
每个设备有且只有一个设备影子,由设备ID唯一标识
设备影子仅保存最近一次设备的上报数据和预期数据
无论该设备是否在线,都可以通过该影子获取和设置设备的属性
简单来说:设备影子就是保存,设备最新上传的一次数据。
我们设计的软件里,如果想要获取设备的最新状态信息,就采用设备影子接口。
如果对接口不熟悉,可以先进行在线调试:https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=ShowDeviceShadow
在线调试接口,可以请求影子接口,了解请求,与返回的数据格式。
调试完成看右下角的响应体,就是返回的影子数据。
设备影子接口返回的数据如下:
{
"device_id": "663cb18871d845632a0912e7_dev1",
"shadow": [
{
"service_id": "stm32",
"desired": {
"properties": null,
"event_time": null
},
"reported": {
"properties": {
"DHT11_T": 18,
"DHT11_H": 90,
"BH1750": 38,
"MQ135": 70
},
"event_time": "20240509T113448Z"
},
"version": 3
}
]
}
调试成功之后,可以得到访问影子数据的真实链接,接下来的代码开发中,就采用Qt写代码访问此链接,获取影子数据,完成上位机开发。
链接如下:
https://ad635970a1.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/28add376c01e4a61ac8b621c714bf459/devices/663cb18871d845632a0912e7_dev1/shadow