智能家居系统利用大量的物联网设备(如温湿度传感器、安防系统、照明系统)实时监控家庭内部状态,完成智能调节、人机互动。随着物联网技术的发展,其应用范围、数据规模、市场份额将进一步扩大,智能家居设备之间的智能联动也将变的越来越困难,同时由于家庭数据的隐私性,用户数据上传至云端处理还有一定的安全问题。
为此我们将使用 Raspberry Pi + EMQ X Edge + EMQ X Kuiper 搭建智能家居网关,实现智能家居设备数据的边缘计算处理,减少家庭私密数据外流。
本文中我们将用 BH1750FVI 光照强度传感器采集家庭光照强度数据,使用 EMQ X Kuiper 对光照强度数据进行分析和处理,并依据预先定义的数据规则对 LED 灯进行相应的控制。
所需组件
树莓派 3b+ 以及更高版本
树莓派3代B+ 型是一款基于 ARM 的微型计算机主板,以 SD/MicroSD卡进行存储,该主板提供 USB 接口和以太网接口,可以连接键盘、鼠标和网线,该主板具备 PC 的基本功能,同时树莓派集成了 Wi-Fi,蓝牙以及大量 GPIO,是智能家居网关的理想选择。
EMQ X Edge
智能家居设备之间通信协议有 MQTT,Wi-Fi,蓝牙 等,其中 MQTT 协议 是基于发布/订阅模式的物联网通信协议,它简单易实现、支持 QoS、报文小。在本文中我们将使 MQTT 协议作为智能家居设备之间的通信协议。
由于 Raspberry Pi 内存以及处理能力有限,我们选择由 EMQ 开源的 EMQ X Edge 作为 MQTT broker,EMQ X Edge 是轻量级的物联网边缘计算消息中间件,支持部署在资源受限的物联网边缘硬件。
EMQ X Kuiper
智能家居设备之间数据传输格式不同,并且数据存在波动性,我们需要对设备上报的数据进行处理。在本文中我们将使用由 EMQ 开源的 EMQ X Kuiper 对智能家居设备数据进行边缘化处理,EMQ X Kuiper 是基于 SQL 的轻量级边缘流式消息处理引擎,可以运行在资源受限的边缘设备上。
通过实时分析智能家居设备的各类数据,可以实现对设备的即时状态管理与控制。
其他组件
- BH1750FVI 光照强度传感器
- LED
- 330 Ω电阻
- 面包板, 跳线若干
项目示意图

环境搭建
电路连接

树莓派配置
我们选择 raspbian 8 作为树莓派操作系统,并选择 python 3 作为项目编程语言
# 创建名为 smart-home-hubs 的项目目录
mkdir ~/smart-home-hubs
EMQ X Edge 安装与运行
$ cd ~/smart-home-hubs
# 下载软件包
$ wget https://www.emqx.io/downloads/edge/v4.1.0/emqx-edge-raspbian8-v4.1.0.zip
$ unzip emqx-edge-raspbian8-v4.1.0.zip
$ cd ./emqx
# 运行 EMQ X Edge
$ ./bin/emqx start
EMQ X Kuiper 安装与运行
$ cd ~/smart-home-hubs
# 下载软件包
$ wget https://github.com/emqx/kuiper/releases/download/0.4.2/kuiper-0.4.2-linux-armv7l.zip
$ unzip kuiper-0.4.2-linux-armv7l.zip
$ mv kuiper-0.4.2-linux-armv7l ./kuiper
$ cd ./kuiper
# 创建 rules 目录,用来存放规则文件
$ mkdir ./rules
# 运行 EMQ X Kuiper
$ ./bin/server
代码编写
BH1750FVI 光照传感器数据上传
编写代码读取并计算 BH1750FVI 传感器光照强度数据,并以 1次/秒 的频率将光照强度数据通过 MQTT协议 发布到 smartHomeHubs/light 主题上。
# gy30.py
import json
import time
import smbus
from paho.mqtt import

本文介绍如何使用Raspberry Pi、EMQX Edge和EMQX Kuiper搭建智能家居网关,实现光照强度传感器数据的边缘计算处理,以及基于光照强度控制LED灯的智能联动。
最低0.47元/天 解锁文章
270





