Skip to content

KELON168: Add initial detailed support for Kelon168 (Kelon/Hisense)#1949

Merged
crankyoldgit merged 3 commits intocrankyoldgit:masterfrom
leonardfactory:dev-kelon168-ac-support
Dec 16, 2025
Merged

KELON168: Add initial detailed support for Kelon168 (Kelon/Hisense)#1949
crankyoldgit merged 3 commits intocrankyoldgit:masterfrom
leonardfactory:dev-kelon168-ac-support

Conversation

@leonardfactory
Copy link
Copy Markdown
Contributor

@leonardfactory leonardfactory commented Jan 21, 2023

Hello, based on the Excel documents shared here #1903, I'm trying to implement a full driver for the Kelon168 protocol (Hisense/Kelon A/C). The protocol seems very similar to Whirlpool A/C, even the remotes share a similar format (DG11R2-01 for Kelon vs DG11J1-91 for Whirlpool).

After some experimentations, I'm sharing here this preliminary version in order to gather feedback, suggestions and to see if my code makes sense (I'm sorry - back to C++ after a very long time).

Right now the send function is working with these features: super, quiet, fan speed, set temperature, mode, power on/off, lights, clock. Timers should be equal as Whirlpool A/C. Swing needs an update.

Things that I'm still working on:

  • Swing support
  • Checking other codes
  • Fix lint & unit tests

Regarding the following points I'm a bit confused:

  • Do you have any hint to implement the decoder in a way that it matches correctly? Right now it is very similar to Whirlpool, the only "common" difference is in Byte 18, where bits n.3 & n.5 are always one instead of zero. (see here). Is there any way to use this info to enhance the decoder?
  • It seems every command (set temperature, set mode, set fan speed, etc.) are encoded as a full byte individually. But it works even if I just send every time the "Power" command (in the code it's not like this, it is handled by the latest "setXYZ" method called by the end-user, inherited from Whirlpool class): is this ok?
  • Should I add unit tests? Not really sure how to test it / what to test, but I'll check other tests
  • I left all the code in the ir_Kelon file, is it ok or should we make a ir_Kelon168 / ir_Hisense file?

Right now supporting: Super, quiet, fan speed, set temperature, power on/off, lights, clock. Timers should be equal as Whirlpool A/C. Swing needs an update
@leonardfactory leonardfactory changed the title KELON168: Add initial detailed support for Kelon168 ((Kelon/Hisense) KELON168: Add initial detailed support for Kelon168 (Kelon/Hisense) Jan 21, 2023
@NiKiZe
Copy link
Copy Markdown
Collaborator

NiKiZe commented Jan 21, 2023

What differs from whirlpool in terms of timing? Is Kelkon168 a possible conflict? If yes then it should probably be removed, and whirlpool fixed instead.

@leonardfactory
Copy link
Copy Markdown
Contributor Author

Hi @NiKiZe , I didn't implement the effective protocol (sendKelon168 and decodeKelon168) - it was already there, implemented by @crankyoldgit in #1745.
I added the struct & the IRKelon168Ac implementation.
Given this, I'm not really sure about the timing differences, and I don't know how to identify this difference. I'd like to ask to @mhp3-10 who worked out the protocol and @crankyoldgit who implemented it.

In case your suspects are confirmed, and those protocol are the same, I can merge everything in the Whirlpool class (is there a way to "alias" the protocol?)

@mp3-10
Copy link
Copy Markdown

mp3-10 commented Jan 25, 2023

@leonardfactory @NiKiZe I didn't save timings provided by IRDecode, so I need do that again ;) I will provide that soon ;)

@leonardfactory leonardfactory marked this pull request as ready for review January 25, 2023 23:20
@Hcreak
Copy link
Copy Markdown

Hcreak commented Jun 18, 2025

This fork is very useful. It perfectly adapts to my Hisense air conditioner. Why hasn't it been merged yet?

@emcd39
Copy link
Copy Markdown

emcd39 commented Jul 23, 2025

Why hasn't it beenThis PR has improved the class of the kelon168 protocol. Why hasn't it been merged yet? merged yet? @NiKiZe

@NiKiZe
Copy link
Copy Markdown
Collaborator

NiKiZe commented Jul 23, 2025

Why hasn't it beenThis PR has improved the class of the kelon168 protocol. Why hasn't it been merged yet? merged yet? @NiKiZe

If this Protocol is identical to something that we already have, but needs to have timings adjusted, then it would be much more efficient to adjust the existing protocol.

Copy link
Copy Markdown
Owner

@crankyoldgit crankyoldgit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Catching up on tech-debt & my tardiness

@crankyoldgit crankyoldgit merged commit f66374d into crankyoldgit:master Dec 16, 2025
42 checks passed
@crankyoldgit crankyoldgit self-assigned this Dec 16, 2025
crankyoldgit added a commit that referenced this pull request Jan 2, 2026
**[Bug Fixes]**
- Bosch: Fixed the bug where the wind speed was always set to auto. (#2237)
- Update IRsend sendHaierAC to include SEND_HAIER_AC160 (#2172)
- Gree: Fix reporting vertical swing (#2125)
- Fix `decodeYork()` parameter names & defaults. (#2121)
- Fix the Coolix fan-only mode in IRac class. (#2104)
- Fix missing quiet parameter of haier176 (#2102)
- ESP32-C3: Fix compilation error when USB CDC on Boot is enabled (#2080)

**[Features]**
- Add Fahrenheit support for the BOSCH144 protocol (#2224)
- Build: Add compatibility with C++20 (#2040)
- Add initial detailed support for Kelon168 (Kelon/Hisense) (#1949)
- Add support for the Eurom A/C protocol (#2208)
- Add Fahrenheit support for Coolix (#2214)
- ESP32: Esp32 Core version 3 support (#2144)
- auto_analyse_raw_data: Add kXxMsbFirst to easy change MSBFirst for the full protocol (#2143)
- change kAirtonMaxTemp from 25C to 31C (#2124)
- Added support for Bluestar Heavy AC (#2120)
- Add support of Toshiba Remote Control B (#2094)
- Update haier160 & HaierYRWO2 to use quiet in the common class. (#2115)
- Internationalisation: Solvakian translation (#2091)
- Daikin: Support setting temperature in 0.5 C unit (#2036)
- Quiet/Silent Mode for Electra_AC (#1990)

**[Misc]**
- Document Fischer R51L1/BGE remote support (#2231)
- CI: pin python v3.13
- CI: Attempt to fix intelhex failures
- IRMQTTServer: Fixes for ArduinoJson v7 to remove depreicated calls
- docs: updated contributing section for clarity (by Prerna Utage) (#2221)
- Fix typo in Russian language support (#2210)
- Build: Update CodeQL actions plugin to use v3 as v2 will be deprecated soon
- Build: Fix soon to be deprecated set-output command
- Build: Update build scripts to use non-deprecated actions tooling
- Fix linter issues (#2173)
- pylint fix raw_to_pronto_code.py (#2150)
- Document support for Comfee model (#2147)
- DAIKIN: ARC443A5 Remote supported note (#2138)
- library.json specifies libCompatMode strict (#2111)
- Added Electrolux EACM CL/N3 series remote to TCL protocol (#2100)
- Add AR-JW19 to supported devices (#2069)
- Remove unused constant `kRcmmExcess` (#2033)
- Panasonic AC: Document support for PV1122V remote (#2029)
- Document support for Panasonic CS-E12QKEW A/C (#2028)
@crankyoldgit crankyoldgit mentioned this pull request Jan 2, 2026
crankyoldgit added a commit that referenced this pull request Jan 2, 2026
**[Bug Fixes]**
- Bosch: Fixed the bug where the wind speed was always set to auto. (#2237)
- Update IRsend sendHaierAC to include SEND_HAIER_AC160 (#2172)
- Gree: Fix reporting vertical swing (#2125)
- Fix `decodeYork()` parameter names & defaults. (#2121)
- Fix the Coolix fan-only mode in IRac class. (#2104)
- Fix missing quiet parameter of haier176 (#2102)
- ESP32-C3: Fix compilation error when USB CDC on Boot is enabled (#2080)

**[Features]**
- Add Fahrenheit support for the BOSCH144 protocol (#2224)
- Build: Add compatibility with C++20 (#2040)
- Add initial detailed support for Kelon168 (Kelon/Hisense) (#1949)
- Add support for the Eurom A/C protocol (#2208)
- Add Fahrenheit support for Coolix (#2214)
- ESP32: Esp32 Core version 3 support (#2144)
- auto_analyse_raw_data: Add kXxMsbFirst to easy change MSBFirst for the full protocol (#2143)
- change kAirtonMaxTemp from 25C to 31C (#2124)
- Added support for Bluestar Heavy AC (#2120)
- Add support of Toshiba Remote Control B (#2094)
- Update haier160 & HaierYRWO2 to use quiet in the common class. (#2115)
- Internationalisation: Solvakian translation (#2091)
- Daikin: Support setting temperature in 0.5 C unit (#2036)
- Quiet/Silent Mode for Electra_AC (#1990)

**[Misc]**
- Document Fischer R51L1/BGE remote support (#2231)
- CI: pin python v3.13
- CI: Attempt to fix intelhex failures
- IRMQTTServer: Fixes for ArduinoJson v7 to remove depreicated calls
- docs: updated contributing section for clarity (by Prerna Utage) (#2221)
- Fix typo in Russian language support (#2210)
- Build: Update CodeQL actions plugin to use v3 as v2 will be deprecated soon
- Build: Fix soon to be deprecated set-output command
- Build: Update build scripts to use non-deprecated actions tooling
- Fix linter issues (#2173)
- pylint fix raw_to_pronto_code.py (#2150)
- Document support for Comfee model (#2147)
- DAIKIN: ARC443A5 Remote supported note (#2138)
- library.json specifies libCompatMode strict (#2111)
- Added Electrolux EACM CL/N3 series remote to TCL protocol (#2100)
- Add AR-JW19 to supported devices (#2069)
- Remove unused constant `kRcmmExcess` (#2033)
- Panasonic AC: Document support for PV1122V remote (#2029)
- Document support for Panasonic CS-E12QKEW A/C (#2028)
@crankyoldgit crankyoldgit mentioned this pull request Jan 2, 2026
crankyoldgit added a commit that referenced this pull request Jan 2, 2026
_v2.9.0 (20260103)_ release

**[Bug Fixes]**
- Bosch: Fixed the bug where the wind speed was always set to auto. (#2237)
- Update IRsend sendHaierAC to include SEND_HAIER_AC160 (#2172)
- Gree: Fix reporting vertical swing (#2125)
- Fix `decodeYork()` parameter names & defaults. (#2121)
- Fix the Coolix fan-only mode in IRac class. (#2104)
- Fix missing quiet parameter of haier176 (#2102)
- ESP32-C3: Fix compilation error when USB CDC on Boot is enabled (#2080)

**[Features]**
- Add Fahrenheit support for the BOSCH144 protocol (#2224)
- Build: Add compatibility with C++20 (#2040)
- Add initial detailed support for Kelon168 (Kelon/Hisense) (#1949)
- Add support for the Eurom A/C protocol (#2208)
- Add Fahrenheit support for Coolix (#2214)
- ESP32: Esp32 Core version 3 support (#2144)
- auto_analyse_raw_data: Add kXxMsbFirst to easy change MSBFirst for the full protocol (#2143)
- change kAirtonMaxTemp from 25C to 31C (#2124)
- Added support for Bluestar Heavy AC (#2120)
- Add support of Toshiba Remote Control B (#2094)
- Update haier160 & HaierYRWO2 to use quiet in the common class. (#2115)
- Internationalisation: Solvakian translation (#2091)
- Daikin: Support setting temperature in 0.5 C unit (#2036)
- Quiet/Silent Mode for Electra_AC (#1990)

**[Misc]**
- Document Fischer R51L1/BGE remote support (#2231)
- CI: pin python v3.13
- CI: Attempt to fix intelhex failures
- IRMQTTServer: Fixes for ArduinoJson v7 to remove depreicated calls
- docs: updated contributing section for clarity (by Prerna Utage) (#2221)
- Fix typo in Russian language support (#2210)
- Build: Update CodeQL actions plugin to use v3 as v2 will be deprecated soon
- Build: Fix soon to be deprecated set-output command
- Build: Update build scripts to use non-deprecated actions tooling
- Fix linter issues (#2173)
- pylint fix raw_to_pronto_code.py (#2150)
- Document support for Comfee model (#2147)
- DAIKIN: ARC443A5 Remote supported note (#2138)
- library.json specifies libCompatMode strict (#2111)
- Added Electrolux EACM CL/N3 series remote to TCL protocol (#2100)
- Add AR-JW19 to supported devices (#2069)
- Remove unused constant `kRcmmExcess` (#2033)
- Panasonic AC: Document support for PV1122V remote (#2029)
- Document support for Panasonic CS-E12QKEW A/C (#2028)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants