Skip to content

Instantly share code, notes, and snippets.

@RyuKojiro
Last active February 16, 2025 19:42
Show Gist options
  • Save RyuKojiro/0f17766ca5794adb7c8fbe8a10b50ba5 to your computer and use it in GitHub Desktop.
Save RyuKojiro/0f17766ca5794adb7c8fbe8a10b50ba5 to your computer and use it in GitHub Desktop.
IQAir IR Codes

Hope this helps someone :)

I used the broadlink IR converter node package and the broadlink codes from AnilDaoud's broadlink bridge config to come up with this.

iqair.mjs

import { broadlinkToPulesArray, pulesArrayToBroadlink } from 'broadlink-ir-converter';

const one   = '260060000001289512131213111412131213121411131213123813381139113912381238123813381238113913371213123912121313111412131213111412381213123812381437110005260001274b12000c630001284b12000c630001284a13000d050000000000000000'
const two   = '260068000001279611131313111411131412111412131213123812391138123813381238113912391138123813131114121312131114121313121214113812381338123811391239110005250001284b12000c630001284a13000c620001284b13000c620001284a13000d05'
const three = '260068000001299413131114111412131114121312131213123812381338113911391238123812381312123813131114121313121114121312391113123911391139123812381238120005250001284b11000c630001294a12000c630001284b12000c620001294b11000d05'
const four  = '260060000001289512141113131212141113131311141213123812381238133811391139123812381238131212381313111412131312111412131238121312391139113813381238120005250001284b12000c620001284c11000c630001284b12000d050000000000000000'
const five  = '260068000001299413131114111412131114121312131213123812381338113911391238123812381312121411391114121312131114121312391138121411391139123812381238130005240001294a11000c640001294a11000c630001294a12000c630001284b11000d05'
const six   = '260068000001289512131213131212141113121411141113143712381139123911381238133812381213123812381213123813131114121312381213121312381213123813381238110005260001274c11000c630001284b12000c630001284b12000c620001284c11000d05'
const off   = '260060000001279613111213121411131412111412131213113913381138123912381238113912381312121312141113131311141312121311391238133712381338123811391238130005240001284b13000c620001284a13000c630001274b13000d050000000000000000'

console.log(JSON.stringify(broadlinkToPulesArray(one)));
console.log(JSON.stringify(broadlinkToPulesArray(two)));
console.log(JSON.stringify(broadlinkToPulesArray(three)));
console.log(JSON.stringify(broadlinkToPulesArray(four)));
console.log(JSON.stringify(broadlinkToPulesArray(five)));
console.log(JSON.stringify(broadlinkToPulesArray(six)));
console.log(JSON.stringify(broadlinkToPulesArray(off)));

The pulse codes

one   [0,9014,4537,548,578,548,578,517,609,548,578,548,578,548,609,517,578,548,578,548,1705,578,1705,517,1735,517,1735,548,1705,548,1705,548,1705,578,1705,548,1705,517,1735,578,1674,548,578,548,1735,548,548,578,578,517,609,548,578,548,578,517,609,548,1705,548,578,548,1705,548,1705,609,1674,517,40137,8983,2284,548,96568,9014,2284,548,96568,9014,2253,578]
two   [0,8983,4568,517,578,578,578,517,609,517,578,609,548,517,609,548,578,548,578,548,1705,548,1735,517,1705,548,1705,578,1705,548,1705,517,1735,548,1735,517,1705,548,1705,578,578,517,609,548,578,548,578,517,609,548,578,578,548,548,609,517,1705,548,1705,578,1705,548,1705,517,1735,548,1735,517,40107,9014,2284,548,96568,9014,2253,578,96537,9014,2284,578,96537,9014,2253,578]
three [0,9044,4507,578,578,517,609,517,609,548,578,517,609,548,578,548,578,548,578,548,1705,548,1705,578,1705,517,1735,517,1735,548,1705,548,1705,548,1705,578,548,548,1705,578,578,517,609,548,578,578,548,517,609,548,578,548,1735,517,578,548,1735,517,1735,517,1735,548,1705,548,1705,548,1705,548,40107,9014,2284,517,96568,9044,2253,548,96568,9014,2284,548,96537,9044,2284,517]
four  [0,9014,4537,548,609,517,578,578,548,548,609,517,578,578,578,517,609,548,578,548,1705,548,1705,548,1705,578,1705,517,1735,517,1735,548,1705,548,1705,548,1705,578,548,548,1705,578,578,517,609,548,578,578,548,517,609,548,578,548,1705,548,578,548,1735,517,1735,517,1705,578,1705,548,1705,548,40107,9014,2284,548,96537,9014,2314,517,96568,9014,2284,548]
five  [0,9044,4507,578,578,517,609,517,609,548,578,517,609,548,578,548,578,548,578,548,1705,548,1705,578,1705,517,1735,517,1735,548,1705,548,1705,548,1705,578,548,548,609,517,1735,517,609,548,578,548,578,517,609,548,578,548,1735,517,1705,548,609,517,1735,517,1735,548,1705,548,1705,548,1705,578,40076,9044,2253,517,96598,9044,2253,517,96568,9044,2253,548,96568,9014,2284,517]
six   [0,9014,4537,548,578,548,578,578,548,548,609,517,578,548,609,517,609,517,578,609,1674,548,1705,517,1735,548,1735,517,1705,548,1705,578,1705,548,1705,548,578,548,1705,548,1705,548,578,548,1705,578,578,517,609,548,578,548,1705,548,578,548,578,548,1705,548,578,548,1705,578,1705,548,1705,517,40137,8983,2314,517,96568,9014,2284,548,96568,9014,2284,548,96537,9014,2314,517]
off   [0,8983,4568,578,517,548,578,548,609,517,578,609,548,517,609,548,578,548,578,517,1735,578,1705,517,1705,548,1735,548,1705,548,1705,517,1735,548,1705,578,548,548,578,548,609,517,578,578,578,517,609,578,548,548,578,517,1735,548,1705,578,1674,548,1705,578,1705,548,1705,517,1735,548,1705,578,40076,9014,2284,578,96537,9014,2253,578,96568,8983,2284,578]

The compact equivalents for Tasmota

Same order as above (1, 2, 3, 4, 5, 6, off).

0,+9014-4537+548-578Cd+517-609CdCdCfEdCdC-1705DgE-1735EhCgCgCgDgCgEhD-1674CdChCcDdEfCdCdEfCgCdCgCgFiE-40137+8983-2284C-96568AlCmA-2253D
0,+8983-4568+517-578DdC-609CdE-548CeFdFdF-1705F-1735CgFgDgFgChFhCgFgDdCeFdFdCeFdDfFeCgFgDgFgChFhC-40107+9014-2284F-96568J-2253D-96537JkDnJmD
0,+9044-4507+578c+517-609De+548cDeFcFcFcF-1705FgCgD-1735DhFgFgFgCfFgCcDeFcCfDeFcFhDcFhDhDhFgFgFgF-40107+9014-2284D-96568A-2253FlJkF-96537AkD
0,+9014-4537+548-609+517-578FcCdEfFfEdCfC-1705CgCgFgE-1735EhCgCgCgFcCgFfEdCfFcEdCfCgCfChEhEgFgCgC-40107A-2284C-96537A-2314E-96568AjC
0,+9044-4507+578c+517-609De+548cDeFcFcFcF-1705FgCgD-1735DhFgFgFgCfFeDhDeFcFcDeFcFhDgFeDhDhFgFgFgC-40076A-2253D-96598AjD-96568AjFl+9014-2284D
0,+9014-4537+548-578CdDcC-609+517dCeFeFdE-1674C-1705F-1735CiFhChDhChCdChChCdChDdFeCdChCdCdChCdChDhChF-40137+8983-2314F-96568A-2284CmAnC-96537AlF
0,+8983-4568+578-517+548cE-609DcFeDfEcEcD-1735C-1705DhEgEhEhDgEhCeEcEfDcCcDfCeEcDgEhC-1674EhChEhDgEhC-40076+9014-2284C-96537K-2253C-96568AlC

The format that esphome expects

one   [9014, -4537, 548, -578, 548, -578, 517, -609, 548, -578, 548, -578, 548, -609, 517, -578, 548, -578, 548, -1705, 578, -1705, 517, -1735, 517, -1735, 548, -1705, 548, -1705, 548, -1705, 578, -1705, 548, -1705, 517, -1735, 578, -1674, 548, -578, 548, -1735, 548, -548, 578, -578, 517, -609, 548, -578, 548, -578, 517, -609, 548, -1705, 548, -578, 548, -1705, 548, -1705, 609, -1674, 517, -40137, 8983, -2284, 548, -96568, 9014, -2284, 548, -96568, 9014, -2253, 578]
two   [8983, -4568, 517, -578, 578, -578, 517, -609, 517, -578, 609, -548, 517, -609, 548, -578, 548, -578, 548, -1705, 548, -1735, 517, -1705, 548, -1705, 578, -1705, 548, -1705, 517, -1735, 548, -1735, 517, -1705, 548, -1705, 578, -578, 517, -609, 548, -578, 548, -578, 517, -609, 548, -578, 578, -548, 548, -609, 517, -1705, 548, -1705, 578, -1705, 548, -1705, 517, -1735, 548, -1735, 517, -40107, 9014, -2284, 548, -96568, 9014, -2253, 578, -96537, 9014, -2284, 578, -96537, 9014, -2253, 578]
three [9044, -4507, 578, -578, 517, -609, 517, -609, 548, -578, 517, -609, 548, -578, 548, -578, 548, -578, 548, -1705, 548, -1705, 578, -1705, 517, -1735, 517, -1735, 548, -1705, 548, -1705, 548, -1705, 578, -548, 548, -1705, 578, -578, 517, -609, 548, -578, 578, -548, 517, -609, 548, -578, 548, -1735, 517, -578, 548, -1735, 517, -1735, 517, -1735, 548, -1705, 548, -1705, 548, -1705, 548, -40107, 9014, -2284, 517, -96568, 9044, -2253, 548, -96568, 9014, -2284, 548, -96537, 9044, -2284, 517]
four  [9014, -4537, 548, -609, 517, -578, 578, -548, 548, -609, 517, -578, 578, -578, 517, -609, 548, -578, 548, -1705, 548, -1705, 548, -1705, 578, -1705, 517, -1735, 517, -1735, 548, -1705, 548, -1705, 548, -1705, 578, -548, 548, -1705, 578, -578, 517, -609, 548, -578, 578, -548, 517, -609, 548, -578, 548, -1705, 548, -578, 548, -1735, 517, -1735, 517, -1705, 578, -1705, 548, -1705, 548, -40107, 9014, -2284, 548, -96537, 9014, -2314, 517, -96568, 9014, -2284, 548]
five  [9044, -4507, 578, -578, 517, -609, 517, -609, 548, -578, 517, -609, 548, -578, 548, -578, 548, -578, 548, -1705, 548, -1705, 578, -1705, 517, -1735, 517, -1735, 548, -1705, 548, -1705, 548, -1705, 578, -548, 548, -609, 517, -1735, 517, -609, 548, -578, 548, -578, 517, -609, 548, -578, 548, -1735, 517, -1705, 548, -609, 517, -1735, 517, -1735, 548, -1705, 548, -1705, 548, -1705, 578, -40076, 9044, -2253, 517, -96598, 9044, -2253, 517, -96568, 9044, -2253, 548, -96568, 9014, -2284, 517]
six   [9014, -4537, 548, -578, 548, -578, 578, -548, 548, -609, 517, -578, 548, -609, 517, -609, 517, -578, 609, -1674, 548, -1705, 517, -1735, 548, -1735, 517, -1705, 548, -1705, 578, -1705, 548, -1705, 548, -578, 548, -1705, 548, -1705, 548, -578, 548, -1705, 578, -578, 517, -609, 548, -578, 548, -1705, 548, -578, 548, -578, 548, -1705, 548, -578, 548, -1705, 578, -1705, 548, -1705, 517, -40137, 8983, -2314, 517, -96568, 9014, -2284, 548, -96568, 9014, -2284, 548, -96537, 9014, -2314, 517]
off   [8983, -4568, 578, -517, 548, -578, 548, -609, 517, -578, 609, -548, 517, -609, 548, -578, 548, -578, 517, -1735, 578, -1705, 517, -1705, 548, -1735, 548, -1705, 548, -1705, 517, -1735, 548, -1705, 578, -548, 548, -578, 548, -609, 517, -578, 578, -578, 517, -609, 578, -548, 548, -578, 517, -1735, 548, -1705, 578, -1674, 548, -1705, 578, -1705, 548, -1705, 517, -1735, 548, -1705, 578, -40076, 9014, -2284, 578, -96537, 9014, -2253, 578, -96568, 8983, -2284, 578]

These were generated by putting the pulse codes through:

def pulse2esphome(l):
  for i, x in enumerate(l):
    if i % 2 == 0:
      l[i] = -x
  l = l[1:]
  return l
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment