家里装了充电桩,每次充完电之后,希望能推送一条信息到手机上,包含这一次用的电量和充的时间。用的是PZEM-004T和SONOFF。刚开始时,研究了很久不知道要怎么计算最后一次的使用电量,不知道如何查询数据库,后来想到一个临时的解决办法,就是再创建一个变量,在每次开始充电时,把上一次的总电量计下,待充电完毕,用现在的总电量减去上一次的总电量。然后充电时长也是这样设置了。不知道高手们有没有更容易的办法实现?
1.创新一个新变量,用于存上一次的总电量
sensor:
#最后一次使用的电量
- platform: template
sensors:
lastpowerused:
value_template: "{{ states('sensor.total') | float }}"
entity_id: []
unit_of_measurement: "KWH"
2.添加时间传感器
sensor:
#date and time
- platform: time_date
display_options:
- 'time'
- 'date'
- 'date_time'
- 'date_time_iso'
- 'time_date'
- 'time_utc'
- 'beat'
3.创建一个新变量,用于保存开始充电的时间
input_datetime:
both_date_and_time:
name: charger last start time
has_date: true
has_time: true
4.创建一个自动化,开始给车充电时,更新上一次的总电量,和开始充电的时间
- id: '1571735377783'
alias: start_chargering
description: 开始给车充电
trigger:
- entity_id: switch.charger_temp
for: 2s
from: 'off'
platform: state
to: 'on'
condition: []
action:
- data:
message: 开始给车充电
title: 充电桩
service: notify.ios_lijian_siphone
- data_template:
datetime: '{{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
entity_id: input_datetime.both_date_and_time
service: input_datetime.set_datetime
- data:
entity_id: sensor.lastpowerused
service: homeassistant.update_entity
5.创建一个自动化,冲电完毕之后,计划本次一共使用的电量和充电时间
- id: '1571045511519'
alias: charger-end
description: 充电完毕通知
trigger:
- entity_id: switch.charger_temp
for: 2s
from: 'on'
platform: state
to: 'off'
condition: []
action:
- data:
message: 充电完毕,一共充了{{ (states('sensor.total') |float() - states('sensor.lastpowerused')
| float()) | round(2) }}度电。用时{{ (as_timestamp(now()) - state_attr('input_datetime.both_date_and_time',
'timestamp')) | int() // 3600 }}:{{ (as_timestamp(now()) - state_attr('input_datetime.both_date_and_time',
'timestamp')) | int() // 60 % 60 }}。
title: 充电桩
service: notify.ios_lijian_siphone
|