『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 778|回复: 10

[插件集成] Airmx 秒新加湿器接入HA

[复制链接]

40

主题

313

帖子

3093

积分

论坛元老

Rank: 8Rank: 8

积分
3093
金钱
2780
HASS币
0
发表于 2024-10-29 03:35:24 | 显示全部楼层 |阅读模式
本帖最后由 dizherui 于 2024-10-29 03:33 编辑

原来秒新接入可以通过抓包获取MQTT来控制,在北方夏天用不到加湿器,直到几天前开始供热才发现秒新APP居然不能用了,MQTT服务器也连不上了,不过这个品牌在俄罗斯使用的人应该不少,也有人出了完全本地化的接入,虽然还有点小问题,但至少能简单的控制了。之前的装修贴还没写完,不是因为不更新了,是装修了好几年,中间也发生了很多事,今年才完事。我会慢慢更新整理一下这几年的装修过程,也算是给自己的一个装修日志吧。

我们开始正题
简单翻译成中文的项目地址:https://github.com/DexQueen/Airmx

将秒新加湿器集成到 Home Assistant【自己的接入记录】
该组件通过Home Assistant完全在本地控制Airmx 湿器。但通过HA和原来的AIRMX应用程序同时管理控制是不可能的。只能二选一

接入步骤:
  • 安装插件
  • 安装组件
  • 在路由系统上执行设置或在 ESP8266 上运行专用接入点
  • 重置加湿器【可选】
  • 为 Home Assistant 添加加湿器

该组件正在测试中,基本操作还是正常的,存在一些小问题!

支持的设备

  • AirWater A2【已添加】
  • AirWater A3【已添加】
  • AirWater A3S【已添加】
  • AirWater A3S V2 (Tion Iris)【没测试】
  • AirWater A5【没测试】

安装插件

为了使该组件正常工作,需要安装额外的插件。该插件会把发送到服务器的请求重定向{i.airmx.cn,awm.airmx.cn}
安装插件:
  • 设置 > 加载项 > 加载项商店
  • 3 个点(右上角)> 仓库
  • 输入 https://github.com/DexQueen/Airmx 并点击添加
  • 3个点(右上角)> 检查更新 > 刷新页面
  • 在搜索中输入airmx并安装插件
运行插件并确保启用自动加载

组件安装

将请求重定向到插件

爱快+Openwrt实现【我没有原作者的硬件环境,所以一下是我个人的重定向方式,有点曲折】
  • 爱快:

    • 通过重置再接入,获取当前接入秒新设备的MAC地址
    • 使用爱快的 'DHCP静态分配' 把秒新设备的网关和DNS设置成'openwrt'的ip
  • Openwrt:

    • 在Openwrt中设置'自定义挟持域名' awm.airmx.cn > Openwrt_IP;i.airmx.cn > Openwrt_IP
    • 在Openwrt中利用Socat插件实现端口的转发,把挟持来的访问转发给正确的HA地址和端口
      2.1秒新-MQTT服务 TCP 1883 IPv4-TCP x.x.x.x 25883【1833是秒新系统访问默认的端口不可改,x.x.x.x是你的HA系统IP,25883是插件设置里默认配置的端口】
      2.2秒新-WEB服务 TCP 80 IPv4-TCP x.x.x.x 25880【80是秒新系统访问默认的端口不可改,x.x.x.x是你的HA系统IP,25880是插件设置里默认配置的端口】
  • 正确设置后:

    • 把你的电脑网关调整到Openwrt后
    • 用浏览器访问awm.airmx.cn和i.airmx.cn, 正确的会显示:AIRMX addon
    • 用MQTT Explorer 新建链接 地址:awm.airmx.cn 端口1883 用户名和密码为空 正确的会可以正常链接 先不用关闭
    • 把秒新机器断电几秒钟后重新上电,WiFi图标不会闪烁而是常亮,在MQTT Explorer中会看到类似airwater/01/0/1/1/*****的订阅地址

简单的解释下插件
秒新设备会在开机链接到WiFi后,访问Web服务,来确认一些基本信息和确认已联网,并不是单纯的连接到MQTT服务器就可以正常控制,如果访问Web无响应的话,MQTT工作会不正常
  • 正确设置WiFi
  • 这时如果没有做好当前设备的重定向,面板的WiFi图标会闪烁,认为没有正确联网,常亮表示我们搭建的挟持环境已经生效了
  • 秒新设备访问的WEB和MQTT服务会劫持并重新转发到本地IP和插件所设置的端口

为 Home Assistant 添加加湿器

连接之前,请确保所有网络设置均正确。【电脑访问域名显示的是AIRMX addon,MQTT也可以用空用户名可以正常链接,秒新设备面板的WiFi图标常亮】
添加加湿器:
  • 在 Home Assistant 中,转至设置 > 设备和服务 > 添加集成 > AIRMX(如果未列出,请刷新页面)
  • 选择“Automatic setup(AIRMX addon required)”
  • 勾选你需要添加设备对应的MAC地址【MAC的后两位可能会与路由里显示的MAC对应不上,确认前5位基本就可确认】
其他
  • 我并没把原作者的全部信息翻译和复制过来,这只是我在没有原作者硬件环境的情况下,实现的办法








A2接入.png
A3s接入.png
HA.png
设备列表.png
MQTT.png
回复

使用道具 举报

40

主题

313

帖子

3093

积分

论坛元老

Rank: 8Rank: 8

积分
3093
金钱
2780
HASS币
0
 楼主| 发表于 2024-10-29 03:36:02 | 显示全部楼层
------留位------
回复

使用道具 举报

19

主题

190

帖子

1300

积分

金牌会员

Rank: 6Rank: 6

积分
1300
金钱
1110
HASS币
0
发表于 2024-10-29 07:42:44 | 显示全部楼层
德业的有没有大佬维护一下!
回复

使用道具 举报

0

主题

5

帖子

76

积分

注册会员

Rank: 2

积分
76
金钱
71
HASS币
0
发表于 2024-10-29 09:03:20 | 显示全部楼层
感谢楼主大大分享,终于可以不用秒新的app了
回复

使用道具 举报

1

主题

38

帖子

648

积分

高级会员

Rank: 4

积分
648
金钱
610
HASS币
0
发表于 2024-10-31 09:52:08 | 显示全部楼层
加湿器的型号是 AirWater A3S.
HomeAssistant上的 add-on 和 custom_components
以及
网络层面,直接通过网关防火墙做目的地址加端口NAT转换,将访问 i.airmx.cn(82.157.56.105) tcp80 和 awm.airmx.cn(140.143.130.176) tcp1833的流量分别转换给homeassistant的AIRMX add-on的tcp25880 和 tcp25883)
i.airmx.cn(82.157.56.105) tcp80 --> homeassistant tcp25880

awm.airmx.cn(140.143.130.176) tcp1833 --> homeassistant tcp25883
的目的地址加端口NAT转换也是生效的,
访问http://i.airmx.cn:80 可跳转至addon的“AIRMX addon”页面

但从HomeAssistant 添加集成 > AIRMX > “Automatic setup(AIRMX addon required)”
提示“Failed to get device list from AIRMX add-on”

AIRMX add-on 的 log 里
提示“ERROR in i-airmx-cn: Unsupported device: Device” 详细如下:

[2024-10-31 03:25:18,247] ERROR in i-airmx-cn: Unsupported device: Device(id=16324, key='6e96df52139491239fed7d6559094fa', wifi_mac='98cdacb25fc4', ble_mac='98cdacb25fc6', type=20, ts=1730316318)
172.16.104.254 - - [31/Oct/2024 03:25:18] "GET /aw?source=5&reqid=7952815300&awId=&path=aw/GET/genId&params={"mac":"c45fb2accd98","key":"6e96df52139491239fed7d6559094fa","version":"00.01.09","isAnion":1,"type":20}&sig=ee8e0c24dc2c10ec759fd54aaa8c6979 HTTP/1.1" 501 -
[2024-10-31 03:25:18,458] ERROR in i-airmx-cn: Unsupported device: Device(id=16324, key='47e4c16fe79d12371bbec4a5f63092d0', wifi_mac='98cdacb25fc4', ble_mac='98cdacb25fc6', type=20, ts=1730316318)
172.16.104.254 - - [31/Oct/2024 03:25:18] "GET /aw?source=5&reqid=5704099233&awId=&path=aw/GET/genId&params={"mac":"c45fb2accd98","key":"47e4c16fe79d12371bbec4a5f63092d0","version":"00.01.09","isAnion":1,"type":20}&sig=306880f928e81410376aa637e81c42fe HTTP/1.1" 501 -
[2024-10-31 03:25:18,672] ERROR in i-airmx-cn: Unsupported device: Device(id=16324, key='a361d1d5a5dc12333face9d40e9a018b', wifi_mac='98cdacb25fc4', ble_mac='98cdacb25fc6', type=20, ts=1730316318)
172.16.104.254 - - [31/Oct/2024 03:25:18] "GET /aw?source=5&reqid=8604267230&awId=&path=aw/GET/genId&params={"mac":"c45fb2accd98","key":"a361d1d5a5dc12333face9d40e9a018b","version":"00.01.09","isAnion":1,"type":20}&sig=8b5968cc9668120b4bf217057deede2b HTTP/1.1" 501 -
回复

使用道具 举报

1

主题

38

帖子

648

积分

高级会员

Rank: 4

积分
648
金钱
610
HASS币
0
发表于 2024-10-31 14:46:40 | 显示全部楼层
koalaroot 发表于 2024-10-31 09:52
加湿器的型号是 AirWater A3S.
HomeAssistant上的 add-on 和 custom_components
以及

原作者大神 dext0r 更新了add-on到0.1.2后可以正常通过integration将AirWater A3S添加到HomeAssistant中了,但device和所有entities仍然显示Unavailable
回复

使用道具 举报

1

主题

38

帖子

648

积分

高级会员

Rank: 4

积分
648
金钱
610
HASS币
0
发表于 2024-10-31 19:19:29 | 显示全部楼层
koalaroot 发表于 2024-10-31 14:46
原作者大神 dext0r 更新了add-on到0.1.2后可以正常通过integration将AirWater A3S添加到HomeAssistant中 ...

经原作者大神 dext0r 帮忙排查,定位到是DestinationNAT条目的问题
检查发现这条DNAT条目确实缺少了source translation的部分,这是用来解决DestinationNAT过程中,由于防火墙的会话是状态化的,数据报文来回路径不一致会有问题
awm.airmx.cn(140.143.130.176) tcp1833 --> homeassistant tcp25883

NAT条目如图: 381923534-78c4fedb-d406-495d-9f22-96e2f95cabeb.png

调整后AIRMX AirWater A3S 接入HomeAssistant 已经正常了
回复

使用道具 举报

0

主题

6

帖子

834

积分

高级会员

Rank: 4

积分
834
金钱
828
HASS币
0
发表于 2024-11-12 07:31:28 | 显示全部楼层
有个问题
如果在openwet里面做了端口转发,秒新-WEB服务 TCP 80 IPv4-TCP x.x.x.x 25880
那openwrt本身的web不就上不去了么
回复

使用道具 举报

1

主题

38

帖子

648

积分

高级会员

Rank: 4

积分
648
金钱
610
HASS币
0
发表于 2024-11-12 10:04:38 | 显示全部楼层
billrice 发表于 2024-11-12 07:31
有个问题
如果在openwet里面做了端口转发,秒新-WEB服务 TCP 80 IPv4-TCP x.x.x.x 25880
那openwrt本身的we ...

两条NAT目的转换条目是这样的:
i.airmx.cn(82.157.56.105) tcp80 --> homeassistant tcp25880
从内部访问目的地址为i.airmx.cn(82.157.56.105)  且 目的端口为tcp80的会话,转换目的地址为homeassistant ip地址,转换目的端口号为 tcp25880

awm.airmx.cn(140.143.130.176) tcp1833 --> homeassistant tcp25883
从内部访问目的地址为awm.airmx.cn(140.143.130.176) 且 目的端口为tcp1833的会话,转换目的地址为homeassistant ip地址,转换目的端口号为 tcp25883

访问目的地址为openwrt IP地址 且 目的端口为tcp80端口号的会话,并不做转换,不影响访问openwrt本身的web管理页面

回复

使用道具 举报

0

主题

42

帖子

196

积分

注册会员

Rank: 2

积分
196
金钱
154
HASS币
0
发表于 4 天前 | 显示全部楼层
要是通过HA和原来的AIRMX应用程序能同时管理就好了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 20:13 , Processed in 2.083095 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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