iroh驱动智能风扇亮相
速览
一款由iroh平台驱动的智能风扇近日发布。该风扇利用iroh的AI推理能力,可根据环境自动调节风速和风向。这标志着iroh在物联网终端设备上的应用拓展。
AI 深度解读
背景
欧洲近期遭遇热浪,作者希望利用闲暇时间做一个能带来清凉的小项目。传统的智能家居设备通常依赖云端服务,存在隐私、延迟和依赖单一厂商等问题。作者选择使用 Rust 编写的点对点网络库 iroh,搭配 ESP32 微控制器,构建一个完全无需云端的智能风扇系统。用户只需一个支持 WebAssembly 的浏览器,即可从世界任何地方远程控制风扇。文章详细记录了从 ESP32 基础设置到添加温度传感器和风扇控制的完整过程。
核心内容
硬件与软件基础
作者选用 ESP32-WROVER devkit(4 MiB PSRAM),以启用 iroh 的全部网络能力(包括中继连接)。也可使用 M5StickC-Plus2,但需要调整 GPIO 引脚。如果使用不带 PSRAM 的 ESP32,仍可运行 iroh,但需禁用中继连接并调整 QUIC 缓冲区以避免内存不足。
基本设置
从 iroh-esp32-examples 复制 echo 示例,将服务器端重命名为 server-smart-fan,客户端重命名为 smart-fan-cli。两个目录是独立的 Rust 项目(非工作区),因为需要不同的工具链,并且 ESP32 版本可能需要对 iroh 打补丁。
首次烧录
- 用 USB-C 线连接 ESP32。
- 设置 WiFi 环境变量:
export WIFI_CONFIG=SSID:PASSWORD(也可在命令中指定)。 - 可选提高烧录速度:
ESPFLASH_BAUD=230400(芯片支持 230400 波特,视情况而定)。 - 执行:
ESPFLASH_BAUD=230400 WIFI_CONFIG=myap:mypass cargo run --release。 - 首次 release 构建会编译 iroh 和操作系统到 xtensa 架构,耗时较长;后续构建会使用
.embuild缓存。 - 烧录完成后,输出显示 Flash 使用率达 95.75%,但额外添加 Rust 依赖(如 irpc)几乎不增加大小。
尝试运行
烧录后 ESP32 上运行一个简单的 echo 服务器。
端点 ID(Endpoint ID):设备首次启动时生成并存储密钥到非易失性内存,重启后复用,保证端点 ID 稳定。烧录时不会覆盖非易失性内存。
启动流程:
- 尝试连接 WiFi,若失败则挂起(示例中未实现恢复选项)。
- 成功后 iroh 端点启动,输出本地 IP、长 ticket(包含 IP 地址,仅本地可用)和短 ticket(仅包含端点 ID,全局可用)。
- 通过 QAD(Quick Address Discovery)探测世界位置,选择最近的 relay 作为 home relay。此时设备通过短 ticket 可从世界任何地方访问。
连接测试:在客户端命令行运行 cargo run <短ticket>,成功建立连接,发送 "Hello from iroh!" 并收到 echo 响应。本地可使用长 ticket 绕过 relay,全局通过 relay 连接。
关机:cargo run --release 停止只会断开与设备的监视连接,ESP32 会继续运行。断开 USB 后重新供电,设备以相同端点 ID 重启。真正关停需拔电或 espflash erase-flash。
添加传感器与风扇控制(文章后续部分简介)
作者预告下一步将使用 ESP32 读取温度传感器,并根据温度控制风扇启停。整个系统没有云端组件,只有一个基于 WebAssembly 的小型网站,可以从任何浏览器访问和控制。
关键要点
- 完全无云端:智能风扇的控制通过点对点网络(iroh)实现,数据不经过任何云服务器,用户直接与设备通信。
- 端点 ID 持久化:通过首次启动生成并存储密钥到非易失性内存,保证设备重启后端点 ID 不变,无需额外配置。
- 支持中继穿透:设备通过 QAD 发现最近的中继节点,实现 NAT 穿透,从而允许全球访问。
- 灵活硬件兼容:支持带 PSRAM 的 ESP32(如 ESP32-WROVER、ESP32-S3)以获得完整功能;无 PSRAM 的 ESP32 通过禁用 relay 和调整 QUIC 缓冲区也可运行。
- 烧录与运行分离:烧录后设备独立运行,断开 USB 后改为独立供电仍可工作,适合嵌入式场景。
- 代码复用与扩展:基于 iroh-esp32-examples 的 echo 示例改造,添加传感器和 actuator 控制非常方便,依赖大小增长极小。
意义与影响
- 隐私与自主权:用户完全掌握设备的控制权和数据,不依赖任何第三方云服务。对于重视隐私的用户和注重数据主权的场景(如企业、政府)具有很大吸引力。
- 去中心化 IoT 的可行性验证:iroh 作为一个成熟的点对点网络库,在资源受限的 ESP32 上成功运行,证明了去中心化物联网架构的实用性和可落地性。
- 降低运维成本:无需维护云端服务器,也没有云服务订阅费用,设备一旦部署即可独立运行,显著降低长期成本。
- 促进开放硬件社区发展:基于 Rust 和开源组件(iroh、esp-idf),开发者可以快速复制、修改和扩展项目,推动更多去中心化智能设备的出现。
- 对现有智能家居模式的挑战:主流智能家居产品(如 Google Home、小米)依赖云端,用户面临服务中断、隐私泄露、厂商锁定等风险。该项目展示了一条截然不同的技术路径,可能催生更多注重用户控制的替代方案。
