找回密码
 立即注册
搜索
查看: 7971|回复: 2

[技术探讨] sensor.template 有什么办法可以存储一个变量麽?

[复制链接]

35

主题

118

回帖

1078

积分

金牌会员

积分
1078
金钱
925
HASS币
10
发表于 2020-4-5 21:00:52 | 显示全部楼层 |阅读模式
  - platform: template
    sensors:
      dianliang:
        value_template: >
          {{states("sensor.ch_1_energy")|float + states("sensor.ch_2_energy")|float + states("sensor.ch_3_energy")|float | round(2)}}
        unit_of_measurement: "KWH"
        friendly_name: 三项总电量
        icon_template: mdi:chart-bar-stacked

utility_meter:
  energy:
    source: sensor.dianliang
    cycle: yearly

如上:是一个简单的把三项电的总电量加起来的传感器。。然后交给utility_meter处理电量信息。
但是观察发现。有时候sensor.ch_1_energy 或者其他两厢点没有得到数据。或者网络断开等原因。sensor.dianliang会得到一个0值或者小于一个之前提交的值。。会导致utility_meter出错。比如出现一次0值后在出现一次正常值。那么就会又累加一次电量

有没有什么方法可以让sensor.dianliang 这个传感器输出数值的时候检查一下。比如搞一个属性作为上次的值。然后本次的指需要和上次的值做比较。比上次小的就直接输出上次的值。

类似于
  - platform: template
    sensors:
      dianliang:
        value_template: >
          if(1+2+3 > 上次值)
              上次值 = 1+2+3;
          return 上次值
        unit_of_measurement: "KWH"
        friendly_name: 三项总电量
        icon_template: mdi:chart-bar-stacked
        附加属性:上次值



回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-6-28 15:13 , Processed in 0.256783 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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