Getting Data from Solis Inverter

I’ve gone down a different path that seems to be fairly straightforward, in my opinion, and is working flawlessly since I configured it.

I purchased a Protoss-PE11-H RS485 to Wired Ethernet Bridge from AliExpress for £16.

I suspect that the WiFi version would also work, but I prefer wired reliability.

I purchased the famous German RS-485 plug that fits the Solis inverter, which it does, and followed the wiring guide as shown in the listing. I confirmed the 5V and Gnd rails with a multimeter.

I configured the PE11 to modus, 9600 baud, 8 bits, 1 stop, no parity. As well as a TCP server on port 502.

Then in home assistant the following

modbus:
  - name: "Solis_Inverter"
    type: tcp
    host: 192.168.1.24
    port: 502
    sensors:
      - name: Solis_Watts
        data_type: uint32
        slave: 1
        address: 3004
        input_type: input
        count: 2
        unit_of_measurement: W
        state_class: measurement
        scan_interval: 20
      - name: Solis_today_kwh
        data_type: uint16
        slave: 1
        address: 3014
        input_type: input
        count: 1
        unit_of_measurement: kWh
        state_class: total_increasing
        scan_interval: 60
        scale: 0.1
        precision: 1
      - name: Solis_yesterday_kwh
        data_type: uint16
        slave: 1
        address: 3015
        input_type: input
        count: 1
        unit_of_measurement: kWh
        state_class: measurement
        scan_interval: 3600
        scale: 0.1
        precision: 1
      - name: Solis_total_energy
        data_type: uint32
        slave: 1
        address: 3008
        input_type: input
        count: 2
        unit_of_measurement: kWh
        state_class: total_increasing
        scan_interval: 300
      - name: Solis_total_energy_this_month
        data_type: uint32
        slave: 1
        address: 3010
        input_type: input
        count: 2
        unit_of_measurement: kWh
        state_class: total_increasing
        scan_interval: 300
      - name: Solis_total_energy_last_month
        data_type: uint32
        slave: 1
        address: 3012
        input_type: input
        count: 2
        unit_of_measurement: kWh
        state_class: measurement
        scan_interval: 3600
      - name: Solis_total_energy_this_year
        data_type: uint32
        slave: 1
        address: 3016
        input_type: input
        count: 2
        unit_of_measurement: kWh
        state_class: total_increasing
        scan_interval: 300
      - name: Solis_temp
        data_type: uint16
        slave: 1
        address: 3041
        input_type: input
        count: 1
        unit_of_measurement: C
        state_class: measurement
        scan_interval: 120
        scale: 0.1
        precision: 1
      - name: Solis_grid_freq
        data_type: uint16
        slave: 1
        address: 3042
        input_type: input
        count: 1
        unit_of_measurement: Hz
        state_class: measurement
        scan_interval: 60
        scale: 0.01
        precision: 2
      - name: Solis_grid_current
        data_type: uint16
        slave: 1
        address: 3038
        input_type: input
        count: 1
        unit_of_measurement: A
        state_class: measurement
        scan_interval: 60
        scale: 0.1
        precision: 1
      - name: Solis_grid_voltage
        data_type: uint16
        slave: 1
        address: 3035
        input_type: input
        count: 1
        unit_of_measurement: V
        state_class: measurement
        scan_interval: 60
        scale: 0.1
        precision: 1

I have also written values to the inverter using nodeRed as it is just easier to do that way. Happy to share that example if required.

Using this example, it is cheap only required 1 device with no modification, no python, no coding, no resister fiddling. Most importantly no cloud, and update frequencies that you control. One of the key things was setting the input_type to input and not holding as that dictates the function code 3 vs 4 which matters a lot.

Hope this helps someone.

4 Likes