news 2026/4/20 18:28:16

把树莓派变成智能家居中枢:用Node-RED连接米家、Home Assistant实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把树莓派变成智能家居中枢:用Node-RED连接米家、Home Assistant实战

树莓派变身智能家居大脑:Node-RED联动米家与Home Assistant全攻略

想象一下,当你深夜起床时,走廊灯自动亮起柔和的暖光;离家时所有电器一键关闭;下雨前窗户自动关闭——这些场景不再需要昂贵的商业系统,用树莓派和Node-RED就能实现。本文将带你从零构建一个能协调米家设备和Home Assistant的智能中枢,让DIY智能家居变得简单而强大。

1. 环境准备与基础配置

在开始自动化流程前,我们需要确保树莓派上的Node-RED已具备与智能家居设备对话的能力。不同于简单的服务搭建,这里更关注实际应用所需的组件生态。

首先通过SSH登录树莓派,更新已安装的Node-RED到最新版本:

sudo apt update sudo apt upgrade node-red

接着安装三个关键插件包:

cd ~/.node-red npm install node-red-contrib-home-assistant-websocket npm install node-red-contrib-mi-miio npm install node-red-dashboard

这些插件分别提供:

  • Home Assistant双向通信支持
  • 米家设备直接控制能力
  • 可视化面板搭建功能

提示:如果遇到权限问题,可在命令前加上sudo --preserve-env=NPM_CONFIG_PREFIX

配置完成后,访问http://树莓派IP:1880应该能看到左侧节点面板多了对应分类。建议此时进行基础安全设置:

  1. 生成加密密码:node-red admin hash-pw
  2. 编辑~/.node-red/settings.js,取消注释并修改adminAuth部分
  3. 重启服务:node-red-restart

2. 米家设备接入实战

米家生态设备种类繁多,从灯泡到传感器应有尽有。通过第三方节点,我们可以绕过官方限制直接控制这些设备。

2.1 设备令牌获取

每个米家设备都有唯一令牌,获取方法如下:

  1. 在米家APP中开启开发者模式(连续点击"关于"页面5次)
  2. 找到设备MAC地址和令牌(可能需要root手机或使用抓包工具)
  3. 记录下这两个关键参数

2.2 节点配置示例

以智能插座为例,配置流程如下:

  1. 从左侧面板拖入miio device节点
  2. 双击节点填写:
    • IP地址:设备局域网IP
    • Token:刚才获取的32位令牌
  3. 连接inject节点测试控制:
// 注入消息内容 { "method": "set_power", "params": ["on"] }

常见设备控制指令对照表:

设备类型method参数有效值范围
智能灯泡set_power["on"/"off"]
set_bright[1-100]
空调伴侣set_mode["cool"/"heat"]
温湿度计get_prop["temp","humidity"]

注意:部分新款设备可能需要额外安装node-red-contrib-miio-adv插件

3. 与Home Assistant深度集成

对于已经部署Home Assistant的用户,Node-RED可以成为更强大的自动化引擎。以下是两种典型集成模式:

3.1 事件驱动自动化

当HA中传感器状态变化时触发动作:

  1. 配置ha-webhook节点接收HA事件
  2. 添加switch节点过滤事件类型
  3. 联动米家设备执行动作
// 示例:光照低于50lux自动开灯 if (msg.data.new_state.state < 50) { return { payload: { method: "set_power", params: ["on"] } }; }

3.2 双向状态同步

保持HA与米家设备状态一致的高级方案:

  1. 使用ha-state-changed节点监听HA实体
  2. 通过function节点转换数据格式
  3. miio device节点更新米家设备
  4. 添加ha-call-service节点反向同步

这种架构下,无论从哪个平台操作设备,状态都能实时同步。

4. 打造可视化控制面板

Node-RED的Dashboard功能可以创建个性化的控制界面,替代多个厂商APP的繁琐操作。

4.1 基础控件布局

  1. 新建tab作为功能分区(如"客厅"、"卧室")
  2. 添加group组织相关控件
  3. 选择适合的widget类型:
    • 开关:switch
    • 滑块:slider
    • 图表:chart

4.2 高级场景面板

实现"离家模式"这样的复合场景:

- type: template template: > {% if states.input_boolean.away_mode.state == "on" %} 已启动离家模式 {% else %} 家庭模式 {% endif %} - type: button tap_action: action: call-service service: input_boolean.toggle target: entity_id: input_boolean.away_mode

配合后台流程序列:

  1. 关闭所有灯光
  2. 调低恒温器温度
  3. 启动安防摄像头
  4. 发送手机通知确认

5. 实战案例:人体感应照明系统

结合米家人体传感器和飞利浦灯泡,打造智能照明场景:

5.1 硬件清单

  • 树莓派4B(已装Node-RED)
  • 米家人体传感器(型号RTCGQ01LM)
  • 飞利浦智能灯泡(兼容米家)

5.2 流程序设计

主要逻辑流程:

  1. 传感器检测到移动 → 触发事件
  2. 判断当前时间(白天/夜晚)
  3. 检查环境光照强度
  4. 条件满足时开启灯光
  5. 无人状态持续5分钟后关闭
// 光照自适应亮度计算 const lux = msg.payload.lux; let brightness = 30; if (lux < 10) { brightness = 100; } else if (lux < 50) { brightness = 70; } return { payload: { method: "set_bright", params: [brightness] } };

5.3 异常处理机制

完善的自动化需要考虑各种边界情况:

  • 添加delay节点防止误触发
  • 使用counter节点统计触发次数
  • 设置手动覆盖开关
  • 异常状态邮件通知
[邮件内容模板] 主题:智能照明系统异常警告 正文: 检测到人体传感器在{{time}}连续触发{{count}}次, 可能原因: - 传感器安装位置不当 - 宠物活动干扰 - 设备故障 建议检查设备状态。

6. 性能优化与维护技巧

长期运行的智能家居中枢需要特别关注稳定性:

6.1 资源监控方案

通过exec节点获取系统状态:

# CPU温度 vcgencmd measure_temp # 内存使用 free -m | awk '/Mem/{print $3}'

将这些数据可视化在Dashboard上,设置阈值告警。

6.2 流程序列化管理

大型项目建议采用模块化设计:

  1. 按功能拆分为子流程
  2. 使用link in/out节点连接
  3. 添加详细注释
  4. 版本控制备份:
# 定期备份流程 tar -czf nodered-backup-$(date +%Y%m%d).tar.gz ~/.node-red

6.3 常见故障排查

当设备无响应时,按此步骤检查:

  1. 确认设备在线(ping测试)
  2. 检查令牌是否失效
  3. 验证网络防火墙设置
  4. 查看Node-RED日志:
journalctl -u nodered -f

记得为每个关键节点添加debug节点输出,方便追踪数据流向。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 18:26:45

学会学习总结

最近学习英语&#xff0c;在这个过程接触了一些关于如何学习的学习方法&#xff0c;很有感触&#xff0c;进行总结整理 文章目录一、学习概念理解1.1 学习的目标---构建自己的知识体系1.2 学习的组成---学习学&#xff08;模仿&#xff09;习&#xff08;创造&#xff09;1.3 学…

作者头像 李华
网站建设 2026/4/20 18:26:41

终极指南:如何用上海交通大学LaTeX模板快速搞定完美论文格式

终极指南&#xff1a;如何用上海交通大学LaTeX模板快速搞定完美论文格式 【免费下载链接】SJTUThesis 上海交通大学 LaTeX 论文模板 | Shanghai Jiao Tong University LaTeX Thesis Template 项目地址: https://gitcode.com/gh_mirrors/sj/SJTUThesis 还在为论文格式调整…

作者头像 李华
网站建设 2026/4/20 18:26:27

WebSocket连接老是断?用Wireshark抓包分析101协议升级与Ping/Pong帧保活机制

WebSocket连接稳定性实战&#xff1a;用Wireshark诊断101协议升级与心跳保活机制 上周排查一个线上问题&#xff0c;用户反馈实时数据看板每隔20分钟就会卡住不动。打开Chrome开发者工具一看&#xff0c;WebSocket连接总是莫名其妙断开。这种问题在长连接场景中太常见了——你以…

作者头像 李华
网站建设 2026/4/20 18:24:06

Percy与React对比分析:为什么选择Rust构建前端

Percy与React对比分析&#xff1a;为什么选择Rust构建前端 【免费下载链接】percy Build frontend browser apps with Rust WebAssembly. Supports server side rendering. 项目地址: https://gitcode.com/gh_mirrors/pe/percy Percy是一个使用Rust和WebAssembly构建前…

作者头像 李华
网站建设 2026/4/20 18:23:05

如何快速掌握哔哩下载姬:3个高效B站视频下载技巧

如何快速掌握哔哩下载姬&#xff1a;3个高效B站视频下载技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09…

作者头像 李华