-
-
Save Seafo/729e033d1f5f907697288ccc6ad7f395 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Home Assistant kod för att hantera effekttoppar i Ellevios nät | |
| # Koden kommer till största del från bloggen: https://www.ontour.ollivergarden.se/berakna-effekttaxta-enl-ellevio-i-homeassistant/ | |
| # Där finns en utförlig beskrivning av kod och logik. Läs! | |
| # Utöver logiken som bekrivs av Tobias i bloggen har jag även skapat: | |
| # sensor.estimated_hourly_consumption, input_number.effektgransvarde, samt en notifierings vid risk att överstiga nuvarnde effekttop | |
| # Viktigt! sensor.timmkonsumption behöver bytas ut till din egen sensor från tex Tibber etc | |
| #5 input.numbers: | |
| input_number.hus_daglig_maxeffekt | |
| input_number.effektgransvarde | |
| input_number.hus_top1 | |
| input_number.hus_top2 | |
| input_number.hus_top3 | |
| # Tre Sensorer (Helpers/Template/Template as a Sensor/State template) | |
| sensor.estimated_hourly_consumption: | |
| {% set current_energy = states('sensor.timmkonsumption') | float(0) %} | |
| {% set elapsed_minutes = now().minute + now().second / 60 %} | |
| {% if elapsed_minutes > 0 %} | |
| {{ (current_energy / elapsed_minutes) |round(3) * 60 }} | |
| {% else %} | |
| 0 | |
| {% endif %} | |
| sensor.hus_justerad_effekttimme: | |
| {% set current_time = now().hour %} | |
| {% set power = states('sensor.timmkonsumption') | float(0) %} | |
| {% if current_time >= 22 or current_time < 6 %} | |
| {{ power / 2 }} | |
| {% else %} | |
| {{ power}} | |
| {% endif %} | |
| sensor.hus_medel_effekttoppar: | |
| {% set top1 = states('input_number.hus_top1') | float(0) %} | |
| {% set top2 = states('input_number.hus_top2') | float(0) %} | |
| {% set top3 = states('input_number.hus_top3') | float(0) %} | |
| {{ (top1 + top2 + top3) / 3 }} | |
| # Sex stycken automationer | |
| # 1. Uppdatera dagligt maxvärde - Vid varje timmes slut jämfärs nuvarande timme med dagens högsta topp | |
| # 2. Uppdatera månadstoppvärden - Vid midnatt jämförs dagens högsta topp med de tre högsta månadstopparna | |
| # 3. Uppdatera Effektgränsvärde - Vid midnatt sätts Effektgränsvärde till den tredje högts månadstoppen om det inte är första veckan i månaden för då används förra månadens top3 istället | |
| # 4. Återställ dagligt maxvärde - Vid midnatt nollställs dagens maxtopp | |
| # 5. Återställ månatligt toppvärde - Vid ny månad nollställs topparna | |
| # 6. 'Notifikation - hög effekt' - Jämför Effektgränsvärdet med estimerade energianvändningen för nuvarande timme och skickar en varning. | |
| - id: '1735228987466' | |
| alias: Uppdatera dagligt maxvärde | |
| description: '' | |
| triggers: | |
| - minutes: '59' | |
| trigger: time_pattern | |
| seconds: '55' | |
| conditions: [] | |
| actions: | |
| - variables: | |
| current_power: '{{ states(''sensor.hus_justerad_effekttimme'') | float(0) }}' | |
| current_max: '{{ states(''input_number.hus_daglig_maxeffekt'') | float(0) }}' | |
| - choose: | |
| - conditions: | |
| - condition: template | |
| value_template: '{{ current_power > current_max }}' | |
| sequence: | |
| - data: | |
| entity_id: input_number.hus_daglig_maxeffekt | |
| value: '{{ current_power }}' | |
| action: input_number.set_value | |
| mode: single | |
| - id: '1735229247312' | |
| alias: Uppdatera månadstoppvärden | |
| description: '' | |
| triggers: | |
| - at: '23:59:59' | |
| trigger: time | |
| conditions: [] | |
| actions: | |
| - variables: | |
| dagens_topp: '{{ states(''input_number.hus_daglig_maxeffekt'') | float(0) }}' | |
| topp1: '{{ states(''input_number.hus_top1'') | float(0) }}' | |
| topp2: '{{ states(''input_number.hus_top2'') | float(0) }}' | |
| topp3: '{{ states(''input_number.hus_top3'') | float(0) }}' | |
| - choose: | |
| - conditions: | |
| - condition: template | |
| value_template: '{{ dagens_topp > topp1 }}' | |
| sequence: | |
| - data: | |
| entity_id: input_number.hus_top3 | |
| value: '{{ topp2 }}' | |
| action: input_number.set_value | |
| - data: | |
| entity_id: input_number.hus_top2 | |
| value: '{{ topp1 }}' | |
| action: input_number.set_value | |
| - data: | |
| entity_id: input_number.hus_top1 | |
| value: '{{ dagens_topp }}' | |
| action: input_number.set_value | |
| - conditions: | |
| - condition: template | |
| value_template: '{{ dagens_topp > topp2 }}' | |
| sequence: | |
| - data: | |
| entity_id: input_number.hus_top3 | |
| value: '{{ topp2 }}' | |
| action: input_number.set_value | |
| - data: | |
| entity_id: input_number.hus_top2 | |
| value: '{{ dagens_topp }}' | |
| action: input_number.set_value | |
| - conditions: | |
| - condition: template | |
| value_template: '{{ dagens_topp > topp3 }}' | |
| sequence: | |
| - data: | |
| entity_id: input_number.hus_top3 | |
| value: '{{ dagens_topp }}' | |
| action: input_number.set_value | |
| mode: single- id: '1735228878214' | |
| - id: '1735408411461' | |
| alias: Uppdatera Effektgränsvärde | |
| description: '' | |
| triggers: | |
| - trigger: time_pattern | |
| hours: '0' | |
| minutes: '01' | |
| conditions: | |
| - condition: template | |
| value_template: '{{now().day > 7 }}' | |
| actions: | |
| - action: input_number.set_value | |
| metadata: {} | |
| data: | |
| value: '{{ states(''input_number.hus_top3'') }}' | |
| target: | |
| entity_id: input_number.effektgransvarde | |
| mode: single | |
| alias: Återställ dagligt maxvärde | |
| description: '' | |
| triggers: | |
| - at: 00:00:05 | |
| trigger: time | |
| conditions: [] | |
| actions: | |
| - data: | |
| entity_id: input_number.hus_daglig_maxeffekt | |
| value: 0 | |
| action: input_number.set_value | |
| mode: single | |
| - id: '1735229313442' | |
| alias: Återställ månatligt toppvärde | |
| description: '' | |
| triggers: | |
| - at: 00:00:01 | |
| trigger: time | |
| conditions: | |
| - condition: template | |
| value_template: '{{ now().day == 1 }}' | |
| actions: | |
| - data: | |
| entity_id: input_number.hus_top1 | |
| value: 0 | |
| action: input_number.set_value | |
| - data: | |
| entity_id: input_number.hus_top2 | |
| value: 0 | |
| action: input_number.set_value | |
| - data: | |
| entity_id: input_number.hus_top3 | |
| value: 0 | |
| action: input_number.set_value | |
| mode: single | |
| - id: '1735453330342' | |
| alias: 'Notifikation - hög effekt' | |
| description: '' | |
| triggers: | |
| - trigger: time_pattern | |
| seconds: '55' | |
| conditions: | |
| - condition: template | |
| value_template: '{{ now().minute >= 20 }}' | |
| - condition: time | |
| after: 06:00:00 | |
| before: '22:00:00' | |
| actions: | |
| - if: | |
| - condition: numeric_state | |
| entity_id: sensor.estimated_hourly_consumption | |
| above: input_number.effektgransvarde | |
| - condition: numeric_state | |
| entity_id: sensor.estimated_hourly_consumption | |
| above: input_number.hus_daglig_maxeffekt | |
| then: | |
| - action: notify.mobile_app_pixel_8 | |
| metadata: {} | |
| data: | |
| message: 'Den estimerade förbrukningen för denna timme är {{ states(''sensor.estimated_hourly_consumption'') | |
| }} kWh. Den tredje högsta effektoppen är {{ states(''input_number.effektgransvarde'') | |
| }} ' | |
| - delay: | |
| hours: 0 | |
| minutes: 15 | |
| seconds: 0 | |
| mode: queued | |
| max: 10 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment