找回密码
 立即注册
查看: 158|回复: 8

[基础教程] 采用8266+TCRT5000将燃气表接入homeassistant

[复制链接]

4

主题

107

回帖

1263

积分

金牌会员

积分
1263
金钱
1152
HASS币
0
发表于 昨天 10:49 | 显示全部楼层 |阅读模式
本帖最后由 loveyolanda 于 2025-6-15 11:01 编辑

参考各位大佬的帖子,成功将燃气表接入homeassistant。从零开始用ESP模块将燃气表接入Home Assistant
https://bbs.hassbian.com/thread-27816-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)
esphome代码如下,有需要的自取。TCRT5000模块有点不太好调整,慢慢搞,用数字信号不好搞,就用模拟信号。我这刚好运气不错用数字信号搞好了。环境光对模块影响较大,我在将红外发射和接收头周围用黑色亚克力框起了,用热熔胶直接粘到气表上,非常合适。
微信图片_20250615104830.jpg 微信图片_20250615104836.jpg
esphome:
  name: gas

esp8266:
  board: nodemcuv2
  restore_from_flash: true  # 增加闪存恢复功能
logger:
  level: debug

api:
  encryption:
    key: "XXXX"
  password: !secret api_password

ota:
  - platform: esphome
    password: !secret ota_password

web_server:
  port: 80

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "Gas Fallback Hotspot"
    password: !secret fallwifi_pswd

captive_portal:

# 全局变量存储总用气量
globals:
  - id: total_gas_usage
    type: float
    restore_value: yes
    initial_value: '0.0'

# TCRT5000传感器配置
sensor:
  - platform: template
    name: "Meter"
    id: gas_meter
    unit_of_measurement: "m³"
    accuracy_decimals: 2
    update_interval: 60s
    device_class: gas
    state_class: total_increasing
    lambda: |-
      return id(total_gas_usage);
      
# 定义阈值二进制传感器
binary_sensor:
  - platform: gpio
    name: "Pulse"
    id: gas_pulse
    pin: 
      number: D2
      mode: INPUT_PULLUP
    filters:
      - delayed_on: 300ms  # 延长消抖时间
      - delayed_off: 300ms
    on_press:
      then:
        - lambda: |-
            id(total_gas_usage) += 0.01;
            id(gas_meter).publish_state(id(total_gas_usage));

# 手动校正用气量
number:
  - platform: template
    name: "correction"
    id: gas_usage_correction
    min_value: 0
    max_value: 99999
    step: 0.01
    optimistic: true
    restore_value: true
    initial_value: 0
    set_action:
      then:
        - lambda: |-
            id(total_gas_usage) = x;
            id(gas_meter).publish_state(id(total_gas_usage));
            id(gas_usage_correction).publish_state(0);
                      
button:
  - platform: restart
    name: "restart"

text_sensor:
  - platform: wifi_info
    ip_address:
      name: IP Address
    ssid:
      name: Connected SSID
    mac_address:
      name: Mac Address


回复

使用道具 举报

175

主题

2627

回帖

8821

积分

元老级技术达人

积分
8821
金钱
6009
HASS币
50
发表于 昨天 14:01 | 显示全部楼层
我家里的燃气表是包在柜子里的,不知道没有光线,传感器能不能看清楚。
回复

使用道具 举报

4

主题

107

回帖

1263

积分

金牌会员

积分
1263
金钱
1152
HASS币
0
 楼主| 发表于 昨天 14:08 | 显示全部楼层
bugensui 发表于 2025-6-15 14:01
我家里的燃气表是包在柜子里的,不知道没有光线,传感器能不能看清楚。

TCRT5000是红外反射模块,越暗的环境越好。首先要确认燃气表末尾有没有那块反光的小铁片。
回复

使用道具 举报

1

主题

24

回帖

97

积分

注册会员

积分
97
金钱
72
HASS币
0
发表于 昨天 19:27 | 显示全部楼层
遇到一个问题,就是燃气用了之后,那个反光片正好落在那个位置,灯一直亮,然后就会一直记录,不知道解决了吗,这问题
回复

使用道具 举报

17

主题

195

回帖

2154

积分

金牌会员

积分
2154
金钱
1942
HASS币
0
发表于 昨天 21:02 | 显示全部楼层
Zuray 发表于 2025-6-15 19:27
遇到一个问题,就是燃气用了之后,那个反光片正好落在那个位置,灯一直亮,然后就会一直记录,不知道解决了 ...

我碰到的情况是反光片刚好转到临界点停止后,就容易出现不受控的出现多次记录,我也被这个问题困扰好久了
回复

使用道具 举报

1

主题

24

回帖

97

积分

注册会员

积分
97
金钱
72
HASS币
0
发表于 昨天 21:27 | 显示全部楼层
csl0524 发表于 2025-6-15 21:02
我碰到的情况是反光片刚好转到临界点停止后,就容易出现不受控的出现多次记录,我也被这个问题困扰好久了 ...

那也差不多,就是反正停在反光板就容易多次记录
回复

使用道具 举报

0

主题

8

回帖

59

积分

注册会员

积分
59
金钱
51
HASS币
0
发表于 昨天 22:05 | 显示全部楼层
能用一圈最短时间作为判断条件来矫正吗?两次反光小于这个时间就认为没有转一圈,不予计数
回复

使用道具 举报

4

主题

107

回帖

1263

积分

金牌会员

积分
1263
金钱
1152
HASS币
0
 楼主| 发表于 昨天 23:08 | 显示全部楼层
Zuray 发表于 2025-6-15 19:27
遇到一个问题,就是燃气用了之后,那个反光片正好落在那个位置,灯一直亮,然后就会一直记录,不知道解决了 ...

我最开始也遇到了,修改了代码,不会一直计数了,代码已经测试过,刚好在反光片那里一整天也只计一次。
回复

使用道具 举报

1

主题

24

回帖

97

积分

注册会员

积分
97
金钱
72
HASS币
0
发表于 昨天 23:49 | 显示全部楼层
loveyolanda 发表于 2025-6-15 23:08
我最开始也遇到了,修改了代码,不会一直计数了,代码已经测试过,刚好在反光片那里一整天也只计一次。 ...

求分享一下?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 05:58 , Processed in 1.010287 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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