infinitenothing
-
Posts
6 -
Joined
-
Last visited
Posts posted by infinitenothing
-
-
I can always get the touchpad to come back by resuming the message forwarding. The controller and touchpad continue to try to reestablish communication.
-
I didn't want to spend a great deal of unpaid hours to support this project. I was more hoping to support enough people that could then help people who were less experienced with hardware. If you had questions of how any of the pieces work, I can help with that. My IDE (LabVIEW) is super obscure so I doubt my source code would be useful.
-
Nice! It looks like the commands are fairly similar?
For a webserver, I've used python/flask before.
-
Hardware
In the above setup, for each COM port, the Pi can wait for a packet (see below) and then forward that packet on to the other device’s RX. This results in a man in the middle sort of setup.
Example parts
Description
Mfg
Part number
Plugs into IQ2020 Control Head Port (8 Pin)
TE
3-644540-8
Receives from Touch Panel (8 Pin)
TE
3-647000-8
USB to RS422 adapter
DTECH
12 to 5V supply for Raspberry Pi
Weewooday
Pinout
Pin
Color
Touch Panel
IQ2020
1
Blue
Rx -
Tx-
2
Green
12V In
12V Out
3
Yellow
Tx +
Rx+
4
Red
Ground
Ground
5
Brown
Tx -
Rx-
6
White
Rx +
Rx+
7
NC
8
NC
Packet
Everything is Big Endian (Network order)
Message
Bytes
Notes
Start
3
Can be XMS (from touch panel) or XSM (from IQ2020)
Message Length
2
Doesn’t include start, length, or checksum bytes
Message
N
Checksum
2
Simple sum of all prior bytes.
Example full message (Main Screen Acknowledged): 58534D 0002 0800 0102
Important Messages
From touch panel
States
The touch panel sends these commands many times per second
Touch Panel Mode
Hex
Screen Off
6B 0000 0000 0100 0000 0000
Main Screen
6B 0000 0000 0100 0100 0000
Temperature Adjust Screen
6B 0300 0000 0100 0103 0000
Temp. Down Button Pressed
6B 0300 0008 0100 0103 0000
Temp. Up Button Pressed
6B 0300 0004 0100 0103 0000
Commands
Command
Msg Hex
Description
More
4B
When you enter a new mode, the IQ2020 will give the touch panel info that it needs to show its next screen. The IQ2020 spreads this info over a few packets. The touch panel asks for “more” until the IQ2020 sends a “I don’t have more info” packet” and then should resume sending one of the state packets above
From IQ2020
The green hex below is the temperature setpoint. The temperature is encoded as ASCII (eg 0x3831 => 81 F)
Message
Message Hex
Main Screen Acknowledged
08 00
Temperature Screen Acknowledged
08 03
Setpoint (going into temp)
00 0000 0A00 4005 040A 1502 0003 3831 3A00
Setpoint (after setpoint adjust)
01 0005 1503 3832 3A00
Communication Capture
The doc below is a capture of the communication during normal operation through the touch screen. In this capture, the touch screen starts off, then we go into the main screen, then we go to the temperature adjust screen, then we lower the temperature one degree, then we exit the temperature screen. I stop recording for a few minutes so the logs won’t be too long. The touch screen then goes back off.
https://docs.google.com/spreadsheets/d/1FPIu6mpBpGdMX-Mh76JIv4aA3WfhkPuU5-MZ9X7wuec/edit?usp=sharing
Full sequence to adjust temperature setpoint
-
Verify we are in “Screen Off” mode
-
Replace all “Screen Off” commands from touch screen with “Main Screen” commands
-
Wait until IQ2020 acknowledges that we’ve entered “Main Screen”
-
Replace all “Screen Off” commands with “Temperature Screen” commands
-
Grab setpoint from IQ2020
-
Wait for IQ2020 to acknowledge that we’re in “Temperature Screen” mode
-
Replace all “Screen Off” commands with “Temp. Up/Down” commands
-
Wait for setpoint to reach your new target setpoint
-
Go to main screen
-
Go to “screen off” (stop replacing “screen off” commands)
iPhone interface
Option 1: https://www.npmjs.com/package/homebridge-web-thermostat
Option 2: https://www.npmjs.com/package/homebridge-thermostat
Temperature Measurement
Watkins uses a 10kOhm thermistor to bring in the temperature. I connected to that thermistor (top right port) with a MAX31865. I used the calibration curves posted on the web (example) to convert from resistance to temperature
- 1
- 2
-
-
Sorry to resurect this old thread. I'm going to take a stab at this. I haven't totally figured out my approach. I have two ideas:
- Mess with the thermistor port. I'm thinking of a "man in the middle" attack and reading the voltage from the port and then sending a voltage so I can apply an offset to make the controller think the actual temperature is higher or lower by x degrees.
- Mess with the port labeled "Control Head Int". The messages look like RS422. Can anyone confirm?
I didn't see an I2C port.
Model on my control board is listed as USBRevC5a it came with my 2018 hot tub.
Some questions:
I have one general question—where is everyone pulling off power? I can see the main supply is 12V and I can see 5V and 12V is available on a port labeled peripheral. If anyone knew the current limits for the ports I'd appreciate it so I don't accidentally burn up my control board.
I hacked my 2018 Hot Springs hot tub so I could control the temperature over the internet
in Portable Hot Tubs & Spas
Posted
As far as I know, the sensors you want don't exist. My plan is to use cheap peristaltic pumps to draw a sample and mix in the titrants (maybe OTO) and then use a color sensor to measure chlorine. I don't think I'm brave enough to have it pump bleach back in. So many projects, so many adult responsibilities, so little time.