Skip to content

(0x62) Get Response

KazWolfe edited this page Apr 24, 2024 · 65 revisions

This packet is issued by the heat pump in response to a (0x42) Get Request packet. Unlike the ack-only form of Packet 0x61, this packet will include response information.

The first byte of this packet represents the command type that is being responded to. That is, if a device requested 0x02, the first byte of this packet will in turn be 0x02.

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType Multiple Partial
1-15 Packet Specific N/A N/A The exact contents of these bytes depend on the command type.

Type 0x02 - Get Current Settings

Packet information is very similar to SetSettings, and a lot of information is shared with that. See that section for more information.

Byte Purpose Possible Values Supported by mUART Notes
0 Command 0x02 Yes
3 Power No
4 Operating Mode No
5 Legacy Target Temperature
6 Fan
7 Vertical Vane
8 Prohibit Flags
9
10 Horizontal Vane Some units have bit 0x80 set. This bit's purpose is currently unknown.
Preliminary tests show that setting this bit is not required to update vane state.
11 Target Temperature
12
13
14
15

Type 0x03 - Get Room/Remote Temp

Byte Purpose Possible Values Supported by mUART Notes
0 Command 0x03 Yes
3 Current Legacy Temperature See Legacy Current Temperatures
5 Outdoor Unit Temperature See Enhanced Temperatures Rounded to nearest whole °C
If 0x00, unsupported.
6 Current Temperature See Enhanced Temperatures
7 ??? See Enhanced Temperatures Claimed to be the most recent value, but observations do not match that.
8 ??? 0x00, 0xFE
9 ??? 0x42, 0x00
11-13 Timestamp? Scalar Appears to be minutes since an unknown event.
Not sent for all unit types.

Bytes 6 and 7 are particularly confusing. First off, byte 7 is not sent by all units. SwiCago's thread has identified Byte 7 to be the "most recent" reading, while Byte 6 is the last reading. While this works for external temperature sensors, it does not work for the internal sensor - see below sample packet where it goes from 0xA9 to 0xAC and completely ignores the 0xB0). Kumo's code claims that byte 6 is room_temp_a, and does not use byte 7 at all.

Sample Packets:

[FC.62.01.30.10]03.00.00.0C.00.92.AC.00.00.00.00.00.00.00.00.00 10  // SVZ-KP30NA

[FC.62.01.30.10]03.00.00.0F.00.92.B2.B6.FE.42.00.01.59.7A.00.00 3D  // MSZ-GS12NA
[FC.62.01.30.10]03.00.00.09.00.92.A7.A7.FE.42.00.01.59.7B.00.00 5C
[FC.62.01.30.10]03.00.00.0A.00.8A.A9.A9.FE.42.00.01.5A.ED.00.00 EC
[FC.62.01.30.10]03.00.00.0C.00.88.AC.B0.FE.42.00.01.5A.FA.00.00 D5  // ... internal temp
[FC.62.01.30.10]03.00.00.0C.00.88.AC.A9.FE.42.00.01.5A.FB.00.00 DB  // back to external
[FC.62.01.30.10]03.00.00.0A.00.88.A9.A9.FE.42.00.01.5A.FB.00.00 E0 
[FC.62.01.30.10]03.00.00.0A.00.88.A9.B0.FE.42.00.01.5A.FC.00.00 D8  // back to internal
[FC.62.01.30.10]03.00.00.0C.00.88.AC.B0.FE.42.00.01.5A.FC.00.00 D3

Type 0x04 - Get Error State

This packet has not been observed over the wire yet. It seems likely there's a flag somewhere in a standard packet to inform the MHK2/Kumo to request error information?

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0x04 Yes
4-5 Error Code 0x8000 Partial 0x8000 is "all clear", other values TBD
6 Two Character Code 0x00 Partial User-friendly (?) error code
0x00 (A0) is "all clear"

Certain error codes have a textual representation at https://app.kumocloud.com/json/fault-codes.json. The two-character code needs to be mapped from hex to a specific display format.

The two-character-code will need to be converted from hex into a human-readable format, which may be done using the following sample code (n.b. requires validation):

def convert_two_char(code):
    upper_alpha = "AbEFJLPU"
    lower_alpha = "0123456789ABCDEFOHJLPU"
    
    return upper_alpha[(code & 0xE0) >> 5] + lower_alpha[code & 0x1f]

Type 0x05 - Get Timer Info

Note: This packet's information was pulled from SwiCago's HeatPump library. It has yet to be verified.

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0x05 No
3 Timer Mode 0x00: None
0x01: Off Only
0x02: On Only
0x03: Both
No
4 On Minutes Set No Indicates how many minutes the ON timer was set for.
5 Off Minutes Set No Indicates remaining time until the unit turns on.
6 On Minutes Remaining No Indicates how many minutes the OFF timer was set for.
7 Off Minutes Remaining No Indicates remaining time until the unit turns off.

Type 0x06 - Get Operation State

Note: This packet's information was pulled from SwiCago's HeatPump library. It has not been observed over the wire without specifically requesting command 0x06.

Editor's Note: This may be GetCompressorState instead?

This command returns diagnostic (?) information about the heat pump's operating state. This command does not appear to be used as part of normal heat pump operation.

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0x06
3 CompressorFrequency Variable Yes The current compressor frequency in Hertz. Not supported/reported by all units.
4 Operating 0x00, 0x01 Yes A boolean indicating whether the heat pump is operating.
8 ??? 0x00, 0x78, 0x79 No
11 ??? 0x00, 0x42 No

Sample Packets:

[FC.62.01.30.10]06.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00 56  // SVZ-KP30NA
[FC.62.01.30.10]06.00.00.00.00.00.00.00.78.00.00.42.00.00.00.00 9D  // MSZ-GS12NA
[FC.62.01.30.10]06.00.00.00.00.00.00.00.79.00.00.42.00.00.00.00 9C  // MSZ-GS12NA

Type 0x09 - Get Run Status

Note: This packet's information was pulled from echavet's CN105 library.

This command returns information about the heat pump's current run status. It is unclear if this is called as part of normal operaiton

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0x09
3 Status Flags See Below A bitmask of flags indicating the heat pump's current status.
4 Actual Fan Speed See Below The speed the fan is currently operating at (may be different from fan setting in 0x02)
5 Auto Mode? 0x00 - N/A
0x01 - Cool
0x02 - Heat
0x40 - ???
0x41 - ???
No Per swicago lib, idle mode but has other values.

Example Packets:

[FC.62.01.30.10]09.00.00.00.02.40.00.00.00.00.00.00.00.00.00.00 12  // wall unit heat request
[FC.62.01.30.10]09.00.00.00.01.40.00.00.00.00.00.00.00.00.00.00 13  // wall unit in idle
[FC.62.01.30.10]09.00.00.00.01.41.00.00.00.00.00.00.00.00.00.00 12  // wall unit in auto, idling
[FC.62.01.30.10]09.00.00.00.01.42.00.00.00.00.00.00.00.00.00.00 12  // wall unit in auto, heating

Status Flags

Bit Purpose Supported by mUART Notes
0x01 Filter The filter needs to be serviced.
0x02 Defrost The outdoor unit is in a defrost cycle.
0x04 HotAdjust The system is preheating for a HEAT call.
0x08 Standby The unit is in standby mode (another unit with priority is requesting a conflicting mode).

Actual Fan Speeds

These were extracted from Kumo UI, and don't particularly make much sense. It's unclear if "Super Quiet" is below or above "Very Low", for example. It's also unclear how these map to setting fan speeds (though a preliminary mapping is below). Active research about these values is currently being tracked as part of Issue #27).

Value Name Observed Set Speeds
0 Off Off
1 Very Low Not observed
2 Quiet Low
3 Low Medium
4 Powerful High
5 Super Powerful Powerful
6 Super Quiet Quiet

Type 0x20 and 0x22 - Get Functions

Sent as a response to requesting current installer functions from the heat pump. Command 0x20 denotes the first page of 14 functions, while command 0x21 denotes the second page.

Settings may be edited via Set Request 0x1F and 0x21, but care must be taken when using this function.

Byte Purpose Possible Values Supported by mUART Notes
0 Command Type 0x20, 0x22 No
1-14 Function Settings See Function Settings
15 End Byte 0x00

Type 0x50

Unknown, mentioned in Kumo Cloud firmware.

Type 0x51

Unknown, mentioned in Kumo Cloud firmware.

Type 0xA0

Unknown, mentioned in Kumo Cloud firmware.

Type 0xA1

Unknown, mentioned in Kumo Cloud firmware.

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0xA1
3 ???
4 ???
5 ???
6 ???

Type 0xA2

Unknown, mentioned in Kumo Cloud firmware.

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0xA2
3-4 ??? Read as single byte

Type 0xA9

Requested by thermostat in a 0x42 packet, response from Kumo in 0x62.

⚠️ Warning: The below table is speculative and not confirmed.

Implementations should not use these definitions until they've been verified more closely.

Byte Purpose Possible Values Supported by mUART Notes
0 CommandType 0xA9
1-4 Adapter Timestamp See Timestamps
5 ??? 0x00
6 ??? 0x00, 0x01
7 Auto Heat Setpoint Enhanced Temperature No
8 Auto Cool Setpoint Enhanced Temperature No
10 ??? 0x00, 0x07
12 ??? 0x00

Sample Packets from Kumo:

[FC 62 01 30 10] A9 1C E0 AB 71 00 00 AD B3 00 00 00 00 00 00 00 [3C]
[FC 62 01 30 10] A9 1C E0 AB 80 00 00 AD B3 00 07 00 00 00 00 00 [26]
[FC 62 01 30 10] A9 1C E0 AB 8A 00 00 AD B3 00 07 00 00 00 00 00 [1C]
[FC 62 01 30 10] A9 1C E0 AB 94 00 00 AD B3 00 07 00 00 00 00 00 [12]
[FC 62 01 30 10] A9 1C E0 AB 9E 00 00 AD B3 00 07 00 00 00 00 00 [08]
[FC 62 01 30 10] A9 1C E0 AB A7 00 00 AD B3 00 07 00 00 00 00 00 [FF]
[FC 62 01 30 10] A9 1C E0 AB B1 00 00 AD B3 00 07 00 00 00 00 00 [F5]
[FC 62 01 30 10] A9 1C E0 AB BA 00 00 AD B3 00 07 00 00 00 00 00 [EC]
[FC 62 01 30 10] A9 1C E0 AB CA 00 00 AD B3 00 07 00 00 00 00 00 [DC]
[FC 62 01 30 10] A9 1C E0 AB D3 00 00 AD B3 00 07 00 00 00 00 00 [D3]
[FC 62 01 30 10] A9 1C E0 AB DC 00 00 AD B3 00 07 00 00 00 00 00 [CA]
[FC 62 01 30 10] A9 1C E0 AB E5 00 00 AD B3 00 07 00 00 00 00 00 [C1]
[FC 62 01 30 10] A9 1C E0 AB EF 00 00 AD B3 00 07 00 00 00 00 00 [B7]
[FC 62 01 30 10] A9 1C E0 AB F8 00 00 AD B3 00 07 00 00 00 00 00 [AE]
[FC 62 01 30 10] A9 1C E0 AC 06 00 00 AD B3 00 07 00 00 00 00 00 [9F]
[FC 62 01 30 10] A9 1C E0 AC 0F 00 00 AD B3 00 07 00 00 00 00 00 [96]
[FC 62 01 30 10] A9 1C E0 AC 19 00 00 AD B3 00 07 00 00 00 00 00 [8C]

[FC 62 01 30 10] a9 1c e1 1b ad 00 01 a4 ad 00 07 00 00 00 00 00 [96]

Type 0xAB

Requested by thermostat in a 0x42 packet, response from Kumo in 0x62. Follows a 0xA9 request/response cycle.

No variance of this packet has been seen yet.

Sample Packets:

[FC 62 01 30 10] AB 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [B1] // Repeated many times as-is.