-
Notifications
You must be signed in to change notification settings - Fork 45
Appliance:RAC_056905_WW
Brand name: LG DualCool Standard Wall-mounted Air Conditioner
ThinQ Model ID: RAC_056905_WW
Wi-Fi module: LCW-007
Platform: Thinq2
This is a simple split-type AC unit. It uses the "TLV" protocol for communications. Below is a list of observed property types and their meaning.
| type(hex) | meaning | value(dec) |
|---|---|---|
| 1f7 | On/off status | off=0, on=1 |
| 1f9 | Operation mode | cool=0, dry=1, fan=2, heat=4, auto=6 |
| 1fa | Fan speed | 2-6 correspond to the number of "bars" on the IR remote, auto=8 |
| 1fd | Room temperature | in half-degrees celsius, so 21.5°C is represented by 43 |
| 1fe | Target temperature | see above |
| 21f | Light (display) on/off | off=0, on=1 |
| 232 | cumulative energy consumption? | the value is increasing continuously. I haven't determined the unit nor if any wraparound occurs |
| 321 | Vertical swing | off=0, top=1, in between=2,3,4,5, bottom=6, full range=100 |
| 322 | Horizontal swing | off=0, leftmost=1, in between=2,3,4, rightmost=5, left half=13 (as in 1-3, get it?), right half=35 (as in 3-5), full range=100 |
| ... | To be continued... |
The following UART header should be used when sending "query" messages: 04 00 00 00 65 02 02 01 (with the 2-byte prefix used at the MQTT layer, it would be "01010400000065020201").
This is the only known "query" type. This message is sent to the device to request a set of properties. If value is set to 1, one group of properties is returned, if set to 2, a different one. My current guess is that the first set represents some "static" attributes of the device, while the second contains the "interesting" variable bits.
This is the set returned for v=1 on my AC unit (click to expand)
| type(hex) | value(dec) |
|---|---|
| 2c0 | 1 |
| 2c1 | 87 |
| 2c2 | 380 |
| 2c3 | 1 |
| 2c4 | 3 |
| 2cc | 6 |
| 2cd | 15 |
| 2d3 | 7 |
| 2d6 | 2 |
| 2d5 | 1 |
| 2d5 | 3 |
| 2da | 19841 |
| 2db | 6882313 |
| 2dc | 1 |
| 2f1 | 0 |
| 2f5 | 7 |
| 2d7 | 0 |
| 2d8 | 36 |
| 2d9 | 2 |
| 2d7 | 1 |
| 2d8 | 0 |
| 2d9 | 2 |
| 2d7 | 2 |
| 2d8 | 0 |
| 2d9 | 2 |
| 2d7 | 4 |
| 2d8 | 42 |
| 2d9 | 2 |
| 2d7 | 6 |
| 2d8 | 44 |
| 2d9 | 2 |
This is the set returned for v=2 on my AC unit (click to expand)
| type(hex) | value(dec) |
|---|---|
| 1f9 | 4 |
| 1f7 | 1 |
| 1fa | 2 |
| 1fd | 45 |
| 1fe | 42 |
| 321 | 0 |
| 322 | 0 |
| 323 | 0 |
| 20d | 0 |
| 20e | 0 |
| 20f | 0 |
| 21a | 0 |
| 21b | 0 |
| 21c | 0 |
| 21f | 0 |
| 225 | 0 |
| 221 | 0 |
| 228 | 21 |
| 229 | 87 |
| 22a | 15 |
| 232 | 1210 |
| 233 | 64 |
| 2b3 | 485 |
| 355 | 0 |
| 356 | 0 |
| 324 | 0 |
| 32b | 178 |
| 32c | 73 |
| 32d | 0 |
| 32e | 12 |
| 32f | 15 |
| 330 | 59 |
| 331 | 79 |
| 332 | 77 |
| 22d | 0 |
| 2fd | 341 |
| 2ff | 625 |
| 2fe | 341 |
| 300 | 625 |
| 2f9 | 176 |
| 2fa | 178 |
| 6c | 1 |
| 2fb | 80 |
| 30c | 0 |
| 30d | 0 |
| 303 | 0 |
| 30e | 0 |
The following UART header should be used when sending "command" messages: 04 00 00 00 65 02 01 01 (with the 2-byte prefix used at the MQTT layer, it would be "01010400000065020101"). Note that the second-to-last byte differs from the "query" message header.
The same property types are used as when receiving. One notable requirement is that some properties need to be sent as a group in order to be accepted by the device. For example, setting a temperature by sending t=0x1fe v=42 will not work, but sending it along with operation mode and fan speed (t=0x1f9 v=4, t=0x1fa v=2, t=0x1fe v=42) - will.
I haven't determined the exact requirements yet, in general it seems to be safe to send more instead of less. One exception is the turn-off command. If a packet with t=0x1f7 v=0 is sent along with operation mode and other properties, the AC will play the "turning off" melody and continue running. Go figure!