找回密码
 立即注册

微信扫码登录

搜索
楼主: sm1314

[技术探讨] 方太F2.i油烟机局域网接入HomeAssistant

  [复制链接]

18

主题

587

回帖

4634

积分

元老级技术达人

积分
4634
金钱
3994
HASS币
182
发表于 2025-10-14 21:35:51 | 显示全部楼层
我正好有个方太油烟机一直没研究咋介入,谢谢!
回复

使用道具 举报

18

主题

587

回帖

4634

积分

元老级技术达人

积分
4634
金钱
3994
HASS币
182
发表于 2025-10-16 01:21:48 | 显示全部楼层
本帖最后由 louis_lee 于 2025-10-22 23:55 编辑

搞定了哈哈

图像2025-10-16 00.48.jpeg

流程可以完善下:
1. 方太幸福家添加设备
2. 路由器设置dns 将api.fotile.com指向本地机器,并在路由器设置禁止方太设备连接互联网
3. 启一个mqtt broker,如果使用的是HAOS,可以在HA OS中安装 emqx 加载项并配置好HA对应的MQTT集成(由于不是默认的Mosquitto,所以得自己额外配置,Mosquitto由于鉴权问题在这个项目中不建议使用)
4. DNS指向的机器(需80端口可用)运行楼主已经写好的代理服务器程序,记得把api.fotile.com对应的真实ip填下(自己ping下)。再替换转发的mqtt服务器,如果使用HAOS自带的emqx,可以就填HAOS的内网IP
5. 拔烟机电源,等完全关闭后再插上,稍等一会(5min)就可以观察到代理服务器程序输出
6. 从代理服务器程序的输出中,抓住涉及mqtt topic的请求,如下
        "clientId": "Fotile_APP_452875346",
        "ip": "48.87.26.43",
        "port": 1873,
        "topics": [{
                "indentifier": "control",
                "isSubPub": 2,
                "level": 1,
                "name": "control/{product_id}/{device_id}"
        }],
        "vendorId": "Fotile"
}


其中 control/{product_id}/{device_id}是用来发送开、关等命令,sync/{product_id}/{device_id}是用来获取状态

7. 打开home assistant mqtt集成的配置功能,可以用来监听sync topic,同时操控下烟机,可以观察到sync topic下的输出。再根据观察的情况,结合官方文档iot.fotile.com,可以尝试向control主题发送内容。调试一会很容易掌握规则。

8. 最后就是使用mqtt集成添加设备(这个地方有个bug,就是风扇使用前端无法配置状态,某字段有问题)。f2i参考配置如下,直接改改放在configuration.yaml中重启即可:

mqtt:
- switch:
    command_topic: control/XXX/XXX
    device:
      identifiers:
      - 02K7M3WYP9TJ9WX2582QM64Z63
      model: Fotile
      model_id: f2i
      name: Fotile-hood
    device_class: switch
    name: "\u7535\u6E90\u5F00\u5173"
    payload_off: '{"PowerSwitchAll": 1}'
    payload_on: '{"PowerSwitchAll": 2}'
    qos: 1.0
    state_off: '1'
    state_on: '2'
    state_topic: sync/XXX/XXXX
    unique_id: 02K7M3WYP9TJ9WX2582QM64Z63_99e521fd2eac41218f492b1c37081fe4
    value_template: '{{ value_json.PowerSwitchAll }}'
- switch:
    command_topic: control/2e41d092c1b6a9a832a119ba3428361f/1146142769
    device:
      identifiers:
      - 02K7M3WYP9TJ9WX2582QM64Z63
      model: Fotile
      model_id: f2i
      name: Fotile-hood
    device_class: switch
    name: "\u7167\u660E\u706F"
    payload_off: '{"Light": 0 }'
    payload_on: '{"Light": 255 }'
    qos: 1.0
    state_off: '0'
    state_on: '255'
    state_topic: sync/xxx/xxx
    unique_id: 02K7M3WYP9TJ9WX2582QM64Z63_eb14aeac36e9455ab0df9e83ab7f1594
    value_template: '{{ value_json.Light }}'
- fan:
    command_template: '{% if value == "ON" -%}{"WorkMode":2,"FanLevel":3}{%- else
      -%}{"WorkMode":0,"FanLevel":0}{%- endif %}'
    command_topic: control/xxx/xxx
    device:
      identifiers:
      - 02K7M3WYP9TJ9WX2582QM64Z63
      model: Fotile
      model_id: f2i
      name: Fotile-hood
    name: 烟机风扇
    payload_off: 'OFF'
    payload_on: 'ON'
    payload_reset_preset_mode: None
    preset_mode_command_template: "{% if value == '\u81EA\u52A8' -%}{"WorkMode"\
      :2,"FanLevel":3}{%- elif value == '\u5F3A' -%}{"WorkMode":1,"FanLevel"\
      :3}{%- elif value == '\u5F31' -%}{"WorkMode":1,"FanLevel":3}{%- else -%}{"\
      WorkMode":0,"FanLevel":0}{%- endif %}"
    preset_mode_command_topic: control/xxx/xxx
    preset_mode_state_topic: sync/xxx/xxx
    preset_mode_value_template: "{% if value_json.WorkMode == 2 -%}\u81EA\u52A8{%-\
      \ elif  value_json.FanLevel== 3 -%}\u5F3A{%- elif  value_json.FanLevel\

至于代理服务器要一直跑嘛?目前看只要烟机不断电重启就不用,不过我看有些时间同步的API一直在调用,似乎可以保障时间准确,后续把代理服务器程序做成服务跑起来试试。

回复

使用道具 举报

6

主题

132

回帖

1007

积分

金牌会员

积分
1007
金钱
869
HASS币
0
发表于 2025-10-18 14:05:40 | 显示全部楼层
authorized_keys
回复

使用道具 举报

3

主题

10

回帖

261

积分

论坛技术达人

积分
261
金钱
248
HASS币
0
 楼主| 发表于 2025-10-20 17:30:43 | 显示全部楼层

哈哈,厉害了!不断电重启就不用,断电后他会重新请求api,然后就是时间是给F2.i那个圆形面板显示的,没代理的话显示不了时间。其实还有个问题就是如何让他官方app也能使用,可能要转发一下mqtt,这个还没搞
回复

使用道具 举报

0

主题

1

回帖

9

积分

新手上路

积分
9
金钱
8
HASS币
0
发表于 2025-10-21 19:47:40 | 显示全部楼层
家里正好有个洗碗机,看看能不能一样搞
不过那个禁止互联网访问,在DNS截掉之后是为啥?它除了这个API还在访问别的啥嘛?
回复

使用道具 举报

0

主题

83

回帖

211

积分

中级会员

积分
211
金钱
128
HASS币
0
发表于 2025-10-21 20:26:50 来自手机 | 显示全部楼层
学习了,待会试试
回复

使用道具 举报

0

主题

3

回帖

53

积分

注册会员

积分
53
金钱
50
HASS币
0
发表于 2025-10-21 22:18:20 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

3

回帖

56

积分

注册会员

积分
56
金钱
53
HASS币
0
发表于 2025-10-21 22:45:38 | 显示全部楼层
学习一下
回复

使用道具 举报

0

主题

33

回帖

232

积分

中级会员

积分
232
金钱
199
HASS币
0
发表于 2025-10-21 22:49:00 | 显示全部楼层
来看看,学习一下
回复

使用道具 举报

0

主题

61

回帖

1175

积分

金牌会员

积分
1175
金钱
1114
HASS币
0
发表于 2025-10-22 06:48:06 | 显示全部楼层
谢谢分享。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 17:42 , Processed in 0.188200 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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