Re: IR Transmitter ?
Posted: 27 Jul 2017, 21:50
by StefanD
Hello,
for LG AC your LG TV code will not work. Try to compile espeasy with a modified plugin 035 that I will post it below. It is working with my model of LG AC. Example of the command to power on the AC unit in cool mode with 22 deg will be something like
http://192.168.x.x/control?cmd=IRSEND,LG_ON . With this plugin you have available the following commands: LG_ON,LG_OFF,LG_FAN2,LG_FAN3,LG_L and LG_LL (low low power saving). Try it to see if is working for you
Best regards
//#######################################################################################################
//#################################### Plugin 035: Output IR ############################################
//#######################################################################################################
#include <IRremoteESP8266.h>
IRsend *Plugin_035_irSender;
#define PLUGIN_035
#define PLUGIN_ID_035 35
#define PLUGIN_NAME_035 "Infrared Transmit"
boolean Plugin_035(byte function, struct EventStruct *event, String& string)
{
boolean success = false;
switch (function)
{
case PLUGIN_DEVICE_ADD:
{
Device[++deviceCount].Number = PLUGIN_ID_035;
Device[deviceCount].Type = DEVICE_TYPE_SINGLE;
Device[deviceCount].SendDataOption = false;
break;
}
case PLUGIN_GET_DEVICENAME:
{
string = F(PLUGIN_NAME_035);
break;
}
case PLUGIN_GET_DEVICEVALUENAMES:
{
break;
}
case PLUGIN_INIT:
{
int irPin = Settings.TaskDevicePin1[event->TaskIndex];
if (Plugin_035_irSender == 0 && irPin != -1)
{
addLog(LOG_LEVEL_INFO, "INIT: IR TX");
Plugin_035_irSender = new IRsend(irPin);
Plugin_035_irSender->begin(); // Start the sender
}
if (Plugin_035_irSender != 0 && irPin == -1)
{
addLog(LOG_LEVEL_INFO, "INIT: IR TX Removed");
delete Plugin_035_irSender;
Plugin_035_irSender = 0;
}
success = true;
break;
}
case PLUGIN_WRITE:
{
String IrType;
unsigned long IrCode;
unsigned int IrBits;
char command[120];
command[0] = 0;
char TmpStr1[100];
TmpStr1[0] = 0;
string.toCharArray(command, 120);
unsigned int an[59] = {8750,4150, 500,1600, 450,550, 450,600, 450,600, 450,1600, 450,600, 400,600, 500,550, 500,500, 500,550, 500,550, 450,600, 450,550, 500,550, 450,550, 500,550, 450,1650, 450,600, 400,600, 450,550, 450,600, 450,550, 450,600, 450,600, 450,1600, 450,600, 450,550, 450,600, 450};
unsigned int aus[59] = {8750,4150, 500,1600, 450,550, 450,600, 450,600, 400,1650, 450,550, 450,600, 450,550, 450,1650, 450,1600, 450,600, 450,550, 450,600, 450,550, 450,600, 450,600, 450,550, 450,600, 450,600, 400,600, 450,550, 450,1600, 450,600, 450,1600, 450,600, 450,600, 450,550, 450,1600, 450};
unsigned int an01[59] = {8750,4150, 500,1550, 500,550, 500,550, 500,500, 500,1550, 500,550, 500,500, 500,500, 500,550, 500,550, 500,550, 500,500, 500,550, 500,500, 500,550, 500,500, 500,550, 500,1550, 500,1600, 500,1550, 500,500, 500,550, 500,1600, 500,500, 500,1550, 500,550, 500,500, 550,1550, 500};
unsigned int an02[59] = {8700,4150, 500,1600, 450,550, 500,550, 450,550, 500,1600, 450,600, 450,550, 450,600, 450,550, 450,600, 450,550, 500,550, 450,600, 450,550, 450,600, 450,550, 500,550, 450,1600, 500,1600, 450,1600, 450,600, 450,1600, 450,600, 400,600, 450,1600, 450,600, 450,1600, 450,1600, 450};
unsigned int an03[59] = {8800,4100, 500,1550, 500,550, 500,550, 500,500, 500,1550, 550,500, 500,550, 500,500, 500,1550, 500,1550, 500,550, 500,500, 500,550, 500,500, 500,500, 550,550, 450,550, 500,1600, 500,1550, 500,1550, 500,1550, 500,1550, 500,550, 450,1550, 550,500, 550,500, 500,550, 500,550, 450};
unsigned int an04[59] = {8800,4100, 500,1600, 450,600, 450,550, 500,550, 450,1600, 450,600, 450,550, 500,550, 450,1600, 500,1600, 450,550, 500,550, 450,550, 500,550, 450,550, 500,550, 500,550, 450,1600, 450,1600, 450,1600, 500,1550, 500,1600, 450,1600, 450,550, 500,550, 450,600, 450,600, 400,1600, 450};
unsigned int an1[99] = {3450,1700, 450,450, 400,1300, 450,450, 400,450, 400,450, 450,400, 450,400, 450,400, 450,450, 400,450, 400,450, 450,400, 450,450, 400,1300, 400,450, 450,450, 400,450, 400,450, 450,400, 450,400, 450,450, 400,450, 400,450, 450,1300, 400,450, 450,400, 450,400, 450,400, 450,450, 400,450, 450,400, 450,400, 450,1300, 450,400, 450,1300, 400,1300, 400,1300, 450,1300, 450,400, 450,400, 450,1300, 400,450, 450,1300, 400,1300, 450,1300, 400,1300, 450,400, 450,1300, 400};
unsigned int aus1[99] = {3500,1700, 400,450, 400,1300, 450,450, 400,450, 400,450, 450,400, 450,450, 400,450, 400,450, 400,500, 400,450, 400,450, 400,450, 400,1300, 450,450, 400,450, 400,450, 400,450, 450,450, 400,450, 400,450, 400,450, 450,450, 400,1300, 400,500, 400,450, 400,450, 400,450, 400,450, 400,450, 450,450, 400,450, 400,1300, 450,450, 400,1300, 400,1300, 450,1300, 400,1300, 450,450, 400,450, 400,1300, 450,450, 400,1300, 400,1300, 450,1300, 400,1300, 450,450, 400,1300, 400};
unsigned int an2[67] = {8900,4450, 550,550, 550,600, 550,1650, 550,550, 550,550, 550,550, 600,500, 600,550, 550,1650, 550,1650, 550,600, 550,1700, 500,1650, 550,1700, 550,1650, 600,1600, 600,550, 550,550, 550,550, 600,1600, 600,550, 550,550, 550,550, 600,500, 600,1650, 550,1650, 550,1650, 600,550, 550,1650, 550,1700, 500,1700, 550,1650, 550};
String tmpString = string;
int argIndex = tmpString.indexOf(',');
if (argIndex) tmpString = tmpString.substring(0, argIndex);
if (GetArgv(command, TmpStr1, 2)) IrType = TmpStr1;
if (GetArgv(command, TmpStr1, 3)) IrCode = strtoul(TmpStr1, NULL, 16); //(long) TmpStr1
if (GetArgv(command, TmpStr1, 4)) IrBits = str2int(TmpStr1);
if (tmpString.equalsIgnoreCase("IRSEND") && Plugin_035_irSender != 0)
{
success = true;
if (IrType.equalsIgnoreCase("NEC")) Plugin_035_irSender->sendNEC(IrCode, IrBits);
if (IrType.equalsIgnoreCase("JVC")) Plugin_035_irSender->sendJVC(IrCode, IrBits, 2);
if (IrType.equalsIgnoreCase("RC5")) Plugin_035_irSender->sendRC5(IrCode, IrBits);
if (IrType.equalsIgnoreCase("RC6")) Plugin_035_irSender->sendRC6(IrCode, IrBits);
if (IrType.equalsIgnoreCase("SAMSUNG")) Plugin_035_irSender->sendSAMSUNG(IrCode, IrBits);
if (IrType.equalsIgnoreCase("SONY")) Plugin_035_irSender->sendSony(IrCode, IrBits);
if (IrType.equalsIgnoreCase("PANASONIC")) Plugin_035_irSender->sendPanasonic(IrBits, IrCode);
if (IrType.equalsIgnoreCase("LG_ON")) Plugin_035_irSender->sendRaw(an,59,38);
if (IrType.equalsIgnoreCase("LG_OFF")) Plugin_035_irSender->sendRaw(aus,59,38);
if (IrType.equalsIgnoreCase("LG_FAN2")) Plugin_035_irSender->sendRaw(an01,59,38);
if (IrType.equalsIgnoreCase("LG_FAN3")) Plugin_035_irSender->sendRaw(an02,59,38);
if (IrType.equalsIgnoreCase("LG_L")) Plugin_035_irSender->sendRaw(an03,59,38);
if (IrType.equalsIgnoreCase("LG_LL")) Plugin_035_irSender->sendRaw(an04,59,38);
if (IrType.equalsIgnoreCase("PN_ON")) Plugin_035_irSender->sendRaw(an1,99,35);
if (IrType.equalsIgnoreCase("PN_OFF")) Plugin_035_irSender->sendRaw(aus1,99,35);
if (IrType.equalsIgnoreCase("LG_TV")) Plugin_035_irSender->sendRaw(an2,67,38);
addLog(LOG_LEVEL_INFO, "IR Code Sent");
if (printToWeb)
{
printWebString += F("IR Code Sent ");
printWebString += IrType;
printWebString += F("<BR>");
}
}
break;
}
}
return success;
}
Re: IR Transmitter ?
Posted: 26 Jul 2018, 03:44
by jpemby
Hello.
Firstly, I have no idea what I'm doing! But despite that, I was able to get my d1 mini (R148) to control the TV and light via the IR Transmitter. Thank you.
ThinkPad and Marko's posts were invaluable and allowed me to add the raw codes with the modification. I wanted to include control for the AC too. The three codes are very long compared to the others and they all work... INDIVIDUALLY.
If I comment-out any two of the following three codes... They each WORK. If I uncomment any more than one of these related statements, the device is no longer reachable via ip after compile/uploading...
unsigned int yac[439] = ...
// unsigned int yaf[439] = ...
// unsigned int yad[439] = ...
...
if (IrType.equalsIgnoreCase("YadaCOOL")) Plugin_035_irSender->sendRaw(yac,439,38);
// if (IrType.equalsIgnoreCase("YadaACOFF")) Plugin_035_irSender->sendRaw(yaf,439,38);
// if (IrType.equalsIgnoreCase("YadaHEAT")) Plugin_035_irSender->sendRaw(yad,439,38);
Memory issue? It's appears to be beyond my feeble mind!
- Jim
//#######################################################################################################
//#################################### Plugin 035: Output IR ############################################
//#######################################################################################################
#include <IRremoteESP8266.h>
IRsend *Plugin_035_irSender;
#define PLUGIN_035
#define PLUGIN_ID_035 35
#define PLUGIN_NAME_035 "Infrared Transmit"
boolean Plugin_035(byte function, struct EventStruct *event, String& string)
{
boolean success = false;
switch (function)
{
case PLUGIN_DEVICE_ADD:
{
Device[++deviceCount].Number = PLUGIN_ID_035;
Device[deviceCount].Type = DEVICE_TYPE_SINGLE;
Device[deviceCount].SendDataOption = false;
break;
}
case PLUGIN_GET_DEVICENAME:
{
string = F(PLUGIN_NAME_035);
break;
}
case PLUGIN_GET_DEVICEVALUENAMES:
{
break;
}
case PLUGIN_INIT:
{
int irPin = Settings.TaskDevicePin1[event->TaskIndex];
if (Plugin_035_irSender == 0 && irPin != -1)
{
addLog(LOG_LEVEL_INFO, "INIT: IR TX");
Plugin_035_irSender = new IRsend(irPin);
Plugin_035_irSender->begin(); // Start the sender
}
if (Plugin_035_irSender != 0 && irPin == -1)
{
addLog(LOG_LEVEL_INFO, "INIT: IR TX Removed");
delete Plugin_035_irSender;
Plugin_035_irSender = 0;
}
success = true;
break;
}
case PLUGIN_WRITE:
{
String IrType;
unsigned long IrCode;
unsigned int IrBits;
char command[80];
command[0] = 0;
char TmpStr1[80];
TmpStr1[0] = 0;
string.toCharArray(command, 80);
// unsigned int an[180] = {3250,1450,500,300,450,1100,500,300,450,350,450,1100,500,300,450,1100,500,300,500,300,450,1100,500,1050,500,1100,500,300,450,1100,450,350,500,1050,500,1100,450,1100,500,300,450,300,500,300,500,300,450,1100,500,1100,450,300,500,1100,450,1100,450,350,500,300,450,1100,500,300,500,300,450,1100,450,350,450,300,500,1100,450,1100,500,300,500,1050,500,1100,450,1100,450,1150,450,1100,450,1150,450,1100,500,1050,500,1100,450,300,500,300,500,300,450,350,450,300,500,300,450,350,450,300,500,1100,500,1050,500,1100,450,1100,500,300,450,350,450,1100,450,1100,500,1100,500,300,450,300,450,350,500,1050,500,1100,500,300,450,300,500,300,450,350,450,1100,500,1050,500,300,500,300,450,1100,500,1100,500,1050,450,1150,450,300,500,300,500,1050,500,1100,500,300,450,300,500,300,500,};
// unsigned int aus[180] = {3200,1500,450,300,500,1100,450,300,500,300,500,1050,500,300,500,1100,450,300,500,300,500,1050,500,1100,450,1100,500,300,500,1050,500,300,450,1150,450,1100,450,1100,500,300,500,300,500,300,450,300,500,1100,450,1100,500,300,500,1050,450,1150,450,300,500,300,450,1150,450,300,500,300,450,1100,500,300,450,350,450,1100,500,1100,450,300,500,1100,450,1100,450,1150,450,1100,450,1100,500,1100,500,1050,500,1100,450,1100,500,300,500,300,450,300,500,300,450,350,450,300,500,300,450,350,450,1100,500,1100,450,1100,450,1150,450,300,500,300,500,1050,500,1100,450,1100,500,300,450,350,450,300,500,1100,450,1100,500,300,500,300,450,300,500,300,500,1050,500,1100,450,1100,500,300,500,1050,500,1100,450,1100,500,1100,450,300,500,300,450,350,500,1050,500,300,500,300,450,300,500,};
unsigned int yaa[83] = {3350,1800,450,400,450,400,450,1250,450,1300,400,450,450,1250,450,400,450,400,450,450,400,1300,450,400,450,400,450,1250,450,400,450,1300,400,450,450,1250,450,400,450,400,450,1250,450,450,400,450,450,400,450,400,450,450,400,450,450,1250,450,1250,450,400,450,1250,450,450,400,450,450,1250,450,400,450,1250,450,400,450,450,450,1250,450,400,450,400,450,};
unsigned int yab[83] = {3400,1750,450,450,400,450,450,1250,450,1250,450,400,450,1250,450,450,400,450, 450,400,450,1250,450,400,450,450,400,1300,450,400,450,1250,450,400,450,1250,450,450,400,450,450,1250,450,400,450,400,450,450,400,450,450,1250,450,1250,450,1250,450,1250,450,450,400,1300,400,450,450,400,450,400,450,1250,450,1300,450,400,450,400,450,1250,450,400,450,450,400,};
unsigned int yac[439] = {3468,1768,408,452,420,1332,412,464,408,464,408,460,440,432,412,452,448,424,420,464,404,456,420,460,412,460,412,460,408,1336,408,464,408,464,408,452,424,460,408,464,408,452,420,452,420,1332,412,1324,420,1332,440,424,416,464,412,1332,412,448,420,452,420,464,408,464,408,464,408,452,420,452,420,452,420,452,420,452,420,464,408,460,412,464,408,460,412,452,420,452,416,464,408,456,416,456,420,452,416,456,416,464,412,460,412,452,416,464,412,448,420,452,420,456,420,448,420,464,408,1324,420,1324,420,452,420,452,420,460,408,456,420,464,408,10516,3456,1760,420,452,420,1332,412,452,416,456,420,452,420,452,416,456,416,464,412,452,416,452,420,464,408,464,408,452,420,1332,412,452,420,452,420,464,408,452,420,452,420,452,420,452,420,1332,412,1332,412,1320,420,464,408,452,420,1324,420,464,408,452,420,452,420,452,420,452,420,460,412,460,412,460,412,452,420,452,420,460,412,452,416,456,420,1332,412,452,416,456,416,1324,420,1324,420,1324,420,460,412,460,412,452,420,460,408,456,416,456,420,1332,412,1320,420,456,416,456,416,452,420,456,416,464,408,452,420,452,420,452,420,464,408,1324,420,1324,420,1324,448,1296,416,1336,436,1296,420,1332,412,1332,412,452,416,1328,420,452,448,1304,408,1324,420,452,420,464,408,452,420,460,412,452,420,452,420,452,448,424,448,424,420,452,420,452,420,452,420,460,412,1332,412,1324,416,1336,408,452,448,436,408,464,408,464,408,464,408,460,412,460,412,452,420,460,412,1324,420,1328,412,1328,416,452,420,464,408,464,408,452,420,464,408,452,448,1296,448,432,412,460,412,452,416,456,420,460,412,460,440,424,384,496,412,460,408,464,408,1336,408,464,408,1324,420,452,420,464,408,452,420,1336,408,464,408,452,420,464,408,452,420,452,420,452,420,460,412,452,420,452,420,460,412,1324,420,460,436,424,420,464,408,464,408,1324,448,1304,408,1328,448,1296,420,452,420,1332,412,1320,420,452,420,1324,420,};
// unsigned int yaf[439] = {3460,1768,412,460,412,1324,420,452,416,464,412,452,416,452,420,464,408,452,420,464,408,464,408,464,408,464,408,452,420,1328,416,452,420,460,412,452,420,460,412,460,408,456,420,460,412,1324,416,1324,420,1336,408,464,408,452,420,1324,420,452,420,460,412,452,420,452,420,452,420,460,412,452,420,460,412,452,420,452,420,452,420,460,412,448,420,452,420,464,408,452,420,464,408,452,420,464,408,452,420,452,420,452,420,460,412,452,420,452,420,460,412,452,420,460,412,452,420,452,420,1332,408,1328,416,464,412,452,416,452,420,460,412,460,412,10516,3456,1768,412,452,420,1332,408,456,416,456,420,460,408,464,408,464,408,464,408,452,420,460,412,460,412,452,420,452,420,1324,420,460,412,452,420,452,420,460,412,460,412,452,420,460,408,1328,416,1336,408,1332,412,460,412,452,420,1324,420,452,420,456,416,460,412,452,420,460,412,460,408,464,412,452,416,464,412,452,420,460,412,452,416,464,412,448,420,464,412,448,420,1336,408,452,420,464,408,1324,420,452,420,460,408,464,412,452,420,1332,412,1324,420,1328,412,460,412,464,408,464,408,464,408,452,420,452,420,452,420,456,416,464,408,1324,420,1332,408,1324,420,1328,416,1324,420,452,420,1324,420,464,408,1332,408,1328,416,464,408,1336,408,1332,412,452,420,460,412,464,408,452,420,460,412,452,420,460,412,452,420,452,420,460,412,452,420,452,416,456,420,1332,408,1328,416,1324,420,464,408,460,412,464,408,452,420,460,412,452,420,452,420,452,420,460,412,1324,416,1336,412,1332,408,1324,420,452,420,464,408,460,412,452,420,452,420,456,416,460,412,452,420,452,420,456,412,456,416,464,412,460,412,460,412,460,412,452,416,1336,408,464,408,1332,412,452,420,464,408,460,412,1324,420,452,420,452,420,460,412,460,412,460,412,460,412,460,412,452,416,456,420,460,408,1336,408,456,416,452,420,460,412,464,408,464,408,1332,412,1324,420,1332,412,1324,420,1320,420,1324,420,464,408,452,420,};
// unsigned int yad[439] = {3460,1768,408,452,420,1324,420,460,412,452,448,432,412,460,412,452,420,460,412,460,440,424,420,460,412,452,416,464,412,1332,408,452,420,452,420,452,420,464,408,460,412,460,412,452,444,1300,420,1324,420,1320,420,456,416,456,420,1332,408,456,420,448,420,460,412,452,420,464,408,452,420,452,420,460,412,452,448,424,420,460,412,460,408,456,416,464,412,452,416,464,412,452,416,456,416,464,408,464,408,464,408,456,416,464,408,464,412,460,408,452,420,464,408,452,420,460,412,460,412,1324,420,1324,420,460,412,460,412,452,424,448,420,460,408,10516,3468,1768,408,452,420,1324,420,452,420,460,412,452,420,460,412,460,412,460,412,460,412,460,412,460,412,452,416,456,420,1332,408,452,420,452,420,460,412,460,412,464,408,452,420,464,408,1324,420,1332,412,1324,416,464,408,456,416,1336,412,452,416,464,408,464,408,464,408,460,412,464,408,464,408,452,420,452,420,464,408,452,420,460,412,460,412,1324,420,452,420,460,412,1324,416,464,408,456,416,1328,416,456,416,464,408,464,412,448,420,1324,420,1324,420,1332,412,460,412,460,412,452,416,456,416,464,412,448,420,464,412,460,408,452,420,1336,408,1324,420,1332,408,1336,408,1332,412,464,412,1332,408,452,420,1324,420,1324,420,452,420,1324,416,1328,416,464,408,456,416,464,408,464,412,448,420,460,412,460,412,460,412,452,420,452,420,464,408,464,408,452,420,1332,412,1332,412,1324,416,464,412,460,408,464,408,464,412,448,420,464,408,452,420,452,420,464,408,1324,420,1324,420,1332,412,1332,408,464,412,460,412,452,416,464,408,464,408,464,408,452,420,452,420,456,416,460,440,424,420,452,420,460,412,464,408,460,412,452,420,1324,416,456,420,1332,408,464,408,464,408,452,420,1324,420,452,420,464,408,464,408,460,412,452,420,452,420,452,448,432,412,460,412,452,420,1324,420,452,420,452,416,456,448,432,436,428,416,456,416,464,408,464,408,452,420,452,420,452,420,1324,420,460,412,};
String tmpString = string;
int argIndex = tmpString.indexOf(',');
if (argIndex) tmpString = tmpString.substring(0, argIndex);
if (GetArgv(command, TmpStr1, 2)) IrType = TmpStr1;
if (GetArgv(command, TmpStr1, 3)) IrCode = strtoul(TmpStr1, NULL, 16); //(long) TmpStr1
if (GetArgv(command, TmpStr1, 4)) IrBits = str2int(TmpStr1);
if (tmpString.equalsIgnoreCase("IRSEND") && Plugin_035_irSender != 0)
{
success = true;
if (IrType.equalsIgnoreCase("NEC")) Plugin_035_irSender->sendNEC(IrCode, IrBits);
if (IrType.equalsIgnoreCase("JVC")) Plugin_035_irSender->sendJVC(IrCode, IrBits, 2);
if (IrType.equalsIgnoreCase("RC5")) Plugin_035_irSender->sendRC5(IrCode, IrBits);
if (IrType.equalsIgnoreCase("RC6")) Plugin_035_irSender->sendRC6(IrCode, IrBits);
if (IrType.equalsIgnoreCase("SAMSUNG")) Plugin_035_irSender->sendSAMSUNG(IrCode, IrBits);
if (IrType.equalsIgnoreCase("SONY")) Plugin_035_irSender->sendSony(IrCode, IrBits);
if (IrType.equalsIgnoreCase("PANASONIC")) Plugin_035_irSender->sendPanasonic(IrBits, IrCode);
// if (IrType.equalsIgnoreCase("Kliman")) Plugin_035_irSender->sendRaw(an,180,38);
// if (IrType.equalsIgnoreCase("Klimaus")) Plugin_035_irSender->sendRaw(aus,180,38);
if (IrType.equalsIgnoreCase("YadaON")) Plugin_035_irSender->sendRaw(yaa,83,38);
if (IrType.equalsIgnoreCase("YadaOFF")) Plugin_035_irSender->sendRaw(yab,83,38);
if (IrType.equalsIgnoreCase("YadaCOOL")) Plugin_035_irSender->sendRaw(yac,439,38);
// if (IrType.equalsIgnoreCase("YadaACOFF")) Plugin_035_irSender->sendRaw(yaf,439,38);
// if (IrType.equalsIgnoreCase("YadaHEAT")) Plugin_035_irSender->sendRaw(yad,439,38);
addLog(LOG_LEVEL_INFO, "IR Code Sent");
if (printToWeb)
{
printWebString += F("IR Code Sent ");
printWebString += IrType;
printWebString += F("<BR>");
}
}
break;
}
}
return success;
}