Skip to content

shengqing1/SmartHome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

树莓派智能家居系统技术文档

目录

  1. 概述
  2. 部署步骤
  3. 华为云IoT平台功能
    1. MQTT协议主题订阅与发布
    2. 设备影子
  4. 树莓派系统开发
    1. 功能概述
    2. 环境配置
      1. 硬件需求
      2. 软件需求
      3. 开发环境搭建
    3. 代码结构
      1. 主要文件
      2. 代码解析
        1. MQTT通信
        2. 主函数
    4. 编译与运行
      1. 编译
      2. 运行
    5. 系统功能
  5. QT上位机开发
    1. 项目概述
    2. 技术架构
      1. MQTT通信
        1. 关键类和方法
        2. 实现细节
      2. 视频监控
        1. 关键类和方法
        2. 实现细节
      3. 用户界面
        1. 关键组件
      4. 安全性
        1. 关键技术
    3. 系统功能
    4. 注意事项
    5. 后续改进

1. 概述

华为云IoT平台是一个提供海量设备接入和管理能力的服务平台,支持多种网络接入方式和协议,帮助用户快速构建物联网解决方案。本部分介绍了如何在华为云IoT平台上部署智能家居系统,实现设备的数据采集、命令下发、设备管理等功能。

2. 部署步骤

网上教程很多,不详细介绍 华为云IOT

3. 华为云IoT平台功能

3.1 MQTT协议主题订阅与发布

设备通过MQTT协议与华为云平台通信,包括订阅主题和发布主题:

  1. 订阅主题: 设备订阅华为云平台下发消息的主题。
  2. 发布主题: 设备向华为云平台上传数据的主题。

3.2 设备影子

设备影子是华为云平台提供的功能,用于存储和检索设备的状态信息:

  1. 获取影子数据: 查询设备的最新状态。
  2. 修改设备属性: 通过设备影子修改设备属性,下发指令给设备。

树莓派系统开发

树莓派系统

1. 功能概述

本部分旨在使用C++语言开发,借助于MQTT协议与华为云IOT服务器进行通信,实现对家居环境的实时监控和控制。系统通过连接各种传感器(如温湿度传感器、烟雾传感器、火焰传感器、光敏传感器)来收集环境数据,并通过LED灯进行状态指示。

2. 环境配置

2.1 硬件需求

  • 树莓派
  • 温湿度传感器(DHT11)
  • 烟雾传感器(MQ2)
  • 火焰传感器
  • 光敏传感器
  • LED灯(3个)
  • 蜂鸣器

2.2 软件需求

  • Clion IDE
  • CMake
  • WiringPi库
  • OpenCV库(用于图像处理,如果需要)
  • MQTT库

2.3 开发环境搭建

  1. 安装Clion: 下载并安装Clion IDE。

  2. 安装依赖库:

    sudo apt-get install cmake
    sudo apt-get install wiringpi
    sudo apt-get install libopencv-dev
  3. 配置CMakeLists.txt:

    • 设置C++标准为C++14。
    • 查找并链接WiringPi库和OpenCV库。
    • 添加可执行文件smartHome

3. 代码结构

3.1 主要文件

  • CMakeLists.txt: 项目配置文件。

  • mqtt.h: MQTT通信的头文件。

  • mqtt.cpp: MQTT通信的实现文件。

  • main.h: 主函数的头文件。

  • main.cpp: 主函数的实现文件。 clion

3.2 代码解析

3.2.1 MQTT通信

  • 初始化: MQTT_Init函数初始化MQTT缓冲区。
  • 连接: MQTT_Connect函数用于连接MQTT服务器。
  • 订阅: MQTT_SubscribeTopic函数用于订阅主题。
  • 发布: MQTT_PublishData函数用于发布数据。

3.2.2 主函数

  • GPIO初始化: initGPIO函数初始化GPIO口。
  • 传感器数据读取:
    • readDHT读取温湿度数据。
    • readMQ2读取烟雾传感器数据。
    • readFlame读取火焰传感器数据。
    • readLight读取光敏传感器数据。
  • MQTT通信: 连接MQTT服务器(华为云IOT),订阅主题,并定期发布传感器数据。

4. 编译与运行

4.1 编译

在项目根目录下执行以下命令进行编译:

cmake .
make

4.2 运行

运行生成的可执行文件:

./smartHome

5. 系统功能

  1. 温湿度监测: 使用DHT11传感器实时监测环境温湿度。
  2. 烟雾监测: 使用MQ2传感器监测烟雾浓度。
  3. 火焰监测: 使用火焰传感器监测环境中是否存在火焰。
  4. 光照监测: 使用光敏传感器监测环境光照强度。
  5. 状态指示: 使用LED灯和蜂鸣器进行状态指示。

QT上位机开发

1. 项目概述

本部分是该智能家居项目的上位机应用开发,使用Qt框架进行开发。该应用通过MQTT协议与华为云IOT平台进行通信,实现数据的上报与获取设备影子数据的功能。此外,项目还集成了访问网页摄像头的功能,用于实时视频监控。

2. 技术架构

2.1 MQTT通信

使用QtMqtt库实现MQTT协议的通信,包括连接、断开、订阅和发布消息等操作。

关键类和方法

  • QMqttClient: 管理MQTT连接和通信。
  • connectToHost(): 建立MQTT连接。
  • disconnectFromHost(): 断开MQTT连接。
  • publish(): 发布消息到指定主题。
  • subscribe(): 订阅主题。
  • messageReceived(): 处理接收到的消息。

实现细节

  1. 连接管理: 自动化连接和重连机制,确保稳定通信。
  2. 数据上报: 将设备数据封装成JSON格式,通过MQTT协议发送到华为云平台。
  3. 设备影子: 定期从华为云平台获取设备影子数据,同步设备状态。

2.2 视频监控

使用Qt的多媒体处理类库实现网页摄像头的访问和视频流播放。

关键类和方法

  • QMediaPlayer: 用于加载和控制媒体播放。
  • QVideoWidget: 用于显示视频内容。
  • QNetworkAccessManager: 用于网络请求,获取视频流地址。

实现细节

  1. 视频播放: 通过QMediaPlayer加载视频流,并将其输出到QVideoWidget进行播放。
  2. 错误处理: 处理播放过程中可能出现的错误,如网络断开、媒体格式不支持等。

2.3 用户界面

使用Qt Designer设计用户界面,包括连接信息输入、消息发布、视频显示等功能。

关键组件

  • QLineEdit: 输入框,用于输入MQTT连接信息。
  • QPushButton: 按钮,用于执行连接、发布消息等操作。
  • QLCDNumber: 液晶显示屏,用于显示传感器数据。
  • QLabel: 标签,用于显示状态信息。

2.4 安全性

使用HTTPS协议和Token认证机制,确保与华为云IOT平台的通信安全。

关键技术

  • HTTPS: 使用安全的HTTP协议进行数据传输。
  • Token认证: 获取并使用Token进行身份验证。

3. 系统功能

  1. MQTT连接: 连接至华为云IOT平台的MQTT服务器。
  2. 数据上报: 将设备数据(如传感器数据)发送至华为云平台。
  3. 设备影子: 从华为云平台获取设备影子数据,实现设备状态的同步。
  4. 视频监控: 通过网页摄像头实现实时视频监控。

运行截图

4. 注意事项

  • 确保MQTT服务器地址、端口、客户端ID、用户名和密码配置正确。
  • 确保网络连接正常,以便与华为云IOT平台通信。
  • 根据实际需求调整MQTT通信参数和视频流地址。

5. 后续改进

  • 增加更多的设备支持和数据处理功能。
  • 优化用户界面,提高用户体验。
  • 增加异常处理和错误提示,提高系统的稳定性。

About

树莓派智能家居系统(华为云IOT)

Resources

License

Stars

8 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors