IRremoteIDF
Infrared send & receive for ESP-IDF
Loading...
Searching...
No Matches
ir_Transcold.h
Go to the documentation of this file.
1// Copyright 2020 Chandrashekar Shetty (iamDshetty)
2// Copyright 2020 crankyoldgit
3// Copyright 2021 siriuslzx
4
9
10// Supports:
11// Brand: Transcold, Model: M1-F-NO-6 A/C
12
13/***************************************************************************************************************
14
15 Raw Data Calculation: (UR 12)
16//ON button
17ON 24 Auto cool close (right) 111011110001000001100001100111100101010010101011
18
19//OFF button
20OFF 24 Auto cool close (right) 111011110001000001110001100011100101010010101011
21
22// MODE
23Hot mode 24 auto hot close (right) 111010010001011010100001010111100101010010101011
24Fan mode 0 (prev24) low fan close (right) "11101001 0001011000100001110111100101010010101011"
25Dry mode 24 low dry close (right) "11101001 0001011011000001 00111110 0101010010101011"
26Auto Mode 0(prev24) low auto close (right) "11101001 0001011011100001 00011110 0101010010101011"
27Cool Mode 24 low cool close (right) "11101001 0001011001100001 10011110 0101010010101011"
28
29//FAN SPEED
30fan Speed low 24 low cool close (right) "11101001 0001011001100001 10011110 0101010010101011"
31fan Speed medium 24 medium cool close (right) "11101101 000100100110000110011110 0101010010101011"
32fan Speed high 24 high cool close (right) "11101011 000101000110000110011110 0101010010101011"
33fan Speed auto 24 auto cool close (right) "11101111 000100000110000110011110 0101010010101011"
34
35//SWING
36Swing open 24 auto cool open (left) "11110111 000010000110000110011110 0101010010101011"
37Swing close 24 auto cool close (right) "11101111 000100000110000110011110 0101010010101011"
38
39//TEMPERATURE
40temp 30degC Auto cool close (right) 111011110001000001100100100100010101010010101011
41temp 29 Auto cool close (right) 111011110001000001101100100100010101010010101011
42temp 28 Auto cool close (right) 111011110001000001100010100100010101010010101011
43temp 27 Auto cool close (right) 111011110001000001101010100100010101010010101011
44temp 26 Auto cool close (right) 111011110001000001100110100100010101010010101011
45temp 25 Auto cool close (right) 111011110001000001101110100100010101010010101011
46temp 24 Auto cool close (right) 111011110001000001100001100111100101010010101011
47temp 23 Auto cool close (right) 111011110001000001101001100101100101010010101011
48temp 22 Auto cool close (right) 111011110001000001100101100101100101010010101011
49temp 21 Auto cool close (right) 111011110001000001101101100101100101010010101011
50temp 20 Auto cool close (right) 111011110001000001100011100101100101010010101011
51temp 19 Auto cool close (right) 111011110001000001101011100101100101010010101011
52temp 18 Auto cool close (right) 111011110001000001100111100110000101010010101011
53temp 17 Auto cool close (right) 111011110001000001100111100110000101010010101011
54temp 16 Auto cool close (right) 111011110001000001100111100110000101010010101011
55
56 **************************************************************************************************************/
57
58#ifndef IR_TRANSCOLD_H_
59#define IR_TRANSCOLD_H_
60
61#define __STDC_LIMIT_MACROS
62#include <stdint.h>
63#include "IRplatform.h"
64#include "IRremoteESP8266.h"
65#include "IRsend.h"
66#ifdef UNIT_TEST
67#include "IRsend_test.h"
68#endif
69
72 uint32_t raw;
73 struct {
74 uint8_t :8;
75 uint8_t Temp :4;
76 uint8_t Mode :4;
77 uint8_t Fan :4;
78 uint8_t :4;
79 uint8_t :8;
80 };
81};
82
83// Constants
84// Modes
85const uint8_t kTranscoldCool = 0b0110;
86const uint8_t kTranscoldDry = 0b1100;
87const uint8_t kTranscoldAuto = 0b1110;
88const uint8_t kTranscoldHeat = 0b1010;
89const uint8_t kTranscoldFan = 0b0010;
90
91// Fan Control
92const uint8_t kTranscoldFanMin = 0b1001;
93const uint8_t kTranscoldFanMed = 0b1101;
94const uint8_t kTranscoldFanMax = 0b1011;
95const uint8_t kTranscoldFanAuto = 0b1111;
96const uint8_t kTranscoldFanAuto0 = 0b0110;
97const uint8_t kTranscoldFanZoneFollow = 0b0000;
98const uint8_t kTranscoldFanFixed = 0b1100;
99
100// Temperature
101const uint8_t kTranscoldTempMin = 18; // Celsius
102const uint8_t kTranscoldTempMax = 30; // Celsius
103const uint8_t kTranscoldFanTempCode = 0b1111; // Part of Fan Mode.
104const uint8_t kTranscoldTempSize = 4;
105
106const uint8_t kTranscoldPrefix = 0b0000;
107const uint8_t kTranscoldUnknown = 0xFF;
108const uint32_t kTranscoldOff = 0b111011110111100101010100;
109const uint32_t kTranscoldSwing = 0b111001110110000101010100;
110const uint32_t kTranscoldSwingH = 0b111101110110000101010100; // NA
111const uint32_t kTranscoldSwingV = 0b111001110110000101010100; // NA
112const uint32_t kTranscoldCmdFan = 0b111011110110000101010100; // NA
113
114const uint32_t kTranscoldKnownGoodState = 0xE96554;
115
116// Classes
119 public:
120 explicit IRTranscoldAc(const uint16_t pin, const bool inverted = false,
121 const bool use_modulation = true);
122 void stateReset(void);
123#if SEND_TRANSCOLD
124 void send(const uint16_t repeat = kTranscoldDefaultRepeat);
129 int8_t calibrate(void) { return _irsend.calibrate(); }
130#endif // SEND_TRANSCOLD
131 void begin(void);
132 void on(void);
133 void off(void);
134 void setPower(const bool state);
135 bool getPower(void) const;
136 void setTemp(const uint8_t temp);
137 uint8_t getTemp(void) const;
138 void setFan(const uint8_t speed, const bool modecheck = true);
139 uint8_t getFan(void) const;
140 void setMode(const uint8_t mode);
141 uint8_t getMode(void) const;
142 void setSwing(void);
143 bool getSwing(void) const;
144 uint32_t getRaw(void) const;
145 void setRaw(const uint32_t new_code);
146 static uint8_t convertMode(const stdAc::opmode_t mode);
147 static uint8_t convertFan(const stdAc::fanspeed_t speed);
148 static stdAc::opmode_t toCommonMode(const uint8_t mode);
149 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
150 stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
151 String toString(void) const;
152#ifndef UNIT_TEST
153
154 private:
156#else
158 IRsendTest _irsend;
160#endif
161 // internal state
165
167 uint32_t special_state;
168 bool isSpecialState(void) const;
169 bool handleSpecialState(const uint32_t data);
170};
171
172#endif // IR_TRANSCOLD_H_
std::string String
The protocol code builds human readable output with String. On ESP-IDF that is just std::string.
Definition IRplatform.h:21
const uint16_t kTranscoldDefaultRepeat
Definition IRremoteESP8266.h:1440
Class for handling detailed Transcold A/C messages.
Definition ir_Transcold.h:118
bool handleSpecialState(const uint32_t data)
Adjust any internal settings based on the type of special state we are supplied. Does nothing if it i...
Definition ir_Transcold.cpp:146
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Transcold.cpp:249
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Transcold.cpp:240
bool swingHFlag
Definition ir_Transcold.h:163
void setPower(const bool state)
Change the power setting.
Definition ir_Transcold.cpp:185
IRsend _irsend
Instance of the IR send class.
Definition ir_Transcold.h:155
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's common stdAc::opmode_t equivalent.
Definition ir_Transcold.cpp:316
void setFan(const uint8_t speed, const bool modecheck=true)
Set the speed of the fan.
Definition ir_Transcold.cpp:256
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode into its native mode.
Definition ir_Transcold.cpp:289
void on(void)
Change the power setting to On.
Definition ir_Transcold.cpp:194
TranscoldProtocol _
Definition ir_Transcold.h:166
void off(void)
Change the power setting to Off.
Definition ir_Transcold.cpp:197
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Transcold.cpp:302
uint32_t special_state
special mode.
Definition ir_Transcold.h:167
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Transcold.cpp:178
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Transcold.cpp:171
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Transcold.cpp:79
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Transcold.cpp:388
void setSwing(void)
Toggle the Swing mode of the A/C.
Definition ir_Transcold.cpp:204
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Transcold.cpp:213
bool getSwing(void) const
Get the Swing setting of the A/C.
Definition ir_Transcold.cpp:201
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_Transcold.cpp:161
bool isSpecialState(void) const
Is the current state is a special state?
Definition ir_Transcold.cpp:132
uint32_t getRaw(void) const
Get a copy of the internal state as a valid code for this protocol.
Definition ir_Transcold.cpp:105
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
Convert the A/C state to it's common stdAc::state_t equivalent.
Definition ir_Transcold.cpp:341
void setRaw(const uint32_t new_code)
Set the internal state from a valid code for this protocol.
Definition ir_Transcold.cpp:114
bool swingFlag
Definition ir_Transcold.h:162
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Transcold.cpp:329
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Transcold.cpp:88
void send(const uint16_t repeat=kTranscoldDefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Transcold.cpp:93
bool swingVFlag
Definition ir_Transcold.h:164
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Transcold.h:129
Class for sending all basic IR protocols.
Definition IRsend.h:256
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:286
const uint8_t kTranscoldDry
Definition ir_Transcold.h:86
const uint32_t kTranscoldSwingH
Definition ir_Transcold.h:110
const uint32_t kTranscoldKnownGoodState
Definition ir_Transcold.h:114
const uint8_t kTranscoldFanMin
Definition ir_Transcold.h:92
const uint8_t kTranscoldTempMin
Definition ir_Transcold.h:101
const uint32_t kTranscoldOff
Definition ir_Transcold.h:108
const uint8_t kTranscoldFanTempCode
Definition ir_Transcold.h:103
const uint8_t kTranscoldTempMax
Definition ir_Transcold.h:102
const uint8_t kTranscoldFan
Definition ir_Transcold.h:89
const uint8_t kTranscoldFanAuto0
Definition ir_Transcold.h:96
const uint8_t kTranscoldFanAuto
Definition ir_Transcold.h:95
const uint32_t kTranscoldCmdFan
Definition ir_Transcold.h:112
const uint8_t kTranscoldFanMax
Definition ir_Transcold.h:94
const uint8_t kTranscoldFanZoneFollow
Definition ir_Transcold.h:97
const uint8_t kTranscoldPrefix
Definition ir_Transcold.h:106
const uint8_t kTranscoldFanFixed
Definition ir_Transcold.h:98
const uint32_t kTranscoldSwingV
Definition ir_Transcold.h:111
const uint8_t kTranscoldHeat
Definition ir_Transcold.h:88
const uint8_t kTranscoldCool
Definition ir_Transcold.h:85
const uint8_t kTranscoldFanMed
Definition ir_Transcold.h:93
const uint8_t kTranscoldAuto
Definition ir_Transcold.h:87
const uint8_t kTranscoldTempSize
Definition ir_Transcold.h:104
const uint32_t kTranscoldSwing
Definition ir_Transcold.h:109
const uint8_t kTranscoldUnknown
Definition ir_Transcold.h:107
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:67
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:55
Structure to hold a common A/C state.
Definition IRsend.h:120
Native representation of a Transcold A/C message.
Definition ir_Transcold.h:71
uint32_t raw
The state of the IR remote in IR code form.
Definition ir_Transcold.h:72
uint8_t Fan
Definition ir_Transcold.h:77
uint8_t Temp
Definition ir_Transcold.h:75
uint8_t Mode
Definition ir_Transcold.h:76