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

 找回密码
 立即注册
楼主: diba.qiu

8266+ESPHOME+3xPZEM-004T家庭用電監控

[复制链接]

8

主题

263

帖子

2399

积分

金牌会员

Rank: 6Rank: 6

积分
2399
金钱
2136
HASS币
15
 楼主| 发表于 2021-9-27 09:51:05 | 显示全部楼层
3038922 发表于 2021-9-26 21:13
关键是线咋接?是每个004T各自接两个引脚? 还是全部接D1 D2 ,004T全部并联起来?

單純並聯而已
回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-1 20:23:52 | 显示全部楼层
本帖最后由 3038922 于 2021-10-1 20:31 编辑

我改了下 想挂6个.结果读不到数据的.也不知道为啥.
用上位机测试004T正常的.我地址也设置了
我测试时候 是挂了一个.我看您地址是4开始的.我测试的那个是默认地址1.地址1是不是没法用的?
```
substitutions:
  device_name: energy

esphome:
  name: ${device_name}
  platform: ESP8266
  board: nodemcuv2

logger:
  baud_rate: 0 # (UART logging interferes with pzem)
  level: DEBUG

# Enable Home Assistant API

web_server:
  port: 80

captive_portal:

uart:
  - tx_pin: D1
    rx_pin: D2
    baud_rate: 9600
    stop_bits: 1

modbus:

binary_sensor:
  - platform: status
    name: "${device_name} Status"

sensor:
  - platform: pzemac
    id: pzemac1
    energy:
      name: "energy_ac1"
      filters:
        - multiply: 0.002
      unit_of_measurement: kWh
      accuracy_decimals: 1
    current:
      name: "current_ac1"
      id: "current_ac1"
      accuracy_decimals: 1
    voltage:
      name: "voltage_ac1"
      filters:
        - multiply: 2
      accuracy_decimals: 1
    frequency:
      name: "frequency_ac1"
      accuracy_decimals: 1
    power_factor:
      name: "factor_ac1"
      accuracy_decimals: 1
    power:
      name: "power_ac1"
      id: "power_ac1"
      filters:
        - multiply: 2
      accuracy_decimals: 0
    update_interval: never
    address: 1

  - platform: pzemac
    id: pzemac2
    energy:
      name: "energy_ac2"
      filters:
        - multiply: 0.002
      unit_of_measurement: kWh
      accuracy_decimals: 1
    current:
      name: "current_ac2"
      id: "current_ac2"
      accuracy_decimals: 1
    voltage:
      name: "voltage_ac2"
      filters:
        - multiply: 2
      accuracy_decimals: 1
    frequency:
      name: "frequency_ac2"
      accuracy_decimals: 1
    power_factor:
      name: "factor_ac2"
      accuracy_decimals: 1
    power:
      name: "power_ac2"
      id: "power_ac2"
      filters:
        - multiply: 2
      accuracy_decimals: 0
    update_interval: never
    address: 2

  - platform: pzemac
    id: pzemac3
    energy:
      name: "energy_ac3"
      filters:
        - multiply: 0.002
      unit_of_measurement: kWh
      accuracy_decimals: 1
    current:
      id: "current_ac3"
      name: "current_ac3"
      accuracy_decimals: 1
    voltage:
      name: "voltage_ac3"
      filters:
        - multiply: 2
      accuracy_decimals: 1
    frequency:
      name: "frequency_ac3"
      accuracy_decimals: 1
    power_factor:
      name: "factor_ac3"
      accuracy_decimals: 1
    power:
      name: "power_ac3"
      id: "power_ac3"
      filters:
        - multiply: 2
      accuracy_decimals: 0
    update_interval: never
    address: 3

  - platform: total_daily_energy
    name: "energy_ac1_daily"
    power_id: power_ac1
    id: energy_ac1_daily
    unit_of_measurement: kWh
    accuracy_decimals: 1
    icon: mdi:counter
    filters:
      - multiply: 0.001

  - platform: total_daily_energy
    name: "energy_ac2_daily"
    power_id: power_ac2
    id: energy_ac2_daily
    unit_of_measurement: kWh
    accuracy_decimals: 1
    icon: mdi:counter
    filters:
      - multiply: 0.001

  - platform: total_daily_energy
    name: "energy_ac3_daily"
    power_id: power_ac3
    id: energy_ac3_daily
    unit_of_measurement: kWh
    accuracy_decimals: 1
    icon: mdi:counter
    filters:
      - multiply: 0.001

  - platform: template
    name: "today_ac13"
    id: "today_ac13"
    icon: mdi:counter
    device_class: energy
    state_class: measurement
    unit_of_measurement: kWh
    accuracy_decimals: 1
    lambda: |-
      return id(energy_ac1_daily).state + id(energy_ac2_daily).state + id(energy_ac3_daily).state ;
  ########################################################################################################################
  - platform: pzemac
    id: pzemac4
    energy:
      name: "energy_ac4"
      filters:
        - multiply: 0.002
      unit_of_measurement: kWh
      accuracy_decimals: 1
    current:
      name: "current_ac4"
      id: "current_ac4"
      accuracy_decimals: 1
    voltage:
      name: "voltage_ac4"
      filters:
        - multiply: 2
      accuracy_decimals: 1
    frequency:
      name: "frequency_ac4"
      accuracy_decimals: 1
    power_factor:
      name: "factor_ac4"
      accuracy_decimals: 1
    power:
      name: "power_ac4"
      id: "power_ac4"
      filters:
        - multiply: 2
      accuracy_decimals: 0
    update_interval: never
    address: 4

  - platform: pzemac
    id: pzemac5
    energy:
      name: "energy_ac5"
      filters:
        - multiply: 0.002
      unit_of_measurement: kWh
      accuracy_decimals: 1
    current:
      name: "current_ac5"
      id: "current_ac5"
      accuracy_decimals: 1
    voltage:
      name: "voltage_ac5"
      filters:
        - multiply: 2
      accuracy_decimals: 1
    frequency:
      name: "frequency_ac5"
      accuracy_decimals: 1
    power_factor:
      name: "factor_ac5"
      accuracy_decimals: 1
    power:
      name: "power_ac5"
      id: "power_ac5"
      filters:
        - multiply: 2
      accuracy_decimals: 0
    update_interval: never
    address: 5

  - platform: pzemac
    id: pzemac6
    energy:
      name: "energy_ac6"
      filters:
        - multiply: 0.002
      unit_of_measurement: kWh
      accuracy_decimals: 1
    current:
      id: "current_ac6"
      name: "current_ac6"
      accuracy_decimals: 1
    voltage:
      name: "voltage_ac6"
      filters:
        - multiply: 2
      accuracy_decimals: 1
    frequency:
      name: "frequency_ac6"
      accuracy_decimals: 1
    power_factor:
      name: "factor_ac6"
      accuracy_decimals: 1
    power:
      name: "power_ac6"
      id: "power_ac6"
      filters:
        - multiply: 2
      accuracy_decimals: 0
    update_interval: never
    address: 6

  - platform: total_daily_energy
    name: "energy_ac4_daily"
    power_id: power_ac4
    id: energy_ac4_daily
    unit_of_measurement: kWh
    accuracy_decimals: 1
    icon: mdi:counter
    filters:
      - multiply: 0.001

  - platform: total_daily_energy
    name: "energy_ac5_daily"
    power_id: power_ac5
    id: energy_ac5_daily
    unit_of_measurement: kWh
    accuracy_decimals: 1
    icon: mdi:counter
    filters:
      - multiply: 0.001

  - platform: total_daily_energy
    name: "energy_ac6_daily"
    power_id: power_ac6
    id: energy_ac6_daily
    unit_of_measurement: kWh
    accuracy_decimals: 1
    icon: mdi:counter
    filters:
      - multiply: 0.001

  - platform: template
    name: "today_ac46"
    id: "today_ac46"
    icon: mdi:counter
    device_class: energy
    state_class: measurement
    unit_of_measurement: kWh
    accuracy_decimals: 1
    lambda: |-
      return id(energy_ac4_daily).state + id(energy_ac5_daily).state + id(energy_ac6_daily).state ;

  #################################
  #SLOW SENSORS FOR HOME ASSISTANT#
  #################################
  - platform: template #########################
    name: "current_ac1_slow"
    lambda: |-
      if (id(current_ac1).state) {
        return (id(current_ac1).state);
      } else {
        return 0;
      }
    unit_of_measurement: A
    icon: "mdi:alpha-a-circle"
    update_interval: 60s
  - platform: template #########################
    name: "current_ac2_slow"
    lambda: |-
      if (id(current_ac2).state) {
        return (id(current_ac2).state);
      } else {
        return 0;
      }
    unit_of_measurement: A
    icon: "mdi:alpha-a-circle"
    update_interval: 60s
  - platform: template #########################
    name: "current_ac3_slow"
    lambda: |-
      if (id(current_ac3).state) {
        return (id(current_ac3).state);
      } else {
        return 0;
      }
  - platform: template #########################
    name: "current_ac4_slow"
    lambda: |-
      if (id(current_ac4).state) {
        return (id(current_ac4).state);
      } else {
        return 0;
      }
    unit_of_measurement: A
    icon: "mdi:alpha-a-circle"
    update_interval: 60s
  - platform: template #########################
    name: "current_ac5_slow"
    lambda: |-
      if (id(current_ac5).state) {
        return (id(current_ac5).state);
      } else {
        return 0;
      }
    unit_of_measurement: A
    icon: "mdi:alpha-a-circle"
    update_interval: 60s
  - platform: template #########################
    name: "current_ac6_slow"
    lambda: |-
      if (id(current_ac6).state) {
        return (id(current_ac6).state);
      } else {
        return 0;
      }
    unit_of_measurement: A
    icon: "mdi:alpha-a-circle"
    update_interval: 60s

time:
  - platform: homeassistant
    id: homeassistant_time

switch:
  - platform: restart
    name: "${device_name}_Restart"

  - platform: uart
    name: "${device_name}_Reset"
    data: [0x01, 0x42, 0x80, 0x11]

interval:
  - interval: 5s
    then:
      - lambda: "id(pzemac1).update();"
      - delay: 150ms
      - lambda: "id(pzemac2).update();"
      - delay: 150ms
      - lambda: "id(pzemac3).update();"
      - delay: 150ms
      - lambda: "id(pzemac4).update();"
      - delay: 150ms
      - lambda: "id(pzemac5).update();"
      - delay: 150ms
      - lambda: "id(pzemac6).update();"
```

回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-2 11:26:44 | 显示全部楼层
本帖最后由 3038922 于 2021-10-2 11:30 编辑

我直接刷您原版也读不出数据.但直接串口是可以刷的.是我只接一个测试的关系?必须三个全接满?然后奇葩的是我D1 D2反插就好了......这啥情况
我设置的D1 TX D2 RX啊
现在我D1接她RX D2 接他TX 有数据....虽然是错的.电压400V什么的....
回复

使用道具 举报

8

主题

263

帖子

2399

积分

金牌会员

Rank: 6Rank: 6

积分
2399
金钱
2136
HASS币
15
 楼主| 发表于 2021-10-4 15:41:27 | 显示全部楼层
3038922 发表于 2021-10-2 11:26
我直接刷您原版也读不出数据.但直接串口是可以刷的.是我只接一个测试的关系?必须三个全接满?然后奇葩的是我 ...

我的代碼設置address456是因為我用esphome方案的有六顆pzem004t v3,分接兩顆nodemcu,另一顆就設定123,如此而已。(這六顆以外的pzem我則還留在tasmota,沒有轉)

我自己的測試心得: 同時接超過三顆就容易漏資料,所以我之前在另一篇回文中建議同時接三顆就好; 而D1D2反插的問題我好像也遇過,沒有太深究就是。
回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-4 23:50:42 | 显示全部楼层
本帖最后由 3038922 于 2021-10-4 23:52 编辑
diba.qiu 发表于 2021-10-4 15:41
我的代碼設置address456是因為我用esphome方案的有六顆pzem004t v3,分接兩顆nodemcu,另一顆就設定123, ...

我已经买了32了.就芯片类型改下,其他都不改么?8266 被我正负极反插烧了....
那个004T也被我反插过.也不晓得有没啥问题
回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-5 21:06:15 | 显示全部楼层
本帖最后由 3038922 于 2021-10-5 22:34 编辑

我已经换成ESP32了
似乎一切正常了
楼主可以备注下 如果并联 必须三个都通上220V电
不然是没数据的.
就没看懂为啥电压要 multiply :2
三相不是380V么
回复

使用道具 举报

8

主题

263

帖子

2399

积分

金牌会员

Rank: 6Rank: 6

积分
2399
金钱
2136
HASS币
15
 楼主| 发表于 2021-10-6 17:23:42 | 显示全部楼层
3038922 发表于 2021-10-5 21:06
我已经换成ESP32了
似乎一切正常了
楼主可以备注下 如果并联 必须三个都通上220V电

感謝提醒,電壓x2是因為台灣的家庭用電電壓是110V(單相三線),而我這個是用來監控220V空調的所以x2,已經備註上了
回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-6 19:48:02 | 显示全部楼层
本帖最后由 3038922 于 2021-10-7 00:33 编辑
diba.qiu 发表于 2021-10-6 17:23
感謝提醒,電壓x2是因為台灣的家庭用電電壓是110V(單相三線),而我這個是用來監控220V空調的所以x2,已經 ...

我测试了6路 ESP32.完全没数据.
然后我拔掉了三路.全部正常.都开始正常工作了.我不确定是我一二三路是不是有线没接好的关系.还是电源不能支持那么多设备的关系.
但感觉上是他底层轮询只能支持四路的样子.


顺便问下SLOW SENSORS这个东西干嘛用的?
减轻服务器负载么?我更新喜欢看实时信息.这个能删掉么?我是标准X64服务器 性能还行.


回复

使用道具 举报

8

主题

263

帖子

2399

积分

金牌会员

Rank: 6Rank: 6

积分
2399
金钱
2136
HASS币
15
 楼主| 发表于 2021-10-7 11:19:17 | 显示全部楼层
3038922 发表于 2021-10-6 19:48
我测试了6路 ESP32.完全没数据.
然后我拔掉了三路.全部正常.都开始正常工作了.我不确定是我一二三路是不是 ...

超過四路建議用1A以上的供電,並設定不同的uart、modbus

slow sensor是為了減輕資料庫負擔,當然可以刪掉沒問題!
回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-7 13:04:59 | 显示全部楼层
本帖最后由 3038922 于 2021-10-7 13:07 编辑
diba.qiu 发表于 2021-10-7 11:19
超過四路建議用1A以上的供電,並設定不同的uart、modbus

slow sensor是為了減輕資料庫負擔,當然可以刪 ...

要怎么做才能让HOMEASSISTAN 的 能源 里,自动识别能耗选项?
我目前是直接导入 energy_acxxx_daily
但是 server 端无法识别,如何修改才能让server端识别?```
  - platform: template
    name: "energy_other_daily"
    id: "energy_other_daily"
    icon: mdi:counter
    device_class: energy
    state_class: measurement
    unit_of_measurement: kWh
    accuracy_decimals: 1
    lambda: |-
      return id(energy_ac3_daily).state - id(energy_ac4_daily).state - id(energy_ac5_daily).state - id(energy_ac6_daily).state ;

```
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 07:41 , Processed in 0.303865 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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