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

 找回密码
 立即注册
查看: 33464|回复: 50

家庭用电量统计-电费(上海三相峰谷时)

  [复制链接]

12

主题

169

帖子

1206

积分

金牌会员

Rank: 6Rank: 6

积分
1206
金钱
1037
HASS币
0
发表于 2019-4-8 19:28:06 | 显示全部楼层 |阅读模式
看了论坛几位大佬写的PZEM-004T 电表,自己也尝试的做了一个,自己写了点简单的配置,希望有用,有不足的请更正请教。
具体制作就不说了,论坛上有非常非常详细的攻略,我也时按攻略制作。
111.JPG


攻略参照:
https://bbs.hassbian.com/thread-5634-1-1.html

https://bbs.hassbian.com/thread-6081-1-1.html

主要注意的地方,刷好tasmota 固件,设置完后,再控制台里输入 timezone 8 同步时区。这样模块读取的发给HA为实时的时间,也为后面统计数据做准备
QQ图片20190408192205.jpg

本篇主要为配置上海区的峰谷时电价配置,主要看到F大也写过配置,但看过配置和北京地区的电价资费时,发现和上海完全不同。

北京电价为每月阶梯电价,每月归零,而且居民用电没有峰谷时,而上海电价为全年阶梯电价,居民用电含峰谷电价。

和北京阶梯电价规则的可以参考F大的帖子:
https://bbs.hassbian.com/thread-6435-1-1.html

上海阶梯电价目前还没发完毕,已过了几个月,无法得知用了多少电,只能知道目前处于第几档的电价。
代码部分如下
sensor:
#电表-第一相
#总电量
  - platform: mqtt
    name: "electric_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Total }}"
    unit_of_measurement: "KWH"
 
#昨日电量
  - platform: mqtt
    name: "zuori_dianliang_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Yesterday }}"
    unit_of_measurement: "KWH"

#今日电量
  - platform: mqtt
    name: "jinri_dianliang_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Today }}"
    unit_of_measurement: "KWH"

  - platform: mqtt
    name: "gonglv_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Power }}"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "yinshu_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Factor }}"
    unit_of_measurement: " "
  - platform: mqtt
    name: "dianya_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Voltage }}"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "dianliu_1"
    state_topic: "tele/S8/SENSOR"
    value_template: "{{value_json['ENERGY'].Current }}"
    unit_of_measurement: "A"

#电表-第二相
#总电量
  - platform: mqtt
    name: "electric_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Total }}"
    unit_of_measurement: "KWH"
 
#昨日电量
  - platform: mqtt
    name: "zuori_dianliang_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Yesterday }}"
    unit_of_measurement: "KWH"

#今日电量
  - platform: mqtt
    name: "jinri_dianliang_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Today }}"
    unit_of_measurement: "KWH"

  - platform: mqtt
    name: "gonglv_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Power }}"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "yinshu_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Factor }}"
    unit_of_measurement: " "
  - platform: mqtt
    name: "dianya_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Voltage }}"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "dianliu_2"
    state_topic: "tele/S9/SENSOR"
    value_template: "{{value_json['ENERGY'].Current }}"
    unit_of_measurement: "A"

#电表-第三相
#总电量
  - platform: mqtt
    name: "electric_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Total }}"
    unit_of_measurement: "KWH"

#昨日电量
  - platform: mqtt
    name: "zuori_dianliang_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Yesterday }}"
    unit_of_measurement: "KWH"

#今日电量
  - platform: mqtt
    name: "jinri_dianliang_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Today }}"
    unit_of_measurement: "KWH"

  - platform: mqtt
    name: "gonglv_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Power }}"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "yinshu_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Factor }}"
    unit_of_measurement: " "
  - platform: mqtt
    name: "dianya_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Voltage }}"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "dianliu_3"
    state_topic: "tele/S10/SENSOR"
    value_template: "{{value_json['ENERGY'].Current }}"
    unit_of_measurement: "A"

#总电量
  - platform: template
    sensors:
      zong_dianliang: 
        value_template: >
          {{states("sensor.electric_1")|float + states("sensor.electric_2")|float + states("sensor.electric_3")|float | round(2)}}
        unit_of_measurement: "KWH"

#今日总电量
  - platform: template
    sensors:
      jinri_zong_dianliang: 
        value_template: >
          {{states("sensor.jinri_dianliang_1")|float + states("sensor.jinri_dianliang_2")|float + states("sensor.jinri_dianliang_3")|float | round(2)}}
        unit_of_measurement: "KWH"

#昨日总电量
  - platform: template
    sensors:
      zuori_zong_dianliang: 
        value_template: >
          {{states("sensor.zuori_dianliang_1")|float + states("sensor.zuori_dianliang_2")|float + states("sensor.zuori_dianliang_3")|float | round(2)}}
        unit_of_measurement: "KWH"

#总功率
  - platform: template
    sensors:
      zong_gonglv: 
        value_template: >
          {{states("sensor.gonglv_1")|float + states("sensor.gonglv_2")|float + states("sensor.gonglv_3")|float | round(2)}}
        unit_of_measurement: "W"

#每天峰谷电费
  - platform: template
    sensors:
      dianfei_daily_feng: #峰时 
        value_template: >
          {{(states("sensor.daily_energy_peak") | float * 0.677) | round(2)}}
        unit_of_measurement: "RMB"

  - platform: template
    sensors:
      dianfei_daily_gu: #谷时 
        value_template: >
          {{(states("sensor.daily_energy_offpeak") | float * 0.337) | round(2)}}
        unit_of_measurement: "RMB"
#每月峰谷电费
  - platform: template
    sensors:
      dianfei_monthly_feng: #峰时 
        value_template: >
          {{(states("sensor.monthly_energy_peak") | float * 0.677) | round(2)}}
        unit_of_measurement: "RMB"

  - platform: template
    sensors:
      dianfei_monthly_gu: #谷时 
        value_template: >
          {{(states("sensor.monthly_energy_offpeak") | float * 0.337) | round(2)}}
        unit_of_measurement: "RMB"

#今日总电费
  - platform: template
    sensors:
      daily_zong_dianfei: 
        value_template: >
          {{states("sensor.dianfei_daily_feng")|float + states("sensor.dianfei_daily_gu")|float | round(2)}}
        unit_of_measurement: "RMB"

#本月总电费
  - platform: template
    sensors:
      monthly_zong_dianfei: 
        value_template: >
          {{states("sensor.dianfei_monthly_feng")|float + states("sensor.dianfei_monthly_gu")|float | round(2)}}
        unit_of_measurement: "RMB"


#峰谷电价-------------------------------------------------------------------------------------------------------------------------
utility_meter:
  energy:
    source: sensor.zong_dianliang
    cycle: monthly

  daily_energy:
    source: sensor.energy
    cycle: daily
    tariffs:
      - peak
      - offpeak
  monthly_energy:
    source: sensor.energy
    cycle: monthly
    tariffs:
      - peak
      - offpeak

#自动化区分峰谷时----------6点~22点(峰时),22点~6点(第二天)(谷时)-------------------------------------------------------------------------------------------------------------
- alias: fengshidianjia
  trigger:
    - platform: time
      at: '06:00:00'
    - platform: time
      at: '22:00:00'
  action:
    - service: utility_meter.next_tariff
      entity_id: utility_meter.daily_energy
    - service: utility_meter.next_tariff
      entity_id: utility_meter.monthly_energy


由于我家时三相四线进户,所以由3个模块检测3路,单相的自行去除相加的 总数配置。0.677/0.337为上海的第二档峰谷电价。

目前不完美,全年的自动阶梯价格,只能等明年元旦重置数据。坑挖的比较大。

目前还不知道怎么写,也请教大佬们怎么写剩下的。


模板.zip

1.11 KB, 下载次数: 147

评分

参与人数 1金钱 +20 收起 理由
+ 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

23

主题

1338

帖子

6755

积分

超级版主

Rank: 8Rank: 8

积分
6755
金钱
5392
HASS币
100

教程狂人

发表于 2019-4-8 21:02:21 | 显示全部楼层
比较复杂的写一个custom component好了,简单些
回复

使用道具 举报

12

主题

169

帖子

1206

积分

金牌会员

Rank: 6Rank: 6

积分
1206
金钱
1037
HASS币
0
 楼主| 发表于 2019-4-8 21:14:32 | 显示全部楼层
natic 发表于 2019-4-8 21:02
比较复杂的写一个custom component好了,简单些

刚上手的小白,只会这样写,抱歉了。
回复

使用道具 举报

23

主题

1338

帖子

6755

积分

超级版主

Rank: 8Rank: 8

积分
6755
金钱
5392
HASS币
100

教程狂人

发表于 2019-4-8 21:21:40 | 显示全部楼层
jccg315 发表于 2019-4-8 21:14
刚上手的小白,只会这样写,抱歉了。

不难,我做自定义组件之前也没写过python,照葫芦画瓢就行
回复

使用道具 举报

12

主题

169

帖子

1206

积分

金牌会员

Rank: 6Rank: 6

积分
1206
金钱
1037
HASS币
0
 楼主| 发表于 2019-4-8 23:03:47 | 显示全部楼层
natic 发表于 2019-4-8 21:21
不难,我做自定义组件之前也没写过python,照葫芦画瓢就行

对已经能写出这样的,我已经很满意了。哈哈!
回复

使用道具 举报

0

主题

55

帖子

704

积分

高级会员

Rank: 4

积分
704
金钱
649
HASS币
0
发表于 2019-4-9 00:04:02 | 显示全部楼层
请教楼主,是3个PZEM-004T接的同一个esp8266,还是3个PZEM-004T接了3个esp8266?
回复

使用道具 举报

73

主题

1165

帖子

6645

积分

论坛元老

Rank: 8Rank: 8

积分
6645
金钱
5475
HASS币
30
发表于 2019-4-9 07:32:34 | 显示全部楼层
回复

使用道具 举报

40

主题

2176

帖子

8290

积分

元老级技术达人

积分
8290
金钱
6099
HASS币
110
发表于 2019-4-9 08:50:22 | 显示全部楼层
真能折腾 手里有个nodemcu  学着做做
回复

使用道具 举报

12

主题

169

帖子

1206

积分

金牌会员

Rank: 6Rank: 6

积分
1206
金钱
1037
HASS币
0
 楼主| 发表于 2019-4-9 12:50:06 | 显示全部楼层
xuyang 发表于 2019-4-9 07:32
官方有个插件可以用,省事!

其实就是按这个插件做的。只是三相的数据比较多而已
回复

使用道具 举报

7

主题

397

帖子

2268

积分

金牌会员

Rank: 6Rank: 6

积分
2268
金钱
1871
HASS币
0
发表于 2019-4-9 14:08:39 | 显示全部楼层
这个是用了三个模块啊!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 10:39 , Processed in 0.143591 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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