Go Down

Topic: Proyecto NodeMCU + Alexa (Read 93 times) previous topic - next topic

RobertoPizza

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();
}

Go Up