Open jmbertho opened 3 years ago
I'll take a look tomorrow. Please post a picture of the capture setup wiring as I guess there's a mistake. Just to be sure :-)
Best, Sascha
Hi I’m currently working on decoding my Poolstar Skyline/Silverline 55 which uses a different protocol. I’m in touch with Sascha to figure out the last bits, I can already decide the main values. You’ll find the code on https://github.com/cyrilpawelko/poolstarmon/tree/main/micropython I’ll take a look at your capture to see whether it’s the same protocol.
I can confirm it seems the same protocol : 50 bytes, messages (at least from the pump), 10 000 bauds, 8N1 and similar data patterns. You can find my captures on https://github.com/cyrilpawelko/poolstarmon/tree/main/sigrok and they look very similar. My code is not documented, I'm running micropython on ESP2, with RS485 to TTL converter connected to UART2.
Wow thanks a lot cyril ! I'll have a look at your captures and your code asap. Thanks for sharing. The main things I'm interested in is mostly to change the setpoint and read the current temperature. I took a new capture, double checking the wiring (A to ch1, B to ch2, GND to GND), and the value seems to be of the same pattern as the initial capture.
Using @cyrilpawelko 's source code as inspiration, I hooked a raspberry pi zero with a rs485 to usb converter. I'm able to see a regular feed of 50bytes and 100bytes messages. However, decoding the values doesn't see to match : "PUMP Active: 1 Water In: 29 Water Out: 51 Coil: 54 Gas Exhaust: 53 Ambient: 54" Although the values are stable from one 50bytes message to another, they don't match any real value (at least in celsius, or any other standards that I know :)) "Pump active" stays at 1 even if I turn it off from controller. Have you been able to read correct values on your side ?
You need to figure out the calculation scheme. On mine it was something like a 30 degree Celsius offset and centi degrees multioield by ten.
Good luck. But at first, make note of the values on the controller and the other the bus messages. Then happy guessing 😉
jmbertho @.***> schrieb am Sa., 3. Juli 2021, 21:25:
Using @cyrilpawelko https://github.com/cyrilpawelko 's source code as inspiration, I hooked a raspberry pi zero with a rs485 to usb converter. I'm able to see a regular feed of 50bytes and 100bytes messages. However, decoding the values doesn't see to match : "PUMP Active: 1 Water In: 29 Water Out: 51 Coil: 54 Gas Exhaust: 53 Ambient: 54" Although the values are stable from one 50bytes message to another, they don't match any real value (at least in celsius, or any other standards that I know :)) "Pump active" stays at 1 even if I turn it off from controller. Have you been able to read correct values on your side ?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/cribskip/esp8266_poolstar/issues/2#issuecomment-873458476, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK476VMX7US3QX7YR4NRBTTV5P3BANCNFSM47X36QIA .
Using @cyrilpawelko 's source code as inspiration, I hooked a raspberry pi zero with a rs485 to usb converter. I'm able to see a regular feed of 50bytes and 100bytes messages. However, decoding the values doesn't see to match : "PUMP Active: 1 Water In: 29 Water Out: 51 Coil: 54 Gas Exhaust: 53 Ambient: 54" Although the values are stable from one 50bytes message to another, they don't match any real value (at least in celsius, or any other standards that I know :)) "Pump active" stays at 1 even if I turn it off from controller. Have you been able to read correct values on your side ?
@jmbertho : yes, all the temperatures values match the panel display. I'm convinced we both deal with the same protocol. I suspect you have a "packet start" issue that messes the data. How was your capture done ?
Small update : It seems that I can read the values from the pump correctly. When loop reading (9600 8N1) 50bytes with a 2msec serial timeout, I do get structured frames. The one from the pump starts with 0xDD, then the values (air temp, etc.) are provided in the same bytes as in your code, @cyrilpawelko : except that I don't have to change anything -> the hex value within the byte seems to be the final value. (Except for the on/off value which is only one bit, int value of 8 = compressor OFF, 11 = compressor ON)
I'm also reading frames from the panel, they start with 0xD2 and I can find the setpoint and on/off values when I change them from the panel.
Next question is : have you been able to actually control the unit by changing the setpoint and on/off values ? Is it possible to act as a second panel (or did you remove the panel, @cribskip ?) Here is a sample of what I can read when changing setpoint values from the panel. Please note that the output from python is messy (some hex values are converted into characters when printing). I fixed that but haven't been able to capture since then.
It seems that the remote panel is sending frames starting with 0xCD. I tried to write one message starting with 0xCD, with a different setpoint value, but nothing happened. There might a some kind of checksum or counter to use, but I didn't figure out yet how this works. The pump also seem to send a frame starting with 0xBC at a regular interval. I didn't figure what it is exactly. There is also a 0xCC frame that is sent regularly (the 0xCD is the only frame that is emitted when pushing a button on the panel, and only then).
Here is an example capture, in case it speaks to you :
`===== setpoint going from 0x1c to 0x12 on remote panel ? xd2 = status from UNIT : Last byte = Last byte from WRITE from REMOTE ? ? xcd = WRITE from REMOTE ? ? xbc = Request from UNIT to WRITE ?!
050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xbc\x12#\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xee' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xcc\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc4' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xbc\x12#\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xee' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xcc\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc4' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xbc\x12#\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xee' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xcc\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc4' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xbc\x12#\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xee' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xcc\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc4' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xbc\x12#\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xee' 050RX: b'\xd2\x0f\x00\x1b\x1c\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xca' 050RX: b'\xcd\x0f\x00\x1b\x1a\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc3' 050RX: b'\xd2\x0f\x00\x1b\x1a\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc8' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x1a\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc8' 050RX: b'\xcd\x0f\x00\x1b\x18\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc1' 050RX: b'\xd2\x0f\x00\x1b\x18\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc6' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x18\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc6' 050RX: b'\xcd\x0f\x00\x1b\x17\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xd2\x0f\x00\x1b\x17\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc5' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x17\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc5' 050RX: b'\xcd\x0f\x00\x1b\x15\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xbe' 050RX: b'\xd2\x0f\x00\x1b\x15\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc3' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x15\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc3' 050RX: b'\xcd\x0f\x00\x1b\x13\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xbc' 050RX: b'\xd2\x0f\x00\x1b\x13\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc1' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x13\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc1' 050RX: b'\xcd\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xbb' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xcd\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xbb' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xcd\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xbb' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xcd\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xbb' 050RX: b'\xd2\x0f\x00\x1b\x12\x1b\x02\x00(\x00\x02\nv(\x0f\x02\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x00\t\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x7f\x7f\x7f\x7f\x7f\xc0' 050RX: b'\xbc\x12$\x00\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\xef'`
Sorry for getting back at you sooo much later.
Yes, I've removed the original panel in order for my PCB to fit in.
Also because the protocol toggles between message from Heatpump / Panel, this would have messed up the communication.
What's your progress been? :-)
Best, Sascha
hi @jmbertho , did you figure out your controller? I'm workling currently on the same protocol than you (Jetline) - I wonder if you can share your code :) Thanks a lot
Hi! Short answer is : YES, I figured it out and was even able to send commands such as on/off and temperature setpoint!
It worked fine for a year, BUT the SD card of my 'pool-raspberry' (I used node-red for this) died and... I cannot find any backup of the source code so far (only some cryptic notes on my Mac).
However, I decided to do it again (yet frustrated) and will investigate this in the coming weeks. I'll let you know if I find something back, or rewrite something !
Positive thing is : it is totally doable! (AND : do backups! (AND : note where you save them!))
Jim
Le mar. 16 juil. 2024 à 15:30, gio. @.***> a écrit :
hi @jmbertho https://github.com/jmbertho , did you figure out your controller? I'm workling currently on the same protocol than you (Jetline) - I wonder if you can share your code :) Thanks a lot
— Reply to this email directly, view it on GitHub https://github.com/cribskip/esp8266_poolstar/issues/2#issuecomment-2230898604, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADCALP2FX6P6RNU76B6AYC3ZMUN77AVCNFSM6AAAAABK6TQM6GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMZQHA4TQNRQGQ . You are receiving this because you were mentioned.Message ID: @.***>
Good to know !
I'm actually struggling to isolate the break condition, and get complete message. With a timeout of 50ms to 100ms I'm not getting 50bytes for all messages.
I've isolated the frame but manually - hard to define a pattern to program an automatic recognition.
For exemple :
`V p:^0186ms) (sniffing) size of buffer : 49
(V p:^0002ms) (sniffing) 1C D9 DD B9 C7 FF EF FF FF 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 31
(V p:^0495ms) (sniffing) size of buffer : 45
(V p:^0002ms) (sniffing) 04 FF C7 C7 C9 FB FF AF DD 0B FD 01 01 01 01 01 01 01 01 01 01 01 01 01 01 FD F5 C3 D3 FF FF FF FF FF FF FF FF FF 01 01 01 01 01 01 FD
(V p:^0253ms) (sniffing) size of buffer : 23
(V p:^0002ms) (sniffing) 00 FC 1C 1C 24 EC FC 1D 8F F4 F4 D4 0C 4C FC FC FC FC FC FC FC FC FC
(V p:^0240ms) (sniffing) size of buffer : 49
(V p:^0002ms) (sniffing) 1C D9 DD B9 C7 FF FF FF FF 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 41
(V p:^0496ms) (sniffing) size of buffer : 45
(V p:^0002ms) (sniffing) 04 FF C7 C7 C9 FB FF AF DD 0B FD 01 01 01 01 01 01 01 01 01 01 01 01 01 01 FD F5 C3 D3 FF FF FF FF FF FF FF FF FF 01 01 01 01 01 01 FD
(V p:^0203ms) (sniffing) size of buffer : 3
(V p:^0001ms) (sniffing) 00 88 C7
(V p:^0102ms) (sniffing) size of buffer : 1
(V p:^0001ms) (sniffing) 24
(V p:^0186ms) (sniffing) size of buffer : 49
(V p:^0002ms) (sniffing) 1C D9 DD B9 C7 FF FF FF FF 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 41
(V p:^0496ms) (sniffing) size of buffer : 45
(V p:^0002ms) (sniffing) 04 FF C7 C7 C9 FB FF AF DD 0B FD 01 01 01 01 01 01 01 01 01 01 01 01 01 01 FD F5 C3 D3 FF FF FF FF FF FF FF FF FF 01 01 01 01 01 01 FD
(V p:^0253ms) (sniffing) size of buffer : 22
(V p:^0001ms) (sniffing) 00 1C 1C 24 EC FC 1D 8F F4 F4 D4 0C 4C FC FC FC FC FC FC FC FC FC
(V p:^0240ms) (sniffing) size of buffer : 49
(V p:^0002ms) (sniffing) 1C D9 DD B9 C7 FF FF FF FF 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 41
Eager to see you restart your project!
FYI / I've released my current state here : https://github.com/gclem/esp8266_poolex_heatpump_controller
Thanks for the great work and hints about reverse engineering. I own a poolex 120 heat pump with similar controller. However I can't find the same traces using SigRok (and I'm having troubles guessing the baud rate -> framing errors in all cases). My SigRok capture between heat pump and controller (A hooked on D1 + B on D2 + GND) is attached to this "issue". Let me know if we can get in touch to figure this out ! PAC.sr.zip