Update IRremoteESP8266 lib updated to v2.7.2

This commit is contained in:
Hadinger 2020-01-06 17:27:36 +01:00
parent 66909f7cec
commit 9d881b9701
240 changed files with 1182 additions and 118 deletions

View File

@ -1,15 +0,0 @@
// Copyright 2017 David Conran
// Supports:
// Brand: LG, Model: 6711A20083V remote
// Brand: LG, Model: AKB74395308 remote
#ifndef IR_LG_H_
#define IR_LG_H_
#define __STDC_LIMIT_MACROS
#include <stdint.h>
uint8_t calcLGChecksum(uint16_t data);
#endif // IR_LG_H_

View File

@ -9,8 +9,8 @@
This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an
[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc.
## v2.7.1 Now Available
Version 2.7.1 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
## v2.7.2 Now Available
Version 2.7.2 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
#### Upgrading from pre-v2.0
Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.

View File

@ -9,8 +9,8 @@
Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole
[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc.
## v2.7.1 disponible
Version 2.7.1 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
## v2.7.2 disponible
Version 2.7.2 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
#### mise à jour depuis pre-v2.0
L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.

View File

@ -1,5 +1,18 @@
# Release Notes
## _v2.7.2 (20200106)_
**[Bug Fixes]**
- Common AC api: Better handle protocols with power toggles. (#1002)
**[Features]**
- Experimental detailed support for LG a/c. (#1008 #1009)
**[Misc]**
- Add remote codes for Aloka LED lamp. (#1005)
- Improve Supported Devices scraping. (#1006)
## _v2.7.1 (20191125)_
**[Bug Fixes]**

View File

@ -1,6 +1,6 @@
<!--- WARNING: Do NOT edit this file directly.
It is generated by './tools/scrape_supported_devices.py'.
Last generated: Mon Nov 25 11:12:06 2019 --->
Last generated: Sun Jan 5 15:53:26 2020 --->
# IR Protocols supported by this library
| Protocol | Brand | Model | A/C Model | Detailed A/C Support |
@ -31,19 +31,21 @@
| [JVC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_JVC.cpp) | **Unknown** | | | - |
| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAPOF3 remote | | Yes |
| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | KSV26CRC A/C<BR>KSV26HRC A/C<BR>KSV35CRC A/C<BR>KSV35HRC A/C<BR>KSV53HRC A/C<BR>KSV62HRC A/C<BR>KSV70CRC A/C<BR>KSV70HRC A/C<BR>KSV80HRC A/C<BR>YALIF Remote | | Yes |
| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote<BR>6711A20083V remote<BR>AKB74395308 remote<BR>AKB74395308 remote | | Yes |
| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M A/C Remote<BR>AG1BH09AW101 Split A/C | | Yes |
| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote<BR>6711A20083V remote<BR>AKB74395308 remote<BR>AKB74395308 remote<BR>AKB75215403 remote (LG2)<BR>S4-W12JA3AA A/C (LG2) | | Yes |
| [Lasertag](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lasertag.cpp) | **Unknown** | | | - |
| [Lego](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lego.cpp) | **LEGO Power Functions** | IR Receiver | | - |
| [Lutron](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lutron.cpp) | **Unknown** | | | - |
| [MWM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MWM.cpp) | **Unknown** | | | - |
| [Magiquest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.cpp) | **[Unknown](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.h)** | | | Yes |
| [Magiquest](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.cpp) | **[Unknown](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Magiquest.h)** | | | - |
| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Comfee](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | MPD1-12CRN7 A/C | | Yes |
| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Keystone](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57H4(B)BGEF remote | | Yes |
| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Pioneer System](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RUBO18GMFILCAD A/C (18K BTU)<BR>RYBO12GMFILCAD A/C (12K BTU) | | Yes |
| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | HC3000 Projector<BR>KM14A 0179213 remote<BR>MS-GK24VA A/C<BR>TV | | Yes |
| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote<BR>KPOA remote<BR>MSH-A24WV / MUH-A24WV A/C<BR>PEAD-RP71JAA Ducted A/C | | Yes |
| [MitsubishiHeavy](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.cpp) | **[Mitsubishi Heavy Industries](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.h)** | RKX502A001C remote<BR>RLA502A700B remote<BR>SRKxxZJ-S A/C<BR>SRKxxZM-S A/C<BR>SRKxxZMXA-S A/C | | Yes |
| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Yamaha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | RAV561 remote<BR>RXV585B A/V Receiver | | Yes |
| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Aloka](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SleepyLights LED Lamp | | - |
| [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Yamaha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | RAV561 remote<BR>RXV585B A/V Receiver | | - |
| [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | NS-09AHTI A/C<BR>NS-09AHTI A/C<BR>ZH/TY-01 remote<BR>ZH/TY-01 remote | | Yes |
| [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Unknown** | | | - |
| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2311 remote (CKP)<BR>A75C3704 remote<BR>A75C3747 remote<BR>A75C3747 remote<BR>A75C3747 remote<BR>A75C3747 remote<BR>CKP series A/C<BR>CS-ME10CKPG A/C<BR>CS-ME12CKPG A/C<BR>CS-ME14CKPG A/C<BR>CS-YW9MKD A/C<BR>CS-Z9RKR A/C<BR>DKE series A/C<BR>JKE series A/C<BR>NKE series A/C<BR>RKR series A/C<BR>TV | | Yes |

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -39,6 +39,7 @@ IRHaierACYRW02 KEYWORD1
IRHitachiAc KEYWORD1
IRHitachiAc424 KEYWORD1
IRKelvinatorAC KEYWORD1
IRLgAc KEYWORD1
IRMideaAC KEYWORD1
IRMitsubishi112 KEYWORD1
IRMitsubishi136 KEYWORD1
@ -66,6 +67,7 @@ fanspeed_t KEYWORD1
fujitsu_ac_remote_model_t KEYWORD1
gree_ac_remote_model_t KEYWORD1
irparams_t KEYWORD1
lg_ac_remote_model_t KEYWORD1
match_result_t KEYWORD1
opmode_t KEYWORD1
panasonic_ac_remote_model_t KEYWORD1
@ -346,9 +348,11 @@ isSwingVToggle KEYWORD2
isTimeCommand KEYWORD2
isTimerActive KEYWORD2
isTimerEnabled KEYWORD2
isValidLgAc KEYWORD2
kelvinator KEYWORD2
ledOff KEYWORD2
ledOn KEYWORD2
lg KEYWORD2
mark KEYWORD2
match KEYWORD2
matchAtLeast KEYWORD2
@ -590,6 +594,7 @@ xorBytes KEYWORD2
// LITERAL1
AIWA_RC_T501 LITERAL1
AIWA_RC_T501_BITS LITERAL1
AKB75215403 LITERAL1
ALLOW_DELAY_CALLS LITERAL1
AMCOR LITERAL1
ARDB1 LITERAL1
@ -748,6 +753,7 @@ FUJITSU_AC_SWING_BOTH LITERAL1
FUJITSU_AC_SWING_HORIZ LITERAL1
FUJITSU_AC_SWING_OFF LITERAL1
FUJITSU_AC_SWING_VERT LITERAL1
GE6711AR2853M LITERAL1
GICABLE LITERAL1
GICABLE_BITS LITERAL1
GLOBALCACHE LITERAL1
@ -1063,6 +1069,22 @@ kAiwaRcT501PostBits LITERAL1
kAiwaRcT501PostData LITERAL1
kAiwaRcT501PreBits LITERAL1
kAiwaRcT501PreData LITERAL1
kAlokaBits LITERAL1
kAlokaLedBlue LITERAL1
kAlokaLedGreen LITERAL1
kAlokaLedLightGreen LITERAL1
kAlokaLedMidBlue LITERAL1
kAlokaLedOrange LITERAL1
kAlokaLedPink LITERAL1
kAlokaLedPinkRed LITERAL1
kAlokaLedRainbow LITERAL1
kAlokaLedRed LITERAL1
kAlokaLedTreeGrow LITERAL1
kAlokaLedWhite LITERAL1
kAlokaLedYellow LITERAL1
kAlokaNightFade LITERAL1
kAlokaNightTimer LITERAL1
kAlokaPower LITERAL1
kAmcorAuto LITERAL1
kAmcorBits LITERAL1
kAmcorChecksumByte LITERAL1
@ -2094,9 +2116,38 @@ kLg32HdrSpace LITERAL1
kLg32HdrSpaceTicks LITERAL1
kLg32RptHdrMark LITERAL1
kLg32RptHdrMarkTicks LITERAL1
kLgAcAuto LITERAL1
kLgAcChecksumOffset LITERAL1
kLgAcChecksumSize LITERAL1
kLgAcCool LITERAL1
kLgAcDry LITERAL1
kLgAcFan LITERAL1
kLgAcFanAuto LITERAL1
kLgAcFanHigh LITERAL1
kLgAcFanLow LITERAL1
kLgAcFanMedium LITERAL1
kLgAcFanOffset LITERAL1
kLgAcFanSize LITERAL1
kLgAcHeat LITERAL1
kLgAcMaxTemp LITERAL1
kLgAcMinTemp LITERAL1
kLgAcModeOffset LITERAL1
kLgAcModeSize LITERAL1
kLgAcOffCommand LITERAL1
kLgAcPowerOff LITERAL1
kLgAcPowerOffset LITERAL1
kLgAcPowerOn LITERAL1
kLgAcPowerSize LITERAL1
kLgAcSignature LITERAL1
kLgAcSignatureOffset LITERAL1
kLgAcSignatureSize LITERAL1
kLgAcTempAdjust LITERAL1
kLgAcTempOffset LITERAL1
kLgAcTempSize LITERAL1
kLgBitMark LITERAL1
kLgBitMarkTicks LITERAL1
kLgBits LITERAL1
kLgDefaultRepeat LITERAL1
kLgHdrMark LITERAL1
kLgHdrMarkTicks LITERAL1
kLgHdrSpace LITERAL1

View File

@ -1,6 +1,6 @@
{
"name": "IRremoteESP8266",
"version": "2.7.1",
"version": "2.7.2",
"keywords": "infrared, ir, remote, esp8266, esp32",
"description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)",
"repository":

View File

@ -1,5 +1,5 @@
name=IRremoteESP8266
version=2.7.1
version=2.7.2
author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff
maintainer=Mark Szabo, David Conran, Sebastien Warin, Roi Dayan, Massimiliano Pinto
sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32)

View File

@ -25,6 +25,7 @@
#include "ir_Haier.h"
#include "ir_Hitachi.h"
#include "ir_Kelvinator.h"
#include "ir_LG.h"
#include "ir_Midea.h"
#include "ir_Mitsubishi.h"
#include "ir_MitsubishiHeavy.h"
@ -149,6 +150,10 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) {
#if SEND_KELVINATOR
case decode_type_t::KELVINATOR:
#endif
#if SEND_LG
case decode_type_t::LG:
case decode_type_t::LG2:
#endif
#if SEND_MIDEA
case decode_type_t::MIDEA:
#endif
@ -719,6 +724,30 @@ void IRac::kelvinator(IRKelvinatorAC *ac,
}
#endif // SEND_KELVINATOR
#if SEND_LG
void IRac::lg(IRLgAc *ac, const lg_ac_remote_model_t model,
const bool on, const stdAc::opmode_t mode,
const float degrees, const stdAc::fanspeed_t fan) {
ac->begin();
ac->setModel(model);
ac->setPower(on);
ac->setMode(ac->convertMode(mode));
ac->setTemp(degrees);
ac->setFan(ac->convertFan(fan));
// No Vertical swing setting available.
// No Horizontal swing setting available.
// No Quiet setting available.
// No Turbo setting available.
// No Light setting available.
// No Filter setting available.
// No Clean setting available.
// No Beep setting available.
// No Sleep setting available.
// No Clock setting available.
ac->send();
}
#endif // SEND_LG
#if SEND_MIDEA
void IRac::midea(IRMideaAC *ac,
const bool on, const stdAc::opmode_t mode, const bool celsius,
@ -1144,6 +1173,20 @@ void IRac::whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model,
}
#endif // SEND_WHIRLPOOL_AC
// Create a new state base on the provided state that has been suitably fixed.
// Args:
// state: The state_t structure describing the desired a/c state.
//
// Returns:
// A stdAc::state_t with the needed settings.
stdAc::state_t IRac::cleanState(const stdAc::state_t state) {
stdAc::state_t result = state;
// A hack for Home Assistant, it appears to need/want an Off opmode.
// So enforce the power is off if the mode is also off.
if (state.mode == stdAc::opmode_t::kOff) result.power = false;
return result;
}
// Create a new state base on desired & previous states but handle
// any state changes for options that need to be toggled.
// Args:
@ -1244,23 +1287,18 @@ bool IRac::sendAc(const decode_type_t vendor, const int16_t model,
// Returns:
// boolean: True, if accepted/converted/attempted. False, if unsupported.
bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
stdAc::state_t send = this->handleToggles(desired, prev);
// Convert the temperature to Celsius.
float degC;
if (desired.celsius)
degC = send.degrees;
else
degC = fahrenheitToCelsius(desired.degrees);
bool on = desired.power;
// A hack for Home Assistant, it appears to need/want an Off opmode.
if (desired.mode == stdAc::opmode_t::kOff) on = false;
// Convert the temp from Fahrenheit to Celsius if we are not in Celsius mode.
float degC = desired.celsius ? desired.degrees
: fahrenheitToCelsius(desired.degrees);
// special `state_t` that is required to be sent based on that.
stdAc::state_t send = this->handleToggles(this->cleanState(desired), prev);
// Per vendor settings & setup.
switch (send.protocol) {
#if SEND_AMCOR
case AMCOR:
{
IRAmcorAc ac(_pin, _inverted, _modulation);
amcor(&ac, on, send.mode, degC, send.fanspeed);
amcor(&ac, send.power, send.mode, degC, send.fanspeed);
break;
}
#endif // SEND_AMCOR
@ -1268,8 +1306,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case ARGO:
{
IRArgoAC ac(_pin, _inverted, _modulation);
argo(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.turbo,
send.sleep);
argo(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.turbo, send.sleep);
break;
}
#endif // SEND_ARGO
@ -1277,8 +1315,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case COOLIX:
{
IRCoolixAC ac(_pin, _inverted, _modulation);
coolix(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.swingh,
send.turbo, send.light, send.clean, send.sleep);
coolix(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.turbo, send.light, send.clean, send.sleep);
break;
}
#endif // SEND_COOLIX
@ -1286,8 +1324,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN:
{
IRDaikinESP ac(_pin, _inverted, _modulation);
daikin(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.swingh,
send.quiet, send.turbo, send.econo, send.clean);
daikin(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet, send.turbo, send.econo, send.clean);
break;
}
#endif // SEND_DAIKIN
@ -1295,7 +1333,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN128:
{
IRDaikin128 ac(_pin, _inverted, _modulation);
daikin128(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
daikin128(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.quiet, send.turbo, send.light, send.econo, send.sleep,
send.clock);
break;
@ -1305,7 +1343,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN152:
{
IRDaikin152 ac(_pin, _inverted, _modulation);
daikin152(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
daikin152(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.quiet, send.turbo, send.econo);
break;
}
@ -1314,7 +1352,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN160:
{
IRDaikin160 ac(_pin, _inverted, _modulation);
daikin160(&ac, on, send.mode, degC, send.fanspeed, send.swingv);
daikin160(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv);
break;
}
#endif // SEND_DAIKIN160
@ -1322,7 +1360,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN176:
{
IRDaikin176 ac(_pin, _inverted, _modulation);
daikin176(&ac, on, send.mode, degC, send.fanspeed, send.swingh);
daikin176(&ac, send.power, send.mode, degC, send.fanspeed, send.swingh);
break;
}
#endif // SEND_DAIKIN176
@ -1330,9 +1368,9 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN2:
{
IRDaikin2 ac(_pin, _inverted, _modulation);
daikin2(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.swingh,
send.quiet, send.turbo, send.light, send.econo, send.filter,
send.clean, send.beep, send.sleep, send.clock);
daikin2(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet, send.turbo, send.light, send.econo,
send.filter, send.clean, send.beep, send.sleep, send.clock);
break;
}
#endif // SEND_DAIKIN2
@ -1340,7 +1378,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case DAIKIN216:
{
IRDaikin216 ac(_pin, _inverted, _modulation);
daikin216(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
daikin216(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet, send.turbo);
break;
}
@ -1349,7 +1387,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case ELECTRA_AC:
{
IRElectraAc ac(_pin, _inverted, _modulation);
electra(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
electra(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh);
break;
}
@ -1359,9 +1397,9 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
{
IRFujitsuAC ac(_pin, (fujitsu_ac_remote_model_t)send.model, _inverted,
_modulation);
fujitsu(&ac, (fujitsu_ac_remote_model_t)send.model, on, send.mode, degC,
send.fanspeed, send.swingv, send.swingh, send.quiet, send.turbo,
send.econo, send.filter, send.clean);
fujitsu(&ac, (fujitsu_ac_remote_model_t)send.model, send.power, send.mode,
degC, send.fanspeed, send.swingv, send.swingh, send.quiet,
send.turbo, send.econo, send.filter, send.clean);
break;
}
#endif // SEND_FUJITSU_AC
@ -1369,7 +1407,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case GOODWEATHER:
{
IRGoodweatherAc ac(_pin, _inverted, _modulation);
goodweather(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
goodweather(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.turbo, send.light, send.sleep);
break;
}
@ -1379,7 +1417,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
{
IRGreeAC ac(_pin, (gree_ac_remote_model_t)send.model, _inverted,
_modulation);
gree(&ac, (gree_ac_remote_model_t)send.model, on, send.mode, degC,
gree(&ac, (gree_ac_remote_model_t)send.model, send.power, send.mode, degC,
send.fanspeed, send.swingv, send.turbo, send.light, send.clean,
send.sleep);
break;
@ -1389,8 +1427,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case HAIER_AC:
{
IRHaierAC ac(_pin, _inverted, _modulation);
haier(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.filter,
send.sleep, send.clock);
haier(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.filter, send.sleep, send.clock);
break;
}
#endif // SEND_HAIER_AC
@ -1398,7 +1436,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case HAIER_AC_YRW02:
{
IRHaierACYRW02 ac(_pin, _inverted, _modulation);
haierYrwo2(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
haierYrwo2(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.turbo, send.filter, send.sleep);
break;
}
@ -1407,7 +1445,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case HITACHI_AC:
{
IRHitachiAc ac(_pin, _inverted, _modulation);
hitachi(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
hitachi(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh);
break;
}
@ -1416,7 +1454,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case HITACHI_AC424:
{
IRHitachiAc424 ac(_pin, _inverted, _modulation);
hitachi424(&ac, on, send.mode, degC, send.fanspeed, send.swingv);
hitachi424(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv);
break;
}
#endif // SEND_HITACHI_AC424
@ -1424,18 +1462,28 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case KELVINATOR:
{
IRKelvinatorAC ac(_pin, _inverted, _modulation);
kelvinator(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
kelvinator(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet, send.turbo, send.light, send.filter,
send.clean);
break;
}
#endif // SEND_KELVINATOR
#if SEND_LG
case LG:
case LG2:
{
IRLgAc ac(_pin, _inverted, _modulation);
lg(&ac, (lg_ac_remote_model_t)send.model, send.power, send.mode,
send.degrees, send.fanspeed);
break;
}
#endif // SEND_LG
#if SEND_MIDEA
case MIDEA:
{
IRMideaAC ac(_pin, _inverted, _modulation);
midea(&ac, on, send.mode, send.celsius, send.degrees, send.fanspeed,
send.swingv, send.sleep);
midea(&ac, send.power, send.mode, send.celsius, send.degrees,
send.fanspeed, send.swingv, send.sleep);
break;
}
#endif // SEND_MIDEA
@ -1443,7 +1491,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case MITSUBISHI_AC:
{
IRMitsubishiAC ac(_pin, _inverted, _modulation);
mitsubishi(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
mitsubishi(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet, send.clock);
break;
}
@ -1452,8 +1500,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case MITSUBISHI112:
{
IRMitsubishi112 ac(_pin, _inverted, _modulation);
mitsubishi112(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet);
mitsubishi112(&ac, send.power, send.mode, degC, send.fanspeed,
send.swingv, send.swingh, send.quiet);
break;
}
#endif // SEND_MITSUBISHI112
@ -1461,8 +1509,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case MITSUBISHI136:
{
IRMitsubishi136 ac(_pin, _inverted, _modulation);
mitsubishi136(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
send.quiet);
mitsubishi136(&ac, send.power, send.mode, degC, send.fanspeed,
send.swingv, send.quiet);
break;
}
#endif // SEND_MITSUBISHI136
@ -1470,16 +1518,17 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case MITSUBISHI_HEAVY_88:
{
IRMitsubishiHeavy88Ac ac(_pin, _inverted, _modulation);
mitsubishiHeavy88(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.turbo, send.econo, send.clean);
mitsubishiHeavy88(&ac, send.power, send.mode, degC, send.fanspeed,
send.swingv, send.swingh, send.turbo, send.econo,
send.clean);
break;
}
case MITSUBISHI_HEAVY_152:
{
IRMitsubishiHeavy152Ac ac(_pin, _inverted, _modulation);
mitsubishiHeavy152(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.quiet, send.turbo, send.econo,
send.filter, send.clean, send.sleep);
mitsubishiHeavy152(&ac, send.power, send.mode, degC, send.fanspeed,
send.swingv, send.swingh, send.quiet, send.turbo,
send.econo, send.filter, send.clean, send.sleep);
break;
}
#endif // SEND_MITSUBISHIHEAVY
@ -1487,7 +1536,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case NEOCLIMA:
{
IRNeoclimaAc ac(_pin, _inverted, _modulation);
neoclima(&ac, on, send.mode, degC, send.fanspeed, send.swingv,
neoclima(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.turbo, send.light, send.filter, send.sleep);
break;
}
@ -1496,9 +1545,9 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case PANASONIC_AC:
{
IRPanasonicAc ac(_pin, _inverted, _modulation);
panasonic(&ac, (panasonic_ac_remote_model_t)send.model, on, send.mode,
degC, send.fanspeed, send.swingv, send.swingh, send.quiet,
send.turbo, send.clock);
panasonic(&ac, (panasonic_ac_remote_model_t)send.model, send.power,
send.mode, degC, send.fanspeed, send.swingv, send.swingh,
send.quiet, send.turbo, send.clock);
break;
}
#endif // SEND_PANASONIC_AC
@ -1506,8 +1555,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case SAMSUNG_AC:
{
IRSamsungAc ac(_pin, _inverted, _modulation);
samsung(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.quiet,
send.turbo, send.clean, send.beep, prev->power);
samsung(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.quiet, send.turbo, send.clean, send.beep, prev->power);
break;
}
#endif // SEND_SAMSUNG_AC
@ -1515,7 +1564,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case SHARP_AC:
{
IRSharpAc ac(_pin, _inverted, _modulation);
sharp(&ac, on, send.mode, degC, send.fanspeed);
sharp(&ac, send.power, send.mode, degC, send.fanspeed);
break;
}
#endif // SEND_SHARP_AC
@ -1523,8 +1572,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case TCL112AC:
{
IRTcl112Ac ac(_pin, _inverted, _modulation);
tcl112(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.swingh,
send.turbo, send.light, send.econo, send.filter);
tcl112(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.swingh, send.turbo, send.light, send.econo, send.filter);
break;
}
#endif // SEND_TCL112AC
@ -1532,8 +1581,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case TECO:
{
IRTecoAc ac(_pin, _inverted, _modulation);
teco(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.light,
send.sleep);
teco(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.light, send.sleep);
break;
}
#endif // SEND_TECO
@ -1541,7 +1590,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case TOSHIBA_AC:
{
IRToshibaAC ac(_pin, _inverted, _modulation);
toshiba(&ac, on, send.mode, degC, send.fanspeed);
toshiba(&ac, send.power, send.mode, degC, send.fanspeed);
break;
}
#endif // SEND_TOSHIBA_AC
@ -1549,7 +1598,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case TROTEC:
{
IRTrotecESP ac(_pin, _inverted, _modulation);
trotec(&ac, on, send.mode, degC, send.fanspeed, send.sleep);
trotec(&ac, send.power, send.mode, degC, send.fanspeed, send.sleep);
break;
}
#endif // SEND_TROTEC
@ -1557,8 +1606,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case VESTEL_AC:
{
IRVestelAc ac(_pin, _inverted, _modulation);
vestel(&ac, on, send.mode, degC, send.fanspeed, send.swingv, send.turbo,
send.filter, send.sleep, send.clock);
vestel(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv,
send.turbo, send.filter, send.sleep, send.clock);
break;
}
#endif // SEND_VESTEL_AC
@ -1566,9 +1615,9 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
case WHIRLPOOL_AC:
{
IRWhirlpoolAc ac(_pin, _inverted, _modulation);
whirlpool(&ac, (whirlpool_ac_remote_model_t)send.model, on, send.mode,
degC, send.fanspeed, send.swingv, send.turbo, send.light,
send.sleep, send.clock);
whirlpool(&ac, (whirlpool_ac_remote_model_t)send.model, send.power,
send.mode, degC, send.fanspeed, send.swingv, send.turbo,
send.light, send.sleep, send.clock);
break;
}
#endif // SEND_WHIRLPOOL_AC
@ -2129,6 +2178,21 @@ namespace IRAcUtils {
return ac.toString();
}
#endif // DECODE_TCL112AC
#if DECODE_LG
case decode_type_t::LG:
case decode_type_t::LG2: {
IRLgAc ac(0);
ac.setRaw(result->value); // Like Coolix, use value instead of state.
switch (result->decode_type) {
case decode_type_t::LG2:
ac.setModel(lg_ac_remote_model_t::AKB75215403);
break;
default:
ac.setModel(lg_ac_remote_model_t::GE6711AR2853M);
}
return ac.isValidLgAc() ? ac.toString() : "";
}
#endif // DECODE_LG
default:
return "";
}
@ -2299,6 +2363,23 @@ namespace IRAcUtils {
break;
}
#endif // DECODE_KELVINATOR
#if DECODE_LG
case decode_type_t::LG:
case decode_type_t::LG2: {
IRLgAc ac(kGpioUnused);
ac.setRaw(decode->value); // Uses value instead of state.
if (!ac.isValidLgAc()) return false;
switch (decode->decode_type) {
case decode_type_t::LG2:
ac.setModel(lg_ac_remote_model_t::AKB75215403);
break;
default:
ac.setModel(lg_ac_remote_model_t::GE6711AR2853M);
}
*result = ac.toCommon();
break;
}
#endif // DECODE_LG
#if DECODE_MIDEA
case decode_type_t::MIDEA: {
IRMideaAC ac(kGpioUnused);

View File

@ -18,6 +18,7 @@
#include "ir_Haier.h"
#include "ir_Hitachi.h"
#include "ir_Kelvinator.h"
#include "ir_LG.h"
#include "ir_Midea.h"
#include "ir_Mitsubishi.h"
#include "ir_MitsubishiHeavy.h"
@ -136,16 +137,16 @@ class IRac {
const bool quiet, const bool turbo, const bool econo);
#endif // SEND_DAIKIN152
#if SEND_DAIKIN160
void daikin160(IRDaikin160 *ac,
const bool on, const stdAc::opmode_t mode,
const float degrees, const stdAc::fanspeed_t fan,
const stdAc::swingv_t swingv);
void daikin160(IRDaikin160 *ac,
const bool on, const stdAc::opmode_t mode,
const float degrees, const stdAc::fanspeed_t fan,
const stdAc::swingv_t swingv);
#endif // SEND_DAIKIN160
#if SEND_DAIKIN176
void daikin176(IRDaikin176 *ac,
const bool on, const stdAc::opmode_t mode,
const float degrees, const stdAc::fanspeed_t fan,
const stdAc::swingh_t swingh);
void daikin176(IRDaikin176 *ac,
const bool on, const stdAc::opmode_t mode,
const float degrees, const stdAc::fanspeed_t fan,
const stdAc::swingh_t swingh);
#endif // SEND_DAIKIN176
#if SEND_DAIKIN2
void daikin2(IRDaikin2 *ac,
@ -230,6 +231,11 @@ void electra(IRElectraAc *ac,
const bool quiet, const bool turbo, const bool light,
const bool filter, const bool clean);
#endif // SEND_KELVINATOR
#if SEND_LG
void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
const bool on, const stdAc::opmode_t mode,
const float degrees, const stdAc::fanspeed_t fan);
#endif // SEND_LG
#if SEND_MIDEA
void midea(IRMideaAC *ac,
const bool on, const stdAc::opmode_t mode, const bool celsius,
@ -340,6 +346,7 @@ void electra(IRElectraAc *ac,
const bool turbo, const bool light,
const int16_t sleep = -1, const int16_t clock = -1);
#endif // SEND_WHIRLPOOL_AC
static stdAc::state_t cleanState(const stdAc::state_t state);
static stdAc::state_t handleToggles(const stdAc::state_t desired,
const stdAc::state_t *prev = NULL);
}; // IRac class

View File

@ -1,4 +1,4 @@
/***************************************************
/***************************************************
* IRremote for ESP8266
*
* Based on the IRremote library for Arduino by Ken Shirriff
@ -52,7 +52,7 @@
#endif // UNIT_TEST
// Library Version
#define _IRREMOTEESP8266_VERSION_ "2.7.1"
#define _IRREMOTEESP8266_VERSION_ "2.7.2"
// Set the language & locale for the library. See the `locale` dir for options.
#ifndef _IR_LOCALE_
@ -588,6 +588,7 @@ const uint16_t kSingleRepeat = 1;
const uint16_t kAiwaRcT501Bits = 15;
const uint16_t kAiwaRcT501MinRepeats = kSingleRepeat;
const uint16_t kAlokaBits = 32;
const uint16_t kAmcorStateLength = 8;
const uint16_t kAmcorBits = kAmcorStateLength * 8;
const uint16_t kAmcorDefaultRepeat = kSingleRepeat;
@ -668,6 +669,7 @@ const uint16_t kLegoPfBits = 16;
const uint16_t kLegoPfMinRepeat = kNoRepeat;
const uint16_t kLgBits = 28;
const uint16_t kLg32Bits = 32;
const uint16_t kLgDefaultRepeat = kNoRepeat;
const uint16_t kLutronBits = 35;
const uint16_t kMagiquestBits = 56;
const uint16_t kMideaBits = 48;

View File

@ -141,6 +141,11 @@ enum whirlpool_ac_remote_model_t {
DG11J191,
};
enum lg_ac_remote_model_t {
GE6711AR2853M = 1, // (1) LG 28-bit Protocol (default)
AKB75215403, // (2) LG2 28-bit Protocol
};
// Classes
class IRsend {

View File

@ -824,13 +824,6 @@ namespace irutils {
String modelToStr(const decode_type_t protocol, const int16_t model) {
switch (protocol) {
case decode_type_t::GREE:
switch (model) {
case gree_ac_remote_model_t::YAW1F: return F("YAW1F");
case gree_ac_remote_model_t::YBOFB: return F("YBOFB");
default: return kUnknownStr;
}
break;
case decode_type_t::FUJITSU_AC:
switch (model) {
case fujitsu_ac_remote_model_t::ARRAH2E: return F("ARRAH2E");
@ -841,6 +834,21 @@ namespace irutils {
default: return kUnknownStr;
}
break;
case decode_type_t::GREE:
switch (model) {
case gree_ac_remote_model_t::YAW1F: return F("YAW1F");
case gree_ac_remote_model_t::YBOFB: return F("YBOFB");
default: return kUnknownStr;
}
break;
case decode_type_t::LG:
case decode_type_t::LG2:
switch (model) {
case lg_ac_remote_model_t::GE6711AR2853M: return F("GE6711AR2853M");
case lg_ac_remote_model_t::AKB75215403: return F("AKB75215403");
default: return kUnknownStr;
}
break;
case decode_type_t::PANASONIC_AC:
switch (model) {
case panasonic_ac_remote_model_t::kPanasonicLke: return F("LKE");

Some files were not shown because too many files have changed in this diff Show More