ESP8266 WiFi kontrollerade aircon remote (9 / 15 steg)
Steg 9: Programvaran för modulen ESP8266 - Del3 "meddelande till aircon"
Skicka IR-kommandon till aircon görs med hjälp av IRremoteESP8266 biblioteket publiceras som open source. Biblioteket stöder redan ett stort antal protokoll för olika apparater, men erbjuder också att skicka "rå" IR-kommandon. Tyvärr ingen av de genomförda protokoll arbetat med min aircons (även under inspelning protokollet var erkänd som "NEC" för FujiDenzo aircon). Så jag var tvungen att använda sendRaw()-funktionen.
IR-koder
För att spara minnesutrymme sparade jag de inspelade kommandona som Byte matriser som innehåller endast markerar (0 eller 1) av koden, inte sidhuvudet eller utrymmen. Exempel:
byte H_FAN [4] = {B00001000, B11100111, B01101000, B10010111};
byte M_FAN [4] = {B00001000, B11100111, B01110000, B10001111};
byte L_FAN [4] = {B00001000, B11100111, B01010000, B10101111};
Komplett raw kommandot sparas som:
unsigned int sendBuffer[67] = {9000,4500,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450,0,450};
9000 och 4500 är huvudet, alla 450 värden är utrymmena och nollorna är fyllda med värdena från kommandot bytearrayen med sub rutiner buildBuffer() och getValue ().
Skickar kommandot IR
Funktion sendCmd() tolkar det begärda kommandot och bygger upp den korrekta sendBuffer genom att ringa buildBuffer med hänvisning till kommandon bytearrayen. Sedan skickas kommandot till aircon med sub rutinmässiga sendCode(). Som jag sade tidigare, fungerade ingen av de tillgängliga protokoll för IRremote8266 biblioteket med min aircons, så jag behövde till använda funktionen IRsend::sendRaw().