1. 项目概述:为什么选择MQTT与树莓派构建本地智能家居?
如果你对智能家居感兴趣,但又厌倦了依赖云服务、担心隐私泄露,或者觉得从头编程太麻烦,那么这个项目可能就是为你准备的。今天要聊的,是如何用树莓派(Raspberry Pi)和一种叫MQTT的协议,搭建一个完全本地运行、超低功耗的WiFi家庭自动化系统。核心目标很简单:让一个用两节AAA电池供电的传感器,通过WiFi把数据(比如温度)稳定地发送到家里的树莓派上,并且整个过程不需要你写一行代码。
为什么是MQTT和树莓派这个组合?在物联网和家庭自动化领域,MQTT协议几乎是事实上的标准。它就像一个高效的“广播电台”和“邮局”的结合体。设备(比如传感器)作为“发布者”,把消息“投递”到名为“主题”的特定邮箱;而任何关心这个“主题”的设备(比如你的树莓派或手机上的应用)作为“订阅者”,就能实时收到消息。这种“发布/订阅”模式最大的好处是“解耦”——发布者只管发,订阅者只管收,双方不需要知道对方是谁、在哪,这极大地简化了系统扩展。你新加一个传感器,只需要让它往正确的主题发消息就行,完全不用改动中央服务器或其他设备。
而树莓派,作为一款廉价、开源、性能足够且社区支持强大的微型电脑,是充当这个中央“邮局”(即MQTT代理服务器,或称Broker)的绝佳选择。它24小时开机功耗很低,能稳定运行在家庭网络环境中,成为所有智能设备通信的枢纽。另一个主角是IOT Cricket模块,它是一个专为超低功耗设计的WiFi模块,内置了MQTT客户端。这意味着它天生就知道如何与我们的树莓派“邮局”对话,我们只需要通过网页配置一下,告诉它“邮局”的地址和要“投递”的“信箱”名称即可,完全跳过了复杂的嵌入式编程环节。
这个方案的价值在于,它为你提供了一个坚实、灵活且完全自主可控的智能家居基础架构。你不再被某个品牌的封闭生态系统绑定,数据完全留在本地局域网内,安全性更高。后续你可以基于这个MQTT骨干网络,轻松集成像Home Assistant、Node-RED这样的开源智能家居平台,打造出功能强大、界面美观的控制面板和自动化流程。接下来,我们就从零开始,一步步把这个系统搭建起来。
2. 核心组件选型与原理深度解析
在动手之前,我们需要彻底理解手头每个“零件”的角色和它们协同工作的原理。这不仅是为了完成搭建,更是为了日后排查问题和扩展系统时,你能心中有数。
2.1 MQTT协议:智能家居的“神经系统”
你可以把MQTT想象成一套高效的“广播系统”。它包含三个核心角色:
- 发布者(Publisher):产生信息的设备,比如我们的温度传感器。它的工作就是“喊话”。
- 订阅者(Subscriber):需要接收信息的设备或应用,比如在树莓派上运行的数据记录程序,或者你手机上的监控App。它的工作是“听广播”。
- 代理(Broker):也就是我们的树莓派所扮演的角色。它是整个系统的中心交换站,负责接收所有“喊话”(发布的消息),并将其准确分发给所有在“听”对应频道(主题)的“听众”(订阅者)。
核心概念:主题(Topic)主题是MQTT消息的路由地址,是一个用斜杠/分隔的字符串,形如/home/livingroom/temperature。这种层级结构非常灵活,便于管理和订阅。订阅者可以使用通配符:
+:单层通配符。例如订阅/home/+/temperature,会收到/home/livingroom/temperature和/home/bedroom/temperature的消息,但不会收到/home/livingroom/sensor/temperature。#:多层通配符。例如订阅/home/#,会收到所有以/home/开头的主题的消息。
为什么MQTT特别适合低功耗物联网?
- 轻量级:协议头很小,最小消息仅需2字节,极大减少了网络传输的数据量,节省了带宽和电量。
- 低开销:连接建立后,保持连接的心跳包(Keep Alive)机制非常节省资源。
- 服务质量(QoS):提供三种消息传递保证级别,允许你在可靠性和功耗/速度之间做权衡:
- QoS 0(最多一次):消息发出去就不管了,不保证送达。最省电,适合可容忍丢失的非关键数据(如周期性上报的传感器读数)。
- QoS 1(至少一次):确保消息至少送达一次,但可能重复。接收方需要回复确认。
- QoS 2(恰好一次):通过四次握手确保消息恰好送达一次。最可靠,但开销最大。 对于我们的电池传感器,通常使用QoS 0,以最大限度延长电池寿命。
2.2 硬件双雄:树莓派与IOT Cricket模块
树莓派:家庭的智能中枢我们选择树莓派作为Broker,看中的是其“全能性”和“稳定性”。它不仅仅是一个MQTT消息转发器,未来还可以轻松承载Home Assistant(智能家居集成平台)、Node-RED(可视化流程编排工具)、数据库(如InfluxDB用于存储历史数据)以及Grafana(数据可视化仪表板)等一系列服务。一台树莓派3B或4B,其性能足以胜任一个中等复杂度的家庭自动化中心。它的功耗通常在2.5W到7W之间,常年开机电费成本极低。
IOT Cricket模块:零编程的传感终端这是本项目的“魔法”所在。IOT Cricket是一个集成了ESP8266 WiFi芯片、传感器接口和超低功耗管理电路的模块。其核心优势在于:
- 无需编程:模块固件已内置了MQTT和HTTP客户端。你只需要通过一个简单的网页配置界面(AP模式),设置好WiFi密码、Broker地址、发布主题等参数,它就能按预设规则工作。
- 极致低功耗:它采用了深度睡眠(Deep Sleep)技术。在非发送数据的时间,整个模块几乎完全关闭,仅由实时时钟(RTC)定时唤醒。例如,每30秒唤醒一次,连接WiFi、读取传感器、发送MQTT消息、然后立即重新进入深度睡眠。这种工作模式使得其平均电流可以低至微安级别,两节AAA电池理论上可以工作数月甚至更久。
- 内置传感器与GPIO:模块本身集成了温度传感器,同时提供了通用的GPIO引脚,可以外接按钮、继电器、光照传感器等,让你能快速制作不同类型的智能节点。
注意:IOT Cricket模块的配置方式是其易用性的关键。它通常提供一个临时的WiFi热点,你用手机或电脑连接后,访问特定IP地址(如
192.168.4.1)即可进入配置页面。这个过程类似于配置一个新的智能插座或灯泡。
2.3 系统架构与数据流
理解了组件和协议,整个系统的蓝图就清晰了:
- 数据生成端:IOT Cricket模块(温度传感器)周期性(如每30秒)从深度睡眠中唤醒。
- 数据发布端:模块连接家庭WiFi,使用内置的MQTT客户端,以QoS 0级别向树莓派的Mosquitto Broker的特定主题(如
/cricket/59A98F494C/temp)发布一条包含温度值的消息。 - 消息路由中心:树莓派上的Mosquitto服务接收到消息,并根据主题将其转发给所有订阅了该主题或相关通配符主题的客户端。
- 数据消费端:可以是多种多样的。
- 调试观察:在树莓派终端上使用
mosquitto_sub命令订阅主题,实时查看数据。 - 数据存储:一个Python脚本订阅温度主题,将数据写入SQLite或InfluxDB数据库。
- 智能联动:Node-RED订阅温度主题,当温度超过28°C时,通过MQTT向另一个主题发送指令,控制智能插座打开风扇。
- 可视化:Grafana从数据库中查询温度数据,在网页仪表板上显示实时曲线和历史图表。
- 调试观察:在树莓派终端上使用
这个架构的优美之处在于其松耦合性。你可以在任何一步进行扩展或替换,而不会影响其他部分。
3. 实战搭建:从零部署MQTT Broker与传感器节点
理论铺垫足够,现在开始动手。请确保你手头有树莓派(已安装Raspberry Pi OS)、IOT Cricket模块、2节AAA电池及电池盒、以及家庭WiFi网络。
3.1 在树莓派上部署Mosquitto MQTT Broker
首先,通过SSH或直接连接显示器键盘操作你的树莓派。
步骤一:系统更新与Mosquitto安装在开始安装任何新软件前,更新系统软件包列表并升级现有软件是一个好习惯,这能确保系统的稳定性和安全性。
# 更新软件包列表 sudo apt update # 升级所有已安装的软件包(这步可能需要一些时间) sudo apt full-upgrade -y更新完成后,安装Mosquitto Broker及其客户端工具。-y参数表示自动确认安装提示。
# 安装Mosquitto MQTT代理服务器和客户端工具 sudo apt install mosquitto mosquitto-clients -y安装完成后,Mosquitto服务会自动启动。你可以用以下命令检查其运行状态:
sudo systemctl status mosquitto如果看到active (running)的字样,说明服务已成功运行。
步骤二:基础安全配置(关键步骤)默认的Mosquitto配置允许匿名连接,这在家庭本地网络测试时很方便,但为了学习完整的流程,我们进行一个最小化的安全配置——设置密码。强烈建议在生产环境或长期使用的系统中设置密码。
首先,创建一个密码文件。你需要为MQTT连接设置一个用户名和密码。
# 创建密码文件,并添加一个用户(例如用户名为‘pi’,密码自定义) sudo mosquitto_passwd -c /etc/mosquitto/passwd pi执行命令后,它会提示你输入并确认密码。请务必记住这个密码。
接下来,编辑Mosquitto的主配置文件。
sudo nano /etc/mosquitto/mosquitto.conf在文件末尾添加以下几行配置。如果文件内容很多,可以找一个空白区域添加。
# 监听端口(默认1883用于MQTT,8883用于MQTT over SSL) listener 1883 # 允许本机所有网络接口的连接 allow_anonymous false # 指定密码文件路径 password_file /etc/mosquitto/passwdallow_anonymous false:这行至关重要,它禁止了匿名连接,意味着任何设备连接Broker都必须提供正确的用户名和密码。password_file:指向我们刚刚创建的密码文件。
编辑完成后,按Ctrl+X,然后按Y,再按Enter保存并退出nano编辑器。
步骤三:重启服务并获取树莓派IP地址让新的配置生效。
# 重启Mosquitto服务 sudo systemctl restart mosquitto # 设置Mosquitto服务开机自启(可选但推荐) sudo systemctl enable mosquitto再次检查服务状态,确保重启成功。
sudo systemctl status mosquitto现在,我们需要知道树莓派在局域网中的IP地址,以便其他设备(如Cricket模块)能够找到它。
hostname -I命令会输出一个或多个IP地址,通常第一个(如192.168.1.100)就是你需要的局域网IP。请记下它。
实操心得:建议在路由器中为你的树莓派设置一个静态IP地址(DHCP保留),这样它的IP就不会变动,避免以后因IP变化导致传感器连接失败。具体方法请参考你路由器的管理界面。
3.2 配置IOT Cricket模块连接Broker
现在我们来让传感器“活”起来。
步骤一:硬件连接与上电将两节AAA电池装入电池盒,然后将电池盒的输出线正确连接到IOT Cricket模块的电源输入引脚(通常标有VCC和GND,请务必参照模块说明书,防止接反烧毁)。连接后,模块上的LED可能会快速闪烁,表示它已启动并进入了配置模式(AP模式)。
步骤二:进入配置模式
- 打开你的手机或电脑的WiFi设置。
- 你应该能搜索到一个新的WiFi热点,名称通常类似于“Cricket_XXXXXX”或“IOT_AP_XXXX”。
- 连接这个热点。连接后,设备可能会提示“此网络无法提供互联网访问”,这是正常的,点击“保持连接”。
- 打开浏览器,在地址栏输入配置页面的IP地址。这个地址通常是
http://192.168.4.1或http://10.10.10.1,具体请参考IOT Cricket的官方文档。页面加载后,你会看到一个简单的Web配置界面。
步骤三:关键参数配置在配置页面中,你需要找到并设置以下几个核心区域:
- WiFi设置(STA模式):
- SSID:填入你的家庭WiFi名称。
- Password:填入你的家庭WiFi密码。
- 这样配置后,Cricket在正常工作模式下就会连接你的家庭网络,而不是一直处于AP模式。
- MQTT客户端设置:
- Server/Broker:填入你刚才记下的树莓派IP地址,例如
192.168.1.100。 - Port:填入
1883(我们配置的MQTT端口)。 - Username:填入你在树莓派上创建的用户名,例如
pi。 - Password:填入对应的密码。
- Client ID:可以留空或自定义一个,如
cricket_temp_01,用于在Broker标识此设备。
- Server/Broker:填入你刚才记下的树莓派IP地址,例如
- 数据发布设置:
- Topic:这是消息发布的“地址”。你可以自定义一个清晰的层级结构,例如
/home/studyroom/temperature。为了唯一性,也可以使用设备ID,如原始示例中的/59A98F494C/temp。请务必记下你设置的主题,后续订阅数据时需要它。 - Publish Interval:发布间隔,设置为
30000(单位毫秒,即30秒)。这个值决定了模块唤醒和发送数据的频率,直接影响电池寿命。时间越长越省电。 - Data/Message:这里需要配置发布的消息内容。对于内置温度传感器,通常有一个特定的变量或标签来表示温度值,例如
{temp}或%TEMP%。具体语法请查阅Cricket的文档。通常可以配置为类似{"temp": {temp}}的JSON格式,这样数据更结构化。
- Topic:这是消息发布的“地址”。你可以自定义一个清晰的层级结构,例如
步骤四:保存并重启填写所有信息后,找到“Save”、“Apply”或“Reboot”按钮并点击。模块会保存配置,重启,并尝试连接你指定的家庭WiFi和MQTT Broker。
注意事项:配置完成后,模块的AP热点会消失。如果配置错误导致无法连接网络,模块通常会在几次失败后重新进入AP模式,以便你重新配置。具体行为请参考模块手册。
4. 验证通信与数据可视化入门
系统搭建好了,我们得验证一下数据是否真的流起来了,并初步看看如何“消费”这些数据。
4.1 使用命令行工具验证MQTT数据流
回到树莓派的终端,我们将使用安装好的mosquitto_sub工具来“监听”消息。
方法一:订阅所有主题(用于调试和发现)这个命令会显示连接到Broker的所有设备发布的所有消息,非常适合初期调试,看看你的设备到底在发什么。
mosquitto_sub -v -h localhost -p 1883 -u pi -P [你的密码] -t "#"-v:显示详细输出,即同时打印“主题”和“消息”。-h localhost:指定Broker地址,因为我们在树莓派本机运行命令,所以用localhost。如果从网络其他电脑监听,需换成树莓派的IP。-u和-P:提供用户名和密码进行认证。-t "#":订阅多层通配符#,即订阅所有主题。
如果一切正常,每隔30秒(或你设置的间隔),你应该能看到一行输出,例如:
/home/studyroom/temperature {"temp": 25.6}这证明你的Cricket模块已经成功连接网络,并通过MQTT将温度数据发送到了树莓派Broker。
方法二:订阅特定主题在知道确切的主题后,我们可以只订阅关心的数据,减少干扰。
mosquitto_sub -h localhost -p 1883 -u pi -P [你的密码] -t "/home/studyroom/temperature"此时,终端将只显示消息内容(如{"temp": 25.6}),不再显示主题名。
方法三:手动发布消息测试我们还可以用mosquitto_pub命令模拟一个设备发布消息,测试整个通路。
mosquitto_pub -h localhost -p 1883 -u pi -P [你的密码] -t "/test/hello" -m "Hello from Raspberry Pi"执行后,在运行着mosquitto_sub -t "#"的终端窗口里,你应该能看到/test/hello Hello from Raspberry Pi这条消息。这验证了发布和订阅功能都工作正常。
4.2 使用Node-RED实现简单的数据流与可视化
命令行查看数据毕竟不够直观。Node-RED是一个基于流的低代码编程工具,非常适合快速搭建物联网逻辑和界面。我们用它来创建一个简单的数据流:订阅温度数据,并将其显示在仪表盘上,同时如果温度过高就发出日志警告。
步骤一:安装Node-RED在树莓派上安装Node-RED非常方便。
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)安装脚本会同时更新Node.js并安装Node-RED。安装完成后,将其设置为开机自启并启动服务:
sudo systemctl enable nodered.service sudo systemctl start nodered.service步骤二:访问并配置Node-RED打开树莓派上的浏览器,访问http://[树莓派IP]:1880。你将进入Node-RED的图形化编辑界面。
- 配置MQTT输入节点:从左侧节点面板拖拽一个
mqtt in节点到工作区。 - 双击节点进行配置:
- 点击右侧“服务器”后面的铅笔图标,新建一个MQTT Broker连接。
- “服务器”填写
localhost或127.0.0.1,端口1883。 - 在“安全”标签页,填写用户名
pi和对应的密码。 - 点击“更新”,然后“添加”。
- 回到节点配置,“主题”填写你Cricket模块发布温度的主题,例如
/home/studyroom/temperature。 - “输出”选择为“解析的JSON对象”。这样消息内容会自动转换为JavaScript对象,方便后续处理。
- 点击“完成”。
- 添加调试与功能节点:
- 拖拽一个
debug节点,将其连接到mqtt in节点。这会在右侧调试窗口输出原始数据,用于验证连接。 - 拖拽一个
function节点,连接到mqtt in节点。双击它,输入以下代码:// 从msg.payload中提取温度值,假设数据格式为 {"temp": 25.6} var temp = msg.payload.temp; // 将温度值赋予新的msg.payload,便于后续图表显示 msg.payload = temp; // 可以添加一些简单的逻辑,比如高温警告 if (temp > 28) { node.warn("警告:温度过高,当前温度:" + temp + "°C"); } return msg; - 拖拽一个
chart节点(可能在dashboard分类下,需先安装node-red-dashboard面板节点)或gauge节点,连接到function节点。配置其仪表盘属性和名称(如“室温”)。
- 拖拽一个
- 部署流程:点击右上角的红色“部署”按钮。如果MQTT连接成功,你会看到
mqtt in节点下方出现“已连接”的提示。
步骤三:查看仪表盘点击Node-RED编辑器右上角的菜单图标,选择“仪表板”->“打开仪表板”,或直接访问http://[树莓派IP]:1880/ui。你将会看到一个简单的Web页面,上面显示着你刚刚创建的图表或仪表,数值会随着MQTT消息的接收而实时更新。
通过这个简单的流程,你已经实现了从传感器数据采集、MQTT传输、到数据解析和Web可视化的完整链路。Node-RED的强大之处在于,你可以通过拖拽轻松添加更多逻辑,比如将数据存入数据库、发送邮件通知、或与其他智能设备联动。
5. 系统优化、扩展与故障排查指南
一个能跑起来的系统只是开始,一个稳定、可靠、可扩展的系统才是目标。这部分分享一些进阶优化思路和常见问题的解决方法。
5.1 功耗优化与电池寿命估算
对于Cricket这类电池供电的节点,功耗是核心考量。其功耗主要来自几个阶段:深度睡眠、WiFi连接、数据发送。
- 深度睡眠电流:这是决定电池寿命的基础。优质的模块深度睡眠电流可低至10微安(µA)级别。
- 工作周期电流:每次唤醒后,启动MCU、连接WiFi(包含握手、认证)、发送MQTT数据(包含TCP连接建立)的瞬时电流可能高达100毫安(mA)以上。
- 平均电流计算:假设模块每30秒(30000毫秒)工作一次,工作时间为500毫秒(包括连接和发送),工作电流100mA,睡眠电流20µA。
- 工作阶段耗电:
(500ms / 1000) * 100mA = 50 mAs(毫安秒) - 睡眠阶段耗电:
(29500ms / 1000) * 0.02mA ≈ 0.59 mAs - 一个周期总耗电:
50 + 0.59 = 50.59 mAs - 平均电流:
50.59 mAs / 30s ≈ 1.69 mA
- 工作阶段耗电:
- 电池容量与寿命:两节AAA碱性电池总容量约2000mAh。
- 理论寿命:
2000mAh / 1.69mA ≈ 1183小时 ≈ 49天。 - 实际寿命会短很多,因为电池电压下降、低温环境、WiFi信号弱导致连接时间变长等因素都会增加功耗。实际能达到30-40天已属不错。
- 理论寿命:
优化建议:
- 增加上报间隔:这是最有效的手段。将30秒改为60秒、300秒(5分钟)甚至更长,能线性降低平均电流。根据数据敏感度权衡。
- 优化WiFi环境:确保传感器所在位置WiFi信号强(RSSI值高,如大于-65dBm)。信号弱会导致连接重试、发送功率增加,极大增加单次工作能耗。
- 使用QoS 0:确保Cricket配置为MQTT QoS 0,避免等待确认包带来的额外通信开销和唤醒时间。
- 硬件层面:选择更低功耗的模块,并确保在不需要时断开所有外部传感器(如果可配置)。
5.2 系统安全加固
我们之前设置了密码,但这只是基础。对于希望长期运行的系统,可以考虑以下加固措施:
- 使用SSL/TLS加密(MQTT over SSL,端口8883):防止局域网内的数据被窃听。这需要在Mosquitto配置中配置证书,并在所有客户端(包括Cricket,如果支持)中配置CA证书。过程稍复杂,但能极大提升通信安全。
- 使用访问控制列表(ACL):限制特定用户只能订阅或发布特定的主题。例如,一个温度传感器用户只能向
/sensors/temp/#主题发布消息,而不能订阅或向其他主题发布。这需要在mosquitto.conf中配置acl_file路径并编写ACL规则文件。 - 防火墙设置:在树莓派上,使用
ufw等工具只开放必要的端口(如SSH的22,Node-RED的1880,MQTT的1883/8883),并限制访问源IP(如仅限家庭内网IP段)。 - 定期更新:保持树莓派系统、Mosquitto、Node-RED等所有组件的软件更新,以修补安全漏洞。
5.3 常见问题与排查技巧
问题1:Cricket模块配置后,在mosquitto_sub里看不到数据。
- 排查思路:
- 检查电源:确保电池电量充足,接触良好。
- 检查WiFi连接:观察模块LED状态(参考手册),或使用路由器管理界面查看是否有名为Cricket或ESP8266的设备连接成功。
- 检查Broker连接:在树莓派上运行
sudo systemctl status mosquitto确认服务运行。运行sudo netstat -tlnp | grep 1883确认Mosquitto在监听1883端口。 - 检查认证:如果配置了密码,确保Cricket配置中的用户名和密码完全正确。可以暂时在
mosquitto.conf中注释掉allow_anonymous false并重启服务,测试是否为认证问题。 - 检查主题:用
mosquitto_sub -t "#"订阅所有主题,看是否有其他主题的数据。可能Cricket发布主题的路径与你订阅的不一致。 - 查看Mosquitto日志:
sudo journalctl -u mosquitto -f可以实时查看Mosquitto的日志,连接失败或认证错误会有明确提示。
问题2:Node-RED中MQTT节点显示“连接失败”。
- 排查思路:
- 检查Broker地址:在Node-RED的MQTT节点配置中,确保服务器地址是
localhost(如果Node-RED和Mosquitto在同一树莓派上)或正确的IP。 - 检查端口和认证:确认端口(1883)和用户名密码正确。
- 检查网络权限:如果Node-RED是以服务形式运行,确保其有网络访问权限。通常默认是有的。
- 测试命令行连接:在Node-RED所在机器上用
mosquitto_sub命令测试,先排除Broker本身的问题。
- 检查Broker地址:在Node-RED的MQTT节点配置中,确保服务器地址是
问题3:数据接收不稳定,时有中断。
- 排查思路:
- WiFi信号问题:这是最常见原因。将Cricket模块移到离路由器更近的位置测试。考虑使用WiFi中继器改善覆盖。
- 电源问题:电池电压不足可能导致模块工作异常。换用新电池测试。
- 网络干扰:家庭WiFi信道可能拥挤。使用手机App(如WiFi分析仪)查看信道占用情况,在路由器设置中切换到一个相对空闲的信道(如1, 6, 11)。
- Broker负载:如果连接了大量设备,树莓派性能可能成为瓶颈。使用
htop命令观察树莓派的CPU和内存使用情况。
问题4:想添加更多类型的传感器或执行器。
- 解决方案:这正是本系统架构的优势所在。
- 更多传感器:可以购买更多的IOT Cricket模块,配置不同的主题(如
/home/kitchen/humidity)即可。也可以利用一个Cricket模块的多功能GPIO,外接DHT11温湿度传感器、土壤湿度传感器等,并在Cricket配置中设置读取这些GPIO的数据并发布到不同主题。 - 执行器控制:要控制开关、灯光、继电器,你需要一个能接收MQTT命令的设备。例如,可以使用ESP8266(如NodeMCU)或ESP32自己开发,也可以购买现成的MQTT智能插座、开关模块。在Node-RED中,你可以创建一个
mqtt out节点,向控制主题(如/home/livingroom/light/switch)发布on或off消息,执行器设备订阅该主题并执行动作。 - 逻辑自动化:所有设备都通过MQTT与树莓派通信后,你可以在Node-RED中轻松创建自动化流。例如,一个“当书房温度高于28°C且有人在(通过人体传感器判断)时,自动打开书房风扇”的流程,只需要将温度传感器和人体传感器的
mqtt in节点,通过一个function节点进行逻辑判断,最后连接到一个控制风扇的mqtt out节点即可,完全图形化操作,无需编写复杂代码。
- 更多传感器:可以购买更多的IOT Cricket模块,配置不同的主题(如
这个基于MQTT和树莓派的系统,就像一个乐高底座,为你提供了无限的创造可能。从简单的温度监测开始,你可以逐步搭建起一个完全个性化、隐私安全、功能强大的本地智能家居网络,享受自己动手创造的乐趣和成就感。