基于树莓派4B设计的智能家居系统(华为云IOT)_树莓派用mq2

image-20230302142915034

(2)打开网页查看

完成上面的操作之后,打开华为云网页后台,可以看到设备已经在线了。

image-20230302142931580

点击详情页面,可以看到上传的数据:

image-20230302142943785

如果想查看历史数据,点击这里:

image-20230302143034594

到此,云平台的部署已经完成,设备已经可以正常上传数据了。

(3)MQTT登录测试参数总结
IP地址:117.78.5.125
端口号:1883
DeviceId      64000697352830580e48df07_dev1
DeviceSecret  12345678
ClientId      64000697352830580e48df07_dev1_0_0_2023030206
Username      64000697352830580e48df07_dev1
Password      a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449
订阅主题:$oc/devices/64000697352830580e48df07_dev1/sys/messages/down
发布主题:$oc/devices/64000697352830580e48df07_dev1/sys/properties/report
发布的消息:{"services": [{"service\_id": "stm32","properties":{"DHT11\_T":18,"DHT11\_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}

四、上位机开发

为了方便查看设备上传的数据,对设备进行远程控制,接下来利用Qt开发一款Android和windows系统的上位机。

使用华为云平台提供的API接口获取设备上传的数据,也可以给设备下发指令,控制设备。

为了方便查看设备上传的数据,对设备进行远程控制,接下来利用Qt开发一款Android和windows系统的上位机。

使用华为云平台提供的API接口获取设备上传的数据,也可以给设备下发指令,控制设备。

4.1 Qt开发环境安装

Qt的中文官网: https://www.qt.io/zh-cn/image-20221207160550486

image-20221207160606892

QT5.12.6的下载地址:https://download.qt.io/archive/qt/5.12/5.12.6

打开下载链接后选择下面的版本进行下载:

qt-opensource-windows-x86-5.12.6.exe 13-Nov-2019 07:28 3.7G Details

软件安装时断网安装,否则会提示输入账户。

安装的时候,第一个复选框里勾选一个mingw 32编译器即可,其他的不管默认就行,直接点击下一步继续安装。

image-20221203151742653

说明: 我这里只是介绍PC端的环境搭建(这个比较简单)。 Android的开发环境比较麻烦,可以去我的博客里看详细文章。

选择MinGW 32-bit 编译器:

image-20221203151750344

4.2 创建IAM账户

创建一个IAM账户,因为接下来开发上位机,需要使用云平台的API接口,这些接口都需要token进行鉴权。简单来说,就是身份的认证。 调用接口获取Token时,就需要填写IAM账号信息。所以,接下来演示一下过程。

地址: https://console.huaweicloud.com/iam/?region=cn-north-4#/iam/users

获取Token时,除了AIM账号外,还需要项目凭证:

22ef548bdacc41a9ade0b3c83bcc3b21

image-20230302143322487

鼠标放在左上角头像上,在下拉菜单里选择统一身份认证

image-20230302143346808

点击左上角创建用户

image-20230302143408692

image-20221207161209880

image-20221207161308917

image-20221207161327200

创建成功:

image-20221212174359962

image-20221212174412097

image-20230302143509754

4.3 获取影子数据

帮助文档:https://support.huaweicloud.com/api-iothub/iot_06_v5_0079.html

设备影子介绍:

设备影子是一个用于存储和检索设备当前状态信息的JSON文档。
每个设备有且只有一个设备影子,由设备ID唯一标识
设备影子仅保存最近一次设备的上报数据和预期数据
无论该设备是否在线,都可以通过该影子获取和设置设备的属性

简单来说:设备影子就是保存,设备最新上传的一次数据。

我们设计的软件里,如果想要获取设备的最新状态信息,就采用设备影子接口。

如果对接口不熟悉,可以先进行在线调试:https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=ShowDeviceShadow

在线调试接口,可以请求影子接口,了解请求,与返回的数据格式。

image-20230302143600763

image-20230302143630250

设备影子接口返回的数据如下:

{
 "device\_id": "64000697352830580e48df07\_dev1",
 "shadow": [
  {
   "service\_id": "stm32",
   "desired": {
    "properties": null,
    "event\_time": null
   },
   "reported": {
    "properties": {
     "DHT11\_T": 18,
     "DHT11\_H": 85,
     "MQ2": 1,
     "water": 1,
     "flame": 1,
     "light": 0,
     "LED1": 0,
     "LED2": 0,
     "LED3": 0
    },
    "event\_time": "20230302T063135Z"
   },
   "version": 4
  }
 ]
}

4.4 修改设备属性

地址: https://support.huaweicloud.com/api-iothub/iot_06_v5_0034.html

接口说明

设备的产品模型中定义了物联网平台可向设备下发的属性,应用服务器可调用此接口向指定设备下发属性。平台负责将属性以同步方式发送给设备,并将设备执行属性结果同步返回。

修改设备属性的接口,可以让服务器给设备下发指令,如果需要控制设备。

在线调试地址:

https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=IoTDA&api=UpdateProperties

修改设备属性是属于同步命令,需要设备在线才可以进行调试,先使用MQTT客户端登录服务器,模拟设备上线。

然后进行调试,测试数据远程下发给设备。

【1】利用MQTT客户端先登录设备 (这是同步命令,必须在线才能调试)

image-20230302143718571

【2】点击调试

image-20230302143913833

{"services":{"LED":1}}

【4】可以看到,MQTT客户端软件上已经收到了服务器下发的消息

image-20230302143937918

由于是同步命令,服务器必须要收到设备的响应才能顺利完成一个流程,设备响应了服务器才能确定数据下发成功。

MQTT设备端如何响应呢?

设备响应格式说明:https://support.huaweicloud.com/api-iothub/iot_06_v5_3008.html

image-20221203163532648

下面进行实操:

当服务器通过在线调试,发送指令下来之后,客户端将请求ID复制下来,添加到发布主题的格式里,再回复回去,服务器收到了响应,一次属性修改就完美完成了。

image-20230302144140668

就是成功的状态:

image-20230302144110511

**下面是请求的总结: ** (响应服务器的修改设备属性请求)

上报主题的格式:$oc/devices/{device_id}/sys/properties/set/response/request_id=

$oc/devices/64000697352830580e48df07_dev1/sys/properties/set/response/request_id=

响应的数据:
{"result\_code": 0,"result\_desc": "success"}

4.5 设计上位机

前面2讲解了需要用的API接口,接下来就使用Qt设计上位机,设计界面,完成整体上位机的逻辑设计。

【1】新建Qt工程

image-20230302144331541

选择工程路径,放在英文路径下。

image-20230302144355666

image-20230302144438504

image-20230302144511360

image-20230302144525234

创建完毕。

image-20230302144613552

新建Android的模板:

image-20230302144635602

image-20230302144713402

image-20230302144743125

image-20230302145256807

【2】打开现有的Qt工程

如果想打开已经设计好的工程,可以在保存上位机源码的目录下,找到工程文件xxx.pro,双击打开工程,详细操作看下面截图红框。

image-20230302145343425

【3】设计UI界面

打开UI设计师界面:

image-20230302145418467

这是默认的界面:

image-20230302145443292

下面是设计好的界面:

image-20230302152827968

【4】配置参数读取与保存

/\*
功能: 保存数据到文件
\*/
void Widget::SaveDataToFile(QString text)
{
    /\*保存数据到文件,方便下次加载\*/
    QString file;
    file=QCoreApplication::applicationDirPath()+"/"+ConfigFile;
    QFile filesrc(file);
    filesrc.open(QIODevice::WriteOnly);
    QDataStream out(&filesrc);
    out << text;  //序列化写字符串
    filesrc.flush();
    filesrc.close();
}


/\*
功能: 从文件读取数据
\*/
QString Widget::ReadDataFile(void)
{
    //读取配置文件
    QString text,data;
    text=QCoreApplication::applicationDirPath()+"/"+ConfigFile;

    //判断文件是否存在
    if(QFile::exists(text))
    {
        QFile filenew(text);
        filenew.open(QIODevice::ReadOnly);
        QDataStream in(&filenew); // 从文件读取序列化数据
        in >> data; //提取写入的数据
        filenew.close();
    }
    return data; //返回值读取的值
}


【5】通信交互代码

//解析反馈结果
void Widget::replyFinished(QNetworkReply \*reply)
{
    QString displayInfo;

    int statusCode = reply->attribute(QNet
  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于STM32和华为云设计的智能鱼缸是一款结合了物联网技术的智能家居产品。该产品通过STM32微控制器实现对鱼缸的自动化管理和监控,并通过华为云提供的IoT平台进行数据传输和云端存储。 该智能鱼缸具备以下几个重要功能: 1. 温度和湿度监测:通过在鱼缸设置温湿度传感器,可以实时监测鱼缸的环境温度和湿度,并将数据上传至华为云平台。 2. 光照控制:鱼缸内安装光照传感器,可以根据光线强度控制照明设备的开关,实现鱼缸中的环境光线的自动调节。 3. 水质检测:鱼缸配备水质传感器,可以监测水质的PH值、氧溶解度、浊度等关键指标,并将数据上传至华为云平台,用户可以随时查看和分析水质状况。 4. 远程控制:用户可以通过手机APP或者电脑浏览器,在任何地方远程控制鱼缸的开关、光照、水泵等设备,实现对鱼缸的远程管理和控制。 5. 历史数据分析:华为云平台提供了强大的数据存储和分析功能,用户可以查看鱼缸的历史数据,并通过数据分析帮助提高水质管理效果。 基于STM32和华为云设计的智能鱼缸的出现,使得鱼缸管理更加便捷和智能化。不仅能够提供舒适的生活环境给鱼儿,还可以通过智能化管理,提高饲养效果和减少养鱼的难度。同时,用户可以通过远程控制和数据分析进行精细化的管理,提升鱼缸养殖的效益和成果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值