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

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

[技术探讨] 培正004t带电量清零esphome代码分享

[复制链接]

21

主题

178

帖子

2369

积分

金牌会员

Rank: 6Rank: 6

积分
2369
金钱
2191
HASS币
20
发表于 2024-3-3 11:27:51 | 显示全部楼层 |阅读模式
本帖最后由 flyice 于 2024-3-3 11:27 编辑

之前一直使用tasmota固件,因为可以电量清零。但是tasmota配置比较麻烦,需要安装MQTT服务,对于小白而言很有难度。
经过研究后,终于实现了ESPHOME里的电量清零。

更多功能可以看我的博客


)QQA]TD00W4O{HBXMQFWZYE (1).png

功能包括:
1、电量清零
2、重启esp8266模块
3、IP地址显示
4、电表温度反馈(使用DS18B20芯片)
5、WIFI信号反馈
6、设备运行时长反馈

代码如下:
esphome:
  name: esp_meter
  friendly_name: Esp_meter

esp8266:
  board: esp01_1m

# Enable logging
logger:
  baud_rate: 0
# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

wifi:
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp_meter"
    password: ""

captive_portal:

uart:
  rx_pin: GPIO03
  tx_pin: GPIO01
  baud_rate: 9600
  id: ubus

modbus:
  id: mbus
  uart_id: ubus

dallas:
  - pin: GPIO13
    update_interval: 20s
    id: hub_1

sensor:
  - platform: dallas
    address: 0x603ce1d444789328
    name: "Temperature"

  - platform: pzemac
    id: pzem_ac
    modbus_id: mbus
    energy:
      name: "Energy"
      filters:
        - multiply: 0.001
      unit_of_measurement: kWh
      accuracy_decimals: 2
      device_class: "energy"
      state_class: "total_increasing"
    voltage:
      name: "Voltage"
    current:
      name: "Current"
    power:
      name: "Power"
    power_factor:
      name: "Power Factor"
    frequency:
      name: "Frequency"
    update_interval: 3s

  - platform: uptime
    id: uptime_s
    update_interval: 300s
    internal: true

  - platform: wifi_signal
    name: "WiFi Signal"
    id: wifi_signal_db
    update_interval: 30s
    internal: true
    entity_category: "diagnostic"

  - platform: copy
    source_id: wifi_signal_db
    name: "WiFi Signal"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "Signal %"
    entity_category: "diagnostic"

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "IP"
      id: id_sensor_ip
      icon: mdi:ip

  - platform: template
    name: "Uptime"
    lambda: |-
      uint32_t dur = id(uptime_s).state;
      int dys = 0;
      int hrs = 0;
      int mnts = 0;
      if (dur > 86399) {
        dys = trunc(dur / 86400);
        dur = dur - (dys * 86400);
      }
      if (dur > 3599) {
        hrs = trunc(dur / 3600);
        dur = dur - (hrs * 3600);
      }
      if (dur > 59) {
        mnts = trunc(dur / 60);
        dur = dur - (mnts * 60);
      }
      char buffer[17];
      sprintf(buffer, "%ud %02uh %02um %02us", dys, hrs, mnts, dur);
      return {buffer};
    icon: mdi:clock-start
    update_interval: 60s

button:
  - platform: restart
    name: "Restart"
  - platform: template
    name: "Reset Energy"
    icon: mdi:cached
    on_press:
      then:
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac

time:
  - platform: homeassistant
    id: homeassistant_time





esp-meter.rar

1.1 KB, 下载次数: 37

评分

参与人数 1金钱 +10 收起 理由
隔壁的王叔叔 + 10 高手,这是高手!

查看全部评分

回复

使用道具 举报

3

主题

71

帖子

1023

积分

金牌会员

Rank: 6Rank: 6

积分
1023
金钱
952
HASS币
0
发表于 2024-3-3 17:18:22 | 显示全部楼层
大佬,Mark一下
回复

使用道具 举报

0

主题

86

帖子

754

积分

高级会员

Rank: 4

积分
754
金钱
668
HASS币
0
发表于 2024-3-3 21:08:50 | 显示全部楼层
谢谢,收藏一下
回复

使用道具 举报

0

主题

65

帖子

346

积分

中级会员

Rank: 3Rank: 3

积分
346
金钱
281
HASS币
0
发表于 2024-3-3 22:49:35 | 显示全部楼层
本帖最后由 zsxiaojz 于 2024-3-3 22:54 编辑

4、电表温度反馈是那段,没有温度探头怎样去掉这部分。
回复

使用道具 举报

3

主题

162

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
金钱
1215
HASS币
0
发表于 2024-3-4 14:52:19 | 显示全部楼层
button:
  - platform: restart
    name: "Restart"
  - platform: template
    name: "Reset Energy"
    icon: mdi:cached
    on_press:
      then:
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac
        - delay: 1s
        - pzemac.reset_energy: pzem_ac

这部分为啥要重置这么多次pzem_ac?
回复

使用道具 举报

21

主题

178

帖子

2369

积分

金牌会员

Rank: 6Rank: 6

积分
2369
金钱
2191
HASS币
20
 楼主| 发表于 2024-3-4 15:48:39 | 显示全部楼层
luckfly 发表于 2024-3-4 14:52
button:
  - platform: restart
    name: "Restart"

因为只按一次,寄存器收不到
回复

使用道具 举报

151

主题

2354

帖子

7305

积分

元老级技术达人

积分
7305
金钱
4946
HASS币
30
发表于 2024-3-4 16:15:01 | 显示全部楼层
luckfly 发表于 2024-3-4 14:52
button:
  - platform: restart
    name: "Restart"

这样更简化
button:
  - platform: template
    name: "kWh reset"
    on_press:
      then:
        - delay: 5s
        - pzemac.reset_energy: pzemac_1


回复

使用道具 举报

2

主题

106

帖子

589

积分

高级会员

Rank: 4

积分
589
金钱
483
HASS币
0
发表于 2024-6-17 13:37:02 | 显示全部楼层
感谢分享
回复

使用道具 举报

2

主题

25

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
金钱
207
HASS币
0
发表于 2024-12-12 23:43:58 | 显示全部楼层
困扰我许久的问题终于被楼主帮忙解决了,谢谢!!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-29 08:33 , Processed in 0.233717 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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