Buenas !
Tengo un proyecto para que Alexa comande mi TV Cable por IR. Ya hice funcionar Alexa prendendo y apagando luces y otro proyecto que envia los comandos IR al TV cable, ahora quiero UNIR los dos projectos y hacer que Alexa envie estos comandos IR como ejemplo Sube el Volumen, Baje el Volumen, Sube el Canal y Baje el Canal
Abajo este Sketch prende las luces (Con Alexa y App amazon) mas no esta enviando el sinal de IR (No se porque)
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
const uint16_t kIrLed = 4; // ESP8266 GPIO pin to use. Recommended: 4 (D2).
IRsend irsend(kIrLed); // Set the GPIO to be used to sending the message.
#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include "fauxmoESP.h"
#define VELOCIDAD_PUERTO_SERIE 115200
/* Network credentials */
#define WIFI_SSID "xxxx"
#define WIFI_PASS "xxxx"
fauxmoESP fauxmo;
bool estadoDispositivos[7]= {false, false, false, false, false, false, false};
#define PIN_1 D5
#define PIN_2 D6
#define DISPOSITIVO_1 "Sube canal"
#define DISPOSITIVO_2 "Baja canal"
void setup() {
// Iniciamos puerto serie
Serial.begin(VELOCIDAD_PUERTO_SERIE);
// Iniciamos wifi
wifiSetup();
// Configuramos como pines de salida
pinMode(PIN_1, OUTPUT);
pinMode(PIN_2, OUTPUT);
// Habilitamos la librería para el descubrimiento y cambio de estado
// de los dispositivos
fauxmo.enable(true);
// Damos de alta los diferentes dispositivos y grupos
fauxmo.addDevice(DISPOSITIVO_1); //ID0
fauxmo.addDevice(DISPOSITIVO_2); //ID1
// Decimos cuales van a ser nuestras funciones para obtener estado
// y para establecerlo...
fauxmo.onSetState(establecerEstado);
fauxmo.onGetState(obtenerEstado);
}
void loop() {
// Nos quedamos esperando peticiones todo el tiempo...
fauxmo.handle();
}
void establecerEstado(unsigned char idDispositivo, const char * nombreDispositivo, bool estado){
Serial.printf("Dispositivo #%d (%s) estado: %s\n", idDispositivo, nombreDispositivo, estado ? "encendido" : "apagado");
// Establecemos el estado del dispositivo concreto
estadoDispositivos[idDispositivo] = estado;
// En función del dispositivo recibido...
switch (idDispositivo) {
case 0:
{
irsend.sendNEC(0x410609F, 32); // envia el ch +
digitalWrite(PIN_1, estado);
Serial.println("Case 0");
}
break;
case 1:
{
irsend.sendNEC(0x410609F, 32); // envia el ch -
digitalWrite(PIN_2, estado);
Serial.println("Case 1");
}
break;
}
delay(50);
}
bool obtenerEstado(unsigned char idDispositivo, const char * nombreDispositivo){
return estadoDispositivos[idDispositivo];
}
void wifiSetup() {
// Configuramos modo de wifi (estación)
WiFi.mode(WIFI_STA);
// Realizamos la conexión
Serial.println ();
Serial.printf("[WIFI] Conectando con %s ", WIFI_SSID);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Esperamos a que la conexión esté lista
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}
// Conexión realizada
Serial.println(" [WIFI] Conexión realizada con éxito" );
Serial.println();
Serial.printf("[WIFI] Modo estación, SSID: %s, Dirección IP asignada: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
Serial.println();
}