Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Requirements:
- # - One or more Sessy devices
- # - PimDoos' Sessy integration https://github.com/PimDoos/ha-sessy
- # - nordpool integration
- # - TheFes' variables sensor https://community.home-assistant.io/t/wth-cant-input-helpers-be-read-only-in-ui/467562/13
- # - Adding the correct entity_id's in the # CHANGE_ME blocks near the bottom.
- automation:
- - id: "sessy_battery_control"
- alias: "Sessy battery control"
- description: ""
- trigger:
- - platform: time_pattern
- hours: "*"
- minutes: "0"
- seconds: "10"
- condition: []
- action:
- choose:
- - conditions:
- - condition: template
- value_template: "{{ is_state('binary_sensor.sessy_cheapest_hours_night', 'on') }}"
- sequence:
- - service: script.sessy_start_charge
- - conditions:
- - condition: template
- value_template: "{{ is_state('binary_sensor.sessy_cheapest_hours_day', 'on') }}"
- sequence:
- - service: script.sessy_start_charge
- - conditions:
- - condition: template
- value_template: "{{ states('sensor.nordpool') | float > ( state_attr('sensor.variables', 'variables').sessy_battery_control_stored_price | float * 1.20 ) }}"
- sequence:
- - event: set_variable
- event_data:
- key: sessy_desired_strategy
- value: nom
- - service: script.sessy_set_strategy
- default:
- - event: set_variable
- event_data:
- key: sessy_desired_strategy
- value: idle
- - service: script.sessy_set_strategy
- template:
- - binary_sensor:
- - name: "Sessy cheapest hours night"
- unique_id: sessy_cheapest_hours_night
- state: >-
- {% set night=state_attr( 'sensor.nordpool', 'raw_today')[:12] |sort(attribute='value') %}
- {{ (now() >= night[0].start and now() <= night[0].end)
- or (now() >= night[1].start and now() <= night[1].end)
- or (now() >= night[2].start and now() <= night[2].end) }}
- - binary_sensor:
- - name: "Sessy cheapest hours day"
- unique_id: sessy_cheapest_hours_day
- state: >-
- {% set day=state_attr( 'sensor.nordpool', 'raw_today')[12:] |sort(attribute='value') %}
- {{ (now() >= day[0].start and now() <= day[0].end)
- or (now() >= day[1].start and now() <= day[1].end)
- or (now() >= day[2].start and now() <= day[2].end) }}
- script:
- sessy_start_charge:
- sequence:
- - event: set_variable
- event_data:
- key: sessy_desired_strategy
- value: api
- - service: script.sessy_set_strategy
- - delay:
- hours: 0
- minutes: 0
- seconds: 5
- milliseconds: 0
- - event: set_variable
- event_data:
- key: sessy_desired_setpoint
- value: "-1700"
- - service: script.sessy_set_setpoint
- - event: set_variable
- event_data:
- key: sessy_battery_control_stored_price
- value: "{{ states('sensor.nordpool') | float(3) }}"
- sessy_reset_last_charge_price:
- sequence:
- - event: set_variable
- event_data:
- key: sessy_battery_control_stored_price
- value: 0.172
- sessy_set_strategy:
- sequence:
- - service: select.select_option
- data:
- option: "{{ state_attr('sensor.variables', 'variables').sessy_desired_strategy }}"
- target:
- entity_id:
- # CHANGE_ME
- - select.sessy_xxxx_power_strategy
- - select.sessy_yyyy_power_strategy
- sessy_set_setpoint:
- sequence:
- - service: number.set_value
- data:
- value: "{{ state_attr('sensor.variables', 'variables').sessy_desired_setpoint }}"
- target:
- entity_id:
- # CHANGE_ME
- - number.sessy_xxxx_power_setpoint
- - number.sessy_yyyy_power_setpoint
Advertisement
Add Comment
Please, Sign In to add comment