Ultisolar evacuated tubes controller

I have a solar boiler and the controler has a RS232 over RS485 port. The sofware that comes with the system is very basic. I took an Arduino with RS485 adapter to listen in on the communication. I can see distinct values. Every few seconds I see a string as shown in the graph. Left is the original sofware, right is serial port terminal (listen only). I can change settings in the original software and check the terminal to see how that matches any change in the string.
My goal is to decode the string (match positions with functions and data) and to display the data in HA. The ultimate goal is to be able to CHANGE settings from within HA.

Can someone point me in the right direction where to go from here?

I also have an Ultisolar controller; SR1168C. Mine is hooked up to a serial device server and I’ve been dumping statistics from it for several years; I’m considering adding it to Home Assistant. Just found your post after starting to assemble the pieces of the puzzle.

When I originally hooked this up with my own scripts, I noticed that there was an Excel sheet somewhere in the directory structure of Ultisolar software; that Excel sheet happened to contain a full description of all registers.

What controller model do you have, and can you also find an Excel with register descriptions?

FWIW: there are 5 different command sequences, each is 8 bytes - and iirc all the replies are 37 bytes (including some start/stop markers and checksums)

Hi Jeroen, I have a SR1188. I noticed that Excel sheet too.
Here’s a part of it.

That looks very similar, The register addresses are the same in mine, as far as I can see - and the min & max values etc too.

I’ve extended my old script a bit.

I’m cycling through 5 commands. When I send the command ‘0103000000101400’ (this is the hex dump, you need to send the bytes), I’m decoding the reply:

                my @unpacked = unpack('C*', $reply);
                my $values = {
                        T0 => $unpacked[3]-10,
                        T1 => $unpacked[4]-10,
                        T2 => $unpacked[5],
                        T3 => $unpacked[6],
                        T4 => $unpacked[7],
                        T5 => $unpacked[8],
                        Pumpspeed => $unpacked[21],
                        Daily_kWh => ($unpacked[16] + $unpacked[15] * 256),
                };

forgive me my Perl, I’m moving to Python but I’ve written quite a bit of Perl in the past 20 years

By the way, my SR1168 is connected to a serial device server, so I’m connecting to the unit via IP. I’m not 100% sure whether I have added start/stop bytes or anything.

Sending these values via MQTT is currently the easiest way for me to get the basic stats in Home Assistant. I’m still considering writing a proper integration, but it’ll be my first for Home Assistant…

Would anyone be able to share the spreadsheet? - I have a SR1188 that is ten years plus old. Unfortunately I didn’t keep the software installer and so haven’t been able to work out the protocol.

… or the script?

Its great to see the monitoring code above. I’m hoping to be able to turn on/off the electric element boost control remotely.

Thanks!

I have all windows software available for you.

https://www.dropbox.com/scl/fo/vomzueatxl12ubp5dsov8/AJpOaRuq309R1KbsaqKL6ho?rlkey=rte0ewsv53nn40ld974nwz555&st=yxrz9pbo&dl=0

Thanks! Got it.

I managed to get the reading of values working, but now I can sniff the software to get the control commands.

I appreciate the help. (Looked everywhere for that cd :wink:

1 Like