Skip to content
An Arduino library to control split-unit heatpumps over Infrared
C++
Branch: master
Clone or download

Latest commit

ToniA Merge pull request #104 from ericvb/master
Adding supporting code for the Samsung AQV12MSAN model
Latest commit 4f81e18 May 20, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Space should be sent as a space, followed by a mark Jan 24, 2020
AIRWAYHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
AIRWAYHeatpumpIR.h AIRWAY aiconditioner support Jul 30, 2018
AUXHeatpumpIR.cpp change operatingMode to AUTO Jul 4, 2019
AUXHeatpumpIR.h Added confirmed models/remotes Aug 8, 2018
BGHHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
BGHHeatpumpIR.h BGH airconditioner support Jul 30, 2018
BalluHeatpumpIR.cpp #101 Ballu should implement the HeatpumpIR interface Apr 13, 2020
BalluHeatpumpIR.h #101 Ballu should implement the HeatpumpIR interface Apr 13, 2020
CarrierHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
CarrierHeatpumpIR.h Maintenance mode for different Qlima models Apr 18, 2017
DaikinHeatpumpARC417IR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
DaikinHeatpumpARC417IR.h Add Daikin ARC417A3 remote control Nov 7, 2016
DaikinHeatpumpARC480A14IR.cpp #102 DaikinHeatpumpARC480A14 should implement the HeatpumpIR interfac… Apr 13, 2020
DaikinHeatpumpARC480A14IR.h #102 DaikinHeatpumpARC480A14 should implement the HeatpumpIR interfac… Apr 13, 2020
DaikinHeatpumpIR.cpp Restore DaikinHeatpumpIR Oct 17, 2019
DaikinHeatpumpIR.h Restore DaikinHeatpumpIR Oct 17, 2019
FuegoHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
FuegoHeatpumpIR.h Fix Fuego etc. vertical air direction codes Sep 27, 2016
FujitsuHeatpumpIR.cpp Add Fujitsu air direction methods Oct 19, 2019
FujitsuHeatpumpIR.h Add Fujitsu air direction methods Oct 19, 2019
GreeHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
GreeHeatpumpIR.h Support for YAA1FB, FAA1FB1, YB1F2 remotes Aug 7, 2018
HeatpumpIR.cpp Added HeatpumpIRFactory class Feb 15, 2020
HeatpumpIR.h Added HeatpumpIRFactory class Feb 15, 2020
HeatpumpIRFactory.cpp #102 DaikinHeatpumpARC480A14 should implement the HeatpumpIR interfac… Apr 13, 2020
HeatpumpIRFactory.h #102 DaikinHeatpumpARC480A14 should implement the HeatpumpIR interfac… Apr 13, 2020
HisenseHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
HisenseHeatpumpIR.h Arduino IDE 1.6-style PROGMEM definitions Oct 1, 2015
HitachiHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
HitachiHeatpumpIR.h Hitachi heatpump support Feb 21, 2017
HyundaiHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
HyundaiHeatpumpIR.h Hyundai support Jan 30, 2016
IRSender.cpp Add support for IRBlaster, i.e. no PWM needed, the blaster generates … Dec 1, 2015
IRSender.h IRSender base class should have a destructor Aug 21, 2019
IRSenderBitBang.cpp Fix type problem Jan 28, 2016
IRSenderBlaster.cpp Add support for IRBlaster, i.e. no PWM needed, the blaster generates … Dec 1, 2015
IRSenderESP32.cpp Fix frequency for ESP32 Aug 20, 2019
IRSenderESP8266.cpp New bitbang method for ESP8266 using built-in startWaveform() functio… Apr 2, 2019
IRSenderESP8266Alt.cpp Alternative ESP8266 bitbang carrirer generation method Apr 2, 2019
IRSenderIRremoteESP8266.cpp Fix complication on Arduino platform Jul 14, 2018
IRSenderPWM.cpp Update IRSenderPWM.cpp Nov 17, 2019
IVTHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
IVTHeatpumpIR.h Simplify the IVTHeatpumpIR class Dec 30, 2016
LICENSE Initial HeatpumpIR library, refactored from my 'arduino-wp-heatpump-c… Dec 26, 2013
MideaHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
MideaHeatpumpIR.h Arduino IDE 1.6-style PROGMEM definitions Oct 1, 2015
MitsubishiHeatpumpIR.cpp Serial.printf inside DEBUG flag, for Arduino Due compatibility Mar 25, 2020
MitsubishiHeatpumpIR.h Mitsubishi MSY fixes Mar 3, 2020
MitsubishiHeavyFDTCHeatpumpIR.cpp Fixed PROGMEM Dec 29, 2019
MitsubishiHeavyFDTCHeatpumpIR.h Mitsubishi Heavy FDTCxxVF Dec 29, 2019
MitsubishiHeavyHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
MitsubishiHeavyHeatpumpIR.h Adding support for Mitsubishi Heavy Industries SRKXXZMP-S May 11, 2018
MitsubishiMSCHeatpumpIR.cpp Mitsubishi MSC support Feb 5, 2020
MitsubishiMSCHeatpumpIR.h Mitsubishi MSC support Feb 5, 2020
MitsubishiSEZKDXXHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
MitsubishiSEZKDXXHeatpumpIR.h Typo into def flag Jul 10, 2018
PanasonicAltDKEHeatpumpIR.cpp Small compile fix Aug 4, 2019
PanasonicAltDKEHeatpumpIR.h PanasonicAltDKE fixes, removed code for other models which caused com… Mar 29, 2019
PanasonicCKPHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
PanasonicCKPHeatpumpIR.h Arduino IDE 1.6-style PROGMEM definitions Oct 1, 2015
PanasonicHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
PanasonicHeatpumpIR.h Panasonic LKE support Nov 28, 2016
R51MHeatpumpIR.cpp Adding R51M supporting South America A/C Model Marshall and Conqueror… May 29, 2016
R51MHeatpumpIR.h Adding R51M supporting South America A/C Model Marshall and Conqueror… May 29, 2016
README.md Adding Samsung AQV12MSAN model May 18, 2020
SamsungHeatpumpIR.cpp Adding supporting code for the Samsung AQV12MSAN model May 18, 2020
SamsungHeatpumpIR.h Adding supporting code for the Samsung AQV12MSAN model May 18, 2020
SharpHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
SharpHeatpumpIR.h Support for IVT heatpump ('ON' code is different from the Sharp model) Dec 29, 2016
ToshibaDaiseikaiHeatpumpIR.cpp Update ToshibaDaiseikaiHeatpumpIR.cpp Nov 17, 2019
ToshibaDaiseikaiHeatpumpIR.h Timings adjusted for better compatibility. Nov 18, 2019
ToshibaHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduin… Mar 29, 2019
ToshibaHeatpumpIR.h Support for Toshiba RAS-10PKVP-ND Sep 30, 2016
arduino_irsender.png Initial HeatpumpIR library, refactored from my 'arduino-wp-heatpump-c… Dec 26, 2013
keywords.txt Support for YAA1FB, FAA1FB1, YB1F2 remotes Aug 7, 2018
library.json Add library.json Apr 24, 2016
library.properties Version 1.0.15 Apr 13, 2020

README.md

arduino-heatpumpir

Original location: https://github.com/ToniA/arduino-heatpumpir

For concrete examples, see the MySensors (Arduino + nRF24 radio) and ESPEasy (ESP8266 modules) integrations:

An Arduino library to control pump/split unit air conditioner. Currently supporting at least these models:

  • Ballu
  • Carrier 42NQV035G / 38NYV035H2 (Carrier remote control P/N WH-L05SE)
  • Daikin RXS25G2V1B / FVXS25FV1B (Remote control P/N ARC452A1)
  • Hisense AUD (remote control Y-H1-01, Y-H1-02(E), Y-J1, Y-E4-07) probably AUC model
  • Hyundai (remote control P/N Y512F2)
    • This is probably a generic Gree model
    • Model H-AR21-07H (remote control P/N YKR-P/002E) confirmed as AUX
  • Fujitsu Nocria AWYZ14 (remote control P/N AR-PZ2)
    • Also Fujitsu remote controls RY3-AR and AR-RCE1E
  • IVT AY-XP12FR-N (remote control CRMC-A673JBEZ)
  • Midea MSR1-12HRN1-QC2 + MOA1-12HN1-QC2, sold as Ultimate Pro Plus Basic 13FP in Finland (Midea remote control P/N RG51M1/E)
    • Also other Midea models sold as 'Ultimate', even some inverter models
    • Also Onnline (sold through Onninen) has been reported to work
  • Mitsubishi Heavy SRKxxZJ-S (Remote control P/N RKX502A001C)
  • Mitsubishi Heavy SRKxxZM-S (Remote Control P/N RLA502A700B)
  • Mitsubishi Heavy SRKxxZMP-S (Remote Control P/N RKX502A001P)
  • Mitsubishi Heavy FDTCxxVF (Remote Control P/N PJA502A704AA)
  • Mitsubishi MSZ FD-25, probably also FD-35 (remote control P/N KM09D 0052376)
    • Also FH series has been confirmed to work
  • Mitsubishi Electric MSC-GA20VB, MSC-GA25VB, MSC-GA35VB (remote control P/N KP1A)
  • Panasonic E9/E12-CKP (Panasonic remote control P/N A75C2295)
  • Panasonic E9/E12-DKE (Panasonic remote control P/N A75C2616)
  • Panasonic E9/E12-JKE and E9/E12-NKE
  • Samsung
    • AQV12PSBN / AQV09ASA
    • AQV12MSAN, Remote Control ARH-1362
    • Samsung FJM (RJ040F2HXEA / 2XMH026FNEA), Remote Control P/N ARH-465
  • Sharp AY-ZP40KR (remote control P/N CRMC-A788JBEZ), possibly also IVT
  • Toshiba Daiseikai (Toshiba remote control P/N WH-TA01EE).
    • Fully compatible with CarrierNQV functions instead of Daiseikai functions.
    • Tested with: RAS-10G2KVP-E RAS-10G2AVP-E and RAS-13G2KVP-E RAS-13G2AVP-E
  • Tosot T18H-SN/I (remote control P/N YAA1FB) as GreeYAA variant
    • Also marketed as Tadiran brand

Instructions

  • Download the library, and place it under your personal Arduino 'libraries' directory, under directory 'HeatpumpIR'
  • See the example sketches

ESP8266 support

This library also supports ESP8266. Just change the IR send method from 'IRSenderPWM' to 'IRSenderESP8266':

IRSenderESP8266 irSender(1);     // IR led on ESP8266 digital pin 1

This method are updated to use ESP8266 SDK built-int startWaveform() function which utilizes Timer1 for more accurate waveform generation.

As an alternative methods these are available:

  • IRSenderESP8266Alt - This method uses ESP.getCycleCount() function. This might be affected by inaccuracy during WiFi comms.
  • IRSenderBitBang - Generic method using delayMicroseconds. Worst accuracy, but available on any platform.
  • IRSenderIRremoteESP8266 - This method requires IRremoteESP8266 library. Good accuracy, but worse than IRSenderESP8266.

Note that depending on your board, certain GPIO's might not be available. For example on NodeMCU, the usable GPIO's are D1 (GPIO5), D2 (GPIO4), D6 (GPIO12), D7 (GPIO13) and D3 (GPIO0).

ESPEasy on ESP8266 board

This library (together with the HeatpumpIR plugin) is integrated into the ESP Easy firmware. The a look here: https://github.com/letscontrolit/ESPEasy

ESP32 support

This library also supports ESP32. Just change the IR send method from 'IRSenderPWM' to 'IRSenderESP32':

IRSenderESP32 irSender(2, 0);     // IR led on ESP22 digital pin 2, 0 - ESP32 LEDC channel. 

Arduino example

Schema

How to contribute

All these heatpump / A/C models have been reverse-engineered, by decoding the IR signal from the remote control. See the sketch https://github.com/ToniA/Raw-IR-decoder-for-Arduino for more information.

First the protocol needs to be understood

  • The frame structure, and the timings of the symbols
  • The bits which signal these
    • ON/OFF state
    • Operating mode (heat, cool, dry, fan, auto)
    • Temperature
    • Fan speed
    • Airflow direction etc. settings
    • And last, but not least, the algorithm to calculate the checksum of the IR signal

Once a working decoder module has been written, writing a transmitter module into HeatpumpIR is easy. I can help in coding the modules, and I'm also happy to receive pull requests.

You can’t perform that action at this time.