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