Whenever the LG indoor unit is turned off, it appears that changing temperature or fan speed doesn’t work.
I can change for example fan speed, but it automatically reverts back to it’s old setting.
Only when the unit is powered on, the change in setting is accepted and preserved.
Is that to be expected? The unit is an AA12SP.NS1 artcool dual inverter.
[edit]
Already confirmed by the topic starter: yes, that is to be expected.
I’m looking for some help because I haven’t received any response on GitHub. I also found the LG PREMTB100 control project by JanM321 for ESP. The published project reverse-engineered the climate control. I have an LG LZ-H035GBA5 heat-recovery ventilator with the same PREMTB100 wall controller, which works with the same 13-bit commands – only the commands themselves differ compared to the AC.
Apparently, DanceAddiction has already reverse-engineered these on GitHub and promised to publish them, but since the project was opened over a year ago, he hasn’t responded, and the code hasn’t been shared. I’ll probably have to figure it out myself.
Project link:
Since I’m not very experienced with C++, I tried using ChatGPT/Grok to write a YAML that would allow me to control the 5 necessary functions. However, I either get a checksum error or nothing happens at all.
What I need:
Fan: low / medium / high
Heat recovery
Bypass
I only need these 5 commands in a simple YAML. No temperature or CO₂ sensors or any other extras – just these 5 functions so I can finally integrate it with Home Assistant.
I found these on JanM321’s forum, which contain the commands for my ventilator:
`fan speed low:
[14:30:25.595][D][lg-controller:950]: received 03.60.80.00.00.00.00.00.00.00.00.C6.B0 (13)
[14:30:25.602][E][lg-controller:960]: invalid checksum03.60.80.00.00.00.00.00.00.00.00.C6.B0 (13)
[14:30:25.603][D][lg-controller:950]: received 03.60.40.00.00.00.00.00.00.00.00.06.B0 (13)
[14:30:25.604][E][lg-controller:960]: invalid checksum 03.60.40.00.00.00.00.00.00.00.00.06.B0 (13)
[14:30:25.608][D][lg-controller:950]: received 03.60.20.00.00.00.00.00.00.00.00.66.B0 (13)
Heat Exchange:
13.666][D][lg-controller:1358]: update
[14:35:13.669][D][lg-controller:950]: received E0.01.00.00.01.00.27.00.20.9A.07.2B.A8 (13)
[14:35:13.672][E][lg-controller:960]: invalid checksum E0.01.00.00.01.00.27.00.20.9A.07.2B.A8 (13)
[14:35:13.675][D][lg-controller:950]: received 4A.00.00.80.00.81.93.00.80.04.80.DF.A8 (13)
[14:35:13.678][E][lg-controller:960]: invalid checksum 4A.00.00.80.00.81.93.00.80.04.80.DF.A8 (13)
[14:35:13.681][D][lg-controller:950]: received 4A.00.00.80.00.81.93.00.80.04.80.DF.AC (13)
[14:35:13.684][E][lg-controller:960]: invalid checksum 4A.00.00.80.00.81.93.00.80.04.80.DF.AC (13)
[14:35:13.687][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.AC (13)
Auto Mode:
49.674][D][lg-controller:1358]: update
[14:35:49.680][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.B0 (13)
[14:35:49.682][E][lg-controller:960]: invalid checksum 00.00.00.00.00.00.00.00.27.00.00.86.B0 (13)
[14:35:49.684][D][lg-controller:950]: received 02.20.20.00.00.00.00.00.00.00.00.A7.B0 (13)
[14:35:49.687][E][lg-controller:960]: invalid checksum 02.20.20.00.00.00.00.00.00.00.00.A7.B0 (13)
[14:35:49.690][D][lg-controller:950]: received 02.20.20.00.00.00.00.00.00.00.00.A7.D0 (13)
[14:35:49.693][E][lg-controller:960]: invalid checksum 02.20.20.00.00.00.00.00.00.00.00.A7.D0 (13)
Bypass (Mode 3):
[14:36:37.693][D][lg-controller:1358]: update
[14:36:37.694][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.AC (13)
[14:36:37.698][E][lg-controller:960]: invalid checksum 00.00.00.00.00.00.00.00.27.00.00.86.AC (13)
[14:36:37.700][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.AE (13)
[14:36:37.704][E][lg-controller:960]: invalid checksum 00.00.00.00.00.00.00.00.27.00.00.86.AE (13)
[14:36:37.707][D][lg-controller:950]: received 80.36.00.00.00.00.00.02.8E.13.03.5F.AE (13)
[14:36:37.710][E][lg-controller:960]: invalid checksum 80.36.00.00.00.00.00.02.8E.13.03.5F.AE (13)
[14:36:37.714][D][lg-controller:950]: received 80.36.00.00.00.00.00.02.8E.13.03.5F.B0 (13)
[14:36:37.718][E][lg-controller:960]: invalid checksum 80.36.00.00.00.00.00.02.8E.13.03.5F.B0 (13)
ON:
[14:38:19.718][D][lg-controller:1358]: update
[14:38:19.722][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.00.00.8E.30.B0 (13)
[14:38:19.725][E][lg-controller:960]: invalid checksum 00.00.00.00.00.00.00.00.00.00.8E.30.B0 (13)
[14:38:19.729][D][lg-controller:950]: received 03.60.20.00.00.00.00.00.00.00.00.66.B4 (13)
[14:38:19.732][E][lg-controller:960]: invalid checksum 03.60.20.00.00.00.00.00.00.00.00.66.B4 (13)[14:38:19.736][D][lg-controller:950]: received FF.01.00.00.01.00.27.00.40.9A.07.E8.B4 (13) [14:38:19.739][E][lg-controller:960]: invalid checksum FF.01.00.00.01.00.27.00.40.9A.07.E8.B4 (13)
OFF:
14:39:01.734][D][lg-controller:1358]: update
[14:39:01.740][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.B0 (13)
[14:39:01.740][E][lg-controller:960]: invalid checksum 00.00.00.00.00.00.00.00.27.00.00.86.B0 (13)
[14:39:01.743][D][lg-controller:950]: received 01.60.20.00.00.00.00.00.00.00.00.64.B0 (13)
[14:39:01.746][D][lg-controller:950]: received 01.60.20.00.00.00.00.00.00.00.00.64.B0 (13)
To reward anyone who can help, I can offer 4 JLCPCB-made panels for FeatherS3 and 1 unused LG PWFMDD200 Wi-Fi module, with shipping within the EU. Free
| `XXXX_0000` | Source of the message<br>0xA: master controller (for example 0xA8 or 0xAA)<br>0xC: AC unit (for example 0xC8 or 0xC9)<br>0x2: slave controller |
| `0000_X000` | Product type <br>0: ventilation<br>1: AC|
| `XXX0_0000` | Source of the message<br>1: slave controller (for example `0x28` or `0x2A`)<br>5: master controller (for example `0xA8` or `0xAA`)<br>6: unit (for example `0xC8` or `0xC9`) |
| `000X_X000` | Product type <br>0: ventilation<br>1: AC<br>2: heat exchanger?|
| `0000_0XXX` | Message type (0-7)<br>0: status message<br>1: capabilities message<br>2: settings<br>... see below ... |
For example 0xC8 means it's a status message sent by the AC unit.
The two "product type" bits are always set to `01` for normal HVAC units. This means the (master) controller sends messages with first byte `0xA8` to `0xAF` and the AC unit will send messages `0xC8` to `0xCF`. You can use this to identify the source of a message.
Bit 0x8 is always set for normal HVAC units. LG controllers will send messages with this bit cleared only when connected to a ventilation product. This documentation and the ESPHome controller only cover AC units.
For instance, `0xC8` is a status message sent by the AC unit. `0xAA` is a settings message sent by the controller.
The last byte of each message is a checksum, computed by adding up the other bytes and XOR'ing with 0x55.
LG controllers send messages with the product type field set to 0 or 2 only when connected to a ventilation product responding with such messages. For example if a heat exchanger unit responds with `0xD0` messages, the LG controllers will switch from sending `0xA8` to `0xB0` messages. This documentation and the ESPHome controller only cover AC units.
The last byte of each message is a checksum, computed by adding up the other bytes and XOR'ing with `0x55`.
[14:35:13.687][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.AC (13)
[14:35:49.680][D][lg-controller:950]: received 00.00.00.00.00.00.00.00.27.00.00.86.B0 (13)
[14:35:13.675][D][lg-controller:950]: received 4A.00.00.80.00.81.93.00.80.04.80.DF.A8 (13)
[14:35:13.681][D][lg-controller:950]: received 4A.00.00.80.00.81.93.00.80.04.80.DF.AC (13)
They are same data but with difference checksum, it is not right. May be it cause by your hardware problem.