请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册
查看: 2469|回复: 30

[硬件DIY] 能率燃气热水器协议破解完美接入HA(3.23更新)

[复制链接]

14

主题

176

帖子

1605

积分

论坛技术达人

积分
1605
金钱
1409
HASS币
40
发表于 2024-2-25 19:01:54 | 显示全部楼层 |阅读模式
本帖最后由 hzcoolwind 于 2024-3-23 22:10 编辑

当前实现的方案是: 能率热水器一般都支持外接二线的线控器, 买个线控器接能率热水器的外接线控端, 然后对这个外接的线控器进行改装,加装8266 Wifi控制, 对原机不破坏不改动。

春节期间我的能率冷凝机抽风了,经常发生放水中途熄火,闪烁提示29,几次挨冻之后,痛定思痛,先打400来修了下热水器,判断可能是冷凝水脏污,影响冷凝水的排放引起的,清洗了下冷凝水中和器和传感器,暂时熄火不出现了。 怕以后再挨冻考虑无线接入能率,上网查询了下有线控器,但需要预先布线,再搜hass,有大神硬核接入了能率,链接如下,在此感谢:

https://bbs.hassbian.com/thread-18491-1-1.html
仔细研究了下,大神采用的是硬接入模式,esp直接接在了开关和led 两端,靠短接开关和判断led控制线来判断能率开机与否,功能比较有限。 根据大神的简化电路初步判断是mcu键控显示芯片与下面的载波芯片的uart通讯,
如果读取到载波芯片的数据输出,判断能率的开关机、燃烧、温度等状态信息,然后能对载波芯片写入开关机、温度控制、水量控制等指令就比较完美了,这就涉及到mcu控制芯片与载波芯片的通讯协议破解了。
说干就干,先下单买了一个线控器,春节后卖家才发货,到货后先接上线试了能用,拆出电路板,跟大神帖子中的板子是一样的,这样就简单了,少了很多摸索的时间,接上示波器、逻辑分析仪开始工作,
示波器接mcu控制信号输出端,逻辑分析仪接mcu状态信号输入图,下图所示相关二个测试点,借用下大神的图
R0000330c.jpg
接上示波器:
微信图片_20240225163353.jpg
根据采集到波形数据,仔细分析,基本确定是2400波特率的,通讯数据6个字节长度, 经过几晚熬夜到2点采集到了大量相关的通讯数据, 又经过几昼夜的冥思苦想、汇总分析,基本确定了 开关机、温度、水量设定以及相关状态数据的
协议解析,下面就是考虑采用8266 模拟读取和模拟写入指令测试了,考虑到双mcu控制信号接入对载波芯片的SCTL端的电平会受到干扰,为即不影响线控器的按键操作又能通过8266指令写入,需要对2路控制线控适当隔离,同时又要
考虑电路简洁,通过简单设计,设计了以下电路, 只需要3根线接到 线控器就应该能完成所需要求,电路如下:
微信图片_20240225165959.jpg
需要在线控器上加装一二极管,并切断一条线路,切断位置如图所示:
微信图片_20240225172054.png

电路原理相当于并联了一个MCU到线控器,8266 这端搞成下图这个样子,二极管翻箱倒柜没找到合适的,只找到20年前的2个整流二极管,难看是难看了点,但是能用:
微信图片_20240225163427.jpg 微信图片_20240225163441.jpg


写一个esphome代码进行测试,基本符合预期,线控器、8266都能控制热水器了, 测试代码如下:

esphome:
  name: noritzcontroller
  friendly_name: noritzcontroller

esp8266:
  board: nodemcuv2

# Enable logging
logger:
  hardware_uart: UART1

# Enable Home Assistant API
api:
  encryption:
    key: "hJJG5fifc0sF****"


ota:
  password: "be8b962509e*****"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Noritzcontroller"
    password: !secret wifi_password

captive_portal:

web_server:  
  port: 80

uart:
  - id: master
    baud_rate: 2400
    rx_pin:
      number: GPIO13
      inverted: false
      mode:
        input: true
        pullup: true
    tx_pin:
      number: GPIO15
      inverted: false
      mode:
        output: true
    debug:
      direction: BOTH
      dummy_receiver: true
      after:
        bytes: 6
      sequence:
      - lambda: |-
          if (bytes.size() != 6)
            return;

          if (bytes[0]==0xFF && bytes[1]==0xEF && bytes[2]==0xFF) {
            if (bytes[3]==0xFE){
              id(power_on).publish_state(true);
            }
            if (bytes[3]==0xFF){
              id(power_on).publish_state(false);
            }
          }

          if (bytes[0]==0xFF && bytes[1]==0xEF && bytes[2]==0x2F) {
            if (bytes[3]==0xFF && bytes[4]==0xFF){
              id(burning).publish_state(false);
            }
            if (bytes[3]==0xCE && bytes[4]==0xFF){
              id(burning).publish_state(true);
            }
          }


binary_sensor:
  - platform: template
    name: "ower state"
    id: "power_on"
    icon: "mdi:power"
  - platform: template
    name: "Burning state"
    id: "burning"
    icon: "mdi:fire"

button:        
  - platform: uart
    uart_id: master
    name: power_on_45
    data: [0xDF,0xEF,0xFF,0xFE,0xD8,0xF2]

  - platform: uart
    uart_id: master
    name: power_off_45
    data: [0xDF,0xEF,0xFF,0xFF,0xD8,0xF3]


最后就是装盒子,连HA,想法子能控制些啥了
微信图片_20240225185402.png

最终HA中传感器的样子:
微信图片_20240225184759.png


初步考虑可以调温,浴缸放水到设置水量语音提示关水,如果搞得大一点就来个电磁阀控制关水,还有就是检测到水流短时开启比如小于2秒开启循环泵,虽然现在循环泵有语音控制还有手机控制和按钮控制。
有空先写个water heater组件吧。


-----------------------------------------------------------------------------
2024.3.8 更新:
经过半个多月的折腾, homeassistant下的集成搞定了,通过添加集成,自动搜索esphome 集成下的能率控制器设备,丝滑添加。 集成了热水器、水量调节、各种传感器。
其中的心酸泪就不细说了,包括homeassistant开发环境的搭建, 特别是集成的编写还是第一次, 一边摸索一般写,总算搞定了。
还写了几个自动化, 水量快达到浴缸水量时语音提醒还有2分钟放满, 水量到达时语音提醒浴缸已满, 水量超出时微信通知告警、语音告警 。
短暂开启两次热水龙头,并2次开启关闭间隔小于3秒,自动开启热水循环泵,并语音提醒,有效防止误开启。
微信图片_20240309161631.png
其中开发环境的搭建坑不少,另外开贴分享了
https://bbs.hassbian.com/thread-24452-1-1.html

homeassistant上组件开发完了,几天前想不如esphome直接提供热水器组件更直接简便,也更高效。 翻了下资料较少,例子更少。按官网的简单提示下载开发环境做了,
发觉比homeassistant的更难一些,参考的东西太少了,而且无法在线联调,麻烦得很。 好在经过1周时间的努力还是搞定了。下次有机会再写写其中遇到的坑了。上个
成品图,个人感觉已经比较完美了,生命不息,折腾不止。

微信图片_20240309162817.png


3.23 日更新:
前2日学习C4D 画了机壳, 托朋友3D打印了一个, 今天按上了, 效果还是挺满意的,就是数码显示隔光没做好,有点小遗憾。
微信图片_20240323220753.jpg 微信图片_20240323220800.jpg 微信图片_20240323220809.jpg 微信图片_20240323220820.jpg

评分

参与人数 3金钱 +35 HASS币 +20 收起 理由
ciasdmxhxjjpd@c + 10 期待有人破解林内热水器
25989406 + 5 高手,这是高手!
admin + 20 + 20 膜拜大神!

查看全部评分

回复

使用道具 举报

15

主题

301

帖子

2213

积分

金牌会员

Rank: 6Rank: 6

积分
2213
金钱
1912
HASS币
0
发表于 2024-2-25 19:46:49 | 显示全部楼层
牛B,有技术就是不一样!
回复

使用道具 举报

11

主题

275

帖子

1975

积分

金牌会员

Rank: 6Rank: 6

积分
1975
金钱
1700
HASS币
0
发表于 2024-2-25 21:11:59 | 显示全部楼层
什麼都好  就是盒子大了點
回复

使用道具 举报

14

主题

176

帖子

1605

积分

论坛技术达人

积分
1605
金钱
1409
HASS币
40
 楼主| 发表于 2024-2-25 23:30:09 | 显示全部楼层
george65 发表于 2024-2-25 21:11
什麼都好  就是盒子大了點

随便找了个零食盒子,这个面板有点大,比86盒子大得多,见笑了
回复

使用道具 举报

7

主题

1054

帖子

3311

积分

论坛元老

Rank: 8Rank: 8

积分
3311
金钱
2257
HASS币
0
发表于 2024-2-26 09:53:00 | 显示全部楼层
牛逼,有技术就是好
回复

使用道具 举报

2

主题

73

帖子

523

积分

高级会员

Rank: 4

积分
523
金钱
450
HASS币
0
发表于 2024-2-26 10:15:08 | 显示全部楼层
大佬示波器不会使用,应该怎么学,
回复

使用道具 举报

14

主题

176

帖子

1605

积分

论坛技术达人

积分
1605
金钱
1409
HASS币
40
 楼主| 发表于 2024-2-26 23:25:43 | 显示全部楼层
hxck 发表于 2024-2-26 10:15
大佬示波器不会使用,应该怎么学,

多看示波器的使用说明
回复

使用道具 举报

6

主题

67

帖子

554

积分

高级会员

Rank: 4

积分
554
金钱
487
HASS币
0
发表于 2024-2-27 08:47:33 | 显示全部楼层
牛逼,有技术就是好
回复

使用道具 举报

2

主题

73

帖子

523

积分

高级会员

Rank: 4

积分
523
金钱
450
HASS币
0
发表于 2024-2-27 16:43:16 | 显示全部楼层
hzcoolwind 发表于 2024-2-26 23:25
多看示波器的使用说明

主要不经常用可能也记不住
回复

使用道具 举报

6

主题

73

帖子

1148

积分

论坛技术达人

积分
1148
金钱
1070
HASS币
20
发表于 2024-2-28 12:29:04 | 显示全部楼层
硬核!  我家也是这个能率面板,然而自己硬件能力不过关,学不来,期待一个更加成熟的方案,另外有没有可能8266直接和mcu共用电源?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-14 12:57 , Processed in 4.171153 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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