Jump to content


  • Posts

  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

infinitenothing's Achievements


Newbie (1/5)



  1. 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.
  2. Nice! It looks like the commands are fairly similar? For a webserver, I've used python/flask before.
  3. 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
  4. 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.
  • Create New...