SR658 Solar Water Heater contoller integration

Welcome everyone !

I’ll say at the outset that I’m new here and I’m just starting to build my home assistant system.
I immediately ran into my first major problem, for which I have not been able to find a solution anywhere.
I have a vacuum tube solar collector what is managed by an SR658 solar controller, I have problems using the system, I would like a couple of things to work differently, since these problems cannot be controlled from the menu, so I would like to solve this with homeassistant.
Unfortunately, this device does not have a communication port, despite the description on the linked page, not only does it lack a connector, but there is also no cable.
However, it has an SD Card slot where you log the data with a time stamp.
My idea is that I can share the SDCard data using a BIGTREETECH Module BTT TF Cloud V1.0 SD Cloud Wireless Transmission Module.
However, I don’t know how to integrate them into my homeassistance, is there a way to attach this drive to the system and have the integration read the data from there?
The file format can be easily imported into Excel, I am attaching the sample.
Is this idea feasible or should I choose another path?
Thank you for your help in advance.
Sorry for my English, I’m using a translator.

Hi, this controler has a RS485 port (485-A and 485-B). The telegrams are not hard to decode. I own a SR1188 and I’m in the middel of the process of decoding the telegrams.
Connect a RS485<>USB adapter, and hook up a serial port terminal. Set at 4800/8N1 and see if any data comes through.

I welcome you
I regret to inform you that the RS485 port is listed on the data sheet of the device I received, but there is no such option on the sheet. I disassembled the device and couldn’t find the option either.

Typical chinese %$#$%…
Sorry!

Hi - I’ve had an SR1168 for close to 10 years and way back then I found a Java app that reads the 1168. It’s been a LONG time since I played with it, it just works

Here’s what it puts out - jt will read a bunch of other stuff that I don’t use:
TABLE SolarWater
START_SAMPLE_PERIOD
tankTop=68
collector=42
tankBottom=51
END_SAMPLE_PERIOD
END_TABLE.

Drop me a note if you’d like to collaborate on getting this into HomeAssistant,

Clay Jackson
Prosser, WA, USA
[email protected]
.

…I did but never got a reply :face_with_hand_over_mouth:

Sorry- been busy sorting out hardware upgrades in my lab, and traveling for my “day job”.

Hoping to get back to this in a few weeks

1 Like

Hi Jozsi966,

I can see your RS485 connections in your circuit board image.

The contacts are marked GND, HK-A and HK-B on your unit. You need a RS485 converter connected to the A+ and B- differential data lines.

Hi Clay,

Dropped you an email - I’m hoping you can share a link or the source for the Java library for the SR1188.

I’ve been using our one for ten years, but not having much luck decoding the protocol due to a lack of documentation.

Thanks!

Hi @Jozsi966 did you manage to control the data from the BIGTREETECH module into home assistance?
I was thinking about buying the same module to install on my SR658.
Thank you

Hi, all! I have a short Python script working on my SR1168 and sending MQTT messages. Please feel free to give this a try - and let me know the results

Here’s the code

#!/usr/bin/python

import serial
import paho.mqtt.client as mqtt
import time

def CtoF(C):
    F = (C * 9 / 5) + 32
    return F

ser = serial.Serial('/dev/ttyUSB0', 4800)

unicode_string = '\x01\x03\x00\x00\x00\x10\x14\x00'

# Encoding to bytes
byte_string = unicode_string.encode('utf-8')
# send request
ser.write(byte_string)

# read 37 byte response
raw = ser.read(37)
data = raw[3:37]

# print data.encode('hex')

top =  CtoF(data[0] - 10)
#print('Tank Top',  top)
collector = CtoF(data[1] - 10)
#print('Collector', collector)
bottom = CtoF(data[2])
#print('Tank Bottom', bottom)

import paho.mqtt.client as mqtt

# Define the MQTT settings
broker = "emqx"  # Replace with your broker address
port = 1883                   # Default MQTT port

# Create a new MQTT client instance
client = mqtt.Client()

# Connect to the broker
client.connect(broker, port)

# Publish the messages
client.publish("solarwater/top", top)
time.sleep(2)
client.publish("solarwater/collector", collector)
time.sleep(2)
client.publish("solarwater/bottom", bottom)
time.sleep(2)

# Disconnect from the broker
client.disconnect()

#print("Message sent!")

And here’s what I put into my configuration.yaml

# Solar Water
    - state_topic: "solarwater/collector"
      name: "Solar Water Collector Temperature"
      unit_of_measurement: '°F' 
      device_class: 'temperature'
      value_template: "{{ value | round(1) }}"
      unique_id: SWCollector
    - state_topic: "solarwater/top"
      name: "Solar Water Tank Top"
      unit_of_measurement: '°F' 
      device_class: 'temperature'
      value_template: "{{ value | round(1) }}"
      unique_id: SWTop
    - state_topic: "solarwater/bottom"
      name: "Solar Water Tank Bottom"
      unit_of_measurement: '°F' 
      device_class: 'temperature'
      value_template: "{{ value | round(1) }}"
      unique_id: SWBottom