Go to file
Toni d20278650a
Merge pull request #168 from octal-ip/master
Corrected swingVcmd and swingHcmd to address issue #165
2024-04-06 19:11:40 +03:00
examples Add support for GreeYAC 2021-02-09 20:21:47 -05:00
AIRWAYHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
AIRWAYHeatpumpIR.h AIRWAY aiconditioner support 2018-07-29 22:34:36 -03:00
AUXHeatpumpIR.cpp change operatingMode to AUTO 2019-07-04 15:53:33 +07:00
AUXHeatpumpIR.h Added confirmed models/remotes 2018-08-08 08:58:53 +03:00
BGHHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
BGHHeatpumpIR.h BGH airconditioner support 2018-07-29 22:37:21 -03:00
BalluHeatpumpIR.cpp #101 Ballu should implement the HeatpumpIR interface 2020-04-13 10:16:02 +03:00
BalluHeatpumpIR.h #101 Ballu should implement the HeatpumpIR interface 2020-04-13 10:16:02 +03:00
CarrierHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
CarrierHeatpumpIR.h Maintenance mode for different Qlima models 2017-04-18 17:25:56 +03:00
DaikinHeatpumpARC417IR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
DaikinHeatpumpARC417IR.h Add Daikin ARC417A3 remote control 2016-11-07 13:02:47 +01:00
DaikinHeatpumpARC480A14IR.cpp #102 DaikinHeatpumpARC480A14 should implement the HeatpumpIR interface. Add Daikin models into the HeatpumpIRFactory 2020-04-13 10:18:13 +03:00
DaikinHeatpumpARC480A14IR.h #102 DaikinHeatpumpARC480A14 should implement the HeatpumpIR interface. Add Daikin models into the HeatpumpIRFactory 2020-04-13 10:18:13 +03:00
DaikinHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
DaikinHeatpumpIR.h First attempt to support Daikin heatpumps 2015-11-09 20:04:11 +02:00
ElectroluxHeatpumpIR.cpp Cleanup of electrolux files 2022-03-28 16:25:16 +02:00
ElectroluxHeatpumpIR.h Cleanup of electrolux files 2022-03-28 16:25:16 +02:00
FuegoHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
FuegoHeatpumpIR.h Fix Fuego etc. vertical air direction codes 2016-09-27 18:28:28 +03:00
FujitsuHeatpumpIR.cpp Add Fujitsu air direction methods 2019-10-19 22:15:40 +10:00
FujitsuHeatpumpIR.h Add Fujitsu air direction methods 2019-10-19 22:15:40 +10:00
GreeHeatpumpIR.cpp Factored out GREE_YT 2023-07-13 23:12:50 +10:00
GreeHeatpumpIR.h Added GREE_YT 2023-07-13 23:12:50 +10:00
HeatpumpIR.cpp Add base function for sending ambient temperature 2021-11-02 19:15:21 -04:00
HeatpumpIR.h Add base function for sending ambient temperature 2021-11-02 19:15:21 -04:00
HeatpumpIRFactory.cpp add support for IRFactory and update Readme 2024-01-05 16:08:21 +01:00
HeatpumpIRFactory.h add support for IRFactory and update Readme 2024-01-05 16:08:21 +01:00
HisenseHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
HisenseHeatpumpIR.h Arduino IDE 1.6-style PROGMEM definitions 2015-10-01 10:23:49 +03:00
HitachiHeatpumpIR.cpp Corrected swingVcmd and swingHcmd 2024-04-04 08:32:59 +11:00
HitachiHeatpumpIR.h Hitachi heatpump support 2017-02-21 19:07:59 +02:00
HyundaiHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
HyundaiHeatpumpIR.h Hyundai support 2016-01-30 14:27:19 +02:00
IRSender.cpp add support for sending single bits. Needed for Nibe heatpump which sends 90 bits 2024-01-05 16:07:54 +01:00
IRSender.h add support for sending single bits. Needed for Nibe heatpump which sends 90 bits 2024-01-05 16:07:54 +01:00
IRSenderBitBang.cpp Fix type problem 2016-01-28 19:35:44 +02:00
IRSenderBlaster.cpp Add support for IRBlaster, i.e. no PWM needed, the blaster generates the 38 kHz carrier frequency 2015-12-01 20:17:14 +02:00
IRSenderESP32.cpp Merge pull request #157 from nuclearcat/add-inverted-led 2023-10-12 12:09:22 +03:00
IRSenderESP8266.cpp New bitbang method for ESP8266 using built-in startWaveform() function (more accurate carrier generation -> better range) 2019-04-02 13:38:32 +03:00
IRSenderESP8266Alt.cpp Alternative ESP8266 bitbang carrirer generation method 2019-04-02 13:50:51 +03:00
IRSenderIRremoteESP8266.cpp ESP32 support using the IRremoteESP8266 library 2020-09-02 15:16:11 +03:00
IRSenderPWM.cpp Fix for building issue on libretiny 2023-11-06 16:36:10 +01:00
IVTHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
IVTHeatpumpIR.h Simplify the IVTHeatpumpIR class 2016-12-30 11:14:53 +02:00
LICENSE Initial HeatpumpIR library, refactored from my 'arduino-wp-heatpump-controller' repository 2013-12-26 15:11:20 +02:00
MideaHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
MideaHeatpumpIR.h Arduino IDE 1.6-style PROGMEM definitions 2015-10-01 10:23:49 +03:00
MitsubishiHeatpumpIR.cpp Add 2 macro to activate or deactivate LOG messages through DEBUG variable 2021-04-10 15:15:38 +09:00
MitsubishiHeatpumpIR.h Mitsubishi MSY fixes 2020-03-03 09:20:40 +02:00
MitsubishiHeavyFDTCHeatpumpIR.cpp Fixed PROGMEM 2019-12-29 21:04:36 +01:00
MitsubishiHeavyFDTCHeatpumpIR.h Mitsubishi Heavy FDTCxxVF 2019-12-29 20:58:32 +01:00
MitsubishiHeavyHeatpumpIR.cpp Update MitsubishiHeavyHeatpumpIR.cpp 2022-07-15 01:09:10 +02:00
MitsubishiHeavyHeatpumpIR.h Adding support for Mitsubishi Heavy Industries SRKXXZMP-S 2018-05-11 13:20:55 +02:00
MitsubishiMSCHeatpumpIR.cpp Add 2 macro to activate or deactivate LOG messages through DEBUG variable 2021-04-10 15:15:38 +09:00
MitsubishiMSCHeatpumpIR.h Mitsubishi MSC support 2020-02-05 18:40:00 +02:00
MitsubishiSEZKDXXHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
MitsubishiSEZKDXXHeatpumpIR.h Typo into def flag 2018-07-10 13:56:27 +02:00
NibeHeatpumpIR.cpp add support for Nibe heatpump 2024-01-05 16:06:55 +01:00
NibeHeatpumpIR.h add support for Nibe heatpump 2024-01-05 16:06:55 +01:00
PanasonicAltDKEHeatpumpIR.cpp Small compile fix 2019-08-04 16:56:11 +03:00
PanasonicAltDKEHeatpumpIR.h PanasonicAltDKE fixes, removed code for other models which caused compile errors 2019-03-29 13:06:23 +03:00
PanasonicCKPHeatpumpIR.cpp Add 2 macro to activate or deactivate LOG messages through DEBUG variable 2021-04-10 15:15:38 +09:00
PanasonicCKPHeatpumpIR.h Arduino IDE 1.6-style PROGMEM definitions 2015-10-01 10:23:49 +03:00
PanasonicHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
PanasonicHeatpumpIR.h Panasonic LKE support 2016-11-28 18:42:16 +02:00
R51MHeatpumpIR.cpp Adding R51M supporting South America A/C Model Marshall and Conqueror, Remote control says R51M 2016-05-29 00:10:56 -03:00
R51MHeatpumpIR.h Adding R51M supporting South America A/C Model Marshall and Conqueror, Remote control says R51M 2016-05-29 00:10:56 -03:00
README.md add support for IRFactory and update Readme 2024-01-05 16:08:21 +01:00
SamsungHeatpumpIR.cpp Hardcoded Temperature-Range ist too small 2022-11-23 14:35:42 +01:00
SamsungHeatpumpIR.h Adding supporting code for the Samsung AQV12MSAN model 2020-05-18 20:17:42 +02:00
SharpHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
SharpHeatpumpIR.h Support for IVT heatpump ('ON' code is different from the Sharp model) 2016-12-29 21:54:24 +02:00
ToshibaDaiseikaiHeatpumpIR.cpp Update ToshibaDaiseikaiHeatpumpIR.cpp 2019-11-17 20:56:41 +02:00
ToshibaDaiseikaiHeatpumpIR.h Timings adjusted for better compatibility. 2019-11-18 22:52:48 +02:00
ToshibaHeatpumpIR.cpp Fix duplicate PROGMEM attribute compilation issue with ESP8266 Arduino Core 2.5.0+ 2019-03-29 12:47:31 +03:00
ToshibaHeatpumpIR.h Support for Toshiba RAS-10PKVP-ND 2016-09-30 19:56:42 +03:00
VaillantHeatpumpIR.cpp Initial working release 2021-06-13 15:27:16 +03:00
VaillantHeatpumpIR.h Initial working release 2021-06-13 15:27:16 +03:00
ZHJG01HeatpumpIR.cpp Add support for ZH/JG-01 2023-07-07 23:59:01 +01:00
ZHJG01HeatpumpIR.h Add support for ZH/JG-01 2023-07-07 23:59:01 +01:00
ZHLT01HeatpumpIR.cpp Added support for ZH/LT-01 Remote controlled heatpumps 2020-10-29 22:06:34 +01:00
ZHLT01HeatpumpIR.h Added support for ZH/LT-01 Remote controlled heatpumps 2020-10-29 22:05:49 +01:00
arduino_irsender.png Initial HeatpumpIR library, refactored from my 'arduino-wp-heatpump-controller' repository 2013-12-26 15:11:20 +02:00
keywords.txt Added support for ZH/LT-01 Remote controlled heatpumps 2020-10-29 22:01:53 +01:00
library.json Remove unnecessary constraints 2024-02-13 22:44:51 +02:00
library.properties Version 1.0.25 2023-11-08 13:28:27 +02:00

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
    • Models H-AR21-07H / H-AR16-09H (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)
  • Nibe AG-WL10-4, probably AG-WT10
  • 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
  • Sharp AY-X09LCJ (Remote control P/N YT1F)
  • 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
  • Vaillant VAI8 (remote control P/N YAN1F1), a Gree YAA variant
    • Tested and fully working with VAI8-025WNI
    • Does not support iFeel, all other (essential) features are implemented, note the custom send() for commanding turbo and panel light
  • ZH/LT-01 remote control
    • Brands: Eurom, Chigo, Tristar, Tecnomaster, Elgin, Geant, Tekno, Topair, Proma, Sumikura, JBS, Turbo Air, Nakatomy, Celestial Air, Ager, Blueway, Airlux, etc.

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. Take 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.