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

Did you have any success with sending control commands yet? Or did you get stuck somewhere?

There is a dutch guy who made a complete software set to extraxt to ha.
He has a website SR1168C controller uitlezen | Familie Kleinman
But since he removed his sr1186 the software is not easy to find but he has offered his software on other platforms by email.

I know him. This version does not export to HA. It’s a java-scipt running on Windows.

Hello, thanks to @RogMoe for providing the software I was looking for since months. Please find my little contribution :GitHub - dmagniez/SR882toMQTT: convert sr882 solar boiler controller data to mqtt
I wrote a script to extract data and send it to mqtt.
Maybe it can help some of you to write a HA plugin

1 Like

Hi @RogMoe
I also have SR1188 and am in the process of integrating it with Home Assistant.
For the moment I am using the Solar Monitor winapp, connecting to SR1188 through EW11A (RS485 to WiFi) found on aliexpress.
Did you manage to info from SR1188 into HA?


I am so close, but due to my lack of programming skills I am still stuck near the finish:

  1. connected from my Win desktop to SR1188 through EW11 - success - confirmed by Solar Monitor app and a python app generated with chatgpt
  2. HA is seeing EW11 - ping and nc working in Terminal
  3. added in configuration.yaml:
    modbus: !include modbus.yaml
  4. modbus.yaml:
- name: sr1188
  type: rtuovertcp
  host: <EW11A_IP>
  port: 8899          
  delay: 3              
  timeout: 15         
  message_wait_milliseconds: 300  

  sensors:
    - name: "SR1188 raw16"
      slave: 1
      address: 0
      input_type: holding
      count: 16
      data_type: custom
      structure: ">32B"   # 16 registre x 2 bytes = 32 bytes
      scan_interval: 15

also tried this way:

    - name: "SR1188 reg0 raw"
      slave: 1
      address: 0
      input_type: holding
      data_type: uint16
      scan_interval: 15

    - name: "SR1188 reg1 raw"
      slave: 1
      address: 1
      input_type: holding
      data_type: uint16
      scan_interval: 15

HA is only showing the sensors as unknown or unavailable.
Log shows:

Logger: pymodbus.logging
Source: components/modbus/modbus.py:391
First occurred: 10:41:29 (13 occurrences)
Last logged: 10:54:33

* No response received after 3 retries, continue with next request >>>>> 
send: 0x1 0x3 0x0 0x0 0x0 0x10 0x44 0x6 >>>>> 
recv: 0x1 0x3 0x20 0x25 0x2b 0x17 0x32 0x1c 0x1c 0x1d 0x20 0x0 0x0 0x27 0xf 0x0 0x0 0x0 0xa1 0x0 0x14 0x5a 0x0 0x1 0x0 0x0 0x0 0x0 0x0 0xc 0x32 0x88 0x0 0x0 0x0 0x3e 0x3 
extra data: >>>>> 
extra: unexpected data: 0x1 0x3 0x20 0x25 0x2b 0x17 0x32 0x1c 0x1c 0x1d 0x20 0x0 0x0 0x27 0xf 0x0 0x0 0x0 0xa1 0x0 0x14 0x5a 0x0 0x1 0x0 0x0 0x0 0x0 0x0 0xc 0x32 0x88 0x0 0x0 0x0 0x3e 0x3 >>>>> 
send: 0x1 0x3 0x0 0x0 0x0 0x10 0x44 0x6 >>>>> 
recv: 0x1 0x3 0x20 0x25 0x2e 0x17 0x32 0x1c 0x1c 0x1d 0x21 0x0 0x0 0x27 0xf 0x0 0x0 0x0 0xa1 0x0 0x14 0x64 0x0 0x41 0x0 0x0 0x0 0x0 0x0 0xc 0x32 0x88 0x0 0x0 0x0 0x8c 0x3 
extra data: >>>>> 
extra: unexpected data: 0x1 0x3 0x20 0x25 0x2e 0x17 0x32 0x1c 0x1c 0x1d 0x21 0x0 0x0 0x27 0xf 0x0 0x0 0x0 0xa1 0x0 0x14 0x64 0x0 0x41 0x0 0x0 0x0 0x0 0x0 0xc 0x32 0x88 0x0 0x0 0x0 0x8c 0x3 >>>>> 

and so on.

Indeed it’s not real modbus

MLE: Got fully functional MQTT device, if anyone if interested I will post a short tutorial. So tired now…

1 Like