Skip to content
BaguPublic

About

Home Assistant integration for SolisArt solar heating controllers: sensors, zone modes, setpoints and schedules, over the controller's local web interface

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SolisArt for Home Assistant

Version française

A custom integration that reads and adjusts a SolisArt solar heating controller from Home Assistant. I wrote it for my own SolisArt system, and kept it generic: zones, labels and limits are read from the controller, nothing about my house is hard-coded.

Disclaimer

I don't work for SolisArt, and this project is not affiliated with the company. The logo shown in Home Assistant is theirs. I wrote the integration for my own system and share it as is. You use it at your own risk: I take no responsibility for misuse, unsuitable settings, damage to your installation, extra energy costs or any other consequence of using it. The MIT license says the same.

What it reads

The controller publishes /XML/status.xml on its web interface. Every value in it that the integration recognises becomes an entity:

  • temperature probes T1 to T16 (°C). A probe the controller reports as disconnected (Dsc) is created disabled, and shows as unavailable if it disconnects later;
  • circulators TRIAC1 to TRIAC13 and the two three-way valves, in %;
  • flow meters FL1 to FL5, in L/min;
  • relays (MREL1, SREL1...), on or off.

The entities are named after the controller's tags. What each probe measures depends on how your system was installed, and the Visualisation page of the controller shows it. Rename them in Home Assistant once you know.

The integration also reads /param.htm (the User page) every 5 minutes: zones, their labels, heating modes and comfort and reduced temperatures, plus the controller and web interface versions.

Each zone also gets a current slot sensor: Comfort or Reduced, the half hour of its schedule that applies right now. The integration reads the controller's own clock for this (/XML/dtstat.xml, no login needed, at the same pace as status.xml), so a clock drift between Home Assistant and the controller does not matter. If that page cannot be read, the current slot shows as unavailable and everything else keeps working.

What it changes

For each zone the controller has (heating zones and hot water), the integration adds:

  • the heating mode, with the labels of the controller's User page: Arrêt (off), Solaire (solar only) or Sol/App (solar and backup heater). In English, Home Assistant shows them as Off, Solar and Solar/Backup;
  • the comfort and reduced temperatures, in °C. Their limits come from the controller's page. They show as unavailable while the zone is off, since the controller locks them then;
  • the comfort/reduced schedule, one text entity per day (for example "Schedule Ground floor Monday"). It lists the comfort periods, such as 06:00-08:30, 18:00-22:00, and the rest of the day is reduced. An empty value means reduced all day. Times go by half hours, and 6-8:30 or 18h-22h work too. These entities sit in the Configuration section of the device.

Each heating zone also gets a thermostat, and hot water a water heater, for dashboards and voice assistants:

  • thermostat: off for the controller's off mode, heat for the two other modes, which the preset tells apart (Solar or Solar/Backup). Turning it back on restores the last preset. The target temperature is the comfort temperature, and the reduced temperature shows as an attribute;
  • water heater: Off, Solar or Solar/Backup, filed under the standard Home Assistant modes off, eco and performance, with the hot water comfort temperature as target;
  • the current temperature comes from the probe you pick for each zone in the options. There is none by default, since the probe in a given room depends on the installation.

The entities take the zone labels set on the controller (for example "Heating mode Ground floor").

The solisart.copier_planning action copies one schedule day to other days or zones in a single write, for example Monday to the rest of the week.

To change a value, the integration does what your browser does on the User page. It reads param.htm, sends the whole form back with the new value, then reads the page again to check the controller kept it. If the value did not stick, Home Assistant shows an error. Changes made less than 1.5 s apart go out together in one request, so clicking the arrows of a temperature five times sends only the last value.

Requirements

  • A SolisArt controller reachable on your local network, with its web interface. Tested with controller software SRB_32MX_vD.50-5 and web interface WEB_vA.98.
  • The login of the controller's User page.
  • Home Assistant 2026.10 or later. HACS refuses older versions.

Installation

With HACS

HACS must already be installed in your Home Assistant.

  1. In Home Assistant, open HACS from the sidebar.
  2. Open the menu with the three dots at the top right and choose Custom repositories.
  3. Paste https://github.com/Bagu/solisart, pick the type Integration, then click Add.
  4. Search for SolisArt in HACS, open it and click Download.
  5. Restart Home Assistant.

This button opens the repository straight in your HACS:

Open the SolisArt repository in HACS

By hand

Copy custom_components/solisart into the custom_components folder of your Home Assistant configuration, then restart.

Adding the controller

Then go to Settings, Devices & services, Add integration, SolisArt, and enter the controller's address (for example 192.168.1.20) and the login of its web interface.

The controller exposes no serial number, so the integration tells controllers apart by their address. If the address changes (new router, new DHCP lease), open the menu of the integration entry (the three dots) and choose Reconfigure. You can enter the new address or a new login there, and the entities keep their names and history. Leave the password empty to keep the saved one.

Options: how often status.xml is read (30 s by default) and how often param.htm is read (300 s by default). The controller takes almost a second to build param.htm, so it is best not to read it much more often. Another option allows changes on an untested controller version (see below). It is off by default. The last fields pick the temperature probe of each zone for the thermostats and the water heater.

Before you rely on it

  • SolisArt does not publish an API. This integration reads the same pages as your browser. A software update of the controller can change those pages and break it.
  • Only one tool should change the controller's settings. If two tools write to param.htm, each one overwrites what the other just set.
  • Every change sends back the whole User page form. The other settings on that page are sent as they were read a moment before.
  • Login sent in clear: the controller only answers over plain HTTP, so the login of its User page goes out with every read of param.htm and every change. Anyone who can watch your local network can read it. Keep the controller on a network you trust, and give it a password you use nowhere else.
  • Tested versions: the integration only changes settings on controller software SRB_32MX_vD.50-5 with web interface WEB_vA.98. On any other version, reading goes on, but every change is refused, and Home Assistant shows a message in Settings, System, Repairs with the versions it found. If everything works on your side, open an issue with those versions to get them added to the list. You can also allow changes on an untested version in the options, at your own risk.
  • The integration gives Home Assistant access to the controller and nothing more. Deciding when to heat with the solar surplus or during off-peak hours belongs in your own automations.
  • Reporting a problem: attach the integration's diagnostics and, if the problem is about the User page, a copy of param.htm passed through python outils/anonymiser.py param.htm param_anonyme.htm, which masks the installation name and the logins (details in CONTRIBUTING.md).

License

The code is under the MIT license (see LICENSE and NOTICE). The SolisArt name and logo, including the images in custom_components/solisart/brand, belong to SolisArt. The license does not cover them: they are only there so you recognise the controller in Home Assistant.

About

Home Assistant integration for SolisArt solar heating controllers: sensors, zone modes, setpoints and schedules, over the controller's local web interface

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages