SolarMax Inverter Integration

Just posted a tutorial on this.

1 Like

Hi,
I get it managed that I could connect via Modbus to my Solarmax 13SMT inverter. My biggest issue for now is to find the right Modbus addresses for the inverter. Every help is welcome. I’m not sure if all values are right. THX in advance.

modbus:
  - name: solarmax
    type: tcp
    host: 192.168.0.78
    port: 502
    sensors:
      - name: solarmax_current_power
        unique_id: 6a0a5b90-4ae8-4a33-8de9-0b5c59a6b8d1
        slave: 1
        address: 4151
        input_type: holding
        unit_of_measurement: kW
        data_type: int32
        scale: 0.0001
      - name: solarmax_total_power
        unique_id: d2a0e2cc-612f-47e9-9f24-f3fce5f9ac6a
        slave: 1
        address: 4129
        input_type: holding
        unit_of_measurement: MWh
        data_type: int32
        scale: 0.001
      - name: solarmax_max_power_today
        slave: 1
        unique_id: d2a0e2cc-612f-47e9-9f24-f3fce5f9ac6a
        address: 4155
        input_type: holding
        unit_of_measurement: kW
        data_type: int32
        scale: 0.0001
      - name: solarmax_internal_converter_temperature
        unique_id: 70b4357b-d7f7-4211-b141-a5a917cf0cc3
        slave: 1
        address: 4124
        input_type: holding
        unit_of_measurement: °C
        data_type: int16
        state_class: measurement
      - name: solarmax_total_power_today
        unique_id: ef4c1f35-6825-4298-ba55-65589efce315
        slave: 1
        address: 4136
        input_type: holding
        unit_of_measurement: kWh
        data_type: int16
        scale: 0.001
      - name: solarmax_spannung_1
        unique_id: 95ed4472-e34a-43fc-97db-e617d49a8e79
        slave: 1
        address: 4112
        input_type: holding
        unit_of_measurement: V
        data_type: int16
        scale: 0.1
      - name: solarmax_strom_1
        unique_id: 079ba81f-99bb-4bd8-a992-9ac2c89674d2
        slave: 1
        address: 4113
        input_type: holding
        unit_of_measurement: A
        data_type: int16
        scale: 0.1
      - name: solarmax_leistung_1
        unique_id: ba84af5e-1f35-4949-a1a8-98bcb53b0170
        slave: 1
        address: 4115
        input_type: holding
        unit_of_measurement: kW
        data_type: int16
        scale: 0.0001
      - name: solarmax_spannung_2
        unique_id: e27d4db8-1c82-4e65-8243-98e25d114a5a
        slave: 1
        address: 4116
        input_type: holding
        unit_of_measurement: V
        data_type: int16
        scale: 0.1
      - name: solarmax_strom_2
        unique_id: 6dfe8cae-9860-4a7e-9f40-e8edd25b2d9c
        slave: 1
        address: 4117
        input_type: holding
        unit_of_measurement: A
        data_type: int16
        scale: 0.1
      - name: solarmax_leistung_2
        unique_id: f3226562-5b7e-4b3c-9366-eeb4f091eabb
        slave: 1
        address: 4119
        input_type: holding
        unit_of_measurement: kW
        data_type: int16
        scale: 0.0001
      - name: solarmax_spannung_3
        unique_id: ca603951-18d0-475f-9a66-42da6da8eacb
        slave: 1
        address: 4107
        input_type: holding
        unit_of_measurement: V
        data_type: int16
        scale: 0.1
      - name: solarmax_strom_3
        unique_id: cb0aeea2-a69a-4d79-85ae-79d0e1b506d5
        slave: 1
        address: 4108
        input_type: holding
        unit_of_measurement: A
        data_type: int16
        scale: 0.1
      - name: solarmax_leistung_3
        unique_id: 67e7e1a7-feb6-45e8-8e26-4db7b086875d
        slave: 1
        address: 4110
        input_type: holding
        unit_of_measurement: kW
        data_type: int16
        scale: 0.0001

I added and updated some modbus addresses.

With the modbus data type fix from 2024.02.

So I had to adjust the following values to get it work again:

    sensors:
      - name: solarmax_current_power
        unique_id: 6a0a5b90-4ae8-4a33-8de9-0b5c59a6b8d1
        slave: 1
        address: 4151
        input_type: holding
        unit_of_measurement: W
        data_type: uint32
        scale: 0.1
        device_class: power
        state_class: measurement

Hi @Dbuckley1712,

thank you so much for this. Thanks to your instructions, I was able to set this up in a couple of hours. Really super useful!

Hi @Eindal,
great work.
For my understanding this works via the Wfii connection and is ModbusTCP with no special hardware connection (like RS485), right?

According to the documentation from the support pages, all 27 read addresses from 4097 to 4123, 4125, 4129/30 and 4151-4154 are valid/used.

Direct link to documentation, dated 05.07.2024:

From here:
https://solarmax.com/kontakt-support/downloads/ → General documents

Right, just Wi-Fi no other hardware and using MobusTCP. Nothing else.

One hint. In my case, the solarmax inverter was a bit touchy with more than one connection. So I made the connection with HA and converted it to MQTT and then the world is open to make more fun stuff, e.g. evcc.io.

@Haussuche THX for that document. I was searching for it, but never found it.

@Eindal great work thanks. i own a 6SMT Inverter, my problem is that the local rs485 connector is used for the em340 energy Meter, therefor no option to use the connection to read further inverter values because in this case inverter is master. You are access the inverter pure via WIFI IP : 502 port without any rs485 / lan connector? As i know only port 12345 is used for maxtalk. This means there is a modbux tcp gateway also implemented at the wifi strick? Thanks for your support. PS: Seems the RS485 connector both ports are connected to the same rs485 chip… :frowning: