Adding SolarFocus VampAir to EVCC

Posted by quark007 | Posted in Computer & IT | Posted on 03-04-2026-05-2008

0

I was running EVCC for solar-driven charing of our BEV. For improving the usage of the solar power I also wanted to integrate our heatpump, a Solarfocus VampAir. Though the ecoManagerTouch offers communicating with the solar inverter (heatpump starts if grid power exceeds certain level) I liked more suffisticated controlling of the solar power usage.

The Solarfocus ecoTouchManager allows controlling it via Modbus which also EVCC is support. Thanks to the new functionality of adding sg-ready heatpumps it should be possible to also add the heatpumpt to EVCC. And it is.

SolarFocus Modbus Registers

Solarfocus provides a list of all Modbus registers of the ecoManagerTouch with its meaning and values. EVCC has a very good documentation of its Modbus implementation as well as of the heater/heatpump functionality.

Though the Solarfocus ecoManagerTouch is not (yet) natively supported, it is possible to add a custom template. Good to know: heater are treated similar than chargers.

My custom template looks like follows:

## required attributes [type: sgready]
setmode: # set operation mode (1: reduced, 2: normal, 3 boost)
  source: modbus
  id: 1
  uri: 192.168.178.15:502
  register:
    address: 33405
    type: writeholdings
    decode: uint16

## optional attributes (read-only)

#getmode: # operation mode (1: reduced, 2: normal, 3 boost)
getmode:
  source: modbus
  uri: 192.168.178.15:502
  register:
    address: 33405
    type: holding
    decode: int16
power: # charge power in W
  source: modbus
  uri: 192.168.178.15:502
  register:
    address: 2322
    type: input
    decode: int16
energy: # meter reading in kWh
  source: modbus
  uri: 192.168.178.15:502
  register:
    address: 2316
    type: input
    decode: int32
  scale: 0.001

temp: # current temperature (°C)
  source: modbus
  uri: 192.168.178.15:502
  register:
    address: 1901
    type: input
    decode: int16
  scale: 0.1

limittemp: # temperature limit (°C) configured in device
  source: const
  value: 57

Trouble I was facing at first

I was able to setup everything and also the readout of values via Modbus was possible and seemed fine. Though I got errors like:

[lp-2 ] ERROR 2026/04/03 11:17:48 charger enable: modbus: exception '1' (illegal function), function '6'

After consultation of Solarfocus it turned out that the function code 6 (write single register) is not yet implemented, though it is mentioned in the modbus register PDF.

I had used the “writeholding” (without the “s”) as it was named in the documentation. There was no hint to the “writeholdings” to that time. Knowing that function I set up the system working fluently.

Write a comment


Warning: Undefined variable $user_ID in /home/web5wipjw/html/httpdocs/wordpress/wp-content/themes/Stripey/comments.php on line 57