Sol-Ark 12K integration

Hi all,

I’ve been working on my Sol-Ark 12k integration for a while now and it’s starting to shape up, so I thought I’d share some of it. I wasn’t happy with Sol-Ark’s networking choices so I built my own, a WiFi interface with an Arduino Nano 33 IOT that connects to the Sol-Arks via RS-485 and writes the data to my MQTT server via WiFi.

HA picks up my data from the MQTT server. My Power Station page shows us what’s going on with the system, updating all the gauges at about a 10 second rate. This is my first cut at it on the kitchen display - a 7" tablet.


We’ve just installed the system and got it running in December - a dual 12K setup with 30 KWh batteries & 12KW ground mount PV array. We’re still learning how to operate it.



Nicely done integrating your Sol-Ark. I’m thinking about changing over my solar system to a Sol-Ark so I can add batteries. I’m wondering if you’ve had any luck changing settings on the Sol-Ark? All the projects I’ve seen are read-only.

I’d like to be able to change between the limiter settings from Home Assistant (switch between Limited to Home, Time of Use and Grid Sell) on the fly. My power company adjusts the price of power in real time, and this would let me take advantage of some arbitrage by monitoring the price through Home Assistant.

No luck changing settings on the Sol-Ark or the AO Smith hybrid water heater. We are managing the switch from ‘power to loads’ to ‘power to house’ manually. Same with the water heater, switching from hybrid mode to vacation mode.

I need to add a large contactor to allow HA to switch the Sol-Ark mode, and I’m going to wire to the back of the keypad PCB to let me switch the water heater.

It’s a shame both companies are withholding the technical information, both devices have the capability to switch automatically but the companies want to retain control of the systems. That is unacceptable, the CCP cannot be in control of my power.

@bshaw have you seen the sunsyk modbus documentation? The read params are identical to solark and they have a bunch of write params

I can’t upload the pdf but you can find it on this post

Hi @bshaw
I’m having no luck getting the RS485 data.

We have nearly identical setups (dual 12Ks+30kW of EG4). Additionally I have the EG4 LiFePOWER4 Communications Hub that lets the batteries closed-loop communicate with the 12Ks plugged into the CANbus port.

Are there particular settings or a procedure that enabled the RS485 for you? I’ve been trying the HA-solark-PV connection, and could certainly build an arduino interface like yours, but both rely on getting the port to provide data!

For reference, my settings are:
Battery Type: Lithium Batt
BMS Lithium Batt Mode(0-20): 0
Inverter SW: (Solark updated ~1 month ago when I asked for help)
(more below)

I appreciate your advise you can give!

Hi Paul,

Can you connect to the batteries with BMS_Test? (9600, 8, N, 1) That would show that your serial hardware is working OK.

Other than the port settings I don’t have any special settings or procedure.

Do you have an oscilloscope? Sometimes it helps to look at the signals.

Note I have 3 individual RS-232 to RS-485 converters, one for each Sol-Ark and one for the string of batteries.

  • We have 3 serial channels - sercom0 - connected to the Sol-Ark 1, the master
  •                                pin - fx - port.bit - servcom alt  
  •                                  0 - RX - 5.3
  •                                  1 - tx - 5.2
  •                            sercom1 - connected to the Sol-Ark 2, the slave
  •                                pin - fx - port.bit - servcom alt  
  •                                  5 - rx - 0.1
  •                                  6 - tx - 0.0 
  •                            sercom2 - connected to the EG4 LiFePower4 battery bank bus
  •                                      12 batteries addressed from 1 through 12
  •                                      Serial1 
  •                                pin - fx - port.bit - servcom alt  



Sorry for the late response, but I haven’t been here lately.

I had not seen that, thank you for pointing it out. I downloaded the doc but haven’t gotten back to that either.

Soon, it’s on my schedule.


I came here looking for SolArk API info a long time ago and never really found any. So I figured out the API just using the PowerView webpage and a PHP script. The PHP script forms the basis for various other integrations of SolArk data with IoT needs – such as shutting off car charging at night, etc. Here’s my little demo PHP script allowing me to grab data from the /flow endpoint using my PowerView credentials as variables:

My homebrew remote control system, which will use this info for automation, is pretty elaborate this point and even includes small device with a screen for use as a control panel. Check it out here:

After much fumbling about, I have (finally!) defeated my long-time nemesis: Serial cable pinout. My specific problem was using 6-7-8 pins when quite surprisingly, only 1-2-6 worked:
1 - A+ (Orange White)
2 - B- (Orange)
6 - Ground (Green)

For my setup, 9600-8-n-1 works well for the 20m cable run from the garage.

Thanks for the support!