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

 找回密码
 立即注册
查看: 3204|回复: 11

[已解决] 上海实时电价及阶梯的虚拟实体写法 培正PZEM-004T 修改用电量

[复制链接]

4

主题

44

帖子

156

积分

注册会员

Rank: 2

积分
156
金钱
112
HASS币
0
发表于 2022-8-27 17:43:36 | 显示全部楼层 |阅读模式
本帖最后由 bonnyandsky 于 2022-9-12 13:47 编辑

我在上海,阶梯电价规则是这样的。
第一档0-3120度(含),峰时0.617元,谷时0.307元。
第二档3120-4800度(含),峰时0.677元,谷时0.337元。
第三档超过4800度,峰时0.977元,谷时0.487元。
峰时段(6-22时)
谷时段(22时-次日6时)。
我用的硬件是培正PZEM-004T+DT-06无线WiFi串口透传模块
插件使用的是:georgezhao2010peacefair_energy
解决方法如下:
1:configuration.yaml里添加以下内容
sensor: !include sensors.yaml #调用本地目录下的sensors.yaml文件,这样为了不让configuration.yaml变得很臃肿。
2:configuration.yaml同目录下新建sensors.yaml文件
3:在sensors.yaml添加以下内容(目的是建立“实时电价”的虚拟实体,给能源面板的实时电价实体调用)

- platform: template #平台名称
  sensors: #传感器列表
    shi_shi_dian_jia: #实体名称:只能用小写,下划线
      unique_id: "shishidianjia" #UID(必须)
      friendly_name:  '实时电价' #在前端显示的传感器昵称(可选)
      unit_of_measurement: "元/kWh" #传感器数值的单位(可选)
      icon_template: mdi:currency-jpy #默认图标
      value_template: > #定义一个获取传感器状态的模板(必须)下面的6和22是指6点和22点,"1""2""3"是指阶梯123,6个价格分别是3个阶梯的峰谷价格
        {% if now().strftime("%H")| int >= 6 and now().strftime("%H")|int < 22 and states("sensor.dang_qian_jie_ti")=="1" %}
          0.617
        {%elif now().strftime("%H")| int >= 6 and now().strftime("%H")|int < 22 and states("sensor.dang_qian_jie_ti")=="2" %}
          0.677
        {%elif now().strftime("%H")| int >= 6 and now().strftime("%H")|int < 22 and states("sensor.dang_qian_jie_ti")=="3" %}
          0.977
        {% elif states("sensor.dang_qian_jie_ti")=="1" %}
          0.307
        {% elif states("sensor.dang_qian_jie_ti")=="2" %}
          0.337
        {% elif states("sensor.dang_qian_jie_ti")=="3" %}
          0.487
        {% endif %}
4:在sensors.yaml添加以下内容(目的是建立“当前阶梯”的虚拟实体,给“实时电价”的虚拟实体判断目前使用哪个阶梯
- platform: template
  sensors:
    dang_qian_jie_ti:
      unique_id: "dangqianjieti"
      friendly_name:  '当前阶梯'
      unit_of_measurement: "级"
      icon_template: mdi:elevation-rise
      value_template: > #3210和4800分别是上海3个阶梯的2个用电量分界值
        {% if states("sensor.192_168_0_159_year_real") | float <= 3120 %}
        1
        {% elif states("sensor.192_168_0_159_year_real") | float >3120 and states("sensor.192_168_0_159_year_real") | float <= 4800 %}
        2
        {% else %}
        3
        {% endif %}
Ps: sensor.192_168_0_159_year_real是Peacefair Energy Monito插件的年用电量实体 这个根据你实际情况修改以上虚拟实体都可以在概览里添加卡片看到对应的数据

                               
登录/注册后可看大图



5:刚弄好所有用电量数据都是0.所以这个时候通过今年累计用电量判断的阶梯是不准的,我们需要修正用电量。方法如下:
      1)docker安装的HA:停止ha,去以下路径修改文件内容:config/.storage/peacefair_energy/xxxxxxxxxxx_state.json
      2)群晖VMM安装的HA:
            (1):在集成里禁用Peacefair Energy Monitor。然后通过SSH或者SMB方式打开HA的共享文件夹,找到config/.storage/目录(因为禁用了Peacefair Energy Monitor,所以这个时候你看不到peacefair_energy这个文件夹)
            (2):把修改好的xxxxxxxxxxx_state.json文件(xxxx这一串数字要和Peacefair Energy Monitor启用时的state文件前缀保持一样)复制到config/.storage/peacefair_energy/目录下(peacefair_energy文件夹请自己新建)
            (3):在集成里启用Peacefair Energy Monitor

xxxxxxxxxxx_state.json文件内容如下:请复制你自己的源文件内容,下例仅供参考
{
  "last_time": 1662960997.3884313,#这个数据不用管
  "last_state": 126.11,#这个数据也不用管,而且我发现修改了也没有用
  "year": {
    "history_state": 3836,#去年用电量数据
    "real_state": 3127.450000000004#今年用电量数据
  },
  "month": {
    "history_state": 483,#上月用电量数据
    "real_state": 89.4500000000001#当月用电量数据
  },
  "week": {
    "history_state": 45.54,#上周用电量数据
    "real_state": 0.25000000000000006#本周用电量数据
  },
  "day": {
    "history_state": 16,#昨日用电量数据
    "real_state": 0.25000000000000006#今日用电量数据
  }
}



评分

参与人数 1金钱 +8 收起 理由
dscao + 8 感谢楼主总结分享!

查看全部评分

回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24193
金钱
22762
HASS币
290
发表于 2022-8-27 22:38:17 | 显示全部楼层
随时查看 sensor.shi_shi_dian_jia 的值是否正确就能判断模板是否正确了。
能源面板正常情况结果是很准确的,但要求统计期间系统不要有关机或电量传感器中断。否则都会造成结果的误差。另外准确性检查最好使用前两天的数据与国网电力的数据进行对比。
回复

使用道具 举报

4

主题

44

帖子

156

积分

注册会员

Rank: 2

积分
156
金钱
112
HASS币
0
 楼主| 发表于 2022-8-28 07:03:44 | 显示全部楼层
dscao 发表于 2022-8-27 22:38
随时查看 sensor.shi_shi_dian_jia 的值是否正确就能判断模板是否正确了。
能源面板正常情况结果是很准确的 ...

谢谢大佬,我验证了现在阶梯是准的了,单价也对。就是对比国网和实际数据这对我还有点难。完全没思路。
是不是去读取2天前国网数据,然后矫正本地数据产生的差值。让本地数据和国网数据同步的意思?
回复

使用道具 举报

4

主题

44

帖子

156

积分

注册会员

Rank: 2

积分
156
金钱
112
HASS币
0
 楼主| 发表于 2022-8-28 21:35:56 | 显示全部楼层
本帖最后由 bonnyandsky 于 2022-9-12 13:49 编辑

合并到顶楼
微信图片_20220828213406.jpg
微信图片_20220828215843.jpg
回复

使用道具 举报

4

主题

44

帖子

156

积分

注册会员

Rank: 2

积分
156
金钱
112
HASS币
0
 楼主| 发表于 2022-9-6 11:50:53 来自手机 | 显示全部楼层
修改config/.storage/peacefair_energy/6cc0ebc78d4a16611a53b58342a1a65b_state.json文件就可以直接修改用电量数据了
回复

使用道具 举报

1

主题

44

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
金钱
338
HASS币
10
发表于 2022-9-6 12:10:21 | 显示全部楼层
本帖最后由 zad 于 2022-9-6 23:48 编辑

不知道能源模块是怎么写的,我也类似写了个实时电价的虚拟传感器,价格显示是准确的。因为能源模块看不到费用的详细历史,只能看到每天的,我这边算了一下一天的总费用是没有问题的。1小时数据不准确可能是因为延迟吧,我猜的
回复

使用道具 举报

4

主题

44

帖子

156

积分

注册会员

Rank: 2

积分
156
金钱
112
HASS币
0
 楼主| 发表于 2022-9-12 13:50:52 | 显示全部楼层
搞定了。具体看顶楼
回复

使用道具 举报

46

主题

1651

帖子

6652

积分

论坛元老

Rank: 8Rank: 8

积分
6652
金钱
4991
HASS币
40
发表于 2022-9-12 14:54:36 | 显示全部楼层
支持,ha自带的能源蛮好,不过我不清楚怎么去修改数据,有一次测试电表数据,数据乱码,几万度电,这样导致不准确,其实感觉用nr去写方便一点,可惜水平有限
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

0

主题

36

帖子

297

积分

中级会员

Rank: 3Rank: 3

积分
297
金钱
261
HASS币
0
发表于 2023-1-7 10:49:35 | 显示全部楼层
感谢分享!~~~
回复

使用道具 举报

1

主题

20

帖子

136

积分

注册会员

Rank: 2

积分
136
金钱
116
HASS币
0
发表于 2023-2-22 22:42:54 | 显示全部楼层
搞定了,感谢大佬教程
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-15 04:36 , Processed in 0.238858 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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