Stap 9: De software voor de ESP8266 module - deel 3 "mededeling aan de airco"
Verzenden van IR-opdrachten naar de airco is gedaan met de hulp van de IRremoteESP8266 bibliotheek gepubliceerd als open source. De bibliotheek ondersteunt al een breed scala aan protocollen voor verschillende toestellen, maar biedt ook om "ruwe" IR-opdrachten te sturen. Helaas geen van de geïmplementeerde protocollen gewerkt met mijn aircons (zelfs tijdens opname die het protocol werd erkend als "NEC" voor de FujiDenzo airco). Dus moest ik de sendRaw() functie.
De IR-codes
Om geheugenruimte te besparen opgeslagen ik de opgenomen opdrachten als Byte-matrices die alleen de merken (0 of 1) van de code, niet de kop- of spaties bevatten. In het volgende voorbeeld:
byte H_FAN[4] = {B00001000,B11100111,B01101000,B10010111}; byte M_FAN[4] = {B00001000,B11100111,B01110000,B10001111}; byte L_FAN[4] = {B00001000,B11100111,B01010000,B10101111};
De volledige opdracht van raw wordt opgeslagen als:
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};
alle 450 waarden zijn de ruimten, 9000 en 4500 zijn de header en de nullen zijn gevuld met de waarden uit de opdracht Byte-array met de sub routines buildBuffer() en GetValue ().
De IR-commando versturen
De functie sendCmd() de gevraagde opdracht geparseerd en de juiste sendBuffer opbouwt door te bellen naar buildBuffer met een verwijzing naar de Byte-array van opdrachten. Vervolgens wordt het bericht verzonden naar de airco met de sub routine sendCode(). Zoals ik al eerder zei, geen van de beschikbare protocollen van de IRremote8266 -bibliotheek werkt met mijn aircons, dus ik nodig om de IRsend::sendRaw()-functie te gebruiken.