[ { "id": "'5001'", "automation": "- id: '5001'\n alias: 5001 - Solax Zappi Octopus Control\n description: \"# 5001 - Solax Zappi Octopus Control\\nSee documentation in repo.\\n\\\n \\n# Initial installation instructions\\n1. This is 5001. You also need 5002 5003\\\n \\ 5004 and 5005 to make this work successfully. \\n\\n**Change Log**\\nv5.5.0 Added\\\n \\ 4 triggers for finished discharge just in case EV is connected during daily\\\n \\ discharge. Removed Option 4 as it was legacy\\nv5.4.1 Added new daily export\\\n \\ which works with pre-emptive\\nv5.3.0 Introducing safe switching of octopus_intelligent_smart_charge\\n\\\n v5.0 Refactor out account names\\nv3.8 Estimated time EV needs to charge based\\\n \\ on required % and registered EV size\\nv3.7 Pre-emptive discharge of solax before\\\n \\ EV charging option (when EV is connected)\\n Pre-emptive discharge before\\\n \\ 23:30 when EV is disconnected\\nv3.6 Min soc calculation updated in variables\\n\\\n v3.5 Variable for loops (to confirm solax commands have been applied should be\\\n \\ set to min of 3)\\nv3.4 Added condition to check if saving session is in progress\\n\\\n v3.3 Changed the logic slightly for setting SoC limits. Sometimes depending on\\\n \\ which mode is being set (self use or feed in) the inverter seems to randomly\\\n \\ reject the second service call. so I now set the first soc limit to match the\\\n \\ default return to mode.\\nv3.2 Added an input boolean switch to enable possibility\\\n \\ to check what kind of discharge is occurring when a manual discharge is occurring.\\n\\\n v3.0.4 Added a condition to prevent inverter reverting back to default if vehicle\\\n \\ was charging prior to a saving session starting.\\nv3.0.3 Added When Condition\\\n \\ to ensure inverter mode is reset to default mode when it's time to start charging\\\n \\ the solax battery.\\nv3.0.2 further fixes to 3.0.1\\nv3.0.1 Fixed issue that if\\\n \\ user plugs in during a saving session a charge could be initiated\\nv3.0.0 Allow\\\n \\ discharge battery before charging EV\\nv2.1.4.1 Spotted a potential bug if user\\\n \\ starts charge at 23:30 where it could clash with tail battery export\\nv2.1.4\\\n \\ Renamed automation\\nv2.1.3.1 fixed missing scenario where min_SoC would not\\\n \\ be set properly at 23:30 or if FAST charging was selected.\\nv2.1.3 More readable\\\n \\ notifications\\nv2.1.1 Update dispatch trigger for octopus dispatch from on to\\\n \\ off rather than just to off. false triggers when sensor is unavailable \\nv2.1\\\n \\ updated setting of modes and SoC's wrt rest sensor sensor.solax_rest_local_settings\\n\\\n v2.0 Remove legacy dev work\"\n triggers:\n - entity_id:\n - sensor.zappi_plug_status\n from: null\n to: Fault\n id: Zappi Fault\n trigger: state\n - entity_id:\n - sensor.zappi_plug_status\n from: Charging\n to: EV Disconnected\n id: Charging to Disconnected\n trigger: state\n - entity_id:\n - sensor.zappi_plug_status\n from: EV Connected\n to: EV Disconnected\n id: Connected to Disconnected\n trigger: state\n - entity_id:\n - sensor.zappi_plug_status\n from: Charging\n to: EV Connected\n id: Paused EV Charging\n trigger: state\n for:\n hours: 0\n minutes: 1\n seconds: 0\n - entity_id:\n - sensor.zappi_plug_status\n from: Waiting for EV\n to: EV Connected\n id: Paused EV Charging\n trigger: state\n for:\n hours: 0\n minutes: 10\n seconds: 0\n - entity_id:\n - sensor.zappi_plug_status\n from: EV Disconnected\n to: EV Connected\n id: Disconnected To Connected\n trigger: state\n for:\n hours: 0\n minutes: '{{states(''input_number.delay_when_ev_connected'')}}\n\n '\n seconds: 0\n - entity_id:\n - sensor.zappi_plug_status\n from: Fault\n to: Charging\n id: Charging0\n trigger: state\n - entity_id:\n - sensor.zappi_plug_status\n from: Waiting for EV\n to: Charging\n id: Charging1\n trigger: state\n - entity_id:\n - sensor.zappi_plug_status\n to: Charging\n id: Charging2\n from: EV Connected\n trigger: state\n - at: sensor.pre_export_battery_before_charging_ev_time\n id: Time to Start Charging\n trigger: time\n - at: sensor.ev_start_time\n id: Time to Start Charging\n trigger: time\n - at: sensor.pre_nightly_battery_export_time\n id: Solax Discharge Prior to 2330 START\n enabled: true\n trigger: time\n - trigger: time\n at: sensor.daily_battery_export_time_ev_disconnected\n id: Daily Export\n - at: '23:30:00'\n id: Discharge_battery_at_2330\n enabled: true\n trigger: time\n - trigger: state\n entity_id:\n - binary_sensor.solax_discharge_before_2330\n from: 'on'\n to: 'off'\n id: Solax Discharge Prior to 2330 END\n enabled: false\n - trigger: state\n entity_id:\n - binary_sensor.solax_discharge_before_2330\n to: 'off'\n from: 'on'\n id: finish discharge\n for:\n hours: 0\n minutes: 2\n seconds: 0\n - entity_id:\n - binary_sensor.octopus_intelligent_dispatching\n to: 'off'\n id: Peak Rate\n trigger: state\n from: 'on'\n - entity_id:\n - select.zappi_charge_mode\n to: Fast\n id: Fast_unknown\n trigger: state\n - entity_id:\n - select.zappi_charge_mode\n for:\n hours: 0\n minutes: '{{(state_attr(''input_datetime.solax_stop_charge_2'', ''timestamp'')/60-state_attr(''input_datetime.solax_start_charge_2'',\n ''timestamp'')/60)|int (default = 60)}}'\n seconds: 0\n to: Fast\n id: Fast\n trigger: state\n - entity_id:\n - input_button.solax_force_discharge\n id: ForceDischarge\n trigger: state\n - entity_id:\n - input_button.solax_stop_discharge\n id: StopForceDischarge\n trigger: state\n - trigger: state\n entity_id:\n - input_boolean.octopus_schedule_anytime\n to: 'on'\n id: Allow Octopus to Determine Schedule\n - trigger: state\n entity_id:\n - input_boolean.solar_export_priority\n to: 'on'\n id: Only allow EV charging after sunset\n - trigger: state\n entity_id:\n - input_boolean.use_clever_time\n to: 'on'\n id: use clever time\n - trigger: state\n entity_id:\n - input_boolean.use_fixed_time\n to: 'on'\n id: use fixed time\n - trigger: state\n entity_id:\n - input_boolean.ev_solax_battery_drain\n - input_boolean.use_grid_during_octopus_dispatch\n id: Battery usage options\n - entity_id:\n - sensor.solax_local_battery_soc\n below: input_number.solax_default_discharge_limit_soc\n for:\n hours: 0\n minutes: 1\n seconds: 1\n id: Battery at min SoC\n trigger: numeric_state\n value_template: '{{ state.state | float(0) - 1 }}'\n - trigger: time\n at:\n entity_id: sensor.octopus_intelligent_target_time\n offset: '120'\n id: Dispatch Finished\n - trigger: state\n entity_id:\n - input_boolean.zappi_eco_always\n for:\n hours: 0\n minutes: 0\n seconds: 30\n id: Zappi eco mode\n - trigger: state\n entity_id:\n - sensor.solax_local_manual_mode_behaviour\n to: Do Nothing\n for:\n hours: 0\n minutes: 3\n seconds: 0\n id: Check Discharge Mode\n from: Force Discharge\n enabled: true\n - trigger: time\n at:\n entity_id: input_datetime.solax_battery_start_charge_time\n offset: '-300'\n id: Charge Solax\n - trigger: time\n at: sensor.solax_local_battery_setting_stop_charge_2\n id: Charge Period 2 End\n - trigger: state\n entity_id:\n - binary_sensor.solax_discharge_before_ev_charge\n from: 'on'\n to: 'off'\n id: Solax Discharge Prior to EV\n - trigger: state\n entity_id:\n - number.octopus_intelligent_charge_target\n id: charge target\n for:\n hours: 0\n minutes: 1\n seconds: 0\n - trigger: state\n entity_id:\n - binary_sensor.solax_local_battery_charging_period\n id: Solax charging from grid\n for:\n hours: 0\n minutes: 0\n seconds: 59\n from: 'on'\n to: 'off'\n - trigger: state\n entity_id:\n - binary_sensor.solax_local_battery_charging_period\n id: Solax charging from grid\n for:\n hours: 0\n minutes: 0\n seconds: 59\n from: 'off'\n to: 'on'\n - trigger: state\n entity_id:\n - binary_sensor.solax_discharge_daily\n to: 'off'\n from: 'on'\n id: finish discharge\n for:\n hours: 0\n minutes: 2\n seconds: 0\n - trigger: state\n entity_id:\n - binary_sensor.solax_discharge_daily_prior\n to: 'off'\n from: 'on'\n id: finish discharge\n for:\n hours: 0\n minutes: 2\n seconds: 0\n - trigger: state\n entity_id:\n - binary_sensor.solax_discharge_nightly\n to: 'off'\n from: 'on'\n id: finish discharge\n for:\n hours: 0\n minutes: 2\n seconds: 0\n conditions: []\n actions:\n - choose:\n - conditions:\n - condition: trigger\n id:\n - Allow Octopus to Determine Schedule\n sequence:\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id:\n - input_boolean.solar_export_priority\n - input_boolean.use_clever_time\n - input_boolean.use_fixed_time\n - conditions:\n - condition: trigger\n id:\n - Only allow EV charging after sunset\n sequence:\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id:\n - input_boolean.octopus_schedule_anytime\n - input_boolean.use_clever_time\n - input_boolean.use_fixed_time\n - conditions:\n - condition: trigger\n id:\n - use clever time\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.use_clever_time\n state: 'on'\n then:\n - action: input_datetime.set_datetime\n data_template:\n entity_id: input_datetime.don_t_charge_ev_before_time\n time: '{{ states(''sensor.calculated_ev_charge_start_time'')}}\n\n '\n enabled: false\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id:\n - input_boolean.solar_export_priority\n - input_boolean.octopus_schedule_anytime\n - input_boolean.use_fixed_time\n - conditions:\n - condition: trigger\n id:\n - use fixed time\n sequence:\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id:\n - input_boolean.solar_export_priority\n - input_boolean.octopus_schedule_anytime\n - input_boolean.use_clever_time\n enabled: true\n - condition: not\n conditions:\n - condition: or\n conditions:\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Discharge_battery_at_2330\n - condition: or\n conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Charging\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Waiting for EV\n - condition: state\n entity_id: sensor.solax_local_manual_mode_behaviour\n state: Force Discharge\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Solax Discharge Prior to 2330 START\n - condition: or\n conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Charging\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Waiting for EV\n - condition: state\n entity_id: sensor.solax_local_manual_mode_behaviour\n state: Force Discharge\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Time to Start Charging\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Disconnected\n - condition: trigger\n id:\n - Only allow EV charging after sunset\n - use clever time\n - use fixed time\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Allow Octopus to Determine Schedule\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Charging\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Battery usage options\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Charging\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'on'\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Time to Start Charging\n - condition: state\n entity_id: switch.octopus_intelligent_smart_charge\n state: 'on'\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Solax Discharge Prior to EV\n - condition: state\n entity_id: switch.octopus_intelligent_smart_charge\n state: 'on'\n - condition: and\n conditions:\n - condition: trigger\n id:\n - Check Discharge Mode\n - condition: template\n value_template: '{{states(''sensor.solax_local_inverter_mode'')!= \"Manual\"}}'\n - condition: template\n value_template: '{{now()|as_timestamp-states(''sensor.uptime'')|as_timestamp>80}}\n\n '\n - variables:\n default_mode: '{{states(''sensor.solax_default_operation_mode'')|int}}\n\n '\n min_soc: \"{% set ev_charging = is_state('sensor.zappi_plug_status','Charging')\\\n \\ %} {% set dispatch_on = is_state('binary_sensor.octopus_intelligent_dispatching','on')\\\n \\ %} {% set use_grid = is_state('input_boolean.use_grid_during_octopus_dispatch','on')\\\n \\ %} {% set prevent_ev_drain = is_state('input_boolean.ev_solax_battery_drain','on')\\\n \\ %} {% set default_soc = states('input_number.solax_default_discharge_limit_soc')|int\\\n \\ %} {% set current_soc = states('sensor.solax_local_battery_soc')|int %}\\\n \\ {% set smart_charge = is_state('switch.octopus_intelligent_smart_charge','on')\\\n \\ %}\\n{# ===============================================================\\n\\\n \\ min_soc decision rules\\n\\n Special triggers:\\n - Discharge_battery_at_2330,\\\n \\ Fast_unknown:\\n → If prevent_ev_drain and (not charging OR use_grid):\\\n \\ hold current SoC\\n → Else: default_soc\\n\\n Charging period (binary_sensor.solax_local_battery_charging_period\\\n \\ = on):\\n → Always default_soc\\n\\n Charging→Disconnected transition\\\n \\ (05:30–23:30):\\n → Always default_soc\\n\\n NEW: Daytime dispatch exception\\\n \\ (05:30–23:30):\\n - If dispatch_on = true AND smart_charge = off:\\n \\\n \\ → Force default_soc\\n\\n Normal conditions:\\n EV charging:\\n\\\n \\ - If prevent_ev_drain OR use_grid: hold current SoC\\n - Else:\\\n \\ default_soc\\n\\n EV not charging:\\n - If dispatch_on AND prevent_ev_drain\\\n \\ AND use_grid: hold current SoC\\n - Else: default_soc\\n\\n Summary:\\n\\\n \\ → Two possible outputs: current_soc (discharge blocked) OR default_soc\\\n \\ (discharge allowed)\\n ===============================================================\\\n \\ #}\\n\\n{# --- Special triggers override everything --- #} {% if trigger.id\\\n \\ in ['Discharge_battery_at_2330', 'Fast_unknown'] %}\\n {% if prevent_ev_drain\\\n \\ and (not ev_charging or use_grid) %}\\n {{ current_soc }}\\n {% else %}\\n\\\n \\ {{ default_soc }}\\n {% endif %}\\n\\n{# --- Local battery charging period\\\n \\ → always allow discharge --- #} {% elif is_state('binary_sensor.solax_local_battery_charging_period','on')\\\n \\ %}\\n {{ default_soc }}\\n\\n{# --- Daytime Charging→Disconnected transition\\\n \\ → allow discharge --- #} {% elif trigger.id == 'Charging to Disconnected'\\n\\\n \\ and now() > today_at(\\\"05:30\\\") and now() < today_at(\\\"23:30\\\") %}\\n\\\n \\ {{ default_soc }}\\n\\n{# --- NEW: Daytime dispatch, Smart Charge OFF → force\\\n \\ default discharge --- #} {% elif dispatch_on and not smart_charge\\n \\\n \\ and now() > today_at(\\\"05:30\\\") and now() < today_at(\\\"23:30\\\") %}\\n {{\\\n \\ default_soc }}\\n\\n{# --- Normal conditions --- #} {% else %}\\n {% if ev_charging\\\n \\ %}\\n {% if prevent_ev_drain or use_grid %}\\n {{ current_soc }}\\n\\\n \\ {% else %}\\n {{ default_soc }}\\n {% endif %}\\n {% else %}\\n\\\n \\ {% if dispatch_on and prevent_ev_drain and use_grid %}\\n {{ current_soc\\\n \\ }}\\n {% else %}\\n {{ default_soc }}\\n {% endif %}\\n {% endif\\\n \\ %}\\n{% endif %}\\n\"\n - action: input_boolean.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n enabled: true\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n selfuse_battery_min_soc: '{{min_soc}}'\n feedin_battery_min_soc: '{{min_soc}}'\n - choose:\n - conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: Charging\n - condition: state\n entity_id: select.zappi_charge_mode\n state: Eco+\n - condition: trigger\n id:\n - Charging0\n - Charging1\n - Charging2\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: EV started charging @ {{now().strftime('%H:%M')}}.\n title: EV Charging Started\n class: normal\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Paused EV Charging\n sequence:\n - event: Solax Zappi Octopus Control\n event_data:\n message: EV paused charging @ {{now().strftime('%H:%M')}}. Zappi charge\n session {{states('sensor.zappi_charge_added_session')}}kWh.\n title: Octopus Paused Charging.\n class: normal\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Disconnected To Connected\n - Time to Start Charging\n - Allow Octopus to Determine Schedule\n - Solax Discharge Prior to EV\n - finish discharge\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Connected\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n enabled: false\n - condition: template\n value_template: '{{ states(''sensor.solax_local_inverter_mode'') != ''Manual''\n }}'\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.zappi_eco_always\n state: 'on'\n then:\n - action: select.select_option\n data:\n option: Eco+\n target:\n entity_id: select.zappi_charge_mode\n else:\n - action: select.select_option\n data:\n option: Stopped\n target:\n entity_id: select.zappi_charge_mode\n - choose:\n - conditions:\n - condition: or\n conditions:\n - condition: state\n entity_id: binary_sensor.solax_battery_export_before_ev_charge_allowed\n state: 'off'\n - condition: template\n value_template: '{{ trigger.id == \"Solax Discharge Prior to EV\" and\n now()|as_timestamp >= states(''sensor.ev_start_time'')|as_timestamp\n }}\n\n '\n sequence:\n - if:\n - condition: or\n conditions:\n - condition: time\n after: sensor.ev_start_time\n before: sensor.octopus_intelligent_target_time\n then:\n - metadata: {}\n data:\n option: Eco+\n target:\n entity_id: select.zappi_charge_mode\n action: select.select_option\n - action: script.safe_switch_toggle\n metadata: {}\n data:\n target_switch: switch.octopus_intelligent_smart_charge\n desired_state: 'on'\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - if:\n - condition: not\n conditions:\n - condition: trigger\n id:\n - Time to Start Charging\n then:\n - event: Solax Zappi Octopus Control\n event_data:\n message: EV Connected @ {{(states('sensor.zappi_last_connected')|as_datetime|as_local).strftime(\"%H:%M\")}}.Getting\n shedule at {%if now()|as_timestamp > states('sensor.ev_start_time')|as_timestamp%}\n {{now().strftime('%H:%M')}} {% else %} {{(states('sensor.ev_start_time')|as_datetime).strftime('%H:%M')}}.\n {% endif %}\n title: EV Connected - Waiting for Octopus schedule\n class: normal\n enabled: true\n - conditions:\n - condition: state\n entity_id: binary_sensor.solax_battery_export_before_ev_charge_allowed\n state: 'on'\n sequence:\n - if:\n - condition: or\n conditions:\n - condition: template\n value_template: '{{now()|as_timestamp>=([states(''sensor.ev_start_time''),states(''sensor.pre_export_battery_before_charging_ev_time'')]|min)|as_timestamp\n and now()|as_timestamp <=states(''sensor.octopus_intelligent_target_time'')|as_timestamp}}'\n then:\n - event: solax_discharge\n event_data:\n battery_discharge: discharge before EV charge\n enabled: true\n - if:\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n above: input_number.solax_discharge_limit_soc_before_ev\n value_template: '{{ state.state | float(0) - 9 }}'\n then:\n - action: select.select_option\n metadata: {}\n data:\n option: Stopped\n target:\n entity_id: select.zappi_charge_mode\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: 2\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Solax discharging to {{states(''input_number.solax_discharge_limit_soc_before_ev'')|int}}%\n before charging EV. EV Connected @ {{(states(''sensor.zappi_last_connected'')|as_datetime|as_local).strftime(\"%H:%M\")}}. '\n title: Pre Discharge\n class: normal\n enabled: true\n else:\n - if:\n - condition: template\n value_template: ' {{now()|as_timestamp >= states(''sensor.ev_start_time'')|as_timestamp}}'\n then:\n - wait_template: '{{states(''binary_sensor.solax_discharge_before_ev_charge'')==true}}'\n continue_on_timeout: true\n timeout: '5'\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - wait_template: '{{states(''binary_sensor.solax_discharge_before_ev_charge'')==false}}'\n continue_on_timeout: true\n timeout: '5'\n - if:\n - condition: state\n entity_id: binary_sensor.solax_discharge_before_ev_charge\n state: 'off'\n for:\n hours: 0\n minutes: 5\n seconds: 0\n then:\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'EV Connected @ {{(states(''sensor.zappi_last_connected'')|as_datetime|as_local).strftime(\"%H:%M\")}}.\n Solax Battery will attempt to discharge at {%if now()|as_timestamp<=([states(''sensor.ev_start_time''),states(''sensor.pre_export_battery_before_charging_ev_time'')]|min)|as_timestamp\n -%}{{(([states(''sensor.ev_start_time''),states(''sensor.pre_export_battery_before_charging_ev_time'')]|min)|as_datetime|as_local).strftime(\"%H:%M\")}}{%-else\n %} {{now().strftime(''%H:%M'')}}{%-endif %} prior to getting a schedule\n from octopus. '\n title: EV Connected - Waiting for Solax to Discharge Before Getting\n Octopus Schedule\n class: normal\n enabled: true\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Connected to Disconnected\n - Charging to Disconnected\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.zappi_eco_always\n state: 'on'\n then:\n - action: select.select_option\n metadata: {}\n data:\n option: Eco+\n target:\n entity_id: select.zappi_charge_mode\n else:\n - action: select.select_option\n metadata: {}\n data:\n option: Stopped\n target:\n entity_id: select.zappi_charge_mode\n - metadata: {}\n data: {}\n target:\n entity_id: switch.octopus_intelligent_smart_charge\n action: switch.turn_off\n enabled: false\n - action: script.safe_switch_toggle\n metadata: {}\n data:\n target_switch: switch.octopus_intelligent_smart_charge\n desired_state: 'off'\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: EV disconnected @ {{now().strftime('%H:%M')}}\n title: EV Disconnected\n class: normal\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Zappi Fault\n sequence:\n - event: Solax Zappi Octopus Control\n event_data:\n message: ZAPPI FAULT @ {{now().strftime('%H:%M')}}. Go outside and follow\n instructions on charger\n title: ZAPPI FAULT\n class: high\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Fast\n sequence:\n - metadata: {}\n data:\n option: Stopped\n target:\n entity_id: select.zappi_charge_mode\n action: select.select_option\n - event: Solax Zappi Octopus Control\n event_data:\n message: EV started BOOST charging @ {{now().strftime('%H:%M')}}. Rate =\n {{states('select.daily_grid_import')}}\n title: EV FAST Charging Started\n class: normal\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - ForceDischarge\n - condition: template\n value_template: '{{(state_attr(''sensor.solax_local_settings'', ''Data'')[10]\n != 3)}}'\n sequence:\n - if:\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n above: input_number.solax_manual_forced_discharge_limit_soc\n value_template: '{{ state.state | float(0) - 9 }}'\n then:\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: 2\n - event: Solax Zappi Octopus Control\n event_data:\n message: Manual Discharge @ {{now().strftime('%H:%M')}}\n title: Manual Discharge Started\n class: normal\n enabled: true\n - action: input_boolean.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.export_battery_manual\n - conditions:\n - condition: trigger\n id:\n - StopForceDischarge\n - condition: template\n value_template: '{{(state_attr(''sensor.solax_local_settings'', ''Data'')[10]\n == 3)}}'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: Manual Discharge Stopped @ {{now().strftime('%H:%M')}}\n title: Manual Discharge Stopped\n class: normal\n enabled: true\n - if:\n - condition: state\n entity_id: binary_sensor.solax_discharge_before_ev_charge\n state: 'on'\n then:\n - delay:\n hours: 0\n minutes: 1\n seconds: 0\n milliseconds: 0\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.export_battery_manual\n - conditions:\n - condition: trigger\n id:\n - Discharge_battery_at_2330\n - Solax Discharge Prior to 2330 START\n - condition: or\n conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Disconnected\n - condition: and\n conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Connected\n for:\n hours: 0\n minutes: 10\n seconds: 0\n - condition: template\n value_template: '{%if states(''input_boolean.octopus_schedule_anytime'')\n == on %}\n\n {{(now()|as_timestamp-states(''sensor.zappi_last_connected'')|as_timestamp)|abs\n > 15*60 and states(''select.zappi_charge_mode'') not in [''Eco'',''Eco+'',''Fast'']}}\n\n {%else%}\n\n {{(now()|as_timestamp-states(''sensor.pre_export_battery_before_charging_ev_time'')|as_timestamp)|abs\n > 15*60}}\n\n {%endif%}'\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.export_battery\n state: 'on'\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n value_template: '{{ state.state | float(0) - 9 }}'\n above: input_number.solax_nightly_discharge_limit_soc\n - condition: template\n value_template: '{{(state_attr(''sensor.solax_local_settings'', ''Data'')[10]\n != 3)}}'\n then:\n - choose:\n - conditions:\n - condition: state\n entity_id: input_boolean.pre_emptive_export_battery\n state: 'off'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: 2\n - event: solax_discharge\n event_data:\n battery_discharge: discharge nightly\n enabled: true\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Attempting Discharge @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Started\n class: normal\n enabled: true\n - conditions:\n - condition: state\n entity_id: input_boolean.pre_emptive_export_battery\n state: 'on'\n sequence:\n - event: solax_discharge\n event_data:\n battery_discharge: discharge before 2330\n enabled: true\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: 2\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Attempting Discharge @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Started\n class: normal\n enabled: true\n else:\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Cheap Rate @ {{now().strftime(''%H:%M'')}}. '\n title: Cheap Rate\n class: normal\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Peak Rate\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: Peak Rate @ {{now().strftime('%H:%M')}}\n title: Peak Rate\n class: normal\n - conditions:\n - condition: trigger\n id:\n - Battery at min SoC\n - condition: state\n entity_id: binary_sensor.octopus_intelligent_dispatching\n state: 'off'\n sequence:\n - event: Solax Zappi Octopus Control\n event_data:\n message: Battery close to min SoC {{now().strftime('%H:%M')}}. {{states('sensor.solax_local_battery_soc')}}%\n title: Battery Flat\n class: high\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Dispatch Finished\n - condition: numeric_state\n entity_id: sensor.octopus_total_planned_dispatch\n below: 1\n enabled: false\n sequence:\n - action: switch.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: switch.octopus_intelligent_smart_charge\n enabled: false\n - action: script.safe_switch_toggle\n metadata: {}\n data:\n target_switch: switch.octopus_intelligent_smart_charge\n desired_state: 'off'\n - if:\n - condition: state\n entity_id: input_boolean.zappi_eco_always\n state: 'on'\n then:\n - action: select.select_option\n metadata: {}\n data:\n option: Eco+\n target:\n entity_id: select.zappi_charge_mode\n else:\n - action: select.select_option\n metadata: {}\n data:\n option: Stopped\n target:\n entity_id: select.zappi_charge_mode\n - conditions:\n - condition: trigger\n id:\n - Zappi eco mode\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Connected\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.zappi_eco_always\n state: 'on'\n then:\n - action: select.select_option\n metadata: {}\n data:\n option: Eco+\n target:\n entity_id: select.zappi_charge_mode\n else:\n - action: select.select_option\n metadata: {}\n data:\n option: Stopped\n target:\n entity_id: select.zappi_charge_mode\n - conditions:\n - condition: state\n entity_id: sensor.solax_local_inverter_mode\n state: Manual\n for:\n hours: 0\n minutes: 2\n seconds: 0\n - condition: time\n after: '23:30:00'\n before: input_datetime.solax_battery_start_charge_time\n enabled: false\n - condition: or\n conditions:\n - condition: state\n entity_id: input_boolean.export_battery\n state: 'on'\n - condition: state\n entity_id: binary_sensor.solax_discharge_before_ev_charge\n state: 'on'\n - condition: template\n value_template: '{{(states(''sensor.solax_local_manual_mode_behaviour'')\n == \"Do Nothing\")}}'\n - condition: trigger\n id:\n - Check Discharge Mode\n sequence:\n - if:\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n value_template: '{{ state.state | float(0) - 9 }}'\n above: input_number.solax_manual_forced_discharge_limit_soc\n then:\n - event: Solax Zappi Octopus Control\n event_data:\n message: Manual discharge failure @ {{now().strftime('%H:%M')}}. Setting\n modes issue. Attempting to recover.\n title: Manual Discharge Failure\n class: high\n enabled: true\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: 2\n else:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - conditions:\n - condition: trigger\n id:\n - Charge Solax\n - condition: template\n value_template: '{{ (state_attr(''sensor.solax_local_settings'', ''Data'')[10]|int\n != states(''sensor.solax_default_operation_mode'')|int) }}'\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - conditions:\n - condition: trigger\n id:\n - Charge Period 2 End\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n - condition: template\n value_template: '{{states(''sensor.solax_local_battery_chd2_enabled'')|bool==true}}'\n sequence:\n - data:\n enabled: '{{ 0 }}\n\n '\n action: rest_command.solax_local_set_period2_enable\n - delay:\n hours: 0\n minutes: 0\n seconds: '{{refresh_settings_delay}}'\n milliseconds: 0\n - conditions:\n - condition: trigger\n id:\n - Daily Export\n - condition: or\n conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Disconnected\n - condition: and\n conditions:\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Connected\n for:\n hours: 0\n minutes: 10\n seconds: 0\n - condition: state\n entity_id: input_boolean.export_battery_daily\n state: 'on'\n - condition: state\n entity_id: binary_sensor.free_electricity_today\n state: 'off'\n sequence:\n - if:\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n value_template: '{{ state.state | float(0) - 5 }}'\n above: input_number.solax_manual_forced_discharge_limit_soc\n - condition: template\n value_template: '{{(state_attr(''sensor.solax_local_settings'', ''Data'')[10]\n != 3)}}'\n then:\n - choose:\n - conditions:\n - condition: state\n entity_id: input_boolean.export_battery_daily\n state: 'on'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: 2\n - event: solax_discharge\n event_data:\n battery_discharge: discharge daily\n enabled: true\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Attempting Discharge @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Started\n class: normal\n enabled: true\n enabled: true\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n enabled: true\n trace:\n stored_traces: 20\n mode: queued\n max: 4", "config": [ { "name": "zappi plug status", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.zappi_plug_status", "device_id": null } }, { "name": "solax discharge before 2330", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_before_2330", "device_id": null } }, { "name": "octopus intelligent dispatching", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.octopus_intelligent_dispatching", "device_id": null } }, { "name": "zappi charge mode", "room": "unknown", "type": "select", "id": { "entity_id": "select.zappi_charge_mode", "device_id": null } }, { "name": "solax force discharge", "room": "unknown", "type": "input_button", "id": { "entity_id": "input_button.solax_force_discharge", "device_id": null } }, { "name": "solax stop discharge", "room": "unknown", "type": "input_button", "id": { "entity_id": "input_button.solax_stop_discharge", "device_id": null } }, { "name": "octopus schedule anytime", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.octopus_schedule_anytime", "device_id": null } }, { "name": "solar export priority", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solar_export_priority", "device_id": null } }, { "name": "use clever time", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.use_clever_time", "device_id": null } }, { "name": "use fixed time", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.use_fixed_time", "device_id": null } }, { "name": "ev solax battery drain", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.ev_solax_battery_drain", "device_id": null } }, { "name": "use grid during octopus dispatch", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.use_grid_during_octopus_dispatch", "device_id": null } }, { "name": "solax local battery soc", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_soc", "device_id": null } }, { "name": "solax local manual mode behaviour", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_manual_mode_behaviour", "device_id": null } }, { "name": "solax local inverter mode", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_inverter_mode", "device_id": null } }, { "name": "solax local battery charging period", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_local_battery_charging_period", "device_id": null } }, { "name": "solax discharge daily", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_daily", "device_id": null } }, { "name": "solax discharge daily prior", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_daily_prior", "device_id": null } }, { "name": "solax discharge nightly", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_nightly", "device_id": null } }, { "name": "saving session active", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.saving_session_active", "device_id": null } }, { "name": "octopus intelligent smart charge", "room": "unknown", "type": "switch", "id": { "entity_id": "switch.octopus_intelligent_smart_charge", "device_id": null } }, { "name": "solax battery export before ev charge allowed", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_battery_export_before_ev_charge_allowed", "device_id": null } }, { "name": "solax discharge before ev charge", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_before_ev_charge", "device_id": null } }, { "name": "zappi eco always", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.zappi_eco_always", "device_id": null } }, { "name": "export battery manual", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery_manual", "device_id": null } }, { "name": "export battery", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery", "device_id": null } }, { "name": "pre emptive export battery", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.pre_emptive_export_battery", "device_id": null } }, { "name": "solax automation running", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_automation_running", "device_id": null } }, { "name": "free electricity today", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.free_electricity_today", "device_id": null } }, { "name": "solax start charge 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_start_charge_2", "device_id": null } }, { "name": "solax stop charge 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_stop_charge_2", "device_id": null } }, { "name": "solax battery start charge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_charge_time", "device_id": null } }, { "name": "Export Battery Daily", "room": null, "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery_daily", "device_id": null } }, { "name": "Don't Charge EV Before Time", "room": null, "type": "input_datetime", "id": { "entity_id": "input_datetime.don_t_charge_ev_before_time", "device_id": null } }, { "name": "Delay When EV Connected", "room": null, "type": "input_number", "id": { "entity_id": "input_number.delay_when_ev_connected", "device_id": null } }, { "name": "Solax Default Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_default_discharge_limit_soc", "device_id": null } }, { "name": "Solax Discharge Limit SoC Before EV", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_discharge_limit_soc_before_ev", "device_id": null } }, { "name": "Solax Manual Forced Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_manual_forced_discharge_limit_soc", "device_id": null } }, { "name": "Solax Nightly Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_nightly_discharge_limit_soc", "device_id": null } }, { "name": "Octopus Intelligent Charge Target", "room": null, "type": "number", "id": { "entity_id": "number.octopus_intelligent_charge_target", "device_id": null } }, { "name": "Daily Grid Import", "room": null, "type": "select", "id": { "entity_id": "select.daily_grid_import", "device_id": null } }, { "name": "Calculated EV Charge Start Time", "room": null, "type": "sensor", "id": { "entity_id": "sensor.calculated_ev_charge_start_time", "device_id": null } }, { "name": "EV Start Time", "room": null, "type": "sensor", "id": { "entity_id": "sensor.ev_start_time", "device_id": null } }, { "name": "Octopus Intelligent Target Time", "room": null, "type": "sensor", "id": { "entity_id": "sensor.octopus_intelligent_target_time", "device_id": null } }, { "name": "Octopus Total Planned Dispatch", "room": null, "type": "sensor", "id": { "entity_id": "sensor.octopus_total_planned_dispatch", "device_id": null } }, { "name": "Pre Export Battery Before Charging EV Time", "room": null, "type": "sensor", "id": { "entity_id": "sensor.pre_export_battery_before_charging_ev_time", "device_id": null } }, { "name": "Solax Default Operation Mode", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_default_operation_mode", "device_id": null } }, { "name": "Solax Local Battery CHD2 Enabled", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_chd2_enabled", "device_id": null } }, { "name": "Solax Local Battery Setting Stop Charge", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_stop_charge", "device_id": null } }, { "name": "Solax Local Battery Setting Stop Charge 2", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_stop_charge_2", "device_id": null } }, { "name": "Solax Rest Local Settings", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_rest_local_settings", "device_id": null } }, { "name": "Uptime", "room": null, "type": "sensor", "id": { "entity_id": "sensor.uptime", "device_id": null } }, { "name": "Zappi Charge Added Session", "room": null, "type": "sensor", "id": { "entity_id": "sensor.zappi_charge_added_session", "device_id": null } }, { "name": "Zappi Last Connected", "room": null, "type": "sensor", "id": { "entity_id": "sensor.zappi_last_connected", "device_id": null } } ] }, { "id": "'5002'", "automation": "- id: '5002'\n alias: 5002 - Solax Reset Mode After Manual Discharge\n description: \"# 5002 - Solax Reset Mode After Manual Discharge\\nAfter a force/regular\\\n \\ discharge set the mode back to default mode when the SoC threshold is met. In\\\n \\ a free Electric discharge, feed in priority is used to prevent the battery filling\\\n \\ if it's sunny. After free electric session is done default mode is returned.\\\n \\ \\n\\n# Initial installation instructions\\n1. This is 5002 only. You also need\\\n \\ 5001 5003 5004 and 5005. \\n2. Copy and Paste into your automations.yaml\\n\\n\\\n # Change log\\nv5.4.1 Added missing catch for manual discharge\\nv5.4.0 Added daily\\\n \\ discharge and consistent trigger behaviours\\nv3.6 variable for loops\\nv3.6 Stop\\\n \\ discharge at time required for car to charge\\nv3.3 Added condition to check\\\n \\ if saving session is in progress\\nv3.3 Added a validity check on which SoC\\\n \\ is highest for the discharge before ev charge as it is critical that an event\\\n \\ is triggered in this option to initialise EV charging.\\nv3.2 Add a condition\\\n \\ to check if export prior and manual export button press.\\nv3.0.0 Set an event\\\n \\ to trigger EV charging if binary_sensor.\\nSolax Discharge Before EV Charge is\\\n \\ on to off\\nv2.1.4 Renamed automation\\nv2.1.0 - Changes to limits to catch the\\\n \\ battery closer to the required threshold set by user\\nv2.0.0 -productionisation\\n\"\n triggers:\n - trigger: template\n value_template: \"{%set highestSoC = states('sensor.solax_local_feed_in_battery_min_soc')|int\\\n \\ (default=15),\\n states('sensor.solax_local_selfuse_battery_min_soc')|int\\\n \\ (default=15),\\n states('input_number.solax_discharge_limit_soc_before_ev')|int\\\n \\ (default =20)\\n%}\\n{{ states('sensor.solax_local_battery_soc')|int (default=100)\\\n \\ < highestSoC|max|int+1 and states('binary_sensor.solax_discharge_before_ev_charge')\\\n \\ == 'on'}}\\n\"\n for:\n hours: 0\n minutes: 0\n seconds: 0\n id: EV Stop Discharge Prior\n - trigger: time\n at: sensor.ev_start_time\n id: EV Stop Discharge Prior time trigger\n enabled: true\n - trigger: template\n value_template: \"{%set highestSoC = states('sensor.solax_local_feed_in_battery_min_soc')|int\\\n \\ (default=15),\\n states('sensor.solax_local_selfuse_battery_min_soc')|int\\\n \\ (default=15),\\n states('input_number.solax_daily_discharge_limit_soc')|int\\\n \\ (default =20)\\n%}\\n{{ states('sensor.solax_local_battery_soc')|int (default=100)\\\n \\ < highestSoC|max|int+1 and states('binary_sensor.solax_discharge_daily') ==\\\n \\ 'on'}}\\n\"\n id: Daily Stop Discharge\n - trigger: template\n value_template: \"{%set highestSoC = states('sensor.solax_local_feed_in_battery_min_soc')|int\\\n \\ (default=15),\\n states('sensor.solax_local_selfuse_battery_min_soc')|int\\\n \\ (default=15),\\n states('input_number.solax_nightly_discharge_limit_soc')|int\\\n \\ (default =20)\\n%}\\n{{ states('sensor.solax_local_battery_soc')|int (default=100)\\\n \\ < highestSoC|max|int+1 and states('binary_sensor.solax_discharge_nightly')\\\n \\ == 'on'}}\\n\"\n id: Nightly Stop Discharge\n - trigger: template\n value_template: \"{%set highestSoC = states('sensor.solax_local_feed_in_battery_min_soc')|int\\\n \\ (default=15),\\n states('sensor.solax_local_selfuse_battery_min_soc')|int\\\n \\ (default=15),\\n states('input_number.solax_nightly_discharge_limit_soc')|int\\\n \\ (default =20)\\n%}\\n{{ states('sensor.solax_local_battery_soc')|int (default=100)\\\n \\ < highestSoC|max|int+1 and states('binary_sensor.solax_discharge_before_2330')\\\n \\ == 'on'}}\\n\"\n id: Nightly Stop Discharge\n - trigger: template\n value_template: \"{%set highestSoC = states('sensor.solax_local_feed_in_battery_min_soc')|int\\\n \\ (default=15),\\n states('sensor.solax_local_selfuse_battery_min_soc')|int\\\n \\ (default=15),\\n states('input_number.solax_manual_forced_discharge_limit_soc')|int\\\n \\ (default =20)\\n%}\\n{{ states('sensor.solax_local_battery_soc')|int (default=100)\\\n \\ < highestSoC|max|int+1 and states('binary_sensor.solax_discharge_manual')\\\n \\ == 'on'}}\\n\"\n id: Manual Stop Discharge\n - trigger: template\n value_template: \"{%set highestSoC = states('sensor.solax_local_feed_in_battery_min_soc')|int\\\n \\ (default=15),\\n states('sensor.solax_local_selfuse_battery_min_soc')|int\\\n \\ (default=15),\\n states('input_number.octopus_free_session_battery_prep_soc')|int\\\n \\ (default =20)\\n%}\\n{{ states('sensor.solax_local_battery_soc')|int (default=100)\\\n \\ < highestSoC|max|int+1 }}\\n\"\n id: FreeElectric\n - entity_id:\n - sensor.solax_local_battery_soc\n below: input_number.octopus_saving_session_target_battery_soc\n for:\n hours: 0\n minutes: 0\n seconds: 0\n id: Saving Session Stop Discharge\n trigger: numeric_state\n value_template: '{{ state.state | float(0) - 1 }}'\n conditions:\n - condition: template\n value_template: '{{ (states(''sensor.solax_local_inverter_mode'') == ''Manual'')|bool==true}}'\n actions:\n - action: input_boolean.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n - variables:\n default_mode: '{{states(''sensor.solax_default_operation_mode'')|int(default=0)}}'\n mode_delay: 30\n settings_delay: 5\n refresh_settings_delay: 5\n loops: 5\n - choose:\n - conditions:\n - condition: trigger\n id:\n - EV Stop Discharge Prior\n - EV Stop Discharge Prior time trigger\n - condition: state\n entity_id: input_boolean.export_battery_prior\n state: 'on'\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n enabled: false\n - condition: state\n entity_id: sensor.zappi_plug_status\n state: EV Connected\n sequence:\n - condition: not\n conditions:\n - condition: template\n value_template: '{{(trigger.id == ''EV Stop Discharge Prior time trigger''\n and states(''sensor.ev_start_time'')|as_timestamp == today_at(''23:30'')|as_timestamp)\n or\n\n (trigger.id == ''EV Stop Discharge Prior time trigger'' and states(''input_boolean.priorise_export_over_ev'')==''on'')\n\n }}'\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Discharge finished @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Finished\n class: normal\n enabled: true\n - delay:\n hours: 0\n minutes: 0\n seconds: 30\n milliseconds: 0\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Daily Stop Discharge\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n enabled: false\n - condition: or\n conditions:\n - condition: time\n before: input_datetime.solax_battery_start_charge_time\n enabled: true\n - condition: state\n entity_id: input_boolean.export_battery_daily\n state: 'on'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Daily Discharge finished @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Finished\n class: normal\n enabled: true\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Nightly Stop Discharge\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n enabled: false\n - condition: or\n conditions:\n - condition: time\n after: '23:30:00'\n before: input_datetime.solax_battery_start_charge_time\n enabled: true\n - condition: state\n entity_id: binary_sensor.solax_discharge_before_ev_charge\n state: 'off'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Nightly Discharge finished @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Finished\n class: normal\n enabled: true\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Manual Stop Discharge\n - condition: state\n entity_id: input_boolean.saving_session_active\n state: 'off'\n enabled: false\n - condition: or\n conditions:\n - condition: time\n before: input_datetime.solax_battery_start_charge_time\n enabled: true\n - condition: state\n entity_id: input_boolean.export_battery_manual\n state: 'on'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Manual Discharge finished @ {{now().strftime(''%H:%M'')}}. '\n title: Battery Export Finished\n class: normal\n enabled: true\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.export_battery_manual\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - FreeElectric\n - condition: state\n entity_id: binary_sensor.octopus_intelligent_dispatching\n state: 'off'\n - condition: state\n entity_id: binary_sensor.free_electricity_today\n state: 'on'\n - condition: time\n after: input_datetime.octopus_free_electricity_prep\n before: '23:00:00'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{1}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Discharge finished @ {{now().strftime(''%H:%M'')}}. '\n title: Free Electric Battery Export Prep\n class: normal\n enabled: true\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Saving Session Stop Discharge\n - condition: time\n after: 05:30:00\n before: '23:30:00'\n - condition: time\n after: input_datetime.saving_session_start\n - condition: or\n conditions:\n - condition: state\n entity_id: input_boolean.octopus_saving_session_manual\n state: 'on'\n - condition: state\n entity_id: input_select.saving_session_today\n state: 'yes'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{default_mode}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Discharge finished @ {{now().strftime(''%H:%M'')}}. '\n title: Saving Session Battery Exported\n class: normal\n enabled: true\n - event: solax_discharge\n event_data:\n battery_discharge: do nothing\n enabled: true\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n mode: queued\n trace:\n stored_traces: 20\n max: 4", "config": [ { "name": "zappi plug status", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.zappi_plug_status", "device_id": null } }, { "name": "solax discharge before 2330", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_before_2330", "device_id": null } }, { "name": "octopus intelligent dispatching", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.octopus_intelligent_dispatching", "device_id": null } }, { "name": "solax local battery soc", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_soc", "device_id": null } }, { "name": "solax local inverter mode", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_inverter_mode", "device_id": null } }, { "name": "solax discharge daily", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_daily", "device_id": null } }, { "name": "solax discharge nightly", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_nightly", "device_id": null } }, { "name": "saving session active", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.saving_session_active", "device_id": null } }, { "name": "solax discharge before ev charge", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_before_ev_charge", "device_id": null } }, { "name": "export battery manual", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery_manual", "device_id": null } }, { "name": "export battery", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery", "device_id": null } }, { "name": "solax automation running", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_automation_running", "device_id": null } }, { "name": "solax discharge manual", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.solax_discharge_manual", "device_id": null } }, { "name": "free electricity today", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.free_electricity_today", "device_id": null } }, { "name": "octopus saving session manual", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.octopus_saving_session_manual", "device_id": null } }, { "name": "saving session today", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.saving_session_today", "device_id": null } }, { "name": "solax battery start charge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_charge_time", "device_id": null } }, { "name": "Export Battery Daily", "room": null, "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery_daily", "device_id": null } }, { "name": "Export Battery Prior", "room": null, "type": "input_boolean", "id": { "entity_id": "input_boolean.export_battery_prior", "device_id": null } }, { "name": "Priorise Export Over EV", "room": null, "type": "input_boolean", "id": { "entity_id": "input_boolean.priorise_export_over_ev", "device_id": null } }, { "name": "Octopus Free Session Battery Prep SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.octopus_free_session_battery_prep_soc", "device_id": null } }, { "name": "Solax Daily Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_daily_discharge_limit_soc", "device_id": null } }, { "name": "Solax Discharge Limit SoC Before EV", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_discharge_limit_soc_before_ev", "device_id": null } }, { "name": "Solax Manual Forced Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_manual_forced_discharge_limit_soc", "device_id": null } }, { "name": "Solax Nightly Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_nightly_discharge_limit_soc", "device_id": null } }, { "name": "EV Start Time", "room": null, "type": "sensor", "id": { "entity_id": "sensor.ev_start_time", "device_id": null } }, { "name": "Solax Default Operation Mode", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_default_operation_mode", "device_id": null } }, { "name": "Solax Local Feed In Battery Min SoC", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_feed_in_battery_min_soc", "device_id": null } }, { "name": "Solax Local Selfuse Battery Min SoC", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_selfuse_battery_min_soc", "device_id": null } } ] }, { "id": "'5003'", "automation": "- id: '5003'\n alias: 5003 - Solax Set UI Options\n description: \"Populate UI with Solax Settings\\n\\n# AUTOMATION 5003 \\n1. This is\\\n \\ 5003 only. You need 5001 5002 5004 and 5005.\\n2. Copy and Paste into your automations.yaml\\n\\\n \\n# Change log\\nv3.2 Added Battery Heat Level - 0 to heat only when below freezing,\\\n \\ 1 to heat when below 10 degrees, 2 to heat when below 20 degrees. see https://solaxpowerservice.zendesk.com/hc/en-001/articles/12334533938191-What-is-the-meaning-of-heating-level-in-my-inverter-settings\\n\\\n v3.1 Added system on/off\\nv2.1.4 Renamed automation\\nv2.1.0 \\n*Allow queued runs\\\n \\ so UI looks a bit more seemless when updating the inverter settings\\n*Added\\\n \\ battery warmer controls\\nV2.0 Revamp\\nv1.0 Initial\"\n triggers:\n - entity_id:\n - input_number.solax_feed_in_battery_min_soc\n id: Set Feed in Min SoC\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_number.solax_selfuse_battery_min_soc\n id: Solax Self Use Min SoC\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_number.solax_feed_in_charge_to_soc\n id: Set Feed in Charge to SoC\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_number.solax_selfuse_charge_to_soc\n id: Solax Self Use Charge to SoC\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_boolean.self_use_enable_charge_from_grid\n id: Set Self Use Charge From Grid\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_select.solax_manual_modes\n id: Set Manual Mode\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_select.solax_work_mode\n id: Set Work Mode\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_boolean.solaxchargeperiod2\n id: Chargeperiod2\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_start_charge_2\n id: Charge Period 2 Start\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_stop_charge_2\n id: Charge Period 2 Stop\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_battery_start_charge_time\n id: Solax Battery Start Charge Time\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_battery_stop_charge_time\n id: Solax Battery Stop Charge Time\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_battery_start_discharge_time\n id: Solax Battery Start Discharge Time\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_battery_stop_discharge_time\n id: Solax Battery Stop Discharge Time\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - entity_id:\n - input_boolean.battery_heat_enable\n id: heat enable\n trigger: state\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_battery_start_heat_time\n id: Heat Period Start\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_battery_stop_heat_time\n id: Heat Period Stop\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_start_heat_2\n id: Heat Period Start 2\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_datetime.solax_stop_heat_2\n id: Heat Period Stop 2\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_boolean.solax_system_enable\n id: Solax On Off\n for:\n hours: 0\n minutes: 0\n seconds: 10\n - trigger: state\n entity_id:\n - input_select.solax_battery_heat_level\n for:\n hours: 0\n minutes: 0\n seconds: 10\n id: Battery Heat Level\n conditions:\n - condition: state\n entity_id: input_boolean.solax_automation_running\n state: 'off'\n actions:\n - action: input_boolean.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n - choose:\n - conditions:\n - condition: trigger\n id:\n - Set Feed in Min SoC\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n feedin_battery_min_soc: '{{states(''input_number.solax_feed_in_battery_min_soc'')}}'\n selfuse_battery_min_soc: '{{states(''input_number.solax_feed_in_battery_min_soc'')}}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax Self Use Min SoC\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n feedin_battery_min_soc: '{{states(''input_number.solax_selfuse_battery_min_soc'')}}'\n selfuse_battery_min_soc: '{{states(''input_number.solax_selfuse_battery_min_soc'')}}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Set Feed in Charge to SoC\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n feedin_charge_battery_from_grid: '{{states(''input_number.solax_feed_in_charge_to_soc'')}}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax Self Use Charge to SoC\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n selfuse_charge_battery_from_grid: '{{states(''input_number.solax_selfuse_charge_to_soc'')}}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Set Self Use Charge From Grid\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n selfuse_charge_from_grid_enable: '{% if states(''input_boolean.self_use_enable_charge_from_grid'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n allowed_discharge_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_charge_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n allowed_discharge_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_charge_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Set Manual Mode\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: 3\n manual_mode: '{{state_attr(trigger.entity_id,''options'').index(states(trigger.entity_id))}}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Set Work Mode\n sequence:\n - if:\n - condition: template\n value_template: '{{state_attr(trigger.entity_id,''options'').index(states(trigger.entity_id))==0\n\n or\n\n state_attr(trigger.entity_id,''options'').index(states(trigger.entity_id))==1\n\n or\n\n state_attr(trigger.entity_id,''options'').index(states(trigger.entity_id))==3\n\n }}'\n then:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{state_attr(trigger.entity_id,''options'').index(states(trigger.entity_id))}}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Chargeperiod2\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n period2_enabled: '{% if states(''input_boolean.solaxchargeperiod2'') ==\n ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n forced_charge_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_charge_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n forced_charge_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_charge_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Charge Period 2 Start\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n forced_charge_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_charge_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Charge Period 2 Stop\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n forced_charge_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_charge_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax Battery Start Charge Time\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n forced_charge_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_charge_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax Battery Stop Charge Time\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n forced_charge_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_charge_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax Battery Start Discharge Time\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n allowed_discharge_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_discharge_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax Battery Stop Discharge Time\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n set_allowed_discharge_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_discharge_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - heat enable\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.battery_heat_enable\n state: 'off'\n then:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n heat_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256\n }}'\n heat_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n heat_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_heat_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256\n }}'\n heat_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_heat_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n battery_heat_enable: '{% if states(''input_boolean.battery_heat_enable'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n else:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n heat_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256\n }}'\n heat_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n heat_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_heat_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256\n }}'\n heat_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_heat_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n battery_heat_enable: '{% if states(''input_boolean.battery_heat_enable'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Heat Period Start\n sequence:\n - action: rest_command.solax_local_set_heat_start\n data:\n value: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n heat_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n heat_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_heat_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_heat_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n battery_heat_enable: '{% if states(''input_boolean.battery_heat_enable'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Heat Period Stop\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n heat_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n heat_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_heat_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_heat_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n battery_heat_enable: '{% if states(''input_boolean.battery_heat_enable'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Heat Period Start 2\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n heat_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n heat_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_heat_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_heat_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n battery_heat_enable: '{% if states(''input_boolean.battery_heat_enable'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Heat Period Stop 2\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n heat_start: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_battery_start_heat_time'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_battery_stop_heat_time'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }} '\n heat_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.solax_start_heat_2'',\n ''timestamp'') - 0) %}{{ start_time.hour + start_time.minute * 256 }}'\n heat_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.solax_stop_heat_2'',\n ''timestamp'') - 0) %}{{ end_time.hour + end_time.minute * 256 }}'\n battery_heat_enable: '{% if states(''input_boolean.battery_heat_enable'')\n == ''on''%}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Solax On Off\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n system_state: '{% if states(''input_boolean.solax_system_enable'') ==\n ''on'' %}{{1}}{% else%}{{0}}{% endif%}'\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Battery Heat Level\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n battery_heat_level: '{{states(''input_select.solax_battery_heat_level'')}}'\n enabled: true\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n trace:\n stored_traces: 20\n mode: queued\n max: 9", "config": [ { "name": "solax automation running", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_automation_running", "device_id": null } }, { "name": "solax feed in battery min soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_feed_in_battery_min_soc", "device_id": null } }, { "name": "solax selfuse battery min soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_selfuse_battery_min_soc", "device_id": null } }, { "name": "solax feed in charge to soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_feed_in_charge_to_soc", "device_id": null } }, { "name": "solax selfuse charge to soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_selfuse_charge_to_soc", "device_id": null } }, { "name": "self use enable charge from grid", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.self_use_enable_charge_from_grid", "device_id": null } }, { "name": "solax manual modes", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.solax_manual_modes", "device_id": null } }, { "name": "solax work mode", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.solax_work_mode", "device_id": null } }, { "name": "solaxchargeperiod2", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solaxchargeperiod2", "device_id": null } }, { "name": "solax start charge 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_start_charge_2", "device_id": null } }, { "name": "solax stop charge 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_stop_charge_2", "device_id": null } }, { "name": "solax battery start charge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_charge_time", "device_id": null } }, { "name": "solax battery stop charge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_stop_charge_time", "device_id": null } }, { "name": "solax battery start discharge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_discharge_time", "device_id": null } }, { "name": "solax battery stop discharge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_stop_discharge_time", "device_id": null } }, { "name": "battery heat enable", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.battery_heat_enable", "device_id": null } }, { "name": "solax battery start heat time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_heat_time", "device_id": null } }, { "name": "solax battery stop heat time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_stop_heat_time", "device_id": null } }, { "name": "solax start heat 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_start_heat_2", "device_id": null } }, { "name": "solax stop heat 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_stop_heat_2", "device_id": null } }, { "name": "solax system enable", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_system_enable", "device_id": null } }, { "name": "solax battery heat level", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.solax_battery_heat_level", "device_id": null } } ] }, { "id": "'5004'", "automation": "- id: '5004'\n alias: 5004 - Solax Reload Settings\n description: \"Populate UI with Solax Settings \\n\\n# AUTOMATION 5004\\n 1. This is\\\n \\ 5004 only. You also need 5001 5002 5003 and 5005. \\n 2. Paste into your automations.yaml\\n\\\n \\n# Change log\\nv3.1 Added system on/off\\n v2.1.4 Renamed automation\\n v2.1 Battery\\\n \\ Warmer\\n v2.0 Revamp\\n\"\n triggers:\n - trigger: time_pattern\n minutes: /12\n - trigger: state\n entity_id:\n - input_boolean.solax_automation_running\n from: 'on'\n to: 'off'\n enabled: true\n for:\n hours: 0\n minutes: 0\n seconds: 13\n - entity_id:\n - input_button.refresh\n trigger: state\n conditions:\n - condition: state\n entity_id: input_boolean.solax_automation_running\n state: 'off'\n actions:\n - variables:\n mode_delay: 15\n settings_delay: 10\n refresh_settings_delay: 10\n - action: automation.turn_off\n metadata: {}\n data:\n stop_actions: true\n target:\n entity_id: automation.solax_set_ui_options\n - delay:\n hours: 0\n minutes: 0\n seconds: 1\n milliseconds: 0\n - action: homeassistant.update_entity\n data:\n entity_id:\n - sensor.solax_rest_local_settings\n - delay:\n hours: 0\n minutes: 0\n seconds: '{{refresh_settings_delay}}'\n - metadata: {}\n data:\n option: '{{states(''sensor.solax_local_inverter_mode'')}}'\n target:\n entity_id: input_select.solax_work_mode\n action: input_select.select_option\n - metadata: {}\n data:\n option: '{{states(''sensor.solax_local_manual_mode_behaviour'')}}'\n target:\n entity_id: input_select.solax_manual_modes\n action: input_select.select_option\n - metadata: {}\n data:\n value: '{{states(''sensor.solax_local_feed_in_battery_min_soc'')|int}}'\n target:\n entity_id: input_number.solax_feed_in_battery_min_soc\n action: input_number.set_value\n - metadata: {}\n data:\n value: '{{states(''sensor.solax_local_feed_in_battery_charge_from_grid_to'')|int}}'\n target:\n entity_id: input_number.solax_feed_in_charge_to_soc\n action: input_number.set_value\n - metadata: {}\n data:\n value: '{{states(''sensor.solax_local_selfuse_battery_chrg_frm_grd_to'')|int}}'\n target:\n entity_id: input_number.solax_selfuse_charge_to_soc\n action: input_number.set_value\n enabled: true\n - metadata: {}\n data:\n value: '{{states(''sensor.solax_local_selfuse_battery_min_soc'')|int}}'\n target:\n entity_id: input_number.solax_selfuse_battery_min_soc\n action: input_number.set_value\n enabled: true\n - if:\n - condition: template\n value_template: '{{states(''sensor.solax_local_battery_chd2_enabled'')|bool==true}}'\n then:\n - action: input_boolean.turn_on\n target:\n entity_id: input_boolean.solaxchargeperiod2\n data: {}\n - if:\n - condition: template\n value_template: '{{states(''sensor.solax_local_battery_chd2_enabled'')|bool==false}}'\n then:\n - action: input_boolean.turn_off\n target:\n entity_id:\n - input_boolean.solaxchargeperiod2\n data: {}\n - if:\n - condition: state\n entity_id: sensor.solax_local_self_use_battery_charge_from_grid\n state: '1'\n then:\n - action: input_boolean.turn_on\n target:\n entity_id: input_boolean.self_use_enable_charge_from_grid\n data: {}\n - if:\n - condition: state\n entity_id: sensor.solax_local_self_use_battery_charge_from_grid\n state: '0'\n then:\n - action: input_boolean.turn_off\n target:\n entity_id:\n - input_boolean.self_use_enable_charge_from_grid\n data: {}\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_setting_start_charge'')}}'\n target:\n entity_id: input_datetime.solax_battery_start_charge_time\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_setting_stop_charge'')}}'\n target:\n entity_id: input_datetime.solax_battery_stop_charge_time\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_setting_start_discharge'')}}'\n target:\n entity_id: input_datetime.solax_battery_start_discharge_time\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_setting_stop_discharge'')}}'\n target:\n entity_id: input_datetime.solax_battery_stop_discharge_time\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_setting_start_charge_2'')}}'\n target:\n entity_id: input_datetime.solax_start_charge_2\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_setting_stop_charge_2'')}}'\n target:\n entity_id: input_datetime.solax_stop_charge_2\n - if:\n - condition: state\n entity_id: sensor.solax_local_battery_heat_enabled\n state: 'True'\n then:\n - action: input_boolean.turn_on\n target:\n entity_id: input_boolean.battery_heat_enable\n data: {}\n else:\n - action: input_boolean.turn_off\n target:\n entity_id:\n - input_boolean.battery_heat_enable\n data: {}\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_heat_start'')}}'\n target:\n entity_id: input_datetime.solax_battery_start_heat_time\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_heat_stop'')}}'\n target:\n entity_id: input_datetime.solax_battery_stop_heat_time\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_heat_start_2'')}}'\n target:\n entity_id: input_datetime.solax_start_heat_2\n - action: input_datetime.set_datetime\n metadata: {}\n data:\n time: '{{states(''sensor.solax_local_battery_heat_stop_2'')}}'\n target:\n entity_id: input_datetime.solax_stop_heat_2\n - if:\n - condition: state\n entity_id: sensor.solax_local_system_state\n state: 'True'\n then:\n - action: input_boolean.turn_on\n target:\n entity_id:\n - input_boolean.solax_system_enable\n data: {}\n - if:\n - condition: state\n entity_id: sensor.solax_local_system_state\n state: 'False'\n then:\n - action: input_boolean.turn_off\n target:\n entity_id:\n - input_boolean.solax_system_enable\n data: {}\n - metadata: {}\n data:\n option: '{{states(''sensor.solax_local_battery_heat_level'')}}'\n target:\n entity_id: input_select.solax_battery_heat_level\n action: input_select.select_option\n - delay:\n hours: 0\n minutes: 0\n seconds: 1\n milliseconds: 0\n - action: automation.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: automation.solax_set_ui_options\n trace:\n stored_traces: 20\n mode: single", "config": [ { "name": "solax local manual mode behaviour", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_manual_mode_behaviour", "device_id": null } }, { "name": "solax local inverter mode", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_inverter_mode", "device_id": null } }, { "name": "solax automation running", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_automation_running", "device_id": null } }, { "name": "solax feed in battery min soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_feed_in_battery_min_soc", "device_id": null } }, { "name": "solax selfuse battery min soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_selfuse_battery_min_soc", "device_id": null } }, { "name": "solax feed in charge to soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_feed_in_charge_to_soc", "device_id": null } }, { "name": "solax selfuse charge to soc", "room": "unknown", "type": "input_number", "id": { "entity_id": "input_number.solax_selfuse_charge_to_soc", "device_id": null } }, { "name": "self use enable charge from grid", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.self_use_enable_charge_from_grid", "device_id": null } }, { "name": "solax manual modes", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.solax_manual_modes", "device_id": null } }, { "name": "solax work mode", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.solax_work_mode", "device_id": null } }, { "name": "solaxchargeperiod2", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solaxchargeperiod2", "device_id": null } }, { "name": "solax start charge 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_start_charge_2", "device_id": null } }, { "name": "solax stop charge 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_stop_charge_2", "device_id": null } }, { "name": "solax battery start charge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_charge_time", "device_id": null } }, { "name": "solax battery stop charge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_stop_charge_time", "device_id": null } }, { "name": "solax battery start discharge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_discharge_time", "device_id": null } }, { "name": "solax battery stop discharge time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_stop_discharge_time", "device_id": null } }, { "name": "battery heat enable", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.battery_heat_enable", "device_id": null } }, { "name": "solax battery start heat time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_start_heat_time", "device_id": null } }, { "name": "solax battery stop heat time", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_battery_stop_heat_time", "device_id": null } }, { "name": "solax start heat 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_start_heat_2", "device_id": null } }, { "name": "solax stop heat 2", "room": "unknown", "type": "input_datetime", "id": { "entity_id": "input_datetime.solax_stop_heat_2", "device_id": null } }, { "name": "solax system enable", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_system_enable", "device_id": null } }, { "name": "solax battery heat level", "room": "unknown", "type": "input_select", "id": { "entity_id": "input_select.solax_battery_heat_level", "device_id": null } }, { "name": "refresh", "room": "unknown", "type": "input_button", "id": { "entity_id": "input_button.refresh", "device_id": null } }, { "name": "Solax Set UI Options", "room": null, "type": "automation", "id": { "entity_id": "automation.solax_set_ui_options", "device_id": null } }, { "name": "Solax Local Battery CHD2 Enabled", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_chd2_enabled", "device_id": null } }, { "name": "Solax Local Battery Heat Enabled", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_heat_enabled", "device_id": null } }, { "name": "Solax Local Battery Heat Level", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_heat_level", "device_id": null } }, { "name": "Solax Local Battery Heat Start", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_heat_start", "device_id": null } }, { "name": "Solax Local Battery Heat Start 2", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_heat_start_2", "device_id": null } }, { "name": "Solax Local Battery Heat Stop", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_heat_stop", "device_id": null } }, { "name": "Solax Local Battery Heat Stop 2", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_heat_stop_2", "device_id": null } }, { "name": "Solax Local Battery Setting Start Charge", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_start_charge", "device_id": null } }, { "name": "Solax Local Battery Setting Start Charge 2", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_start_charge_2", "device_id": null } }, { "name": "Solax Local Battery Setting Start Discharge", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_start_discharge", "device_id": null } }, { "name": "Solax Local Battery Setting Stop Charge", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_stop_charge", "device_id": null } }, { "name": "Solax Local Battery Setting Stop Charge 2", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_stop_charge_2", "device_id": null } }, { "name": "Solax Local Battery Setting Stop Discharge", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_setting_stop_discharge", "device_id": null } }, { "name": "Solax Local Feed In Battery Charge From Grid To", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_feed_in_battery_charge_from_grid_to", "device_id": null } }, { "name": "Solax Local Feed In Battery Min SoC", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_feed_in_battery_min_soc", "device_id": null } }, { "name": "Solax Local Self Use Battery Charge From Grid", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_self_use_battery_charge_from_grid", "device_id": null } }, { "name": "Solax Local Selfuse Battery Charge From Grid To", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_selfuse_battery_chrg_frm_grd_to", "device_id": null } }, { "name": "Solax Local Selfuse Battery Min SoC", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_selfuse_battery_min_soc", "device_id": null } }, { "name": "Solax Local System State", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_system_state", "device_id": null } }, { "name": "Solax Rest Local Settings", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_rest_local_settings", "device_id": null } } ] }, { "id": "'5005'", "automation": "- id: '5005'\n alias: 5005 - Solax Zappi Octopus Control - Notifier\n description: '# 5005 - Solax Zappi Octopus Control - Notifier\n\n Allows for notification of activity such as EV Connected, EV charging started,\n amount Octopus will dispatch, Solax battery forced discharge events etc\n\n\n # Initial installation instructions\n\n 1. Copy to your automations.yaml and reload yaml from developer tools\n\n\n # Change Log\n\n v4.0 Added logging\n\n v3.1 Better notification management\n\n v2.2 Added Alert Exclusions\n\n v2.1.4 Renamed automation\n\n v2.1.3 Simplications\n\n v2.0 Initial production release\n\n v1.0 Initial'\n triggers:\n - trigger: event\n event_type: Solax Zappi Octopus Control\n event_data:\n class: normal\n id: Normal\n - trigger: event\n event_type: Solax Zappi Octopus Control\n event_data:\n class: high\n id: High\n - trigger: event\n event_type: Solax Control\n event_data:\n class: normal\n id: Normal\n - trigger: event\n event_type: Solax Control\n event_data:\n class: high\n id: High\n conditions: []\n actions:\n - action: logbook.log\n data:\n name: Solax Zappi Octopus\n message: 'Event ({{ trigger.event.data.class }}): {{ trigger.event.data.title\n }}\n\n '\n - choose:\n - conditions:\n - condition: trigger\n id:\n - High\n - condition: or\n conditions:\n - condition: state\n entity_id: input_boolean.solax_zappi_octopus_control_notifications\n state: 'off'\n - condition: state\n entity_id: input_boolean.nofify_mobile\n state: 'off'\n sequence:\n - action: persistent_notification.create\n data:\n title: '{{trigger.event.data.title}}'\n message: '{{trigger.event.data.message}}'\n - if:\n - condition: template\n value_template: '{{states(''input_text.mobile_device_selected'') != ''None\n Selected''}}'\n then:\n - repeat:\n for_each: '{{state_attr(''sensor.solax_zappi_octopus_devices_to_notify'',\n ''mobile_devices'') | map(attribute=''device'') | reject(''match'',\"\n \")|list}}\n\n '\n sequence:\n - action: notify.{{repeat.item}}\n metadata: {}\n data:\n title: '{{trigger.event.data.title}}'\n message: '{{trigger.event.data.message}}'\n - conditions:\n - condition: or\n conditions:\n - condition: trigger\n id:\n - Normal\n - condition: trigger\n id:\n - High\n - condition: state\n entity_id: input_boolean.solax_zappi_octopus_control_notifications\n state: 'on'\n sequence:\n - if:\n - condition: template\n value_template: '{{trigger.event.data.title not in state_attr(''sensor.solax_zappi_octopus_notification_to_exclude'',''notification_list'')\n | map(attribute=''notification'') | list}}'\n then:\n - action: persistent_notification.create\n data:\n title: '{{trigger.event.data.title}}'\n message: '{{trigger.event.data.message}}'\n - if:\n - condition: template\n value_template: '{{states(''input_text.mobile_device_selected'') != ''None\n Selected''}}'\n then:\n - repeat:\n for_each: '{{state_attr(''sensor.solax_zappi_octopus_devices_to_notify'',\n ''mobile_devices'') | map(attribute=''device'') | reject(''match'',\"\n \")|list}}\n\n '\n sequence:\n - action: notify.{{repeat.item}}\n metadata: {}\n data:\n title: '{{trigger.event.data.title}}'\n message: '{{trigger.event.data.message}}'\n mode: queued\n max: 10", "config": [ { "name": "solax zappi octopus control notifications", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_zappi_octopus_control_notifications", "device_id": null } }, { "name": "nofify mobile", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.nofify_mobile", "device_id": null } }, { "name": "mobile device selected", "room": "unknown", "type": "input_text", "id": { "entity_id": "input_text.mobile_device_selected", "device_id": null } } ] }, { "id": "'6001'", "automation": "- id: '6001'\n alias: 6001 - Octopus - Free Electric Automation\n description: \"# 6001 - Automation to get the most from Octopus Free Electric Sessions\\n\\\n \\n# Initial config instructions\\n1. Paste into your automations.yaml\\n\\n# Change\\\n \\ log\\nv5.4.0 Tidy\\nv5.3.0 Introducing safe switching of octopus_intelligent_smart_charge\\n\\\n v5.1.1 Fixed bug in Free Electric notification where end time was announced as\\\n \\ start time\\nv2.1.4 Renamed automation\\nv2.1 - Removed legacy dev work and fix\\\n \\ bug with charge period 2\\nv2.0 - Productionise\\nv1.1 - Initial\\n\\n\\n# Overview\\n\\\n Octopus offer free electric sessions in the summer.\\nThis automation allows you\\\n \\ to automatically charge the solax battery and also sets the zappi to fast mode.\\\n \\ \\nTo prepare for the free electricity, options are provided to export the house\\\n \\ battery to benefit from export rates and to give headroom to charge from the\\\n \\ grid for free in the session. You can set a time and export threshold. However\\\n \\ beware that on a sunny day you may already be at the inverters limit so won't\\\n \\ be able to discharge the battery so you have to balance the time at which you\\\n \\ discharge and the battery SoC level for which you need to last the day before\\\n \\ the free session. To prevent the battery filling the inverter mode is set to\\\n \\ feed in priority and will return to your default mode after the free electric\\\n \\ session. If export rates become unfavourable you can use the target battery\\\n \\ SoC as the charge to if you allow charging from grid overnight.\"\n triggers:\n - at: sensor.octopus_free_electricity_start\n id: start\n trigger: time\n enabled: true\n - at: sensor.octopus_free_electricity_stop\n id: stop\n trigger: time\n enabled: true\n - entity_id:\n - binary_sensor.free_electricity_today\n to: 'on'\n id: Prepare\n trigger: state\n for:\n hours: 0\n minutes: 2\n seconds: 0\n enabled: true\n - at: input_datetime.octopus_free_electricity_prep\n id: ExportBatteryPrep\n trigger: time\n - trigger: state\n entity_id:\n - binary_sensor.upcoming_free_electricity\n to: 'on'\n for:\n hours: 0\n minutes: 2\n seconds: 0\n id: Octopus New Free Electric\n conditions:\n - condition: state\n entity_id: input_boolean.solax_automation_running\n state: 'off'\n enabled: false\n actions:\n - action: input_boolean.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n - variables:\n default_mode: '{{states(''sensor.solax_default_operation_mode'')|int}}'\n default_charge_to: '{{states(''input_number.solax_default_charge_to_limit_soc'')|int}}'\n free_electric_event_entity: event.octopus_energy_z_ZZZZZZZZ_octoplus_free_electricity_session_events\n enabled: true\n - choose:\n - conditions:\n - condition: trigger\n id:\n - Prepare\n - condition: state\n entity_id: binary_sensor.free_electricity_today\n state: 'on'\n sequence:\n - if:\n - condition: state\n entity_id: input_boolean.octopus_free_electric_soc_use\n state: 'on'\n then:\n - condition: not\n conditions:\n - condition: template\n value_template: \"{{states('input_number.octopus_free_session_battery_prep_soc')|int==states('sensor.solax_local_feed_in_battery_charge_from_grid_to')|int\\\n \\ \\nand states('input_number.octopus_free_session_battery_prep_soc')|int==states('sensor.solax_local_selfuse_battery_chrg_frm_grd_to')}}\"\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n feedin_charge_battery_from_grid: '{{states(''input_number.octopus_free_session_battery_prep_soc'')}}'\n selfuse_charge_battery_from_grid: '{{states(''input_number.octopus_free_session_battery_prep_soc'')}}'\n else:\n - condition: not\n conditions:\n - condition: template\n value_template: '{{default_charge_to == states(''sensor.solax_local_feed_in_battery_charge_from_grid_to'')|int\n and default_charge_to == states(''sensor.solax_local_selfuse_battery_chrg_frm_grd_to'')|int}}'\n - action: script.solax_set_mode_and_settings\n data:\n settings:\n feedin_charge_battery_from_grid: '{{default_charge_to}}'\n selfuse_charge_battery_from_grid: '{{default_charge_to}}'\n - condition: not\n conditions:\n - condition: template\n value_template: \"{% set start_time =\\n as_datetime(state_attr('input_datetime.octopus_free_electricity_start',\\n\\\n \\ 'timestamp') - 60) \\n%}\\n\\n{% set end_time =\\n as_datetime(state_attr('input_datetime.octopus_free_electricity_stop',\\n\\\n \\ 'timestamp') - 0) \\n%}\\n\\n\\n{{ (state_attr('sensor.solax_local_settings',\\\n \\ 'Data')[10] == 1\\nand state_attr('sensor.solax_local_settings', 'Data')[7]\\\n \\ == 1 \\nand state_attr('sensor.solax_local_settings', 'Data')[8] == start_time.hour\\\n \\ + start_time.minute * 256 \\nand state_attr('sensor.solax_local_settings',\\\n \\ 'Data')[9] == end_time.hour + end_time.minute * 256) \\n}}\"\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{1}}'\n settings:\n period2_enabled: '{{1}}'\n forced_charge_start2: '{% set start_time = as_datetime(state_attr(''input_datetime.octopus_free_electricity_start'',\n ''timestamp'') - 0)|as_local %}{{ start_time.hour + start_time.minute\n * 256 }}'\n forced_charge_end2: '{% set end_time = as_datetime(state_attr(''input_datetime.octopus_free_electricity_stop'',\n ''timestamp'') - 0)|as_local %}{{ end_time.hour + end_time.minute *\n 256 }}'\n - conditions:\n - condition: trigger\n id:\n - start\n - condition: state\n entity_id: binary_sensor.free_electricity_today\n state: 'on'\n sequence:\n - action: automation.turn_off\n metadata: {}\n data:\n stop_actions: true\n target:\n entity_id: automation.solax_zappi_octopus_control\n - metadata: {}\n data: {}\n target:\n entity_id:\n - switch.octopus_intelligent_smart_charge\n action: switch.turn_on\n enabled: false\n - action: script.safe_switch_toggle\n metadata: {}\n data:\n target_switch: switch.octopus_intelligent_smart_charge\n desired_state: 'on'\n - metadata: {}\n data:\n option: Eco+\n target:\n entity_id: select.myenergi_zappi_XXXXXXXX_charge_mode\n action: select.select_option\n enabled: true\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Free electric session started @ {{now().strftime(''%H:%M'')}}. '\n title: Free Electric Started\n class: high\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - stop\n - condition: state\n entity_id: binary_sensor.free_electricity_today\n state: 'on'\n sequence:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{states(''sensor.solax_default_operation_mode'')|int}}'\n settings:\n period2_enabled: '{{0}}'\n selfuse_charge_battery_from_grid: '{{states(''input_number.solax_default_charge_to_limit_soc'')|int}}'\n feedin_charge_battery_from_grid: '{{states(''input_number.solax_default_charge_to_limit_soc'')|int}}'\n feedin_battery_min_soc: '{{states(''input_number.solax_default_discharge_limit_soc'')|int}}'\n selfuse_battery_min_soc: '{{states(''input_number.solax_default_discharge_limit_soc'')|int}}'\n - event: Solax Zappi Octopus Control\n event_data:\n message: 'Free electric session finished @ {{now().strftime(''%H:%M'')}}. '\n title: Free Electric Finished\n class: high\n enabled: true\n - action: script.safe_switch_toggle\n metadata: {}\n data:\n target_switch: switch.octopus_intelligent_smart_charge\n desired_state: 'off'\n - metadata: {}\n data:\n option: Stopped\n target:\n entity_id: select.myenergi_zappi_XXXXXXXX_charge_mode\n action: select.select_option\n enabled: true\n - action: automation.turn_on\n metadata: {}\n data: {}\n target:\n entity_id: automation.solax_zappi_octopus_control\n - conditions:\n - condition: trigger\n id:\n - ExportBatteryPrep\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n above: input_number.octopus_free_session_battery_prep_soc\n value_template: '{{ state.state | float(0) - 14 }}'\n - condition: template\n value_template: '{{(state_attr(''sensor.solax_local_settings'', ''Data'')[10]!=\n 3)}}'\n - condition: state\n entity_id: binary_sensor.free_electricity_today\n state: 'on'\n sequence:\n - if:\n - condition: numeric_state\n entity_id: sensor.solax_local_battery_soc\n above: input_number.octopus_free_session_battery_prep_soc\n value_template: '{{ state.state | float(0) - 14 }}'\n then:\n - action: script.solax_set_mode_and_settings\n data:\n mode: '{{3}}'\n manual_mode: '{{2}}'\n - event: solax_discharge\n event_data:\n battery_discharge: Free Electric Prep\n enabled: true\n - event: Solax Zappi Octopus Control\n event_data:\n message: Free electric session prep export started @ {{now().strftime('%H:%M')}}.\n Discharging to {{states('input_number.octopus_free_session_battery_prep_soc')}}%\n title: Free Electric Prep\n class: high\n enabled: true\n - conditions:\n - condition: trigger\n id:\n - Octopus New Free Electric\n sequence:\n - if:\n - condition: template\n value_template: '{% set event_start = state_attr(''binary_sensor.upcoming_free_electricity'',''next_session_start'')\n %}\n\n {{event_start|as_timestamp>now()|as_timestamp}}'\n then:\n - event: Solax Zappi Octopus Control\n event_data:\n message: '{% set event_start = state_attr(''binary_sensor.upcoming_free_electricity'',''next_session_start'')|as_datetime\n %}It starts at {{event_start.strftime(''%H:%M'') }} on {{ event_start.day\n }}/{{event_start.month }} for {{ state_attr(''binary_sensor.upcoming_free_electricity'',''next_session_duration'') }}\n minutes.\n\n '\n title: Octopus Free Electric Session\n class: high\n - action: input_boolean.turn_off\n metadata: {}\n data: {}\n target:\n entity_id: input_boolean.solax_automation_running\n mode: single", "config": [ { "name": "solax local battery soc", "room": "unknown", "type": "sensor", "id": { "entity_id": "sensor.solax_local_battery_soc", "device_id": null } }, { "name": "octopus intelligent smart charge", "room": "unknown", "type": "switch", "id": { "entity_id": "switch.octopus_intelligent_smart_charge", "device_id": null } }, { "name": "solax automation running", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.solax_automation_running", "device_id": null } }, { "name": "free electricity today", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.free_electricity_today", "device_id": null } }, { "name": "octopus free electric soc use", "room": "unknown", "type": "input_boolean", "id": { "entity_id": "input_boolean.octopus_free_electric_soc_use", "device_id": null } }, { "name": "upcoming free electricity", "room": "unknown", "type": "binary_sensor", "id": { "entity_id": "binary_sensor.upcoming_free_electricity", "device_id": null } }, { "name": "Solax Zappi Octopus Control", "room": null, "type": "automation", "id": { "entity_id": "automation.solax_zappi_octopus_control", "device_id": null } }, { "name": "Octopus Free Session Battery Prep SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.octopus_free_session_battery_prep_soc", "device_id": null } }, { "name": "Solax Default Charge to Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_default_charge_to_limit_soc", "device_id": null } }, { "name": "Solax Default Discharge Limit SoC", "room": null, "type": "input_number", "id": { "entity_id": "input_number.solax_default_discharge_limit_soc", "device_id": null } }, { "name": "Solax Default Operation Mode", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_default_operation_mode", "device_id": null } }, { "name": "Solax Local Feed In Battery Charge From Grid To", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_feed_in_battery_charge_from_grid_to", "device_id": null } }, { "name": "Solax Local Selfuse Battery Charge From Grid To", "room": null, "type": "sensor", "id": { "entity_id": "sensor.solax_local_selfuse_battery_chrg_frm_grd_to", "device_id": null } } ] } ]