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

标题: 林内燃气热水器 控制面板接入 ha [打印本页]

作者: ciasdmxhxjjpd@c    时间: 2022-8-11 11:04
标题: 林内燃气热水器 控制面板接入 ha
本帖最后由 ciasdmxhxjjpd@c 于 2022-8-11 23:23 编辑

RT,


买的林内,比较早,不带wifi,今天拆洗,发现 控制面版与主控之间 有 4根线,第一反应应该是  uart。
[attach]40179[/attach][attach]40180[/attach]


面板采用的芯片采用的是mb95f564kn,https://max.book118.com/html/2021/0614/8012012111003110.shtm
TOP-20 封装。
接口从左到右,分别是 gnd  - vcc(5v) -  tx - rx
各引脚对应关系。

rx -  16pin
tx - 15pin




程序每秒发一个 查询状态命令,当查询到状态时,数码管亮,否则,不亮。
比较操蛋,上电,不恢复上一次的结果。


用esp32 调试了下 。发现下面的命令 。


  1. # 开关 toggle
  2. 0x02,0x55,0x20,0x03,0x37,0x38,0x0D

  3. # 温度 -
  4. 0x02,0x55,0x31,0x03,0x38,0x39,0x0D

  5. # 温度 +
  6. 0x02,0x55,0x30,0x03,0x38,0x38,0x0D

  7. # echo toggle
  8. 0x02,0x55,0x29,0x03,0x38,0x31,0x0D

  9. # 查询状态命令
  10. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x03,0x32,0x38,0x0D

  11. # 返回的数据。
  12. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x30,0x30,0x46,0x30,0x35,0x03,0x36,0x33,0x0D 41 摄氏度
  13. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x30,0x30,0x46,0x30,0x34,0x03,0x36,0x32,0x0D 40 摄氏度
  14. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x30,0x30,0x46,0x30,0x33,0x03,0x36,0x31,0x0D 39 摄氏度
  15. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x30,0x30,0x46,0x30,0x32,0x03,0x36,0x30,0x0D 38 摄氏度
  16. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x30,0x30,0x46,0x30,0x31,0x03,0x35,0x46,0x0D 37 摄氏度

  17. # 带 echo的
  18. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x32,0x30,0x46,0x30,0x34,0x03,0x36,0x34,0x0D echo -> 40  摄氏度
  19. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x32,0x30,0x46,0x30,0x33,0x03,0x36,0x33,0x0D echo -> 39  摄氏度
  20. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x32,0x30,0x46,0x30,0x32,0x03,0x36,0x32,0x0D echo -> 38  摄氏度

  21. # 关闭后,返回的数据
  22. 0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x30,0x30,0x31,0x31,0x31,0x31,0x03,0x34,0x43,0x0D off
复制代码



esphome

  1. uart:
  2.   - id: from_master
  3.     baud_rate: 9600
  4.     tx_pin: GPIO16
  5. #    rx_pin: GPIO17
  6. #    debug:
  7. #      direction: BOTH
  8. #      dummy_receiver: true
  9.       

  10. switch:
  11.   # off        
  12.   - platform: template
  13.     name: gas off/on
  14.     id: gas_off
  15.     optimistic: true
  16.     lambda: "return id(gas_off).state;"
  17.     turn_on_action:
  18.       - uart.write: [0x02,0x55,0x20,0x03,0x37,0x38,0x0D]
  19.     turn_off_action:
  20.       - uart.write: [0x02,0x55,0x20,0x03,0x37,0x38,0x0D]

  21.   - platform: template
  22.     name: echo
  23.     id: echo
  24.     optimistic: true
  25.     lambda: "return id(echo).state;"
  26.     turn_on_action:
  27.       - uart.write: [0x02,0x55,0x29,0x03,0x38,0x31,0x0D]
  28.       - delay: 1s
  29.       - switch.turn_off: echo
  30.       
  31.   - platform: template
  32.     name: gas +
  33.     id: gas
  34.     optimistic: true
  35.     lambda: "return id(gas).state;"
  36.     turn_on_action:
  37.       - uart.write: [0x02,0x55,0x30,0x03,0x38,0x38,0x0D]
  38.       - delay: 1s
  39.       - switch.turn_off: gas

  40.       
  41.   - platform: template
  42.     name: gas -
  43.     id: gas7
  44.     optimistic: true
  45.     lambda: "return id(gas7).state;"
  46.     turn_on_action:
  47.       - uart.write: [0x02,0x55,0x31,0x03,0x38,0x39,0x0D]  
  48.       - delay: 1s
  49.       - switch.turn_off: gas7

  50. # 循环发查询命令,保证获取最新的状态。
  51. interval:
  52.   - interval: 900ms
  53.     then:   
  54.       - uart.write: [0x02,0xF6,0x30,0x34,0x38,0x30,0x30,0x33,0x03,0x32,0x38,0x0D]      

  55. binary_sensor:
  56.   - platform: gpio
  57.     pin: GPIO25
  58.     name: gas heater on/off
  59.     # 物理按键延时抖动消除
  60.     filters:
  61.       - delayed_on: 100ms
  62.       - delayed_off: 100ms
  63.       - delayed_on_off: 100ms
  64.     on_state:
  65.       - delay: 100ms
  66.       - uart.write: [0x02,0x55,0x20,0x03,0x37,0x38,0x0D]   

  67.   - platform: gpio
  68.     pin: GPIO26
  69.     name: gas heater temp +
  70.     filters:
  71.       - delayed_on: 100ms
  72.       - delayed_off: 100ms
  73.       - delayed_on_off: 100ms
  74.     on_state:
  75.       - delay: 100ms
  76.       - uart.write: [0x02,0x55,0x30,0x03,0x38,0x38,0x0D]

  77.   - platform: gpio
  78.     pin: GPIO27
  79.     name: gas heater temp -
  80.     filters:
  81.       - delayed_on: 100ms
  82.       - delayed_off: 100ms
  83.       - delayed_on_off: 100ms
  84.     on_state:
  85.       - delay: 100ms
  86.       - uart.write: [0x02,0x55,0x31,0x03,0x38,0x39,0x0D]  
  87.       
  88.   # not realize
  89.   - platform: gpio
  90.     pin: GPIO21
  91.     name: gas heater eco
  92.     filters:
  93.       - delayed_on: 100ms
  94.       - delayed_off: 100ms
  95.       - delayed_on_off: 100ms
  96.     on_state:
  97.       - delay: 100ms
  98.       - uart.write: [0x02,0x55,0x29,0x03,0x38,0x31,0x0D]
复制代码




硬件上 要 把 面板上 的 tx 去掉。背面,jp11 的0欧姆电阻拿掉。因为uart只能 1对1 通信。不能同时有2个tx,但可以有2个rx。

[attach]40181[/attach]

现在有个问题,不能使用面版上的按键了。因为 tx 被拿掉了。可能需要找到面版上4个按键对应的io口,然后通过飞线接入esp32
分析按键引脚和 控制芯片之间的关系。
up/down - 12pin adc 根据电压值区分
运行/echo - 14pin adc 根据电压值区分



只需要接2根飞线给esp32 的 adc 口。

请大佬帮忙分析返回码的格式,谢谢。准备写一个外部的组建来读取查询的返回值。


========================================================================================gengxinxinan-======================================
4个按键,每2个,通过 adc 接入控制芯片,分别按下 开机/ eco ,用万用表量了下 输入给控制芯片的电压都差不多,1.045v左右,不知道小日本是通过什么方式判断是不同的按键输入。
猜测可能是通过瞬间峰值电压判断的。因为每个按键都通过一个共阳或共阴二极管接到5v,每个按键处,量的电压相差 0.2v左右。


如果能通过esphome模拟按键输入,就可以不用这么麻烦了。


物理按键接入esp32, 要4根线,需要改电路。原电路是2个按键一起,接入adc,接入esp32,要把他们分开。

按键处理还是有问题,直接接入后,测定电压只有1v左右,不够判定高电平的标准。
完美解决办法,就是重新打板,电路其实非常简单。可能要在esphome里处理下2 位数码管显示问题。





作者: liball    时间: 2022-8-11 12:13
我家也是林内热水器,坐等大佬分析。
作者: 隔壁的王叔叔    时间: 2022-8-11 14:07
坐等抄作业,林内的采暖炉,估计一样的吧
作者: kaka0992    时间: 2022-8-11 15:12
坐等抄作业
作者: calvin886    时间: 2022-8-11 15:21
真的是牛人呀  能率的等一波

作者: lexcao    时间: 2022-8-11 19:13
本帖最后由 lexcao 于 2022-8-11 19:27 编辑
calvin886 发表于 2022-8-11 15:21
真的是牛人呀  能率的等一波

我的也是能率,是两根线的[attach]40195[/attach]
[attach]40196[/attach]



作者: hyq    时间: 2022-8-12 08:47
虽然我是能率的,最近也在研究。思路跟大佬一样的!支持大佬!
作者: hyq    时间: 2022-8-12 09:01
大佬我的思路是esphome放在机器跟面板中间,esphome写透传程序,应该不会影响面板使用。无赖我不会代码。如果这样成功了!家里很多小家电都能这样改。期待大佬杰作!
作者: ciasdmxhxjjpd@c    时间: 2022-8-12 19:19
hyq 发表于 2022-8-12 09:01
大佬我的思路是esphome放在机器跟面板中间,esphome写透传程序,应该不会影响面板使用。无赖我不会代码。如 ...

有透传的demo?要是能在uart 之间 串联一个  esphome,那就好办了。不用这么麻烦了。
作者: tink    时间: 2022-8-12 21:56
ciasdmxhxjjpd@c 发表于 2022-8-12 19:19
有透传的demo?要是能在uart 之间 串联一个  esphome,那就好办了。不用这么麻烦了。 ...

就是收什么发什么就算是变相透传了吧
作者: ciasdmxhxjjpd@c    时间: 2022-8-12 22:43
tink 发表于 2022-8-12 21:56
就是收什么发什么就算是变相透传了吧

想了一个方案。https://bbs.hassbian.com/thread-17464-1-1.html

作者: hyq    时间: 2022-8-13 08:12
ciasdmxhxjjpd@c 发表于 2022-8-12 22:43
想了一个方案。https://bbs.hassbian.com/thread-17464-1-1.html

大佬我就是这个意思。但是我不懂代码。如果能实现透传原来的功能一个不少。原来的通讯命令还可以轻易获得。方便很多小家电魔改。
作者: BH4WHN    时间: 2022-8-18 10:59
我的是林内倚天系列带wifi,但林内智家的app做的稀碎,连基本的配网都不行,真心劝退想买林内的。
作者: llb608    时间: 2022-10-30 11:57
正想找相关教程 居然找到了 我也是老款 可以外接多个控制器 希望能无损接入ha
作者: ciasdmxhxjjpd@c    时间: 2022-11-8 21:16
calvin886 发表于 2022-8-11 15:21
真的是牛人呀  能率的等一波

https://bbs.hassbian.com/thread-18491-1-1.html
作者: Skylake    时间: 2022-11-10 15:05
本帖最后由 Skylake 于 2022-11-10 15:12 编辑

感觉楼主思路没问题。实际上既然已经分析清UART指令了,不如直接把按键显示通过ESP32实现 然后ESP32也可以转发当前状态到MQTT实现控制,这样就能废掉之前的Panel了。不过现在的林内能率都变成两线控制器了。倒是新产品会板载一个HPF130模块负责与林内智家app(一个巨难用的破玩意)通信。不过我拿逻辑分析仪打过协议,不是明文,根本猜不出来每句话啥意思,强行复刻bug真的太多了。

作者: fenglou777    时间: 2024-2-26 14:22
楼主的热水器方案搞定了吗?
作者: ciasdmxhxjjpd@c    时间: 2024-3-23 21:37
fenglou777 发表于 2024-2-26 14:22
楼主的热水器方案搞定了吗?

放弃了。没时间折腾。
作者: appleman    时间: 2024-3-29 23:05
lexcao 发表于 2022-8-11 19:13
我的也是能率,是两根线的

有没有搞定了?
作者: hzcoolwind    时间: 2024-3-29 23:16
appleman 发表于 2024-3-29 23:05
有没有搞定了?

https://bbs.hassbian.com/thread-24301-1-1.html
作者: appleman    时间: 2024-3-30 00:02
hzcoolwind 发表于 2024-3-29 23:16
https://bbs.hassbian.com/thread-24301-1-1.html

非常感谢
作者: 反派    时间: 2024-7-16 22:42
老设备不知道有没有切换主控的按钮,那个按钮应该会触发通信控制设备的切换




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5