81 lines
2.1 KiB
YAML
81 lines
2.1 KiB
YAML
blueprint:
|
|
name: Power Spike Logger
|
|
description: >
|
|
Logs significant power spikes (positive or negative) from an energy meter, typically used to identify when major appliances are turned on or off.
|
|
domain: automation
|
|
input:
|
|
phase1_power:
|
|
name: Phase 1 Power Sensor
|
|
selector:
|
|
entity:
|
|
domain: sensor
|
|
phase2_power:
|
|
name: Phase 2 Power Sensor
|
|
selector:
|
|
entity:
|
|
domain: sensor
|
|
total_power:
|
|
name: Total Power Sensor
|
|
selector:
|
|
entity:
|
|
domain: sensor
|
|
delta_power:
|
|
name: Power Delta Sensor
|
|
selector:
|
|
entity:
|
|
domain: sensor
|
|
spike_threshold:
|
|
name: Spike Threshold (W)
|
|
description: Minimum power change (positive or negative) to trigger logging
|
|
default: 1500
|
|
selector:
|
|
number:
|
|
min: 100
|
|
max: 10000
|
|
unit_of_measurement: W
|
|
mode: box
|
|
log_target:
|
|
name: Notification or Log Target
|
|
description: Where to send spike logs (e.g., notify.persistent_notification)
|
|
default: []
|
|
selector:
|
|
target:
|
|
entity:
|
|
domain: notify
|
|
|
|
trigger:
|
|
- platform: numeric_state
|
|
entity_id: !input delta_power
|
|
above: !input spike_threshold
|
|
- platform: template
|
|
value_template: >
|
|
{% set threshold = states('input_number.spike_threshold') | float(1500) %}
|
|
{% set delta = states(input('delta_power')) | float(0) %}
|
|
{{ delta < (0 - threshold) }}
|
|
|
|
condition:
|
|
- condition: template
|
|
value_template: >
|
|
{{ states(input('total_power')) | float(0) > 1000 }}
|
|
|
|
variables:
|
|
phase1: "{{ states(input('phase1_power')) }}"
|
|
phase2: "{{ states(input('phase2_power')) }}"
|
|
total: "{{ states(input('total_power')) }}"
|
|
delta: "{{ states(input('delta_power')) }}"
|
|
time: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
|
|
|
|
action:
|
|
- service: notify.persistent_notification
|
|
data:
|
|
title: "Power Spike Detected"
|
|
message: >
|
|
Power spike at {{ time }}:\n
|
|
Phase 1: {{ phase1 }} W\n
|
|
Phase 2: {{ phase2 }} W\n
|
|
Total: {{ total }} W\n
|
|
Δ: {{ delta }} W
|
|
|
|
mode: queued
|
|
|