mirror of https://github.com/arendst/Tasmota.git
101 lines
2.3 KiB
C
101 lines
2.3 KiB
C
|
|
|||
|
#include <IRremoteESP8266.h>
|
|||
|
#include <Arduino.h>
|
|||
|
|
|||
|
#define DAIKIN_COOL B011
|
|||
|
#define DAIKIN_HEAT B100
|
|||
|
#define DAIKIN_FAN B110
|
|||
|
#define DAIKIN_AUTO B000
|
|||
|
#define DAIKIN_DRY B010
|
|||
|
|
|||
|
#define DAIKIN_POWERFUL B00000010
|
|||
|
#define DAIKIN_SILENT B00100000
|
|||
|
|
|||
|
/*
|
|||
|
Daikin AC map
|
|||
|
byte 7= checksum of the first part (and last byte before a 29ms pause)
|
|||
|
byte 13=mode
|
|||
|
b7 = 0
|
|||
|
b6+b5+b4 = Mode
|
|||
|
Modes: b6+b5+b4
|
|||
|
011 = Cool
|
|||
|
100 = Heat (temp 23)
|
|||
|
110 = FAN (temp not shown, but 25)
|
|||
|
000 = Fully Automatic (temp 25)
|
|||
|
010 = DRY (temp 0xc0 = 96 degrees c)
|
|||
|
b3 = 0
|
|||
|
b2 = OFF timer set
|
|||
|
b1 = ON timer set
|
|||
|
b0 = Air Conditioner ON
|
|||
|
byte 14=temp*2 (Temp should be between 18 - 32)
|
|||
|
byte 16=Fan
|
|||
|
FAN control
|
|||
|
b7+b6+b5+b4 = Fan speed
|
|||
|
Fan: b7+b6+b5+b4
|
|||
|
0×30 = 1 bar
|
|||
|
0×40 = 2 bar
|
|||
|
0×50 = 3 bar
|
|||
|
0×60 = 4 bar
|
|||
|
0×70 = 5 bar
|
|||
|
0xa0 = Auto
|
|||
|
0xb0 = Not auto, moon + tree
|
|||
|
b3+b2+b1+b0 = Swing control up/down
|
|||
|
Swing control up/down:
|
|||
|
0000 = Swing up/down off
|
|||
|
1111 = Swing up/down on
|
|||
|
byte 17
|
|||
|
Swing control left/right:
|
|||
|
0000 = Swing left/right off
|
|||
|
1111 = Swing left/right on
|
|||
|
byte 21=Aux -> Powerful (bit 1), Silent (bit 5)
|
|||
|
byte 24=Aux2 -> Intelligent eye on (bit 7)
|
|||
|
byte 26= checksum of the second part
|
|||
|
*/
|
|||
|
|
|||
|
#define DAIKIN_COMMAND_LENGTH 27
|
|||
|
|
|||
|
class IRDaikinESP
|
|||
|
{
|
|||
|
public:
|
|||
|
IRDaikinESP(int pin);
|
|||
|
//: IRsend(pin){};
|
|||
|
|
|||
|
void send();
|
|||
|
|
|||
|
void begin();
|
|||
|
void on();
|
|||
|
void off();
|
|||
|
uint8_t getPower();
|
|||
|
|
|||
|
void setAux(uint8_t aux);
|
|||
|
uint8_t getAux();
|
|||
|
|
|||
|
void setTemp(uint8_t temp);
|
|||
|
uint8_t getTemp();
|
|||
|
|
|||
|
void setFan(uint8_t fan);
|
|||
|
uint8_t getFan();
|
|||
|
|
|||
|
uint8_t getMode();
|
|||
|
void setMode(uint8_t mode);
|
|||
|
|
|||
|
void setSwingVertical(uint8_t swing);
|
|||
|
uint8_t getSwingVertical();
|
|||
|
void setSwingHorizontal(uint8_t swing);
|
|||
|
uint8_t getSwingHorizontal();
|
|||
|
|
|||
|
private:
|
|||
|
// # of bytes per command
|
|||
|
unsigned char daikin[DAIKIN_COMMAND_LENGTH] = {
|
|||
|
0x11,0xDA,0x27,0xF0,0x00,0x00,0x00,0x20,
|
|||
|
//0 1 2 3 4 5 6 7
|
|||
|
0x11,0xDA,0x27,0x00,0x00,0x41,0x1E,0x00,
|
|||
|
//8 9 10 11 12 13 14 15
|
|||
|
0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0xE3 };
|
|||
|
//16 17 18 19 20 21 22 23 24 25 26
|
|||
|
|
|||
|
void checksum();
|
|||
|
|
|||
|
IRsend _irsend;
|
|||
|
};
|