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

 找回密码
 立即注册
查看: 459|回复: 7

[硬件DIY] 感谢polisher开源的WIFI多路电量表-可以断电保存电量-来交作业

[复制链接]

1

主题

46

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
金钱
205
HASS币
0
发表于 2024-5-22 08:59:32 | 显示全部楼层 |阅读模式
本帖最后由 ys2008_168 于 2024-5-22 09:55 编辑

前段时间逛论坛看到polisher开源的WIFI多路电量表  这个不错 就去复刻了
在论坛东拼西凑的代码 把电量断电保存也可以了 参考 【最终版本-代码开源】20元的中移铁通插排:esp+功率计量 的代码来保存的


以前用的是几个 培正(peacefair)
5.jpg    1.jpg 2.jpg
3.jpg 4.jpg

##本人也是个小白代码也是复制的有错误请指出

preferences:

  flash_write_interval: 1min

sensor:

  - platform: bl0906
    #update_interval: 20s   
    Frequency:
      name: 'Frequency'#频率
      id: Frequency
    Temperature:
      name: 'Temperature'#温度
      id: Temperature
    Voltage:
      id: Voltage
      name: 'Voltage'#电压

    Current_1:
      id: Current_1
      name: 'Current_1'#电流通道
    Current_2:
      id: Current_2
      name: 'Current_2'
    Current_3:
      id: Current_3
      name: 'Current_3'
    Current_4:
      id: Current_4
      name: 'Current_4'
    Current_5:
      id: Current_5
      name: 'Current_5'
    Current_6:
      id: Current_6
      name: 'Current_6'
    Power_1:
      id: Power_1
      name: 'Power_1'#功率通道
    Power_2:
      id: Power_2
      name: 'Power_2'
    Power_3:
      id: Power_3
      name: 'Power_3'
    Power_4:
      id: Power_4
      name: 'Power_4'
    Power_5:
      id: Power_5
      name: 'Power_5'
    Power_6:
      id: Power_6
      name: 'Power_6'
    Power_sum:
      id: Power_sum
      name: 'Power_sum'
    Energy_1:
      id: Energy_1
#      name: 'Energy_1'#电量通道
    Energy_2:
      id: Energy_2
#      name: 'Energy_2'
    Energy_3:
      id: Energy_3
#      name: 'Energy_3'
    Energy_4:
      id: Energy_4
#      name: 'Energy_4'
    Energy_5:
      id: Energy_5
#      name: 'Energy_5'
    Energy_6:
      id: Energy_6
#      name: 'Energy_6'
    Energy_sum:
      id: Energy_sum





###########################################################################保存总电量
  - platform: copy
    name: 'Energy_sum'
    id: Energy_sum_persist
    source_id: Energy_sum
    filters:
      - lambda: |-
          if(id(id_Energy_sum_lastvalue) == 0.0  )
          {
            id(id_Energy_sum_lastvalue) = id(Energy_sum).state;
          }

          if(x < id(id_Energy_sum_persist))
          {
            float delta =  x - id(id_Energy_sum_lastvalue);
            id(id_Energy_sum_persist) += delta;
            id(id_Energy_sum_lastvalue) = x;
          }
          else
          {
            id(id_Energy_sum_persist) = x;
          }
          return id(id_Energy_sum_persist);

#第一路
  - platform: copy
    name: 'Energy_1'
    id: Energy_1_persist
    source_id: Energy_1
    filters:
      - lambda: |-
          if(id(id_Energy_1_lastvalue) == 0.0  )
          {
            id(id_Energy_1_lastvalue) = id(Energy_1).state;
          }
          if(x < id(id_Energy_1_persist))
          {
            float delta =  x - id(id_Energy_1_lastvalue);
            id(id_Energy_1_persist) += delta;
            id(id_Energy_1_lastvalue) = x;
          }
          else
          {
            id(id_Energy_1_persist) = x;
          }
          return id(id_Energy_1_persist);



#第二路
  - platform: copy
    name: 'Energy_2'
    id: Energy_2_persist
    source_id: Energy_2
    filters:
      - lambda: |-

          if(id(id_Energy_2_lastvalue) == 0.0  )
          {
            id(id_Energy_2_lastvalue) = id(Energy_2).state;
          }      

          if(x < id(id_Energy_2_persist))
          {
            float delta =  x - id(id_Energy_2_lastvalue);
            id(id_Energy_2_persist) += delta;
            id(id_Energy_2_lastvalue) = x;
          }
          else
          {
            id(id_Energy_2_persist) = x;
          }
          return id(id_Energy_2_persist);

#第三路
  - platform: copy
    name: 'Energy_3'
    id: Energy_3_persist
    source_id: Energy_3
    filters:
      - lambda: |-

          if(id(id_Energy_3_lastvalue) == 0.0  )
          {
            id(id_Energy_3_lastvalue) = id(Energy_3).state;
          }


          if(x < id(id_Energy_3_persist))
          {
            float delta =  x - id(id_Energy_3_lastvalue);
            id(id_Energy_3_persist) += delta;
            id(id_Energy_3_lastvalue) = x;
          }
          else
          {
            id(id_Energy_3_persist) = x;
          }
          return id(id_Energy_3_persist);                    



#第四路
  - platform: copy
    name: 'Energy_4'
    id: Energy_4_persist
    source_id: Energy_4
    filters:
      - lambda: |-

          if(id(id_Energy_4_lastvalue) == 0.0  )
          {
            id(id_Energy_4_lastvalue) = id(Energy_4).state;
          }

          if(x < id(id_Energy_4_persist))
          {
            float delta =  x - id(id_Energy_4_lastvalue);
            id(id_Energy_4_persist) += delta;
            id(id_Energy_4_lastvalue) = x;
          }
          else
          {
            id(id_Energy_4_persist) = x;
          }
          return id(id_Energy_4_persist);

#第五路
  - platform: copy
    name: 'Energy_5'
    id: Energy_5_persist
    source_id: Energy_5
    filters:
      - lambda: |-

          if(id(id_Energy_5_lastvalue) == 0.0  )
          {
            id(id_Energy_5_lastvalue) = id(Energy_5).state;
          }


          if(x < id(id_Energy_5_persist))
          {
            float delta =  x - id(id_Energy_5_lastvalue);
            id(id_Energy_5_persist) += delta;
            id(id_Energy_5_lastvalue) = x;
          }
          else
          {
            id(id_Energy_5_persist) = x;
          }
          return id(id_Energy_5_persist);


#第六路
  - platform: copy
    name: 'Energy_6'
    id: Energy_6_persist
    source_id: Energy_6
    filters:
      - lambda: |-
          if(id(id_Energy_6_lastvalue) == 0.0  )
          {
            id(id_Energy_6_lastvalue) = id(Energy_6).state;
          }

          if(x < id(id_Energy_6_persist))
          {
            float delta =  x - id(id_Energy_6_lastvalue);
            id(id_Energy_6_persist) += delta;
            id(id_Energy_6_lastvalue) = x;
          }
          else
          {
            id(id_Energy_6_persist) = x;
          }
          return id(id_Energy_6_persist);         





#计量芯片的电度量计数器是内存存储的,断电会丢失,因此使用esp的全局变量存储电度量
globals:

#总电量  
  - id: id_Energy_sum_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_sum_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'

#第一路
  - id: id_Energy_1_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_1_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'


    #第二路

  - id: id_Energy_2_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_2_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'   

#第三路

  - id: id_Energy_3_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_3_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'   

#第四路
  - id: id_Energy_4_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_4_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'   

#第五路

  - id: id_Energy_5_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_5_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'   

#第六路
  - id: id_Energy_6_persist
    type: float
    restore_value: yes
    initial_value: '0.0'
  - id: id_Energy_6_lastvalue
    type: float
    restore_value: no
    initial_value: '0.0'   









回复

使用道具 举报

44

主题

1372

帖子

5774

积分

论坛元老

Rank: 8Rank: 8

积分
5774
金钱
4392
HASS币
40
发表于 2024-5-22 10:33:25 | 显示全部楼层
带实时年度阶梯电价和峰谷电统计的培正ESPHOME
https://bbs.hassbian.com/thread-24535-1-1.html
(出处: 『瀚思彼岸』» 智能家居技术论坛)
这个才是esphome终极用法,代码建议上传附件,不然缩进会有问题
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

118

主题

1758

帖子

5479

积分

元老级技术达人

积分
5479
金钱
3716
HASS币
30
发表于 2024-5-22 11:42:19 | 显示全部楼层
#计量芯片的电度量计数器是内存存储的,断电会丢失,因此使用esp的全局变量存储电度量
globals:


我也是培正模块,家里停电的时候,断电也没有丢失过数据,也没有加上楼主的这个代码,是因为计量模块的问题吗?我的模块可能是pzem-004T
回复

使用道具 举报

9

主题

157

帖子

1239

积分

金牌会员

Rank: 6Rank: 6

积分
1239
金钱
1082
HASS币
0
发表于 2024-5-23 15:23:29 | 显示全部楼层
看着我也想整一个了
回复

使用道具 举报

0

主题

25

帖子

92

积分

注册会员

Rank: 2

积分
92
金钱
67
HASS币
0
发表于 2024-5-31 10:02:39 | 显示全部楼层
大神利害,向大神学习
回复

使用道具 举报

8

主题

86

帖子

292

积分

中级会员

Rank: 3Rank: 3

积分
292
金钱
206
HASS币
0
发表于 2024-5-31 14:36:50 | 显示全部楼层
进来学习一下
回复

使用道具 举报

0

主题

25

帖子

92

积分

注册会员

Rank: 2

积分
92
金钱
67
HASS币
0
发表于 2024-6-7 14:13:01 | 显示全部楼层
复制,粘贴,代码,进去报错
回复

使用道具 举报

0

主题

25

帖子

92

积分

注册会员

Rank: 2

积分
92
金钱
67
HASS币
0
发表于 2024-6-7 14:18:49 | 显示全部楼层
复制,粘贴,代码,进去报错
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-6-16 15:43 , Processed in 0.364222 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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