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

 找回密码
 立即注册
查看: 25527|回复: 26

[基础教程] 培正电表接入,电费计算

  [复制链接]

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
发表于 2021-4-27 16:41:52 | 显示全部楼层 |阅读模式
本帖最后由 zxyny1989 于 2021-5-1 22:10 编辑

培正电表接入很久了,一直没有搞电费计算。今天心血来潮,就搞了一下。
mmexport1619512664397.png
Screenshot_2021-04-27-16-32-36-940_io.homeassistant.companion.android.jpg

代码参照的论坛帖子,我的是郑州的阶梯电价
  #今日电费
  - platform: template
    sensors:
      jinri_dianfei:
        value_template: >
          {% if now().month in [1,3,5,7,8,10,12] %}
          {% set date = (31 - now().day) %}
          {% elif now().month in [4,6,9,11] %}
          {% set date = (30 - now().day) %}
          {% elif now().month == 2 and ((now().year-2000) % 4 > 0) %}
          {% set date = (28 - now().day) %}
          {% elif now().month == 2 and ((now().year-2000) % 4 == 0) %}
          {% set date = (29 - now().day) %}
          {% endif %}
          {% if (date != 0 and (states("sensor.electric") | float - states("sensor.tasmota_energy_today") | float + (states("sensor.tasmota_energy_yesterday") | float * (date + 1))) | int > 3120) or (date == 0 and states("sensor.electric") | int > 3120) %}
          {{(states("sensor.tasmota_energy_today") | float * 0.86) | round(2)}}
          {% elif (date != 0 and (states("sensor.electric") | float - states("sensor.tasmota_energy_today") | float + (states("sensor.tasmota_energy_yesterday") | float * (date + 1))) | int > 2160) or (date == 0 and states("sensor.electric") | int > 2160) %}
          {{(states("sensor.tasmota_energy_today") | float * 0.61) | round(2)}}
          {% else %}
          {{(states("sensor.tasmota_energy_today") | float * 0.56) | round(2)}}
          {% endif %}
        friendly_name: '今日电费' 
        unit_of_measurement: "RMB"

  #昨日电费
  - platform: template
    sensors:
      zuori_dianfei:
        value_template: >
          {% if now().month in [1,3,5,7,8,10,12] %}
          {% set date = (31 - now().day) %}
          {% elif now().month in [4,6,9,11] %}
          {% set date = (30 - now().day) %}
          {% elif now().month == 2 and ((now().year-2000) % 4 > 0) %}
          {% set date = (28 - now().day) %}
          {% elif now().month == 2 and ((now().year-2000) % 4 == 0) %}
          {% set date = (29 - now().day) %}
          {% endif %}
          {% if (date != 0 and (states("sensor.electric") | float - states("sensor.tasmota_energy_today") | float + (states("sensor.tasmota_energy_yesterday") | float * (date + 1))) | int > 3120) or (date == 0 and states("sensor.electric") | int > 3120) %}
          {{(states("sensor.tasmota_energy_yesterday") | float * 0.86) | round(2)}}
          {% elif (date != 0 and (states("sensor.electric") | float - states("sensor.tasmota_energy_today") | float + (states("sensor.tasmota_energy_yesterday") | float * (date + 1))) | int > 2160) or (date == 0 and states("sensor.electric") | int > 2160) %}
          {{(states("sensor.tasmota_energy_yesterday") | float * 0.61) | round(2)}}
          {% else %}
          {{(states("sensor.tasmota_energy_yesterday") | float * 0.56) | round(2)}}
          {% endif %}
        friendly_name: '昨日电费' 
        unit_of_measurement: "RMB"

  #总电费
  - platform: template
    sensors:
      zongdianfei:
        value_template: >
          {% if now().month in [1,3,5,7,8,10,12] %}
          {% set date = (31 - now().day) %}
          {% elif now().month in [4,6,9,11] %}
          {% set date = (30 - now().day) %}
          {% elif now().month == 2 and ((now().year-2000) % 4 > 0) %}
          {% set date = (28 - now().day) %}
          {% elif now().month == 2 and ((now().year-2000) % 4 == 0) %}
          {% set date = (29 - now().day) %}
          {% endif %}
          {% if (date != 0 and (states("sensor.electric") | float - states("sensor.tasmota_energy_today") | float + (states("sensor.tasmota_energy_yesterday") | float * (date + 1))) | int > 3120) or (date == 0 and states("sensor.electric") | int > 3120) %}
          {{(states("sensor.tasmota_energy_total") | float * 0.86) | round(2)}}
          {% elif (date != 0 and (states("sensor.electric") | float - states("sensor.tasmota_energy_today") | float + (states("sensor.tasmota_energy_yesterday") | float * (date + 1))) | int > 2160) or (date == 0 and states("sensor.electric") | int > 2160) %}
          {{(states("sensor.tasmota_energy_total") | float * 0.61) | round(2)}}
          {% else %}
          {{(states("sensor.tasmota_energy_total") | float * 0.56) | round(2)}}
          {% endif %}
        friendly_name: '总电费' 
        unit_of_measurement: "RMB"



我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24349
金钱
22918
HASS币
290
发表于 2021-4-27 21:04:49 | 显示全部楼层
最实用的还是"上月电量",“上月电费",可以直接与国网电力的数据的对比。

还有本月电量、本月电费,本月电量-今日电量-昨日电量=国网电力本月实时电量(国网的实时数据有延时,只统计到前天,不包括昨天和今天的),同样:-今日电费-昨日电费=国网电力本月实时电费。

但不知道其它地区是否一样。
回复

使用道具 举报

4

主题

294

帖子

3982

积分

论坛元老

Rank: 8Rank: 8

积分
3982
金钱
3688
HASS币
0
发表于 2021-4-27 21:05:48 | 显示全部楼层
dscao 发表于 2021-4-27 21:04
最实用的还是"上月电量",“上月电费",可以直接与国网电力的数据的对比。

还有本月电量、本月电费,本月电 ...

各地不同,江苏是早上6点之后可查前一天用电量,分峰谷用电量
回复

使用道具 举报

16

主题

381

帖子

2630

积分

金牌会员

Rank: 6Rank: 6

积分
2630
金钱
2249
HASS币
10
发表于 2021-4-27 23:54:26 | 显示全部楼层
大佬分享出来啊,目前用的sonoffpow
回复

使用道具 举报

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
 楼主| 发表于 2021-4-28 07:55:13 | 显示全部楼层
aiqienanguatou 发表于 2021-4-27 23:54
大佬分享出来啊,目前用的sonoffpow

有时间了发。用手机编辑的,代码粘贴不上。
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

16

主题

381

帖子

2630

积分

金牌会员

Rank: 6Rank: 6

积分
2630
金钱
2249
HASS币
10
发表于 2021-4-28 17:33:07 | 显示全部楼层
zxyny1989 发表于 2021-4-28 07:55
有时间了发。用手机编辑的,代码粘贴不上。

期待大佬的帖子
回复

使用道具 举报

23

主题

227

帖子

2782

积分

金牌会员

Rank: 6Rank: 6

积分
2782
金钱
2555
HASS币
0
发表于 2021-5-23 22:03:02 | 显示全部楼层
元旦清零和月初清零是咋实现的啊?
回复

使用道具 举报

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
 楼主| 发表于 2021-5-23 22:08:21 | 显示全部楼层
water3033 发表于 2021-5-23 22:03
元旦清零和月初清零是咋实现的啊?

自动化
- id: yue_chu_qing_ling_dian_biao
  alias: 月初清零电表
  trigger:
  - platform: template
    value_template: '{{ states("sensor.tasmota_energy_today") | round(3) == 0.000
      }}'
  condition:
  - condition: template
    value_template: '{{ (now().strftime("%d") | int) == 1 }}'
  action:
  - service: mqtt.publish
    data:
      topic: cmnd/tasmota/EnergyReset2
      payload: '0'
  - service: mqtt.publish
    data:
      topic: cmnd/tasmota/EnergyReset3
      payload: '0'
  initial_state: false
  hide_entity: false
  mode: single
- id: yuan_dan_qing_ling_dian_biao
  alias: 元旦清零电表
  trigger:
  - platform: template
    value_template: '{{ states("sensor.tasmota_energy_today") | round(3) == 0.000
      }}'
  condition:
  - condition: template
    value_template: '{{ now().strftime("%m-%d") == "01-01" }}'
  action:
  - data:
      payload: '0'
      topic: cmnd/tasmota/EnergyReset2
    service: mqtt.publish
  - data:
      payload: '0'
      topic: cmnd/tasmota/EnergyReset3
    service: mqtt.publish
  initial_state: true
  hide_entity: false
  mode: single
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

9

主题

135

帖子

894

积分

高级会员

Rank: 4

积分
894
金钱
759
HASS币
0
发表于 2021-12-22 01:33:14 | 显示全部楼层
sensor.electric  这个是什么?
回复

使用道具 举报

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
 楼主| 发表于 2021-12-22 01:42:01 | 显示全部楼层
zjhcr 发表于 2021-12-22 01:33
sensor.electric  这个是什么?

我改了,是总kwh那个。
这个配置是esphome模式接入的配置
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 05:45 , Processed in 0.088597 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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