---
title: "Solar Optimizer"
description: "Solar Optimizer is a Marketplace integration for Home Assistant. It has 285 installs sharing analytics, works locally and was last updated October 11, 2026."
canonical: "https://vulpo.app/integrations/marketplace/jmcollin78-solar-optimizer"
url: "https://vulpo.app/integrations/marketplace/jmcollin78-solar-optimizer.md"
last-updated: "2026-10-22"
version: "1.4"
---

# Solar Optimizer

> Solar Optimizer is a Marketplace integration for Home Assistant. It has 285 installs sharing analytics, works locally and was last updated October 11, 2026.

Solar Optimizer starts and stops equipment in Home Assistant based on net solar production. It manages devices with fixed power draw, switched through a service call or an event, and devices whose power can be adjusted. At a configurable interval, a simulated annealing algorithm tries on/off and power combinations and applies the one with the lowest cost, which depends on imported and exported power and on energy prices. Per-device settings include minimum on and stop durations to avoid flickering, daily minimum and maximum run times, and forced running during off-peak hours. Optional battery state of charge and charging power sensors can be added, and each device gets a switch that removes it from the algorithm's control. It works locally and is set up in the UI.

Automatic summary of the README and code of jmcollin78/solar\_optimizer. Something wrong, or are you the maintainer and want your own text here? [Get in touch](https://vulpo.app/contact)

[Open in My Home Assistant](https://my.home-assistant.io/redirect/hacs_repository/?owner=jmcollin78&repository=solar_optimizer&category=integration)

On Home Assistant 2026.11 or newer? [Open it in the Marketplace](https://my.home-assistant.io/redirect/marketplace_repository/?owner=jmcollin78&repository=solar_optimizer&category=integration)

## Supports

- **Works locally**: Talks to your devices on your own network. No vendor cloud in between.
- **From the Marketplace**: Installed through the Marketplace, formerly HACS.
- **Actively maintained**: Its author released or pushed a change in the last six months.

## Setting it up

Install it from the Marketplace and restart Home Assistant, then add it under Settings, Devices and services.

### Configuration type

- **Device type**: Simple on/off device or device with variable power management

### Common parameters

- **Refresh period**: Even with no new data, refresh at least in with this period in seconds. Warning heavy calculations are done at each period, so keep an eye on the CPU load. Don't refresh to often
- **Net power consumption**: The entity\_id of the net power consumption sensor. Net power should be negative if power is exported to grid.
- **Solar power production**: The entity\_id of the solar power production sensor.
- **Recalculate with every new Production/Consumption Value**: Subscribe to events to recalculate with new data, as soon as they are avalaible. Keep an eye on the CPU load.
- **Energy sell price**: The entity\_id which holds the current energy sell price.
- **Energy buy price**: The entity\_id which holds the current energy buy price.
- **Sell taxe percent**: The energy resell tax percent (0 to 100)
- **Smooth the solar production**: If checked, the solar production will be smoothed to avoid hard variation
- **Battery state of charge**: The entity id of the battery state of charge in %. If you don't have battery, keep it empty
- **Battery charging power**: The entity id of the battery power net charging rate in watt. It should be negative if battery is charging and positive if battery is discharging. Keep it empty if no solar battery is used.
- **Reset counter time**: Time to reset active time counters. Should be before first exposure to sunlight but not too early to allow enough time for night activation

### Device parameters

- **Device name**: The name of the device
- **Device entity id**: The entity\_id of the device
- **Device power**: The power of the device when activated. Can be a number or a template
- **Usable template**: The template to check if the device is usable. Example True or states('sensor.my\_sensor') \| float \> 10 (don't forgeet double accolades)
- **Active template**: The template to check if the device is active. Keep it empty for switch type device or apparented. Example is\_state\_attr('sensor.my\_sensor', 'hvac\_mode', 'heat') (with double accolades)
- **Duration min**: The minimum duration of the device when turned on in minutes
- **Duration stop min**: The minimum duration of the device when turned off in minutes
- **Action mode**: The action mode of the device. service to service call a service to turn on or off or event to send an event to turn on or off
- **Activation service**: The service to activate the device. Example switch/turn\_on or climate/set\_hvac\_mode/hvac\_mode:cool
- **Deactivation service**: The service to deactivate the device. Example switch/turn\_off or climate/set\_hvac\_mode/hvac\_mode:off. Keep it empty if the device will turn off by itself
- **Battery soc threshold**: The battery state of charge threshold to activate the device. Can be a number or a template
- **Max on time per day**: The maximum time per day in state on in minutes. Can be a number or a template. If minium time is not reached during daylight, it will be activated during offpeak time until max time is reached
- **Min on time per day**: The minimum time per day in state on in minutes. Can be a number or a template. If minium time is not reached during daylight, it will be activated during offpeak time
- **Max on time during off-peak hours**: Maximum forced running time during off-peak hours in minutes. Defaults to the daily maximum and must be between the daily minimum and maximum.
- **Offpeak time**: The offpeak time with format HH:MM

### Powered device parameters

- **Device name**: The name of the device
- **Device entity id**: The entity\_id of the device
- **Device max power**: The power of the device when activated. Can be a number or a template
- **Device min power**: The min power consumption of the device when activated
- **Device power step**: The step of power for the device
- **Usable template**: The template to check if the device is usable. Example True or states('sensor.my\_sensor') \| float \> 10 (don't forgeet double accolades)
- **Active template**: The template to check if the device is active. Keep it empty for switch type device or apparented. Example is\_state\_attr('sensor.my\_sensor', 'hvac\_mode', 'heat') (with double accolades)
- **Duration min**: The minimum duration of the device when turned on in minutes
- **Duration stop min**: The minimum duration of the device when turned off in minutes
- **Action mode**: The action mode of the device. service to service call a service to turn on or off or event to send an event to turn on or off
- **Activation service**: The service to activate the device. Example switch/turn\_on or climate/set\_hvac\_mode/hvac\_mode:cool
- **Deactivation service**: The service to deactivate the device. Example switch/turn\_off or climate/set\_hvac\_mode/hvac\_mode:off
- **Power entity id**: The entity id of the power sensor
- **Duration of power change**: The minimal duration of each power change in minutes
- **Power change service**: The service used to change the power. Example number/set\_value

### After setup

- **Device type**: Common configuration or specific device configuration
- **Refresh period**: Even with no new data, refresh at least in with this period in seconds. Warning heavy calculations are done at each period, so keep an eye on the CPU load. Don't refresh to often
- **Net power consumption**: the entity\_id of the net power consumption sensor. Net power should be negative if power is exported to grid.
- **Solar power production**: the entity\_id of the solar power production sensor.
- **Recalculate with every new Production/Consumption Value**: Subscribe to events to recalculate with new data, as soon as they are avalaible. Keep an eye on the CPU load.
- **Energy sell price**: The entity\_id which holds the current energy sell price.
- **Energy buy price**: The entity\_id which holds the current energy buy price.
- **Sell taxe percent**: The energy resell tax percent (0 to 100)
- **Smooth the solar production**: If checked, the solar production will be smoothed to avoid hard variation
- **Battery state of charge**: The entity id of the battery state of charge in %. If you don't have battery, keep it empty
- **Battery charging power**: The entity id of the battery power net charging rate in watt. It should be negative if battery is charging and positive if battery is discharging. Keep it empty if no solar battery is used.
- **Reset counter time**: Time to reset active time counters. Should be before first exposure to sunlight but not too early to allow enough time for night activation
- **Device name**: The name of the device
- **Device entity id**: The entity\_id of the device
- **Device power**: The power of the device when activated. Can be a number or a template
- **Usable template**: The template to check if the device is usable. Example True or states('sensor.my\_sensor') \| float \> 10 (don't forgeet double accolades)
- **Active template**: The template to check if the device is active. Keep it empty for switch type device or apparented. Example is\_state\_attr('sensor.my\_sensor', 'hvac\_mode', 'heat') (with double accolades)
- **Duration min**: The minimum duration of the device when turned on in minutes
- **Duration stop min**: The minimum duration of the device when turned off in minutes
- **Action mode**: The action mode of the device. service to service call a service to turn on or off or event to send an event to turn on or off
- **Activation service**: The service to activate the device. Example switch/turn\_on or climate/set\_hvac\_mode/hvac\_mode:cool
- **Deactivation service**: The service to deactivate the device. Example switch/turn\_off or climate/set\_hvac\_mode/hvac\_mode:off. Keep it empty if the device will turn off by itself
- **Battery soc threshold**: The battery state of charge threshold to activate the device. Can be a number or a template
- **Max on time per day**: The maximum time per day in state on in minutes. Can be a number or a template. If minium time is not reached during daylight, it will be activated during offpeak time until max time is reached
- **Min on time per day**: The minimum time per day in state on in minutes. Can be a number or a template. If minium time is not reached during daylight, it will be activated during offpeak time
- **Max on time during off-peak hours**: Maximum forced running time during off-peak hours in minutes. Defaults to the daily maximum and must be between the daily minimum and maximum.
- **Offpeak time**: The offpeak time with format HH:MM
- **Device name**: The name of the device
- **Device entity id**: The entity\_id of the device
- **Device max power**: The power of the device when activated. Can be a number or a template
- **Device min power**: The min power consumption of the device when activated
- **Device power step**: The step of power for the device
- **Usable template**: The template to check if the device is usable. Example True or states('sensor.my\_sensor') \| float \> 10 (don't forgeet double accolades)
- **Active template**: The template to check if the device is active. Keep it empty for switch type device or apparented. Example is\_state\_attr('sensor.my\_sensor', 'hvac\_mode', 'heat') (with double accolades)
- **Duration min**: The minimum duration of the device when turned on in minutes
- **Duration stop min**: The minimum duration of the device when turned off in minutes
- **Action mode**: The action mode of the device. service to service call a service to turn on or off or event to send an event to turn on or off
- **Activation service**: The service to activate the device. Example switch/turn\_on or climate/set\_hvac\_mode/hvac\_mode:cool
- **Deactivation service**: The service to deactivate the device. Example switch/turn\_off or climate/set\_hvac\_mode/hvac\_mode:off
- **Power entity id**: The entity id of the power sensor
- **Duration of power change**: The minimal duration of each power change in minutes
- **Power change service**: The service used to change the power. Example number/set\_value

Texts from the code of [jmcollin78/solar\_optimizer](https://github.com/jmcollin78/solar_optimizer).

## From the README

> This integration allows you to optimize the use of your solar energy. It controls the switching on and off of your equipment, the activation of which is deferred over time depending on production and current electricity consumption.
>
> This integration will allow you to maximize the use of your solar production. You delegate to it the control of your equipment whose activation can be deferred over time (water heater, swimming pool pump, electric vehicle charge, dishwasher, washing machine, etc.) and it takes care of launching them when the power produced is sufficient.

From the README of [jmcollin78/solar\_optimizer](https://github.com/jmcollin78/solar_optimizer#readme), [MIT License](https://spdx.org/licenses/MIT.html). Shortened.

## At a glance

- Kind: Marketplace integration
- Category: [Energy](https://vulpo.app/integrations/category/energy.md), Solar and batteries
- Number: 285 installs sharing analytics; 245 GitHub stars
- Connection: Works locally
- Upkeep: Updated in the last 6 months
- Needs: Needs the Marketplace (HACS on 2026.10 and older)
- Latest version: 3.9.0, last updated October 11, 2026
- Domain: `solar_optimizer`
- Source: <https://github.com/jmcollin78/solar_optimizer>
- Issues: <https://github.com/jmcollin78/solar_optimizer/issues>
- Screenshot: https://vulpo.app/integrations-img/51618a2a66eaf92d.webp (from jmcollin78/solar\_optimizer's README)
- Screenshot: https://vulpo.app/integrations-img/94a97328bbdc2396.webp (from jmcollin78/solar\_optimizer's README)

In Vulpo: Quick Toggle card, Select card, Chart card, Apple Watch, Control Center

Independent directory, made by the developer of Vulpo. Not affiliated with Home Assistant or the Open Home Foundation. [About these numbers](https://vulpo.app/integrations/about)

Last updated 2026-10-22. Source: https://vulpo.app/integrations/marketplace/jmcollin78-solar-optimizer

---

- HTML version of this page: https://vulpo.app/integrations/marketplace/jmcollin78-solar-optimizer
- Site index for agents: https://vulpo.app/llms.txt
- Everything in one document: https://vulpo.app/llms-full.txt
- All pages: https://vulpo.app/sitemap.xml
