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

 找回密码
 立即注册
查看: 82356|回复: 102

[进阶教程] 家庭用电量及电费统计模块配置方法

  [复制链接]

26

主题

94

帖子

1943

积分

金牌会员

Rank: 6Rank: 6

积分
1943
金钱
1814
HASS币
60

教程狂人论坛风云人物突出贡献

发表于 2019-2-24 13:30:11 | 显示全部楼层 |阅读模式
本帖最后由 FrankLv 于 2019-2-24 22:18 编辑

前篇
long long ago,白老板 jlxwkj 建议我上个电量计量的设备来监测下家里的用电量和计算电费,但是一直搁置未做,主要原因之一是比较懒没去折腾,另外还要动强电
但最近白老板给我做了两个电量计量设备,既然做好了那就用吧,所以索性就直接给弄上了,由于安装过程没有拍照,所以没法放了,就放白老板做好的设备吧。这货体积比较小(还有外壳哦),我家强电箱可利用空间非常非常小的情况下都可以安装上,绝对的赞。
36299A60FBF1881CB1AC5D3F91004F33.jpg


这玩意怎么弄的我是不清楚,我也不懂,有意可以咨询白老板或者搞他现成的
说了那么多,其实我是来分享配置的。
统一回复下:我是来分享配置的,我是来分享配置的,我是来分享配置的。设备我真的不知道,这个需要问白老板,也就是群里面的懵懂的小白



配置分享:
白老板一直想让我帮忙搞定阶梯电价,由于没有设备一直就没弄,既然设备有了那就需要做配置了,配置文件可能有考虑不周全的地方,或者有更好的建议,希望大家留言回复。
分享的配置如果你要使用的话需要修改两大部分,第一个是MQTT主题,第二个是阶梯电价部分,配置中使用的是北京的阶梯电价,需要修改为您所在区域的电价。
此配置可以实现电费的阶梯计算和每月统计数据自动清零。其中电费计算值,在每个月的最后一天才用总电量判断来获取阶梯电价计算得出,其他天数利用昨日电量结合总电量和今日电量判断来获取阶梯电价计算得出。这是我目前考虑到的最完美的解决方法;自动清零功能是在每个月的1号自动运行,实现昨日电量和总电量的置0。
sensor: 
#电压传感器
- platform: mqtt
name: "dianya"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "V"
value_template: "{{ value_json['ENERGY'].Voltage }}"
#value_template: "{{ value_json.Voltage }}"

#电流传感器
- platform: mqtt
name: "dianliu"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "A"
value_template: "{{ value_json['ENERGY'].Current }}"
#value_template: "{{ value_json.Current }}"

#功率传感器
- platform: mqtt
name: "gonglv"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "W"
value_template: "{{ value_json['ENERGY'].Power }}"
#value_template: "{{ value_json.Power }}"

#功率因数传感器
- platform: mqtt
name: "gonglvyinshu"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "cosΦ"
value_template: "{{ value_json['ENERGY'].Factor }}"
#value_template: "{{ value_json.Factor }}"

#今天用电量
- platform: mqtt
name: "jinri_dianliang"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "kWh"
value_template: "{{ value_json['ENERGY'].Today }}"
#value_template: "{{ value_json.Today }}"

#今日电费
- 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.jinri_dianliang") | float + (states("sensor.zuori_dianliang") | float * (date + 1))) | int > 400) or (date == 0 and states("sensor.electric") | int > 400) %}
{{(states("sensor.jinri_dianliang") | float * 0.7783) | round(2)}}
{% elif (date != 0 and (states("sensor.electric") | float - states("sensor.jinri_dianliang") | float + (states("sensor.zuori_dianliang") | float * (date + 1))) | int > 240) or (date == 0 and states("sensor.electric") | int > 240) %}
{{(states("sensor.jinri_dianliang") | float * 0.5283) | round(2)}}
{% else %}
{{(states("sensor.jinri_dianliang") | float * 0.4783) | round(2)}}
{% endif %}
friendly_name: 'jinri_dianfei' 
unit_of_measurement: "RMB"

#昨天用电量
- platform: mqtt
name: "zuori_dianliang"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "kWh"
value_template: "{{ value_json['ENERGY'].Yesterday }}"
#value_template: "{{ value_json.Yesterday }}"

#昨日电费
- 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.jinri_dianliang") | float + (states("sensor.zuori_dianliang") | float * (date + 1))) | int > 400) or (date == 0 and states("sensor.electric") | int > 400) %}
{{(states("sensor.zuori_dianliang") | float * 0.7783) | round(2)}}
{% elif (date != 0 and (states("sensor.electric") | float - states("sensor.jinri_dianliang") | float + (states("sensor.zuori_dianliang") | float * (date + 1))) | int > 240) or (date == 0 and states("sensor.electric") | int > 240) %}
{{(states("sensor.zuori_dianliang") | float * 0.5283) | round(2)}}
{% else %}
{{(states("sensor.zuori_dianliang") | float * 0.4783) | round(2)}}
{% endif %}
friendly_name: 'zuori_dianfei' 
unit_of_measurement: "RMB"

#总用电量 
- platform: mqtt
name: "electric"
state_topic: "tele/electric/SENSOR"
qos: 1
unit_of_measurement: "kWh"
value_template: "{{ value_json['ENERGY'].Total }}"
#value_template: "{{ value_json.Total }}"

#总电费
- 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.jinri_dianliang") | float + (states("sensor.zuori_dianliang") | float * (date + 1))) | int > 400) or (date == 0 and states("sensor.electric") | int > 400) %}
{{(states("sensor.electric") | float * 0.7783) | round(2)}}
{% elif (date != 0 and (states("sensor.electric") | float - states("sensor.jinri_dianliang") | float + (states("sensor.zuori_dianliang") | float * (date + 1))) | int > 240) or (date == 0 and states("sensor.electric") | int > 240) %}
{{(states("sensor.electric") | float * 0.5283) | round(2)}}
{% else %}
{{(states("sensor.electric") | float * 0.4783) | round(2)}}
{% endif %}
friendly_name: 'zongdianfei' 
unit_of_measurement: "RMB"

#计量清零
automation:
- id: 'monitor_clear'
alias: monitor_clear
initial_state: true
hide_entity: false
trigger:
# - platform: time
# at: '00:00:00'
- platform: template
value_template: '{{ states("sensor.jinri_dianliang") | round(3) == 0.000 }}'
condition:
- condition: template
value_template: '{{ (now().strftime("%d") | int) == 1 }}'
action:
- service: mqtt.publish
data:
topic: 'cmnd/electric/EnergyReset2'
payload: '0'
- service: mqtt.publish
data:
topic: 'cmnd/electric/EnergyReset3'
payload: '0'

group:
electric:
name: 总电量
view: no 
entities:
- sensor.dianya
- sensor.dianliu
- sensor.gonglv
- sensor.gonglvyinshu
- sensor.jinri_dianliang
- sensor.jinri_dianfei
- sensor.zuori_dianliang
- sensor.zuori_dianfei
- sensor.electric
- sensor.zongdianfei
- automation.monitor_clear

homeassistant:
customize:
sensor.dianya:
friendly_name: 电压
icon: mdi:flash
homebridge_name: 机柜电压
homebridge_hidden: false

sensor.dianliu:
friendly_name: 电流
icon: mdi:flash-auto
homebridge_name: 机柜电流
homebridge_hidden: false

sensor.gonglv:
friendly_name: 功率
icon: mdi:wikipedia
homebridge_name: 功率
homebridge_hidden: false

sensor.gonglvyinshu:
friendly_name: 功率因数
icon: mdi:flash-red-eye
homebridge_name: 功率因数
homebridge_hidden: false

sensor.jinri_dianliang:
friendly_name: 今日电量
icon: mdi:flash
homebridge_name: 今日电量
homebridge_hidden: false

sensor.jinri_dianfei:
friendly_name: 今日电费
icon: mdi:currency-cny
homebridge_name: 今日电费
homebridge_hidden: false

sensor.zuori_dianliang:
friendly_name: 昨日电量
icon: mdi:flash
homebridge_name: 昨日电量
homebridge_hidden: false

sensor.zuori_dianfei:
friendly_name: 昨日电费
icon: mdi:currency-cny
homebridge_name: 昨日电费
homebridge_hidden: false

sensor.electric:
friendly_name: 总电量
icon: mdi:flash
homebridge_name: 总电量
homebridge_hidden: false

sensor.zongdianfei:
friendly_name: 总电费
icon: mdi:currency-cny
homebridge_name: 总电费
homebridge_hidden: false

automation.monitor_clear:
friendly_name: 计量清零
homebridge_name: 计量清零
homebridge_hidden: false

group.electric:
homebridge_hidden: false



效果展示:
使用后的效果如下:
QQ20190224-0.png




完结!






评分

参与人数 4金钱 +52 收起 理由
my12005 + 5
honry + 7 大佬,提供下yaml文件把,缩近调的好晕.
+ 20 我来瀚思就为看你!
lidicn + 20 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

8

主题

871

帖子

5224

积分

论坛元老

Rank: 8Rank: 8

积分
5224
金钱
4353
HASS币
0
发表于 2019-2-24 14:26:35 | 显示全部楼层
学习学习
回复

使用道具 举报

7

主题

138

帖子

931

积分

高级会员

Rank: 4

积分
931
金钱
793
HASS币
0
发表于 2019-2-24 15:17:42 | 显示全部楼层
这个感觉好实用,希望楼主分享设备的制作方法
回复

使用道具 举报

123

主题

4665

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16452
金钱
11702
HASS币
45
发表于 2019-2-24 15:22:47 | 显示全部楼层
厉害了白老板,lv老板!
回复

使用道具 举报

0

主题

177

帖子

1100

积分

金牌会员

Rank: 6Rank: 6

积分
1100
金钱
923
HASS币
0
发表于 2019-2-24 15:27:54 | 显示全部楼层
这个设备真不错
回复

使用道具 举报

3

主题

157

帖子

525

积分

高级会员

Rank: 4

积分
525
金钱
368
HASS币
0
发表于 2019-2-24 15:37:53 | 显示全部楼层
henbang !很棒!
回复

使用道具 举报

26

主题

94

帖子

1943

积分

金牌会员

Rank: 6Rank: 6

积分
1943
金钱
1814
HASS币
60

教程狂人论坛风云人物突出贡献

 楼主| 发表于 2019-2-24 17:36:36 | 显示全部楼层
coolbug111 发表于 2019-2-24 15:17
这个感觉好实用,希望楼主分享设备的制作方法

白老板给我做的,我真不清楚,可咨询白老板,或者让他给做现成的
回复

使用道具 举报

34

主题

335

帖子

1848

积分

金牌会员

Rank: 6Rank: 6

积分
1848
金钱
1513
HASS币
0
发表于 2019-2-24 17:52:07 | 显示全部楼层
感谢分享!
回复

使用道具 举报

6

主题

484

帖子

4042

积分

论坛元老

Rank: 8Rank: 8

积分
4042
金钱
3558
HASS币
0
发表于 2019-2-24 18:22:05 | 显示全部楼层
谢谢F大的分享,一直在用这个模块,但是原插件没有计费功能,现在终于实现了!!!
回复

使用道具 举报

2

主题

218

帖子

1490

积分

金牌会员

Rank: 6Rank: 6

积分
1490
金钱
1272
HASS币
0
发表于 2019-2-24 19:18:54 | 显示全部楼层
哪里能买到呢
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-28 01:24 , Processed in 0.118938 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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