Author Topic: Figuring out an RS485 protocol?  (Read 7321 times)

0 Members and 1 Guest are viewing this topic.

Offline jsouto

  • Contributor
  • Posts: 5
  • Country: es
Re: Figuring out an RS485 protocol?
« Reply #25 on: July 20, 2020, 11:50:03 am »
Hi,

Here are my advance:

110568d8ff4353
110568d84002c23e00003f0c03420019080a0d0965de0a000ce983
110568d82d7fff3d00040c002437019a3803b63b02ba3c0048358000bc19
110568d8 – Living room thermostat
40 – Id SetPoint temperature
02c2 – Value
2d7ff – Id real temperature
02ba – Value

Which model of thermostat do you have??



 

Offline dimmu311

  • Newbie
  • Posts: 1
  • Country: de
Re: Figuring out an RS485 protocol?
« Reply #26 on: November 15, 2020, 09:32:10 pm »
Hi,
i have also Uponor Device. I want to repace the original uponor room thermostat and use home automation system that has rs485 interface.

With the Infos form here and with the log of one of my thermostat, i think i have some more idea of the protocol, but it is still something missing.

i also have a set nearly looks like the other ones postet here.

10   4   21   77   FF   D3   49                                                                     
10   4   21   77   40   3   4   3E   0   0   3F   0C   8   3B   2   B3   53   D0                                    
10   4   21   77   2D   7F   FF   3D   0   0   0C   0   24   37   1   9A   38   3   B6   3B   2   B3   3C   0   48   35   80   0   4A   31

see this set for example.

i think the first byte is something like device type. i use t145, wich is more basic one then yours.
i think uponor uses diffrent values for diffrent thermostat types.

i also think that this is a poll message form the controller to get the the values from the connectet thermostats.
10   4   21   77   FF   D3   49   

in my case the termostat answers with this to packets.
i think i have found something intressting.
see this messages. i have removed the header at the beginning and the crc at the end
I think the message follows a simple rule. 1 byte messege code, 2 bytes value.
using this rules i think about that:

40   3   4   3E   0   0   3F   0C   8   3B   2   B3                                    
2D   7F   FF   3D   0   0   0C   0   24   37   1   9A   38   3   B6   3B   2   B3   3C   0   48   35   80   0

40 = actual temp = x03x04 -> 772 -> (772-320)/18 = 25,1°C
3E = ?
3F = ?
3B = set Point temp = x2x3B -> 571 -> (571-320)/18 = 20,6°

and the second packet
2D = ? not sure, maybe a value in twos complement. in KNX 7fff is reserved for not available value.
3D = ?
0c = humidity? -> sure about this. the value could be posible, but i dont know if this thermostat is able to messure humidity.
37 = Min possible Set Point Temp (5°C)
38 = Max possible Set Point Temp (35°C)
3B = again the setpont temp
3C = ?

after i study the modbus document i think ther should be some values for:
heating/cooling mode,
day/night mode,
diffrent setpoint temp in cooling mode
diffrent setpoint temp in night mode  (maybe after the 2D) could be -2K or something
actual humidity
setpoint humidity.

so now the problem is: on my thermostat i can only change the setpoint temp. When i change the setpoint temp i can see diffrent value after 3B. When i use hairdryer i can see higher value after 40.

could maybe one of you check if my theory could be bossible? Or mybe somone of you have thermostat wher you can see humidity, or something else to double check if i have found right messeg code.

i have attached excel sheet. you can put your message there and it calculates the thinks i found out.

Thank you
 

Offline TBuyukkilic

  • Newbie
  • Posts: 4
  • Country: nl
Re: Figuring out an RS485 protocol?
« Reply #27 on: February 07, 2022, 09:42:12 pm »
Hi guys,
This topic really helped me out on my quest. I'm a bit stuck and I don't really know what to do, hopefully you can help out.

So I have a Uponor Smatrix Base X-245 base station with the Uponor Smatrix Base T-146 Bus thermostats. I have 8 of them hooked up, and this is the output I can read using a Raspberry Pi 3B+ and a MAX485 device:
Code: [Select]
110c1bcaffbdb4
110c1bca40027d3e00003f0c023c00483b026042b300c856
110c1bca2d7fff3d00000c002437019a3803b63b02603c00483580002928
110c28beff6abb
110c28be4002753e00003f0c0242b3003f71
110c28be2d7fff3d00000c002437019a3803b63b02073c004835800077e1
110c0566ffa0b2
110c05664002753e00003f0c0242b3003285
110c05662d7fff3d00000c002437019a3803b63b02073c00483580008c01
110c04c9ff8c82
110c04c94002d23e00003f0c0242b30011b2
110c04c92d7fff3d00000c002437019a3803b63b02c33c0048358000f596
110c04eaff95b2
110c04ea4002c13e00003f0c0242b3009a8b
110c04ea2d7fff3d00400c002437019a3803b63b02c43c0048358000c2b8
110c04c5ff8982
110c04c54002a03e00003f0c0242b300a39f
110c04c52d7fff3d00000c002437019a3803b63b027c3c00483580004432
110c04dbff8022
110c04db4002c43e00003f0c0242b300c9ea
110c04db2d7fff3d00000c002437019a3803b63b02c33c00483580000ab1
110c055dffb382
110c055d4002873e00003f0c0242b300cdf7
110c055d2d7fff3d00000c002437019a3803b63b027c3c00

So I was really happen when I was able to read the actual and set temperature values from this response. Since the request/responses adhere to the CRC-16 (Modbus) check, I started an attempt to set the temperatures. So I've installed the Python package minimalmodbus and configured my instrument as follows:
Code: [Select]
import minimalmodbus
from gpiozero import OutputDevice
de = OutputDevice(23)
re = OutputDevice(24)
de.off()
re.off()
instrument = minimalmodbus.Instrument('/dev/serial0', 1, minimalmodbus.MODE_RTU)
instrument.serial.timeout = None
instrument.debug = True

But whatever command I try to send, e.g. instrument.read_register(40006,0,3,True) to read the value set for channel 6, I keep getting the "11 0C" response, which indicates that it's an functioncode 12 "Get Comm Event Log" response.

This is the error:
Code: [Select]
>>> instrument.read_register(40006,0,3,True)
MinimalModbus debug mode. Will write to instrument (expecting 7 bytes back): 01 03 9C 46 00 01 4B 8F (8 bytes)
MinimalModbus debug mode. Clearing serial buffers for port /dev/serial0
MinimalModbus debug mode. No sleep required before write. Time since previous read: 2965.81 ms, minimum silent period: 2.01 ms.
MinimalModbus debug mode. Response from instrument: 11 0C 1B CA FF BD B4 (7 bytes), roundtrip time: 7.0 ms. Timeout for reading: 0.0 ms.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.7/dist-packages/minimalmodbus.py", line 486, in read_register
    payloadformat=_Payloadformat.REGISTER,
  File "/usr/local/lib/python3.7/dist-packages/minimalmodbus.py", line 1245, in _generic_command
    payload_from_slave = self._perform_command(functioncode, payload_to_slave)
  File "/usr/local/lib/python3.7/dist-packages/minimalmodbus.py", line 1330, in _perform_command
    response, self.address, self.mode, functioncode
  File "/usr/local/lib/python3.7/dist-packages/minimalmodbus.py", line 1875, in _extract_payload
    responseaddress, slaveaddress, response
minimalmodbus.InvalidResponseError: Wrong return slave address: 17 instead of 1. The response is: '\x11\x0c\x1bÊÿ½´'

Do you guys know what to do? Is it possible that the Uponor Smatrix Base X-245 only has a subset of the Modbus functions implemented? If so, what would my best shot be to write something back?

I tried to capture a possible request to change the temperature, but all I can see is the log where I went from 21,5°C (707°K, \x02\xc4) to 25,0°C (770°K, \x03\x02)
Code: [Select]
110c04eaff95b2
110c04ea4002c43e00003f0c02 42b3008a9b
110c04ea2d7fff3d00000c002437019a3803b63b02c43c0048358000d777

110c04eaff95b2
110c04ea4002c43e00003f0c02 3c00483b030242b3004466
110c04ea2d7fff3d00000c002437019a3803b63b03023c0048358000b0b7

110c04eaff95b2
110c04ea4002c43e00003f0c023c00483b030242b3004466
110c04ea2d7fff3d00400c002437019a3803b63b03023c0048358000a578

110c04eaff95b2
110c04ea4002c43e00003f0c0242b3008a9b
110c04ea2d7fff3d00400c002437019a3803b63b03023c0048358000a578
« Last Edit: February 07, 2022, 10:15:10 pm by TBuyukkilic »
 

Offline mitokondoria

  • Newbie
  • Posts: 4
  • Country: es
Re: Figuring out an RS485 protocol?
« Reply #28 on: February 21, 2022, 09:20:33 am »

could maybe one of you check if my theory could be bossible? Or mybe somone of you have thermostat wher you can see humidity, or something else to double check if i have found right messeg code.


Hi dimmu311,

I own a SMatrix Wave with five T146 thermostats. Such thermostats doesn't have any humidity sensor, only a configurable remote temperature sensor.
My only available settings on the unit is modifying the ECO temperature and defining this remote sensor.

I'm working on completing a sketch for a Wemos D1 mini + MAX485 behaving as a sniffer and publishing to a MQTT topic (so homeassistant displays several climate entities). Will publish it as soon as it is "fine"


Edit: I have uploaded thee sketch at https://github.com/witokondoria/homeassistant_uponor
« Last Edit: February 23, 2022, 05:42:38 pm by mitokondoria »
 

Offline mitokondoria

  • Newbie
  • Posts: 4
  • Country: es
Re: Figuring out an RS485 protocol?
« Reply #29 on: February 24, 2022, 11:54:47 am »
I would think that uponor is not following the Modbus protocol partially on each different product

My Smatrix base only uses the function code 0x05 (write single coil) maybe because all of my units are T146. On programmable thermostats (T148), other function codes might be used
 

Offline TBuyukkilic

  • Newbie
  • Posts: 4
  • Country: nl
Re: Figuring out an RS485 protocol?
« Reply #30 on: March 03, 2022, 03:50:48 pm »
I made some progress, it's not an actual Modbus implementation, but they kind of did their own version.

- I can query the status, using the FF function code
- I can set the setpoint temperature by sending ID + SETTING + VALUE + CRC, however I need to send an empty or invalid value first e.g. 3B00003B0269
- I can only access other settings in the thermostat after a reset, however after registration I can nog longer access some settings, because I think the capabilities are hardcoded in the base unit

Request
Code: [Select]
data: 110C1BCA FF BDB4
ID: 110C1BCA
FUNCTION: FF (get status?)
CRC: BDB4

Response
Code: [Select]
data: 110C1BCA 4002AB 3E0000 3F0C02 42B300 D8AA
ID: 110C1BCA
ALLOW_COOLING (3F: 0C02): True
CURRENT_TEMPRATURE (40: 02AB): 20.17
OPERATING_MODE (3E: 0000): Room Temprature
UNKNOWN5 (42: B300): B300
CRC: D8AA

Response 2, not sure what triggers this
Code: [Select]
data: 110C1BCA 2D7FFF 3D0000 0C0024 37019A 3803B6 3B0269 3C0048 358000 3F0402 ACEA
ALLOW_COOLING (3F: 0402): True
ECO_SET_BACK (3C: 0048): 4.0
HEATING (3D: 0000): False
SETPOINT_TEMP (3B: 0269): 16.5
SETPOINT_TEMP_MAX (38: 03B6): 35.0
SETPOINT_TEMP_MIN (37: 019A): 5.0
UNKNOWN1 (0C: 0024): 0024
UNKNOWN2 (2D: 7FFF): 7FFF
UNKNOWN4 (35: 8000): 8000
CRC: ACEA


Code: [Select]
3F: Allow cooling - Some fuzzy logic here, it looks like hex value -2 /1024 returns an int, 1 is true, 2 is false, and 3 seems to be true....
40: Current temperature - degrees = int(str(value), 16); return ((degrees - 320) / 1.8) / 10
3E: Operating mode - "0000": "Room Temprature", "0001":"Internal with floor max/min","0002":"Remote Outdoor", "0003":"Remote Sensor"B300
42: No idea, returns B300 at all themorstats
3C: Eco setback,  weird logic, degrees = int(str(value), 16); return degrees / 18
3D: Heating, "0000": False, "0040": True
3B: Set temperature - degrees = int(str(value), 16); return ((degrees - 320) / 1.8) / 10
37: Min temperature - degrees = int(str(value), 16); return ((degrees - 320) / 1.8) / 10
38: Max temperature - degrees = int(str(value), 16); return ((degrees - 320) / 1.8) / 10
0C: No idea, returns 0024 at all themorstats
2D: No idea, returns 7FFFF at all themorstats, but this should indicate that the data is not available, whatever 2D stands for
35: No idea, returns 8000 at all themorstats
« Last Edit: March 03, 2022, 03:58:43 pm by TBuyukkilic »
 

Offline TBuyukkilic

  • Newbie
  • Posts: 4
  • Country: nl
Re: Figuring out an RS485 protocol?
« Reply #31 on: March 03, 2022, 04:01:16 pm »

could maybe one of you check if my theory could be bossible? Or mybe somone of you have thermostat wher you can see humidity, or something else to double check if i have found right messeg code.


Hi dimmu311,

I own a SMatrix Wave with five T146 thermostats. Such thermostats doesn't have any humidity sensor, only a configurable remote temperature sensor.
My only available settings on the unit is modifying the ECO temperature and defining this remote sensor.

I'm working on completing a sketch for a Wemos D1 mini + MAX485 behaving as a sniffer and publishing to a MQTT topic (so homeassistant displays several climate entities). Will publish it as soon as it is "fine"


Edit: I have uploaded thee sketch at https://github.com/witokondoria/homeassistant_uponor

Really nice, I want to do something similar, but also allow writing. We're getting there :)
 
The following users thanked this post: sicco

Offline drdds

  • Newbie
  • Posts: 3
  • Country: es
Re: Figuring out an RS485 protocol?
« Reply #32 on: May 11, 2022, 02:10:14 pm »
Hi there!
This is my first post. Despite I was registered time ago something happened with my previous account, that is no usable anymore.

It has been a long time since I discovered this thread and started planning my hardware and software (almost two years). In 2019 I sent a message to Alan (who started this thread) and after that started to plan. All your posts have been quite helpful to elaborate my software but still have a lot of doubts. Let’s start:

Hardware:

I’m using a RS485 server (http://www.hi-flying.com/hf5122) to interface with the controller (that is a SMATRIX BASE) and control my thermostats (all of, up to 6, them are T-146).
My settings are 19200 bps 8/1/N and I get consistent frames that are validated by means of the CRC (that matches the modbus one).

I created a server at port 9999 that copies any frame on the bus to the socket and allows me to send whatever frame.

Sofware:

I decided time ago to develop a service (written in Java) that will be running in a small linux server that gets the values from the RS485 port through TCP and posts them to a MQTT broker once they are processed.

Results so far… The server frame capture and processing part is almost ready (except for my doubts that are shared here) and the MQTT part is still pending (I hope not for a long time…)

Frames:

The usual frames I can capture from the system are:

Code: [Select]
<-  11049E8BFF9E6D
11 04 | 9E 8B | FF | CRC 9E6D [ OK ]

->  11049E8B4003373E00003F1C02FB14
11 04 | 9E 8B | Room Temp[40]( 03:37 -> 82.3F/27.94C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC FB14 [ OK ]

->  11049E8B2D7FFF3D10400C002437019A3803B63B02CC3C0048358000D8B9
11 04 | 9E 8B |  ID: 2D | Val 7FFF || Demand water[3D]( 10:40 -> YES [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CC -> 71.6F/22.0C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC D8B9 [ OK ]



My analysis of the frames:

really modbus?

In principle observing the frame staring with "11 04" anyone may think it is modbus requesting registers (0x04) to station 17 (0x11), however, observing others’ posts (that were quite helpful) I discovered that changes with the system. For instance, dimmu311 reports frames staring with "10 4" that also fits into the hypothesis, but jsouto reports "10 05" that does not fit! also TBuyukkilic reports "11 0c" that also does not fit! So…. This is something proprietary.

I assumed first two bytes as SYSTEM ID (11 04)

I assumed third and fourth bytes as the STATION ID (thermostat, 9E 8B in the example).

I agree that FF may be status request as mitokondoria suggests for requests (<-)

The data in responses are sets of the sequence ID (1byte) Payload(2 byte).

So it is not modbus despite frame CRC matches.


What about the data?

I strongly relied on what TBuyukkilic provided in a previous post. Let me show my conclusions on the values and my doubts:

Code: [Select]
->  11049E8B4003373E00003F1C02FB14
11 04 | 9E 8B | Room Temp[40]( 03:37 -> 82.3F/27.94C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC FB14 [ OK ]


* ID 0x40 (room temperature)   400337
(03:37 -> 82.3F/27.94C)
DOUBTS: No doubt at all! This is crystal clear! I have double checked it. In uponor documents they claim they convert it using (F-320)/18. I’m doing the traditional way and also matches.


* ID 0x3E (operating mode) 3E0000
Code: [Select]
ROOM_TEMPERATURE(0x0000, "Room Temperature"), INTERNAL_FLOOR_SENSOR(0x0002, "Internal floor sensor"), REMOTE_OUTDOOR_SENSOR(0x0003, "Remote Outdoor sensor"), REMOTE_SENSOR(0xB300, "Remote sensor");


DOUBTS: TBuyukkilic , where did you get that??!!! It is great and seems to match! Thanks a lot!


*  ID 0x3F (allow cooling??) 3F1C02
I process it this way:
Code: [Select]
hot = ((currently&0xF000) == 0x0000) ? true : false;
cold = ((currently&0xF000) == 0x1000) ? true : false;


DOUBTS: TBuyukkilic calls it Allow Cooling, but I noticed that 0xF000&Value=0x0000 for heating (winter) and  0xF000&Value=0x1000 for cooling (summer)… but I can’t say anything else about the rest  that would be C02 taking out the first 4 bits…

Code: [Select]
->  11049E8B2D7FFF3D10400C002437019A3803B63B02CC3C0048358000D8B9
11 04 | 9E 8B |  ID: 2D | Val 7FFF || Demand water[3D]( 10:40 -> YES [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CC -> 71.6F/22.0C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC D8B9 [ OK ]


*  ID 0x2D (no idea!) 2D7FFF
DOUBTS: everyone get 7FFF but no idea!

*  ID 0x3D (I named it demand)  3D1040
I processed this way:
Code: [Select]
demanding = ((currently&0x00FF) == 0x0040) ? true : false;
hot = ((currently&0xFF00) == 0x0000) ? true : false;
cold = ((currently&0xFF00) == 0x1000) ? true : false;


DOUBTS: So 0x0000 means actuators for this thermostat are not demanding water during heating, 0x0040 demands water (heating), 0x1000 no demand (cooling), 0x1040 demands (cooling). Do you observe the same?

* ID 0x0C (no idea) 0C0024
Always the same value!
DOUBTS: did you observed something different? Are you all using t-146 (may be the model). It may also has something to do with display configurations at thermostat?

* ID 0x38 Setpoint MIN
* ID 0x37 Setpoint MIN, as room temperature. Also documented by uponor that is maximum 35 and minimum 5. So, crystal clear!

*  ID 0x3B  (setpoint)  3B02CC
I process it as Room temperature but get always two degrees LESS that the actual setpoint (at least in cooling mode – need to check in heating mode..)
DOUBTs: do you read the exact temperature? Or you need to increase it by 2 (in Celsius)??

* ID 0x3C and ID 0x35, no idea at all.

Thanks for your time and let’s see if you can bring any light to all this!

I add some traffic for analysis:
Code: [Select]
Client... started
->  110470642D7FFF3D10000C002437019A3803B63B02CD3C004835800087C5
11 04 | 70 64 |  ID: 2D | Val 7FFF || Demand water[3D]( 10:00 -> NO [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CD -> 71.7F/22.06C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC 87C5 [ OK ]
<-  11047069FFB6F8
11 04 | 70 69 | FF | CRC B6F8 [ OK ]
->  110470694002EA3E00003F1C02F162
11 04 | 70 69 | Room Temp[40]( 02:EA -> 74.6F/23.67C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC F162 [ OK ]
->  110470692D7FFF3D10000C002437019A3803B63B02CD3C00483580002C53
11 04 | 70 69 |  ID: 2D | Val 7FFF || Demand water[3D]( 10:00 -> NO [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CD -> 71.7F/22.06C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC 2C53 [ OK ]
<-  11047064FFB268
11 04 | 70 64 | FF | CRC B268 [ OK ]
->  110470644002F13E00003F1C02CB99
11 04 | 70 64 | Room Temp[40]( 02:F1 -> 75.3F/24.06C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC CB99 [ OK ]
->  110470642D7FFF3D10000C002437019A3803B63B02CD3C004835800087C5
11 04 | 70 64 |  ID: 2D | Val 7FFF || Demand water[3D]( 10:00 -> NO [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CD -> 71.7F/22.06C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC 87C5 [ OK ]
<-  1104708CFFFC68
11 04 | 70 8C | FF | CRC FC68 [ OK ]
->  1104708C4002EB3E00003F1C02F5E4
11 04 | 70 8C | Room Temp[40]( 02:EB -> 74.7F/23.72C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC F5E4 [ OK ]
->  1104708C2D7FFF3D10000C002437019A3803B63B02CD3C00483580007FDA
11 04 | 70 8C |  ID: 2D | Val 7FFF || Demand water[3D]( 10:00 -> NO [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CD -> 71.7F/22.06C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC 7FDA [ OK ]
<-  11047124FFD268
11 04 | 71 24 | FF | CRC D268 [ OK ]
->  110471244002F73E00003F1C02ABB1
11 04 | 71 24 | Room Temp[40]( 02:F7 -> 75.9F/24.39C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC ABB1 [ OK ]
->  110471242D7FFF3D10400C002437019A3803B63B02CD3C00483580003C20
11 04 | 71 24 |  ID: 2D | Val 7FFF || Demand water[3D]( 10:40 -> YES [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CD -> 71.7F/22.06C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC 3C20 [ OK ]
<-  1104706DFFB438
11 04 | 70 6D | FF | CRC B438 [ OK ]
->  1104706D4002EC3E00003F1C02D6B7
11 04 | 70 6D | Room Temp[40]( 02:EC -> 74.8F/23.78C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC D6B7 [ OK ]
->  1104706D2D7FFF3D10000C002437019A3803B63B02CD3C00483580007976
11 04 | 70 6D |  ID: 2D | Val 7FFF || Demand water[3D]( 10:00 -> NO [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CD -> 71.7F/22.06C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC 7976 [ OK ]
<-  11049E8BFF9E6D
11 04 | 9E 8B | FF | CRC 9E6D [ OK ]
->  11049E8B40033A3E00003F1C0227D4
11 04 | 9E 8B | Room Temp[40]( 03:3A -> 82.6F/28.11C ) || Operating mode [3E] ( 00:00 -> ROOM_TEMPERATURE || Params1 [3F] ( 1C:02 ->  [Cold] ) || CRC 27D4 [ OK ]
->  11049E8B2D7FFF3D10400C002437019A3803B63B02CC3C0048358000D8B9
11 04 | 9E 8B |  ID: 2D | Val 7FFF || Demand water[3D]( 10:40 -> YES [Cold] ) ||  ID: 0C | Val 0024 || SetPoint Temp Min [37] ( 01:9A -> 41.0F/5.0C ) || SetPoint Temp Max [38]( 03:B6 -> 95.0F/35.0C ) || SetPoint Temp[3B]( 02:CC -> 71.6F/22.0C )  ||  ID: 3C | Val 0048 ||  ID: 35 | Val 8000 || CRC D8B9 [ OK ]


 

Offline drdds

  • Newbie
  • Posts: 3
  • Country: es
Re: Figuring out an RS485 protocol?
« Reply #33 on: May 16, 2022, 06:59:47 pm »
Hi there,

I have had very productive days in row and I have a prototype for this.

All the details can be found at https://github.com/ddsuc3m/uponor-floorheating
Also I opened a discussion in OpenHab https://community.openhab.org/t/control-uponor-underfloor-heating-thermostats/135969

Some things that were open:

- Eco set back is exactly as you mentioned before, so it is updated in code
- Do you have a timer (I-143) to monitor how the controller changes the thermostats?
- Can you please post your controller and thermostats models together with some traffic (I think the first two bytes are the controller model - or related)?
- Any of you has a thermostat provinding humidity? (so we can findout the humidity command that is maybe one of the unknown fields)

Thanks!
 

Offline drdds

  • Newbie
  • Posts: 3
  • Country: es
Re: Figuring out an RS485 protocol?
« Reply #34 on: May 18, 2022, 09:30:42 am »
There are new updates to the software since it crashed after few hours.
Now seems to be stable

Regards!
 

Offline TBuyukkilic

  • Newbie
  • Posts: 4
  • Country: nl
Re: Figuring out an RS485 protocol?
« Reply #35 on: September 13, 2022, 03:57:34 am »
Sorry for the late reply, but my base unit is a Uponor Smatrix Base Pulse X-245 BUS 6X, it would be nice to map these to values as well.

Edit: btw I got the operating mode and such from the manuals. I see in this thermostat settings like units (F or C), light, auto on/off, these might be the values for the missing settings. Source: https://www.uponor.com/getmedia/4114b1ac-c794-40cb-ac08-0a192915a8fb/single%20stage%20setpoint%20controller%20with%20floor%20sensor%20user%20manual.pdf?sitename=Canada
« Last Edit: September 13, 2022, 06:01:22 am by TBuyukkilic »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf