IR Steuerung ESP8266 Fehler: IRsend

Hallo,

ich will bei mir zu hause einiges mit Alexa " Amazon Echo " steuern.
Ich habe im internet eine Code gefunden den ich übernommen habe. Code funktioniert einwandfrei aber bei mir gibt der immer eine Fehlermeldung. Hab alle Bibliotheken instaliert die ich brauche.

Arduino: 1.6.8 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"

Irwifi:13: error: 'IRsend' does not name a type

 IRsend IRLED(4); // IRLED angeschlossen am D2 Pin (GPIO4) - NEU

 ^

C:\Users\fatih\Desktop\Irwifi\Irwifi.ino: In function 'void anfrage(uint8_t, const char*, bool)':

Irwifi:59: error: 'IRLED' was not declared in this scope

     IRLED.sendRC5(20DF10EF, 32); 

     ^

Irwifi:59: error: unable to find numeric literal operator 'operator"" DF10EF'

     IRLED.sendRC5(20DF10EF, 32); 

                   ^

Irwifi:87: error: 'IRLED' was not declared in this scope

     IRLED.sendRC5(20DF10EF, 32); //NEU

     ^

Irwifi:87: error: unable to find numeric literal operator 'operator"" DF10EF'

     IRLED.sendRC5(20DF10EF, 32); //NEU

                   ^

C:\Users\fatih\Desktop\Irwifi\Irwifi.ino: In function 'void setup()':

Irwifi:112: error: 'IRLED' was not declared in this scope

     IRLED.begin(); // NEU

     ^

exit status 1
'IRsend' does not name a type


Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Das ist der Fehlermeldung. Ich habe im Internet bisschen recherchiert und herausgefunden das es an dem " RobotIRremote " liegen kann. Habs gelöscht aber ohne erfolg.

Ich habe auch versuch von dem "IRremoteESP8266" alte version zu instaliren danach hatte ich keine fehlermeldung mehr von IRsend aber dafur hatte ich eine andere Fehlermeldung.

 Arduino: 1.6.8 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"

C:\Users\fatih\Desktop\Irwifi\Irwifi.ino: In function 'void anfrage(uint8_t, const char*, bool)':

Irwifi:59: error: unable to find numeric literal operator 'operator"" DF10EF'

     IRLED.sendRC5(20DF10EF, 32); 

                   ^

Irwifi:87: error: unable to find numeric literal operator 'operator"" DF10EF'

     IRLED.sendRC5(20DF10EF, 32); //NEU

                   ^

exit status 1
unable to find numeric literal operator 'operator"" DF10EF'

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Ich hoffe ihr konnt mir weiterhelfen.

Vielen Dank im voraus.

#include <ESP8266WiFi.h>
#include <RCSwitch.h>
#include "fauxmoESP.h" 

#include <IRremoteESP8266.h> //by Ken Shirriff (C) NEU

#define WIFI_SSID "xyz"
#define WIFI_PASS "xyz??"

fauxmoESP alexawifi;
RCSwitch mySwitch = RCSwitch();

IRsend IRLED4); // IRLED angeschlossen am D2 Pin (GPIO4) - NEU


void wifiSetup() {

// -----------------------------------------------------------------------------
// WLAN SETUP
// ---------(--------------------------------------------------------------------
 
    WiFi.mode(WIFI_STA);
 
    Serial.printf("Verbindungs zu %s wird aufgebaut ", WIFI_SSID);
    
    WiFi.begin(WIFI_SSID, WIFI_PASS);
 
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(">");
        delay(100);
    } 
    Serial.println("");
    Serial.printf("Verbunden! SSID: %s, IP Adresse: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}

void anfrage(uint8_t device_id, const char * device_name, bool state) {
  Serial.print("Gerät: "); 
  Serial.println(device_name); 
  Serial.print("Status: ");
  
  if (state) { //Geräte anschalten  
    
    if(device_id == 0) { //Beispiel 433MHZ Geräte schalten
    Serial.println("AN");
    
    //24Bit Anlernbare Steckdosen
    mySwitch.send(307263, 24); 
    
    //DIP- Schalter
    //mySwitch.switchOn("11111", "00000"); 
    
    delay(50);
    }

    else if (device_id == 1) { //Beispiel IR Geräte schalten - NEU
    Serial.println("AN");
    
    //Telefunken
    IRLED.sendRC5(20DF10EF, 32); 

    //Samsung
    //IRLED.sendSAMSUNG(0xE0E040BF, 32); 
     
    delay(50);
    }
  }
  
  else { //Geräe Ausschalten
    
    if(device_id == 0) { //433 MHZ Geräte ausschalten
    Serial.println("AN");
    
    //24Bit Anlernbare Steckdosen
    mySwitch.send(307263, 24); 
    
    //DIP- Schalter
    //mySwitch.switchOn("11111", "00000"); 
    
    delay(50);
    }

  else if (device_id == 1) { //IR Geräte ausschalten
    
    Serial.println("AUS");
    
    //Telefunken
    IRLED.sendRC5(20DF10EF, 32); //NEU

    //Samsung
    // IRLED.sendSAMSUNG(0xE0E040BF, 32); 
     
    delay(50);
    }
  }
}

void geraete(){
  
    alexawifi.addDevice("Lampe Wohnzimmer"); //ID 0    
    alexawifi.addDevice("Fernseher Wohnzimmer"); //ID 1 - NEU
    alexawifi.onMessage(anfrage);

}

void setup() {

    Serial.begin(115200);
    Serial.println("Nach dem Verbinden, sage 'Alexa, schalte <Gerät> an' oder 'aus'");
    
    mySwitch.enableTransmit(5);
   
    IRLED.begin(); // NEU

    wifiSetup();
    geraete();
  
}

void loop() {
  alexawifi.handle();
}

Ist eigentlich drinne.

Irwifi:87: error: unable to find numeric literal operator 'operator"" DF10EF'

Was soll 20DF10EF sein?
Eine Variable darf nicht mit einer Ziffer anfangen, eine Konstante wäre evtl. 0x20DF10EF

Wie ist die Methode IRSend::sendRC5 deklariert ?

tiryakin_61:

IRsend IRLED4); // IRLED angeschlossen am D2 Pin (GPIO4) - NEU

Ist eigentlich drinne.

Da stimmt was nicht

20DF10EF ist der code von dem Fernbedienung fürs einschalten von TV.

In dem Bibliothek von IRsend und sendRC5 oder sendNEC habe ich nicht reingeguckt.

IRsend IRLED4; so ist der richtig ka wie der klammer da rein kommt.

tiryakin_61:
IRsend IRLED4; so ist der richtig ka wie der klammer da rein kommt.

ITLED4 kann auch nicht stimmen, das passt nicht zu den nachfolgenden Anweisungen
"IRLED.sendRC5(20DF10EF, 32);"

IRsend IRLED(4); sorry so musste es richtig sein. an dem GPIO4 wird dann die IR sender angeschlossen.

20DF10EF ist der code von dem Fernbedienung fürs einschalten von TV

Dann könnte evtl. 0x20DF10EF stimmen, wenn sendRC5 als ersten Parameter einen uint32_t erlaubt.
Und die Codes max. 4 Bytes groß sind.

In dem Bibliothek von IRsend und sendRC5 oder sendNEC habe ich nicht reingeguckt.

Ich auch nicht. Würde ich aber, wenn es mein Problem wäre.
Was soll übrigens der zweite Parameter, bei dir die 32, bedeuten? Nur fehlerfrei kompilieren ist ja noch nicht alles :wink:

Genau das mit dem 0x… musste davor aber das hatte meine problem auch nicht gelöst.
32 ist die Bitrate von der Fernbedinungscode den ich gelesen habe.

Hab alles aus dem Bibliothek entfernt und nur das nötigste darein getan und die IRLED kleingeschrieben (irled) dann hat irgendwie alles geklappt.
Und zusätzlich habe ich #include <IRsend.h> eingefügt.
Jetzt kann ich meine Fernseher über Echo dot ein und ausschalten.

Vielen vielen Dank für eure Hilfe

Mfg