Jump to content

infinitenothing

Members
  • Posts

    6
  • Joined

  • Last visited

Posts posted by infinitenothing

  1. Hardware

    20And0CgLYYwpuqIywW66f5E3vMnDn155A06-3SnXcUYGbsgbIoFvqhz3YEWv_5IhZsrMIOypAyGzUdhHKzyrOc1ROmY0NvdkF8QGNFjEn7KfbdV7zeEUozbNH-KRSBsNbMn17wu

    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. 

     

    Nf19m_GHomH35eMlGG2HhJRIbyuQTcvZxMzHXbG7Xm-30KCKDP1n6X0cGIeN7CRWq3GNpiaopXneUSRyTjB8oI4qgj3DfarPf27RpS1G-FmsOGjqDTGXbL0CHl2k4z3vbgg9jkGl

    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

     

    • Like 1
    • Thanks 2
  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.

×
×
  • Create New...