pysolarfocus
Python client for Solarfocus ecomanager-touch via Modbus TCP
Table of Contents
About
Python client library to interact with heating systems of Solarfocus (ecomanager-touch) via Modbus TCP. This library has been developed for the integration into Home-Assistant via a custom integration, but can be used indepdently.
Warning Use with caution, in case of doubt check with Solarfocus or your installer if a feature / functionality (e.g. cooling) is supported by your installation to avoid damages to your heating system or the building.
Supported Solarfocus Software and Hardware
Software
Important This integration has been tested with Solarfocus ecomanager-touch version
25.030.
Supported versions: 21.140 - 26.020. Features added in later versions are not yet supported.
The ecomanager-touch Modbus TCP specification can be found here).
Hardware
The ecomanager-touch can integrate the following heating systems
- Vampair heat pumps
- Therminnator biomass boilers
- Ecotoplight / Ecotopzero biomass boilers
- Octoplus biomass boilers
- Pellettop biomass boilers
| Components | Supported |
|---|---|
| Heating Circuit 1 - 8 (Heizkreis) | :white_check_mark: |
| Buffer 1 - 4 (Puffer) | :white_check_mark: |
| Solar 1 - 4 (Solar) | :white_check_mark: |
| Boiler 1 - 4 (Boiler) | :white_check_mark: |
| Heat Pump (Wärmepumpe) | :white_check_mark: |
| Biomass Boiler (Kessel) | :white_check_mark: |
| Fresh Water Module 1 - 4 (Frischwassermodul) | :white_check_mark: |
| Differential Module 1 - 4 (Differenzmodul) | :white_check_mark: |
| Circulation 1 - 4 (Zirkulation) | :white_check_mark: |
How To
Installation
$ pip3 install pysolarfocus
Basic Example
from pysolarfocus import SolarfocusAPI,Systems,ApiVersions
# Create the Solarfocus API client
solarfocus = SolarfocusAPI(
ip="solarfocus", # adapt IP-Address
system=Systems.VAMPAIR, # for biomass boiler change to Systems.THERMINATOR / ECOTOP
api_version=ApiVersions.V_25_030) # select Solarfocus version
solarfocus.connect()
# Fetch the values
solarfocus.update()
# Print the values
print(solarfocus)
print(solarfocus.heating_circuits[0])
Output:
❯ uv run example.py
--------------------------------------------------
SolarfocusAPI, v5.1.1
--------------------------------------------------
+ System: Vampair
+ Version: 25.030
--------------------------------------------------
============
HeatingCircuit
============
---Input:
supply_temperature | raw:257 scaled:25.700000000000003
room_temperature | raw:224 scaled:22.400000000000002
humidity | raw:480 scaled:48.0
limit_thermostat | raw:1 scaled:1
circulator_pump | raw:0 scaled:0
mixer_valve | raw:0 scaled:0
state | raw:0 scaled:0
---Holding:
target_supply_temperature | raw:0 scaled:0.0
cooling | raw:0 scaled:0
mode | raw:3 scaled:3
target_room_temperature | raw:0 scaled:0.0
indoor_temperature_external | raw:224 scaled:22.4
indoor_humidity_external | raw:480 scaled:48.0
heating_mode | raw:2 scaled:2
============
Boiler
============
---Input:
....
Handling multiple components
Solarfocus systems allow the use of multiple heating circuits, buffers, boilers, and fresh water modules. The api can be configured to interact with multiple components.
# Create the Solarfocus API client with 2 Heating Circuits
solarfocus = SolarfocusAPI(ip="[Your-IP]",heating_circuit_count=2,system=Systems.VAMPAIR)
# Connect to the heating system
solarfocus.connect()
# Update all heating circuits
solarfocus.update_heating()
# Update only the first heating circuit
solarfocus.heating_circuits[0].update()
# Print the first heating circuit
print(solarfocus.heating_circuits[0])
# Set the temperature of the first heating circuit to 30°C
solarfocus.heating_circuits[0].indoor_temperature_external.set_unscaled_value(30)
# Write the value to the heating system
solarfocus.heating_circuits[0].indoor_temperature_external.commit()
Convenitently set modes
Control the heating system by setting modes using the provided classes
# Without convenience method
solarfocus.heating_circuits[0].mode.set_unscaled_value(0)
solarfocus.heating_circuits[0].mode.commit()
# RECOMMENDED: Uitilizing convenience methods for modes
solarfocus.set_heating_circuit_mode(0, HeatingCircuitMode.ALWAYS_ON)
API-Version specification
By default, the integration uses API-Version21.140. If your system is newer, you can specify
the version by using the api_version parameter.
solarfocus = SolarfocusAPI(ip="[Your-IP]", system=Systems.VAMPAIR, api_version=ApiVersions.V_23_020)
You can find the API-Version displayed in the header of the screen of your Solarfocus system:
Changelog of API-Versions
Note The API-Version of Solarfocus is independent of the versions of this library. Below list refers to the Solarfocus versions. See releases for the changelog of this library.
26.020
- Add HEMS target electrical power for the PV overcharge (
photovoltaic.hems_target_electrical_power, register33415).
25.030
- Add differential modules
- Add circulation
- Add multiple solar modules
- Adapt for changes in registers for heat pump
23.020
- Add fresh water module state.
23.010
- Add biomass boiler pellet statistics.
22.090
- Add biomass boiler sweep function control.
- Allow input of external buffer values.
Metadata
Release files for pysolarfocus 5.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pysolarfocus-5.2.0.tar.gz | 740.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pysolarfocus-5.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 772.3 kB
Release files / pysolarfocus-5.2.0.tar.gz
| Download URL | pysolarfocus-5.2.0.tar.gz |
|---|---|
| Size | 740.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
96d7cf213b87dff760d1b24c91a8280d8eeff21379d618c79d3f04f892025af8
|
|
BLAKE2b-256 checksum How to use checksums |
5b6fdbff18c08d41f08a2d085d74d804303abbd01a38ef1771be3b0e1c5494c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pysolarfocus-5.2.0-py3-none-any.whl
| Download URL | pysolarfocus-5.2.0-py3-none-any.whl |
|---|---|
| Size | 31.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dac17e5bc8d57cd4d251a17c459da1cbb8e30a37b4cad328a34cee083ffc0b99
|
|
BLAKE2b-256 checksum How to use checksums |
5960db05b444467b21c665eca6d4eb6c52dd194a8d74118b93c5146215551231
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|