找回密码
 立即注册

微信扫码登录

搜索
查看: 97|回复: 2

[插件集成] AirProce 艾泊斯空气净化器原生接入 Home Assistant

[复制链接]

3

主题

50

回帖

1179

积分

金牌会员

积分
1179
金钱
1126
HASS币
0
发表于 前天 15:28 | 显示全部楼层 |阅读模式
本帖最后由 griddz 于 2026-8-7 16:13 编辑

AirProce 艾泊斯空气净化器原生接入 Home Assistant

听从@hhh网友建议,取消mqtt通讯
做了一个 AirProce 艾泊斯空气净化器的 Home Assistant 原生自定义集成

截屏2026-08-07 15.53.06.png
截屏2026-08-07 15.53.20.png
目前已经在我自己的:

  • AirProce AI-300
  • AirProce AI-600

两台机器上实际测试使用,开关、1~6 档风速、自动模式、睡眠模式以及温湿度、PM2.5、VOC 状态都工作正常。

GitHub:

https://github.com/Griddz/home-assistant-airproce-bridge

当前版本:0.2.2


这个集成有什么特点

现在已经是完整的 Home Assistant 原生集成,不再需要以前的 Python Bridge,也不需要 MQTT。

每台 AirProce 在 HA 中直接成为一个设备,包含:

  • Fan 实体
    • 开 / 关
    • 1~6 档风速
    • Auto 自动模式
    • Sleep 睡眠模式
  • 温度 Sensor
  • 湿度 Sensor
  • PM2.5 Sensor
  • VOC Sensor

也就是说:

不需要 MQTT Broker。

不需要 Home Assistant MQTT 集成。

不需要额外运行 Python 脚本。

净化器直接通过 TCP Socket B 与 Home Assistant 通信。


最大的好处:官方 App 仍然可以继续使用

AirProce 净化器内部使用了 USR(有人物联网)串口转网络模块。

它提供两路透明 TCP Socket:

Socket A → AirProce 官方服务器
           ↓
         官方 App

Socket B → Home Assistant
           ↓
       AirProce 集成
           ↓
    原生 Fan + Sensor

我们只使用 Socket B

原来的 Socket A 完全不动,仍然连接 AirProce 官方服务器,因此:

  • AirProce 官方 App 可以继续使用
  • Home Assistant 也可以同时本地控制
  • 两边状态能够通过净化器本身同步

这是我做这个方案时比较看重的一点。


使用前最重要的检查

这个方案不是所有 AirProce 都一定可以使用。

首先必须确认你的净化器能够打开内部 USR 模块的管理页面。

浏览器访问:

http://净化器IP

通常默认登录:

用户名:admin
密码:admin

登录后应该能看到类似“有人物联网”的串口透传管理页面

有人透传管理WEB页面

有人透传管理WEB页面

,并且能够看到:

  • Socket A
  • Socket B

两个 Socket 的配置。

如果管理网页打不开、用户名密码未知,或者没有 Socket B,那么目前这个集成无法按这种方式使用。

所以建议安装集成之前先确认这一点。


Socket B 怎么设置

Socket A 保持 AirProce 原来的官方配置,不要修改。

例如可能是:

TCP-Client
d2.airproce.com
8800

然后把 Socket B 设置为:

协议:TCP-Client
Server:Home Assistant 的局域网 IP
Port:9001

例如:

Home Assistant IP:192.168.1.100

那么:

Socket B
TCP-Client
192.168.1.100
9001

保存后 USR 模块会主动连接 Home Assistant。

集成内部直接监听这个 TCP 端口。


安装方法

推荐使用 HACS。

在 HACS 中添加自定义仓库:

https://github.com/Griddz/home-assistant-airproce-bridge

类别选择:

Integration

然后安装:

AirProce

安装完成后重启 Home Assistant。

也可以手动安装,将:

custom_components/airproce_bridge

复制到:

/config/custom_components/airproce_bridge

然后重启 HA。


添加 AirProce

进入:

设置
→ 设备与服务
→ 添加集成

搜索:

AirProce

正常情况下只需要填写几个参数:

  • 设备名称
  • 净化器型号
  • USR 模块 IP
  • Socket B 监听端口

例如:

设备名称:客厅空气净化器
型号:AI-300
USR IP:192.168.1.112
Socket B Port:9001

高级设置中还有:

  • USR 管理网页端口
  • USR 用户名
  • USR 密码
  • 是否验证 USR 网页登录
  • Watchdog 参数

一般保持默认即可。

监听地址、内部 Device ID 等实现参数已经不再要求用户配置。


Home Assistant 中会得到什么

每台净化器会作为一个独立设备加入 Home Assistant。

例如一台机器会有:

fan.airproce

以及:

sensor.airproce_temperature
sensor.airproce_humidity
sensor.airproce_pm25
sensor.airproce_voc

实际 entity_id 会根据设备名称及现有 HA 环境有所不同。

Fan 支持:

  • Turn On
  • Turn Off
  • Set Percentage
  • Auto
  • Sleep

AirProce 本身实际是 1~6 档风速

Home Assistant 原生 Fan 使用百分比接口,因此会把六个硬件档位映射为六个百分比档位。

同时实体属性中还保留:

hardware_speed

可以直接看到净化器当前真实的:

1 / 2 / 3 / 4 / 5 / 6

档。


Auto / Sleep 不是简单发一个固定码

逆向 AirProce 协议时发现一个比较有意思的地方:

自动模式和睡眠模式的控制帧中,有一个字节与当前风速上下文有关。

所以集成并不是简单地发送一个固定的 Sleep 或 Auto 数据包。

它会保留最近一次有效的风速上下文,再生成对应控制帧。

这个逻辑已经在 AI-300 和 AI-600 上实际测试。


控制后不是“假装成功”

集成没有使用乐观状态。

例如在 HA 中点:

Sleep

流程实际上是:

Home Assistant
    ↓
发送 Sleep 控制帧
    ↓
AirProce 返回 ACK
    ↓
集成立即发送状态查询
    ↓
AirProce 返回真实状态
    ↓
更新 HA Fan / Sensor

所以最终显示的是净化器确认后的实际状态。


Socket B 断线检测

AirProce 正常情况下大约每 15 秒主动上报一次状态。

集成包含 Watchdog。

默认连续约 45 秒没有收到有效状态后,会主动查询净化器。

如果查询仍然失败,会再次重试。

两次都没有有效回复后,会主动关闭这个疑似“假在线”的 TCP Socket。

此时:

Fan
Temperature
Humidity
PM2.5
VOC

都会在 HA 中变成:

unavailable

USR 模块重新连接后,集成会自动请求一次最新状态并恢复。

这样可以避免 TCP 实际已经失效,但 HA 还一直显示设备在线。


两台或更多 AirProce

支持同时接入多台。

例如:

净化器 USR IP Socket B Port
AI-600 192.168.1.112 9001
AI-300 192.168.1.113 9002

每台设备需要:

  • 不同的 USR IP
  • 不同的 Socket B 监听端口

但可以共用:

  • 同一个 Home Assistant IP
  • 相同的 USR 用户名 / 密码
  • 相同的 Watchdog 参数

例如第二台机器的 Socket B:

TCP-Client
192.168.1.100
9002

第三台可以继续:

9003

以此类推。

集成在添加设备时也会检查端口冲突。


从旧版 MQTT 版本升级

早期版本是:

AirProce
  ↓
TCP Bridge
  ↓
MQTT
  ↓
MQTT Discovery
  ↓
Home Assistant

现在已经改成:

AirProce
  ↓
Socket B
  ↓
Home Assistant 原生集成
  ↓
Fan + Sensor

所以新版本 AirProce 本身已经完全不需要 MQTT

升级时集成会尽量:

  • 删除旧 AirProce MQTT 参数
  • 清理旧 MQTT Discovery
  • 清理旧 MQTT 实体注册
  • 保留原来的设备和实体 ID

如果以前还在某台 Linux 主机运行独立的 AirProce Python Bridge,安装新集成之前记得先停止它,否则会占用 9001 / 9002 等监听端口。

家里其他 Zigbee2MQTT 等设备仍然需要 MQTT 的话当然不受影响。


已验证型号

目前我实际测试的是:

  • AirProce AI-300
  • AirProce AI-600

两台目前运行正常。

其他 AirProce 型号是否采用完全相同的协议,目前没有设备验证。

如果有其他型号的坛友测试成功,也欢迎反馈型号和 USR 页面情况。


已知限制

目前有几个限制:

  1. 必须能够进入净化器内部 USR 模块管理网页。
  2. 必须存在可用的 Socket B。
  3. Socket B 参数目前需要手工在 USR 网页中设置。
  4. 不同 AirProce 型号是否采用相同协议还需要更多设备验证。
  5. 协议是根据实际通信数据逆向分析得到,目前只在 AI-300 和 AI-600 上验证。

项目地址

GitHub:

https://github.com/Griddz/home-assistant-airproce-bridge

AirProce 官网:

https://airproce.net/

目前版本:

0.2.2

如果有 AI-300、AI-600 或其他 AirProce 型号,欢迎一起测试。

另外说明一下:本项目代码由 ChatGPT 5.6 协助生成,我负责实际设备测试、协议验证以及功能确认。





home-assistant-airproce-bridge-0.2.2.zip

44.7 KB, 下载次数: 0

评分

参与人数 1金钱 +16 收起 理由
hhh. + 16 感谢楼主分享!

查看全部评分

回复

使用道具 举报

20

主题

534

回帖

4661

积分

论坛UI达人

积分
4661
金钱
4097
HASS币
60
发表于 前天 19:20 | 显示全部楼层
既然已经编写集成接入了,干嘛还要使用MQTT,没搞懂。
回复

使用道具 举报

3

主题

50

回帖

1179

积分

金牌会员

积分
1179
金钱
1126
HASS币
0
 楼主| 发表于 昨天 16:16 | 显示全部楼层
hhh. 发表于 2026-8-6 19:20
既然已经编写集成接入了,干嘛还要使用MQTT,没搞懂。

您说的对,多此一举,我取消了mqtt.
AI写代码快得很!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )|网站地图

GMT+8, 2026-8-8 14:38 , Processed in 0.015313 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表