Skip to content
This repository has been archived by the owner on Apr 6, 2019. It is now read-only.

Support long airconditioner codes #3

Open
wants to merge 132 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
d0d8608
Support long airconditioner codes, tested with Panasonic CKP & DKE an…
Dec 4, 2013
427cd19
Let the user enter a name for each sample, and output the data in JSO…
Dec 4, 2013
6df9daa
Do not print out the number of the pulses into the JSON. I wish Ardui…
Dec 4, 2013
5c4adf7
Adapted to be use on decoding air conditioner IR signals, for example…
Dec 8, 2013
f6dd7bf
Merge remote-tracking branch 'origin/master'
Dec 8, 2013
5ced7e7
Basic decoding for Mitsubishi MSZ FD-25 IR protocol
Dec 8, 2013
9f89454
I-See, Plasma and air direction additions
Dec 8, 2013
0517c6a
Carrier & Midea timing constants
Dec 15, 2013
70f2870
Mitsubishi EF maintenance mode, Carrier codes
Dec 30, 2013
d8fa1da
Ignore bits which do not form octets
Apr 13, 2014
887ed42
Sharp/IVT protocol decoder
Nov 3, 2015
7df2e22
Daikin protocol decode
Nov 5, 2015
a70a7aa
Daikin protocol decode #2
Nov 6, 2015
371a039
Refactored decoders
Jan 4, 2016
c3f12f5
Mitsubishi Heavy support, fixed memset arguments
Jan 4, 2016
f809712
Update MitsubishiHeavy.cpp
Sateetje Jan 5, 2016
083cf4f
Merge pull request #1 from Sateetje/patch-1
ToniA Jan 5, 2016
b7f316e
Reduce RAM footprint to fit into ATMega328 devices
Jan 5, 2016
cae72ca
Added README, added Mitsubishi Heavy air direction decoding
Jan 7, 2016
3da5b7b
Update MitsubishiHeavy.cpp
Sateetje Jan 8, 2016
188b646
Update MitsubishiHeavy.cpp
Sateetje Jan 8, 2016
f85692c
Update MitsubishiHeavy.cpp
Sateetje Jan 8, 2016
7c412a7
Update MitsubishiHeavy.cpp
Sateetje Jan 8, 2016
8c8dd36
Merge pull request #2 from Sateetje/patch-2
ToniA Jan 8, 2016
956e6b7
Merge pull request #4 from Sateetje/patch-4
ToniA Jan 8, 2016
0ff10c5
Merge pull request #5 from Sateetje/patch-5
ToniA Jan 8, 2016
35986dc
Resolved conflict on pull request #3
ToniA Jan 8, 2016
2f39fe7
Merge pull request #3 from Sateetje/patch-3
ToniA Jan 8, 2016
ff92880
Update MitsubishiHeavy.cpp
Sateetje Jan 23, 2016
5dc6273
Merge pull request #6 from Sateetje/patch-6
ToniA Jan 24, 2016
8847580
Add choice '4' for Hyundai
ToniA Jan 24, 2016
6e5ecb2
Merge branch 'master' of https://github.com/ToniA/Raw-IR-decoder-for-…
ToniA Jan 24, 2016
b4a42da
MARK symbol should not be printed, it slipped in by mistake :)
ToniA Jan 24, 2016
47b69f3
Hyundai decoding
ToniA Jan 29, 2016
7972052
Update MitsubishiHeavy.cpp
Sateetje Jan 30, 2016
d141cbe
Mitsubishi Electric MSY series decoding
ToniA Jan 31, 2016
1ad8b87
Merge branch 'patch-7' of git://github.com/Sateetje/Raw-IR-decoder-fo…
ToniA Jan 31, 2016
e4025ca
Use just bytes[11] for the vertical air direction, bytes[13] is redun…
ToniA Jan 31, 2016
f6981ed
Merge branch 'Sateetje-patch-7'
ToniA Jan 31, 2016
08cb8da
Update MitsubishiHeavy.cpp
Sateetje Feb 3, 2016
ca4027f
Merge pull request #8 from Sateetje/patch-8
ToniA Feb 3, 2016
c9db067
Support Chinese Fuego, Vivax, Classe, NEO, Galanz, Simbio, Beko etc. …
ToniA Feb 27, 2016
30f9391
Merge branch 'master' of https://github.com/ToniA/Raw-IR-decoder-for-…
ToniA Feb 27, 2016
f867fe5
Improve header space detection, simplify Fuego checksum calculation
ToniA Feb 29, 2016
57d0701
Gree decoder
ToniA Sep 15, 2016
6b161a4
Carrier decoder for A/C only Carrier model
ToniA Sep 17, 2016
e7ae540
Carrier OFF code
ToniA Sep 19, 2016
195c82d
Second Carrier checksum byte
ToniA Sep 24, 2016
79915f6
Toshiba decoder
ToniA Sep 25, 2016
44072f2
Fix Fuego etc. vertical air direction codes
ToniA Sep 27, 2016
f6b4d1b
Sharp -> Toshiba comment in Toshiba decoder
ToniA Sep 30, 2016
f6686db
Initial Nibe decoding (not fully working yet)
ToniA Feb 7, 2017
c1a5328
Description of mode '9'
ToniA Feb 11, 2017
39e65c9
Remove the requirement to have an Arduino Mega
ToniA Feb 11, 2017
446ac91
Merge branch 'master' of https://github.com/ToniA/Raw-IR-decoder-for-…
ToniA Feb 11, 2017
3eb2497
Hitachi decoder
ToniA Feb 18, 2017
21edfa6
Nibe decoder. Note that the checksum calculation is not ready yet
ToniA Feb 18, 2017
1138443
Samsung timings
ToniA Feb 28, 2017
695696b
Merge remote-tracking branch 'origin/master'
ToniA Feb 28, 2017
30ed80b
Fujitsu decoder based on AR-RAE1E remote
LarsBK Feb 28, 2017
0172a66
Merge pull request #9 from LarsBK/fujitsu
ToniA Mar 1, 2017
ea841d1
Extended Fujitsu decoder to support AR-RAH2E
LarsBK Mar 1, 2017
1a84d37
Merge pull request #10 from LarsBK/fujitsu
ToniA Mar 2, 2017
00c63d2
Samsung decoder, note that the checksum calculator is not yet fully w…
ToniA Mar 2, 2017
c409f3e
Samsung turbo mode
ToniA Mar 4, 2017
446ab2f
Airflow & Turbo mode, checksum calculator
ToniA Mar 5, 2017
42c146b
Ballu decoder (incomplete)
ToniA Mar 28, 2017
93e2e7b
Carrier #2 decoder to recognize turbo and frostguard modes
ToniA Apr 16, 2017
53f6658
Carrier #2 'frost guard' & turbo modes
ToniA Apr 17, 2017
7079b57
Carrier #2 'HEAT' mode
ToniA Apr 17, 2017
9798b6c
Decoder for AUX YKR-N/002E
ToniA Apr 30, 2017
2c2481d
AUX AUTO, Turbo and airflow decoding
ToniA May 6, 2017
8b13ad9
Daikin: Add "outdoor unit quiet" fan mode and powerful, econo, swing,…
mje-nz Jul 2, 2017
d1cadb9
Merge pull request #11 from mje-nz/master
ToniA Jul 2, 2017
18a0791
More documentation and better decording of Fujitsu packets
andrewerrington Dec 13, 2017
a37a827
Merge pull request #12 from andrewerrington/master
ToniA Dec 13, 2017
3762fe5
Update README.md
Nateonas Jun 12, 2018
5f6c314
add panasonic CS decoder
Jheronymus Jun 12, 2018
7c9bb54
Merge pull request #13 from Jheronymus/add-panasonic
ToniA Jun 13, 2018
d39e951
Additional info on what to expect after send an Ir code
Nateonas Jun 13, 2018
2d35445
ZH/LT-01 decoder
Nateonas Jun 29, 2018
0b61f88
Gree YAC decoder
ToniA Jul 3, 2018
cfc37f7
Merge branch 'master' of https://github.com/ToniA/Raw-IR-decoder-for-…
ToniA Jul 3, 2018
06130dd
Merge branch 'master' of https://github.com/Nateonas/Raw-IR-decoder-f…
ToniA Jul 3, 2018
0329941
Merge branch 'Nateonas-master'
ToniA Jul 3, 2018
d1fd07b
add decode to ballu / bgh protocol
mmanza Jul 21, 2018
b9b2e12
Merge pull request #15 from mmanza/master
ToniA Aug 5, 2018
04ac6b5
Add binary zero padding and formatting
Sep 16, 2018
219be17
Merge pull request #16 from germin8/master
ToniA Oct 9, 2018
4a7ed9a
Airwell RC-3 remote support.
Nov 4, 2018
f182f4f
Merge pull request #17 from epsimatic/master
ToniA Nov 4, 2018
7e1a96e
Update Carrier.cpp
nelgi Nov 17, 2019
2bb5248
Fix the "advanced" modes
nelgi Nov 19, 2019
c26c5ae
Merge pull request #18 from nelgi/master
ToniA Nov 20, 2019
a3a41d4
Added support for Mitsubishi Heavy FDTCxxVF
Sateetje Dec 29, 2019
e13e037
Merge pull request #19 from Sateetje/patch-9
ToniA Dec 30, 2019
353eb9f
Add support for Mitsubishi FD-50VF and RC KM09D/0096695 additional op…
Jun 16, 2020
3a335fe
Merge pull request #20 from arion-p/master
ToniA Jun 17, 2020
b811bdb
Works on ESP32
rob-deutsch Oct 27, 2020
747e7e0
PlatformIO project structure
ToniA Oct 30, 2020
f556903
Merge pull request #21 from rob-deutsch/esp32
ToniA Oct 30, 2020
1e07704
Update readme
ToniA Oct 30, 2020
01ec074
Adding I-Feel decoding for Gree
cmroche Nov 12, 2020
02fd6d2
Merge pull request #22 from cmroche/gree-i-feel
ToniA Nov 12, 2020
0bb5bd5
Adding comment about the brand defines
ericvb Dec 30, 2020
a50fcfc
Adding comment on protection when no brand define is uncommented
ericvb Dec 30, 2020
96d987a
Adding defines to lower the memory footage for an arduino UNO + addin…
ericvb Dec 30, 2020
1171088
Adding support for the remote ARH-1362
ericvb Dec 30, 2020
eabb0f0
Avoid false positives in receiving
ericvb Dec 30, 2020
63794b3
adding checksum hack in case of a power off
ericvb Jan 3, 2021
41aa3e0
Adding hack in case of power off and temp = 20 degrees celcius
ericvb Jan 3, 2021
6149208
hack power off and temp = 20 only for heat, cool or dry modes
ericvb Jan 3, 2021
281184c
Tighten up timings
cmroche Feb 9, 2021
b8f7b62
More consistent header space timing measure
cmroche Feb 9, 2021
aaffc12
Merge pull request #24 from cmroche/timings
ToniA Feb 9, 2021
88eb304
State of Gree I-Feel
cmroche Feb 9, 2021
fff2ab6
Consistent strings
cmroche Feb 9, 2021
07432bd
Merge pull request #25 from cmroche/gree_i_feel_state
ToniA Feb 10, 2021
e7a36c3
Merge branch 'master' of https://github.com/ericvb/Raw-IR-decoder-for…
ToniA Feb 10, 2021
99d0d2d
Reduce memory footprint only on low-memory devices
ToniA Feb 10, 2021
2d6ad6d
Fix compiler warnings
ToniA Feb 10, 2021
0857c3c
Merge branch 'ericvb-master'
ToniA Feb 10, 2021
a80d451
Add Philco IR recognition
EmmanuelMess Feb 20, 2023
610ae80
Merge pull request #27 from EmmanuelMess/emmanuelmess/add/philco_21bytes
ToniA Feb 20, 2023
d2e4057
Add support for ZH/JG-01
abmantis Jul 2, 2023
cce97f5
Merge pull request #28 from abmantis/zhjg01
ToniA Jul 3, 2023
1dfd123
Use the non-inverted bytes
abmantis Jul 4, 2023
509bc55
Merge pull request #29 from abmantis/zhjg_invert
ToniA Oct 12, 2023
e483267
feat(nodemcu): Add support for ESP8266 (nodemcu)
she11sh0cked Aug 9, 2024
e263fd3
feat(KY-26 Remote): Add support for KY-26 remote control
she11sh0cked Aug 10, 2024
a54616d
Merge pull request #30 from she11sh0cked/feat--nodemcu-support
ToniA Aug 10, 2024
5d26a75
Merge pull request #31 from she11sh0cked/feat--KY-26-support
ToniA Aug 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.DS_Store
.pio
.vscode
65 changes: 65 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# IR decoder

Decodes long IR codes, for example from air conditioner / heat pump devices.

Shows the timings, the symbols, and also the decoded signal for certain air conditioners.

Required hardware:
- Arduino (any compatible will do, but Arduino Uno or Nano is easiest for prototyping)
- Infrared receiver, for example VS1838 will do fine, see also https://arduino-info.wikispaces.com/IR-RemoteControl
- Breadboard, wiring
- IR remote control from the aircon/heatpump you plan to decode

## Build instructions
Defines for the different brands were introduced to limit the memory footage on a Arduino UNO.
Uncomment, in the beginning of the sketch, the define for your remote brand.
You will get a compiler error if you forget to uncomment!

* //#define MITSUBISHI_ELECTRIC
* //#define FUJITSU
* //#define MITSUBISHI_HEAVY
* //#define DAIKIN
* //#define SHARP_
* //#define CARRIER
* //#define PANASONIC_CKP
* //#define PANASONIC_CS
* //#define HYUNDAI
* //#define GREE
* //#define GREE_YAC
* //#define FUEGO
* //#define TOSHIBA
* //#define NIBE
* //#define AIRWELL
* //#define HITACHI
* //#define SAMSUNG
* //#define BALLU
* //#define AUX
* //#define ZHLT01_REMOTE
* //#define PHILCO

### Arduino IDE
* Open the sketch from subdirectory 'rawirdecode' in Arduino IDE and build

### PlatformIO
* platformio.ini contains build definitions for Arduino Mega, ESP32 (both tested on M5STACK ATOM LITE) and ESP8266 (tested on nodemcu)
* On Mega, connect the receiver data pin to GPIO 2
* On ESP32, connect the receiver data pin to GPIO 25
* On ESP8266, connect the receiver data pin to GPIO 5

## Instructions

* Connect an IR receiver into the Arduino
* Start the sketch, and enter 1, 2, 3, 4 or 5 into the 'Serial Monitor', to select which timings to use
* Try out the alternatives until you get sensible output
* The signal should always start with 'Hh', and within the signal there should only be a couple of 'Hh' pairs (if any)
* 'H' and 'h' should be there only in pairs 'Hh'
* 'H' stands for 'header mark' and 'h' for 'header space'
* Point your IR remote to the IR receiver and send the code
* If the symbols are known, then the decoder shows its meaning on the serial monitor
* If the symbols are unknown, then you can help by writing a decoder for the unknown remote

-> Mode '9' can be used to decode known signals, in that case you can send the symbols from the terminal, like entering this:

Hh001101011010111100000111001001010100000000000111000000001111111011010100000001000111001011

![Schema](arduino_irreceiver.png)
Binary file added arduino_irreceiver.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[platformio]
src_dir = rawirdecode

; Tested on M5STACK ATOM LITE
[env:esp32]
platform = espressif32
framework = arduino
board = esp32dev
upload_speed = 115200

; Tested on Arduino Mega
[env:atmega2560]
platform = atmelavr
framework = arduino
board = megaatmega2560

[env:esp8266]
platform = espressif8266
framework = arduino
board = nodemcuv2
103 changes: 0 additions & 103 deletions rawirdecode.pde

This file was deleted.

104 changes: 104 additions & 0 deletions rawirdecode/AUXAC.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#include <Arduino.h>

// AUX YKR-N/002E

bool decodeAUX(byte *bytes, int byteCount)
{
// If this looks like a AUX code...
if ( byteCount == 13 && bytes[0] == 0xC3 ) {
Serial.println(F("Looks like a AUX protocol"));

// Power mode
switch (bytes[9] & 0x20) {
case 0x00:
Serial.println(F("POWER OFF"));
break;
case 0x20:
Serial.println(F("POWER ON"));
break;
}

// Turbo mode
switch (bytes[5] & 0x40) {
case 0x40:
Serial.println(F("TURBO: ON"));
break;
}

// Operating mode
switch (bytes[6] & 0xE0) {
case 0x00:
Serial.println(F("MODE AUTO"));
break;
case 0x80:
Serial.println(F("MODE HEAT"));
break;
case 0x20:
Serial.println(F("MODE COOL"));
break;
case 0x40:
Serial.println(F("MODE DRY"));
break;
case 0xC0:
Serial.println(F("MODE FAN"));
break;
}

// Temperature
Serial.print(F("Temperature: "));
Serial.println((bytes[1] >> 3) + 8);

// Fan speed
switch (bytes[04] & 0xE0) {
case 0xA0:
Serial.println(F("FAN: AUTO"));
break;
case 0x60:
Serial.println(F("FAN: 1"));
break;
case 0x40:
Serial.println(F("FAN: 2"));
break;
case 0x20:
Serial.println(F("FAN: 3"));
break;
}

// Horizontal swing
switch (bytes[02] & 0xE0) {
case 0x00:
Serial.println(F("Horizontal swing: Off"));
break;
case 0xE0:
Serial.println(F("Horizontal swing: On"));
break;
}

// Vertical swing
switch (bytes[01] & 0x07) {
case 0x00:
Serial.println(F("Vertical swing: Off"));
break;
case 0x07:
Serial.println(F("Vertical swing: On"));
break;
}

// Check if the checksum matches
byte checksum = 0x00;

for (byte i = 0; i < 12; i++) {
checksum += bytes[i];
}

if ( bytes[12] == checksum ) {
Serial.println(F("Checksum matches"));
} else {
Serial.println(F("Checksum does not match"));
}

return true;
}

return false;
}
Loading