crankyoldgit / IRremoteESP8266

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
GNU Lesser General Public License v2.1
2.99k stars 833 forks source link

Adding Support for Carrier AC 72 bit #1205

Closed casasale closed 4 years ago

casasale commented 4 years ago

Hi,

I have checked version 2.7.7 of IRremoteESP8266, that is included in the latest development version of tasmota_ir, which has the just added basic support for Carrier 40 and 64 bit, but it did not work for my Carrier X-Power Gold Inverter ACs.

Consequently I looked at issue #1127 and went on to do the same, so I extracted the raw data from my Tasmota Tuya IR bridge, which was then processed and analyzed:

The Google Sheet with all the results, raw data, and details can be found here: https://docs.google.com/spreadsheets/d/1yidE2fvaO9kpCHfKafIdH31q4uaskYR1OwwrkyOxbp0/edit?usp=drivesdk

The 144 bit message format covers the normal different operating modes, device on/off, fan, and temperature settings. These are details:

START(4406 4335); Header_32bit(0x55040051); ConstantInNormal_48bit(0x000555500001); Temp_8bit; 0_8bit; Fan_8bit; Mode_8bit; CheckSum1_8bit(Fan^Temp); CheckSum2_8bit(Mode^1); STOP(556 7441); STOP2_like_START_followed_by_0(4411 4335 565)

Nevertheless the less frequently used commands seem to have diverging bit lengths, e.g.:

Considering these bit length oddities for the rarely used commands, the idea is to get support for the most important 144 bit length commands, which would cover all my needs.

The binary number encoding uses '0' fillers to avoid subsequent '1's, e.g.: 0=00000000 1=00000001 2=00000100 3=00000101 4=00010000 5=00010001 6=00010100 7=00010101 8=01000000 9=01000001 …

Finally the remote control works with many models from the Carrier 42NQV series ACs, e.g.:

Confirmed:

Unconfirmed:

Thanks for the great IRremoteESP8266

NiKiZe commented 4 years ago

Could you try to use the latest version, preferably git master Several changes was made to Carrier in the last release, see https://github.com/crankyoldgit/IRremoteESP8266/releases/tag/v2.7.8

casasale commented 4 years ago

I can try it, but the existing supported Carrier versions seem to look different, e.g. the checksum calculation is completely different in IRCarrierAc64::calcChecksum() which adds nibbles instead of XORing values. Additionally the 144 bit version has 5 fan levels instead of 3.

Thanks

crankyoldgit commented 4 years ago

@NiKiZe / @casasale I'm pretty sure this isn't an existing Carrier protocol. i.e. It's a new/not-yet-supported one.

@casasale Taking the raw data for your first raw tasmota entry in the spreadsheet (e.g. https://docs.google.com/spreadsheets/d/1dKMio_OyL5GJKlCluuyghA2mIfKFLx9iMn5D38pcYig/edit#gid=520670848&range=A2)

I've massaged it a bit, and used the auto_analyse_raw_data.py tool (as per https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-IR-protocol)

It gives the following output:

$ cat /tmp/data
uint16_t rawData[] = {4386,4330,574,1588,574,1612,546,1610,552,1612,548,532,548,530,548,1588,574,530,550,530,548,532,546,532,550,532,550,1586,548,1614,560,544,548,1614,548,508,572,530,550,530,550,530,550,532,548,532,548,1610,550,1612,548,1612,548,1588,572,1612,550,1584,576,1612,550,1588,574,530,550,530,548,510,572,530,548,530,552,526,554,530,550,532,548,530,550,1612,550,530,550,1588,572,532,550,1610,550,532,548,532,548,530,550,530,550,530,550,528,552,532,550,530,548,530,550,530,550,532,548,532,550,534,546,530,550,530,550,528,552,506,548,558,548,530,548,528,554,526,552,1612,548,530,550,1608,552,530,548,532,548,532,548,1586,574,7456,4388,4330,574,1588,572,1612,550,1612,548,1612,550,530,550,530,550,1612,548,532,550,530,550,528,552,530,550,530,548,1612,550,1608,554,530,550,1610,550,530,552,504,548,558,548,530,548,530,552,526,552,1612,548,1610,552,1612,548,1612,550,1586,572,1608,554,1606,554,1610,550,528,552,528,552,526,552,530};
$ tools/auto_analyse_raw_data.py -f /tmp/data
Found 218 timing entries.
Potential Mark Candidates:
[4388, 576]
Potential Space Candidates:
[7456, 4330, 1614, 558]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4387
kHdrSpace  = 4330
kBitMark   = 552
kOneSpace  = 1604
kZeroSpace = 529
kSpaceGap = 7456

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+111100100000110100000011111111000000000101010000000000000000000001010001GAP(7456)
  Bits: 72
  Hex:  0xF20D03FC0150000051 (MSB first)
        0x8A00000A803FC0B04F (LSB first)
  Dec:  4465049936067702030417 (MSB first)
        2545650693717859807311 (LSB first)
  Bin:  0b111100100000110100000011111111000000000101010000000000000000000001010001 (MSB first)
        0b100010100000000000000000000010101000000000111111110000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+1111001000001101000000111111110000
  Bits: 34
  Hex:  0x3C8340FF0 (MSB first)
        0x3FC0B04F (LSB first)
  Dec:  16243757040 (MSB first)
        1069592655 (LSB first)
  Bin:  0b1111001000001101000000111111110000 (MSB first)
        0b0000111111110000001011000001001111 (LSB first)

Total Nr. of suspected bits: 106

It doesn't look 144 bit to me. The data/analysis seems to indicate 72 + 34 = 106 bits .. or less, as the trailing 34 bits in the second section of data appear to be a repeat of part of the first section of data. e.g. (When looking at it in LSB first order) 0x8A00000A803FC0B04F & 0x3FC0B04F.

i.e. The protocol could actually only have <= 72 bits of data in it.

I'm also confused at where the 112, 144, or 160 bits you mention fit this example data.

Can I suggest you convert the data you've collected (or use IRrecvDumpV2 or V3) and follow the guides in the wiki so we have a clearer picture of what this protocol really looks like?

While your spreadsheet is a great bit of work, I'm worried it might have some fundamental issues that need to be resolved before we can use/trust the analysis/data etc. That is, my quick analysis disagrees with yours significantly.

casasale commented 4 years ago

@crankyoldgit Thank you very much for analyzing and confirming, that it is a new Carrier protocol. I will do the suggested items during the next days and come back.

casasale commented 4 years ago

@crankyoldgit Do I need to obtain data via IRrecvDumpV2 or V3, or would it be enough to convert the data that I get from Tasmota?

casasale commented 4 years ago

So far, looking at the 3 different length messages it seems like most of the commands are 72 bits, a few (AirDir/Swing) are 56 bits and the long ones (Eco/Hi) are 80 bits.

casasale commented 4 years ago

Here is the latest spreadsheet based on the converted data which was then processed by auto_analyse_raw_data.py: https://docs.google.com/spreadsheets/d/1yidE2fvaO9kpCHfKafIdH31q4uaskYR1OwwrkyOxbp0/edit?usp=drivesdk

My previous fundamental error was to assume something like a pulse length encoding instead of the space encoding, and now things seem to look more reasonable.

Looking for Carrier 80 bit I found a Carrier decoder file for 40, 64 and 80 bit on Github: https://github.com/ToniA/Raw-IR-decoder-for-Arduino The file that contains the Carrier decoders is: https://github.com/ToniA/Raw-IR-decoder-for-Arduino/raw/master/Carrier.cpp

It checks for 0x4F and 0xB0 at the beginning of the bytes to decide if it is a carrier protocol which would match the LSB HEX in my case, if the bytes are looked at from the back: 0x8A00000A803FC0B04F

But, what strikes me a bit is the unexpected order of the temperatures the LSB approach that decodeCarrier3() uses: const byte temperatures[] = { 17, 25, 21, 29, 19, 27, 23, 00, 18, 26, 22, 30, 20, 28, 24 };

In the spreadsheet I have analyzed the MSB version, and there the temperatures end up in a correct order assigned to numbers from 0 to 13, so my conclusion is that the MSB version seems to look nicer, and hence should be correct. @crankyoldgit and @NiKiZe What do you think which version is the correct one: LSB or MSB?

Nevertheless these different message lengths (72, 56, 80) seem somehow off.

NiKiZe commented 4 years ago

If temp goes up with MSB one step at a time then use that, also you will find "the same bytes" at the beginning.

My approach for this would be to update the test file for Carrier with the raw data you collect, and then add a decoder, when that is verified to work, add a send function and verify that on the AC

When this is in place continue with the analysis

crankyoldgit commented 4 years ago

@casasale I'll try to take a look tomorrow night/day after that and see if we can make a simple decoder/sender for it. I'm with you all, MSB sounds like the way to do it to me.

crankyoldgit commented 4 years ago

@casasale I've had a quick look at your raw data collected via Tasmota. I think it's being truncated. Can you please capture one each of the 56, 72, 80 bit messages using IRrecvDumpV2 (or better)? (that would also explains the odd bit size of 34bits etc for the "second" section of data. eg. 72 + 34, 80 + 26, & 56 + 50) I just want to confirm it is a "repeat" of exactly the same size & data for each bit size. e.g. 72 + 72, 80 + 80, & 56 + 56 etc.

Looking at your captured data, it seems tasmota's buffer is probably around 220. We probably need to extend it out to 340 or so to be safe. IRrecvDumpV2 etc uses 1000.

Tasmota probably has some feature to increase the capture buffer for it's IR stuff, increasing that would be fine too. (Paging @s-hadinger who probably knows what/where to change that value in Tasmota)

casasale commented 4 years ago

@crankyoldgit Yes, the default buffer size value is low in tasmota-ir, and there seems to be no other way to change it, but to compile:

define IR_RCV_BUFFER_SIZE 100

define IR_RCV_TIMEOUT 15

define IR_RCV_MIN_UNKNOWN_SIZE 6

casasale commented 4 years ago

72 bit full message example for ON:

uint16_t rawData_ON[295] = {4426, 4314,  588, 1572,  590, 1572,  588, 1572,  588, 1572,  588, 492,  588, 492,  590, 1572,  588, 492,  588, 492,  588, 492,  590, 490,  588, 492,  590, 1572,  588, 1572,  588, 492,  588, 1572,  590, 492,  588, 492,  588, 492,  588, 492,  588, 492,  588, 490,  588, 1572,  588, 1572,  588, 1572,  588, 1572,  588, 1572,  588, 1572,  588, 1572,  590, 1570,  590, 490,  588, 492,  588, 492,  588, 492,  588, 494,  588, 492,  586, 492,  588, 492,  588, 492,  588, 1572,  588, 492,  588, 1572,  588, 492,  588, 1572,  588, 492,  586, 492,  588, 492,  590, 490,  588, 492,  588, 494,  586, 492,  588, 492,  586, 492,  588, 492,  588, 490,  588, 492,  586, 492,  590, 492,  586, 494,  588, 492,  588, 492,  588, 496,  584, 492,  588, 492,  588, 492,  588, 1572,  588, 492,  586, 1574,  588, 492,  588, 492,  588, 492,  590, 1570,  588, 7420,  4424, 4318,  588, 1572,  588, 1572,  590, 1572,  588, 1570,  588, 492,  588, 492,  588, 1572,  588, 492,  588, 492,  590, 492,  586, 492,  588, 490,  588, 1572,  588, 1572,  588, 492,  588, 1576,  584, 492,  590, 490,  588, 492,  588, 492,  588, 492,  588, 492,  588, 1574,  588, 1572,  588, 1576,  584, 1574,  586, 1574,  588, 1574,  584, 1574,  586, 1574,  588, 494,  584, 494,  588, 492,  588, 492,  588, 492,  590, 494,  584, 494,  586, 494,  588, 492,  586, 1572,  588, 492,  590, 1572,  588, 490,  588, 1574,  590, 490,  588, 490,  590, 490,  590, 490,  588, 490,  588, 490,  590, 490,  590, 492,  588, 492,  588, 492,  590, 494,  584, 490,  590, 498,  584, 490,  588, 492,  590, 490,  592, 488,  592, 490,  590, 494,  584, 490,  592, 494,  586, 1574,  586, 490,  590, 1570,  590, 492,  588, 490,  590, 488,  590, 1570,  590};  // TOSHIBA_AC
Found 295 timing entries.
Potential Mark Candidates:
[4426, 592]
Potential Space Candidates:
[7420, 4318, 1576, 498]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4425
kHdrSpace  = 4316
kBitMark   = 588
kOneSpace  = 1572
kZeroSpace = 491
kSpaceGap = 7420

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+111100100000110100000011111111000000000101010000000000000000000001010001GAP(7420)
  Bits: 72
  Hex:  0xF20D03FC0150000051 (MSB first)
        0x8A00000A803FC0B04F (LSB first)
  Dec:  4465049936067702030417 (MSB first)
        2545650693717859807311 (LSB first)
  Bin:  0b111100100000110100000011111111000000000101010000000000000000000001010001 (MSB first)
        0b100010100000000000000000000010101000000000111111110000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+111100100000110100000011111111000000000101010000000000000000000001010001
  Bits: 72
  Hex:  0xF20D03FC0150000051 (MSB first)
        0x8A00000A803FC0B04F (LSB first)
  Dec:  4465049936067702030417 (MSB first)
        2545650693717859807311 (LSB first)
  Bin:  0b111100100000110100000011111111000000000101010000000000000000000001010001 (MSB first)
        0b100010100000000000000000000010101000000000111111110000001011000001001111 (LSB first)

Total Nr. of suspected bits: 144
casasale commented 4 years ago

56 bits full message example for SWING_ON and SWING_OFF:

uint16_t rawData_SWING_ON[231] = {4426, 4316,  590, 1572,  590, 1578,  584, 1570,  590, 1570,  590, 490,  588, 490,  590, 1570,  590, 490,  588, 492,  588, 492,  590, 490,  590, 490,  588, 1572,  590, 1570,  592, 490,  590, 1570,  590, 490,  588, 492,  590, 490,  590, 490,  590, 492,  588, 488,  590, 490,  590, 1572,  588, 1572,  590, 1570,  590, 1570,  590, 1574,  586, 1570,  590, 1570,  590, 1570,  590, 490,  590, 490,  590, 490,  590, 1570,  590, 490,  590, 490,  590, 490,  590, 490,  588, 1570,  590, 490,  590, 490,  588, 490,  590, 490,  590, 490,  590, 492,  588, 488,  590, 1570,  592, 488,  590, 496,  584, 1572,  590, 494,  588, 488,  590, 494,  586, 494,  586, 490,  588, 7420,  4428, 4314,  590, 1570,  590, 1570,  590, 1570,  590, 1570,  590, 490,  590, 494,  586, 1572,  590, 490,  590, 490,  590, 490,  590, 490,  590, 490,  590, 1570,  590, 1570,  590, 492,  590, 1570,  590, 490,  590, 492,  586, 494,  588, 488,  590, 490,  590, 490,  590, 490,  590, 1574,  586, 1570,  592, 1570,  590, 1574,  588, 1570,  590, 1570,  590, 1572,  590, 1570,  590, 490,  590, 494,  586, 494,  586, 1570,  590, 490,  590, 490,  588, 494,  586, 496,  584, 1572,  590, 492,  586, 490,  590, 494,  588, 492,  584, 494,  586, 496,  584, 496,  582, 1574,  588, 492,  588, 494,  584, 1572,  590, 494,  586, 494,  586, 494,  588, 488,  590, 494,  586};  // UNKNOWN 9C9F3C37
Found 231 timing entries.
Potential Mark Candidates:
[4428, 592]
Potential Space Candidates:
[7420, 4316, 1578, 496]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4427
kHdrSpace  = 4315
kBitMark   = 588
kOneSpace  = 1571
kZeroSpace = 491
kSpaceGap = 7420

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000000111111110001000010000000100100000GAP(7420)
  Bits: 56
  Hex:  0xF20D01FE210120 (MSB first)
        0x0480847F80B04F (LSB first)
  Dec:  68131246573682976 (MSB first)
        1267206470021199 (LSB first)
  Bin:  0b11110010000011010000000111111110001000010000000100100000 (MSB first)
        0b00000100100000001000010001111111100000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+11110010000011010000000111111110001000010000000100100000
  Bits: 56
  Hex:  0xF20D01FE210120 (MSB first)
        0x0480847F80B04F (LSB first)
  Dec:  68131246573682976 (MSB first)
        1267206470021199 (LSB first)
  Bin:  0b11110010000011010000000111111110001000010000000100100000 (MSB first)
        0b00000100100000001000010001111111100000001011000001001111 (LSB first)

Total Nr. of suspected bits: 112

uint16_t rawData_SWING_OFF[231] = {4424, 4318,  586, 1576,  586, 1572,  588, 1574,  588, 1572,  588, 494,  586, 498,  584, 1574,  586, 494,  588, 492,  588, 492,  586, 492,  588, 494,  586, 1574,  586, 1576,  584, 492,  588, 1578,  582, 494,  588, 490,  586, 494,  588, 498,  580, 496,  586, 494,  586, 492,  588, 1576,  582, 1574,  586, 1578,  584, 1572,  588, 1574,  588, 1574,  586, 1574,  586, 1574,  588, 494,  586, 494,  586, 494,  590, 1570,  588, 492,  586, 498,  584, 494,  586, 494,  588, 1576,  582, 494,  586, 494,  586, 494,  586, 492,  586, 494,  586, 492,  588, 1572,  588, 492,  586, 494,  586, 494,  586, 1574,  588, 492,  588, 492,  588, 494,  588, 1578,  582, 1574,  588, 7424,  4420, 4318,  588, 1574,  586, 1576,  584, 1580,  582, 1574,  588, 492,  588, 494,  584, 1574,  588, 492,  586, 496,  584, 494,  586, 492,  588, 494,  586, 1574,  588, 1574,  584, 494,  588, 1574,  588, 492,  586, 494,  586, 494,  588, 492,  586, 494,  588, 492,  586, 494,  584, 1580,  584, 1574,  588, 1572,  588, 1572,  588, 1576,  584, 1578,  584, 1572,  588, 1572,  588, 494,  586, 494,  584, 494,  588, 1574,  586, 496,  584, 494,  586, 492,  588, 492,  588, 1572,  588, 494,  588, 492,  586, 496,  586, 494,  586, 492,  588, 492,  586, 1574,  588, 492,  586, 492,  588, 496,  584, 1576,  584, 492,  586, 494,  588, 492,  588, 1574,  586, 1574,  588};  // UNKNOWN 2BC29FFB
Found 231 timing entries.
Potential Mark Candidates:
[4424, 590]
Potential Space Candidates:
[7424, 4318, 1580, 498]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4422
kHdrSpace  = 4318
kBitMark   = 586
kOneSpace  = 1574
kZeroSpace = 493
kSpaceGap = 7424

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000000111111110001000010000001000100011GAP(7424)
  Bits: 56
  Hex:  0xF20D01FE210223 (MSB first)
        0xC440847F80B04F (LSB first)
  Dec:  68131246573683235 (MSB first)
        55240033254289487 (LSB first)
  Bin:  0b11110010000011010000000111111110001000010000001000100011 (MSB first)
        0b11000100010000001000010001111111100000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+11110010000011010000000111111110001000010000001000100011
  Bits: 56
  Hex:  0xF20D01FE210223 (MSB first)
        0xC440847F80B04F (LSB first)
  Dec:  68131246573683235 (MSB first)
        55240033254289487 (LSB first)
  Bin:  0b11110010000011010000000111111110001000010000001000100011 (MSB first)
        0b11000100010000001000010001111111100000001011000001001111 (LSB first)

Total Nr. of suspected bits: 112
casasale commented 4 years ago

56 bits full message example for AIR_DIRECTION:

uint16_t rawData_AIR_DIRECTION[115] = {4424, 4318,  588, 1574,  588, 1572,  588, 1574,  586, 1572,  590, 490,  586, 494,  586, 1574,  588, 492,  586, 494,  586, 494,  586, 496,  584, 492,  588, 1572,  588, 1572,  590, 492,  588, 1572,  590, 490,  588, 492,  586, 494,  588, 492,  588, 492,  588, 494,  584, 492,  588, 1572,  588, 1574,  588, 1574,  588, 1572,  588, 1572,  588, 1572,  588, 1574,  590, 1570,  588, 494,  586, 496,  584, 494,  588, 1572,  588, 492,  588, 492,  588, 490,  588, 492,  590, 1572,  588, 492,  588, 496,  586, 492,  588, 492,  586, 492,  588, 492,  588, 490,  590, 490,  588, 492,  588, 490,  588, 1572,  588, 492,  588, 492,  588, 490,  588, 492,  588, 1572,  586};  // UNKNOWN DEB8845C
Found 115 timing entries.
Potential Mark Candidates:
[4424, 590]
Potential Space Candidates:
[4318, 1574, 496]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4424
kHdrSpace  = 4318
kBitMark   = 587
kOneSpace  = 1572
kZeroSpace = 492

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000000111111110001000010000000000100001
  Bits: 56
  Hex:  0xF20D01FE210021 (MSB first)
        0x8400847F80B04F (LSB first)
  Dec:  68131246573682721 (MSB first)
        37155266000629839 (LSB first)
  Bin:  0b11110010000011010000000111111110001000010000000000100001 (MSB first)
        0b10000100000000001000010001111111100000001011000001001111 (LSB first)

Total Nr. of suspected bits: 56
casasale commented 4 years ago

80 bits full message example for HIGH_POWER ON:

uint16_t rawData_HIGH_POWER_ON[327] = {4424, 4320,  582, 1574,  588, 1578,  582, 1574,  586, 1578,  586, 496,  582, 492,  586, 1576,  586, 492,  586, 492,  588, 496,  584, 496,  584, 496,  584, 1626,  534, 1626,  534, 494,  586, 1578,  582, 494,  586, 494,  586, 494,  588, 492,  586, 492,  586, 1576,  586, 494,  588, 492,  588, 1574,  588, 1576,  584, 1578,  584, 1574,  588, 1574,  588, 492,  588, 1572,  590, 1570,  590, 492,  588, 492,  590, 488,  590, 494,  584, 1570,  592, 492,  586, 490,  590, 1572,  590, 490,  590, 1570,  590, 490,  590, 1570,  590, 492,  588, 490,  588, 492,  588, 492,  590, 490,  590, 494,  586, 490,  590, 490,  588, 490,  590, 490,  588, 492,  590, 490,  588, 492,  590, 490,  590, 490,  590, 494,  584, 490,  590, 490,  590, 490,  590, 490,  588, 490,  588, 492,  588, 492,  586, 492,  588, 490,  588, 492,  588, 490,  590, 1572,  588, 494,  586, 1574,  588, 492,  588, 1572,  590, 1572,  588, 492,  588, 492,  586, 494,  588, 7422,  4424, 4320,  586, 1572,  588, 1572,  588, 1576,  584, 1574,  588, 494,  586, 492,  588, 1572,  588, 492,  588, 492,  588, 492,  588, 494,  586, 496,  584, 1574,  586, 1578,  582, 494,  586, 1578,  584, 494,  586, 492,  588, 492,  586, 496,  584, 494,  586, 1578,  584, 494,  586, 494,  584, 1574,  588, 1572,  586, 1574,  588, 1574,  588, 1572,  588, 494,  590, 1572,  588, 1574,  588, 492,  588, 492,  588, 492,  586, 492,  588, 1572,  588, 498,  582, 492,  588, 1576,  586, 492,  588, 1572,  588, 494,  588, 1572,  588, 492,  586, 492,  588, 492,  590, 490,  588, 492,  586, 492,  588, 492,  590, 490,  588, 490,  588, 492,  590, 490,  588, 492,  590, 490,  588, 490,  590, 490,  590, 490,  592, 488,  592, 494,  584, 494,  586, 490,  590, 494,  586, 494,  588, 488,  592, 490,  588, 492,  586, 490,  592, 490,  588, 1576,  584, 494,  586, 1570,  590, 494,  586, 1576,  582, 1572,  590, 490,  590, 490,  588, 490,  590};  // UNKNOWN 54926187

Found 327 timing entries.
Potential Mark Candidates:
[4424, 592]
Potential Space Candidates:
[7422, 4320, 1626, 498]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4424
kHdrSpace  = 4320
kBitMark   = 586
kOneSpace  = 1576
kZeroSpace = 492
kSpaceGap = 7422

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000010011111011000010010101000000000000000000000000000101011000GAP(7422)
  Bits: 80
  Hex:  0xF20D04FB095000000158 (MSB first)
        0x1A8000000A90DF20B04F (LSB first)
  Dec:  1143052855418246874005848 (MSB first)
        125142711807662933192783 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010101000000000000000000000000000101011000 (MSB first)
        0b00011010100000000000000000000000000010101001000011011111001000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+11110010000011010000010011111011000010010101000000000000000000000000000101011000
  Bits: 80
  Hex:  0xF20D04FB095000000158 (MSB first)
        0x1A8000000A90DF20B04F (LSB first)
  Dec:  1143052855418246874005848 (MSB first)
        125142711807662933192783 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010101000000000000000000000000000101011000 (MSB first)
        0b00011010100000000000000000000000000010101001000011011111001000001011000001001111 (LSB first)

Total Nr. of suspected bits: 160
casasale commented 4 years ago

80 bit full message example for ECO ON:

uint16_t rawData_ECO_ON[327] = {4426, 4316,  590, 1572,  590, 1572,  590, 1570,  588, 1572,  588, 490,  590, 490,  590, 1574,  586, 490,  590, 490,  592, 494,  586, 488,  590, 490,  588, 1572,  590, 1572,  588, 490,  590, 1570,  588, 492,  588, 492,  588, 490,  592, 490,  588, 494,  586, 1570,  590, 492,  588, 492,  588, 1572,  590, 1572,  590, 1570,  588, 1572,  590, 1570,  590, 492,  588, 1572,  590, 1576,  584, 494,  586, 494,  586, 490,  590, 490,  590, 1572,  590, 490,  590, 490,  590, 1572,  592, 488,  590, 1572,  588, 496,  584, 1570,  590, 492,  590, 490,  592, 492,  586, 492,  590, 494,  588, 494,  582, 496,  584, 490,  590, 490,  590, 494,  584, 496,  584, 492,  588, 496,  584, 492,  590, 490,  590, 490,  588, 490,  590, 496,  582, 492,  590, 488,  592, 492,  586, 490,  588, 492,  590, 490,  590, 494,  586, 490,  590, 1572,  590, 1570,  590, 490,  590, 1570,  588, 492,  590, 1570,  590, 1570,  588, 492,  588, 1572,  588, 492,  588, 7422,  4424, 4316,  590, 1572,  590, 1576,  584, 1570,  590, 1572,  588, 492,  588, 494,  588, 1570,  588, 496,  586, 490,  590, 490,  590, 490,  590, 496,  584, 1576,  584, 1572,  590, 490,  590, 1570,  590, 490,  588, 496,  584, 494,  586, 494,  586, 496,  584, 1576,  586, 490,  590, 492,  588, 1572,  590, 1570,  590, 1570,  590, 1570,  592, 1570,  590, 490,  588, 1572,  590, 1570,  590, 490,  588, 492,  588, 496,  584, 496,  584, 1570,  592, 490,  590, 490,  588, 1572,  590, 492,  586, 1570,  590, 496,  584, 1570,  590, 494,  588, 490,  590, 490,  588, 494,  586, 494,  586, 490,  590, 496,  584, 490,  590, 492,  590, 494,  586, 492,  588, 490,  590, 490,  590, 488,  590, 496,  584, 494,  586, 490,  590, 494,  586, 490,  590, 494,  586, 490,  590, 492,  590, 490,  590, 488,  590, 494,  586, 494,  586, 1570,  590, 1570,  590, 494,  588, 1570,  590, 490,  590, 1570,  590, 1576,  584, 496,  586, 1570,  590, 490,  588};  // UNKNOWN 58D214DF
Found 327 timing entries.
Potential Mark Candidates:
[4426, 592]
Potential Space Candidates:
[7422, 4316, 1576, 496]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4425
kHdrSpace  = 4316
kBitMark   = 588
kOneSpace  = 1571
kZeroSpace = 491
kSpaceGap = 7422

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000010011111011000010010101000000000000000000000000001101011010GAP(7422)
  Bits: 80
  Hex:  0xF20D04FB09500000035A (MSB first)
        0x5AC000000A90DF20B04F (LSB first)
  Dec:  1143052855418246874006362 (MSB first)
        428554758332037638172751 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010101000000000000000000000000001101011010 (MSB first)
        0b01011010110000000000000000000000000010101001000011011111001000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+11110010000011010000010011111011000010010101000000000000000000000000001101011010
  Bits: 80
  Hex:  0xF20D04FB09500000035A (MSB first)
        0x5AC000000A90DF20B04F (LSB first)
  Dec:  1143052855418246874006362 (MSB first)
        428554758332037638172751 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010101000000000000000000000000001101011010 (MSB first)
        0b01011010110000000000000000000000000010101001000011011111001000001011000001001111 (LSB first)

Total Nr. of suspected bits: 160
casasale commented 4 years ago

80 bit message example for HI_POWER + TEMP23:

uint16_t rawData_HIGH_POWER_ON_TEMP23[327] = {4420, 4322,  584, 1576,  584, 1576,  584, 1576,  584, 1576,  584, 500,  580, 494,  586, 1574,  584, 496,  584, 494,  584, 500,  582, 494,  584, 496,  582, 1576,  586, 1576,  584, 500,  582, 1578,  582, 494,  584, 494,  586, 494,  586, 494,  586, 494,  584, 1574,  586, 496,  584, 494,  586, 1574,  586, 1576,  584, 1576,  586, 1574,  586, 1576,  586, 498,  582, 1576,  588, 1574,  586, 500,  580, 494,  586, 496,  582, 496,  586, 1574,  586, 496,  584, 496,  582, 1578,  582, 500,  582, 1574,  586, 1576,  584, 498,  582, 502,  578, 498,  580, 498,  584, 494,  586, 494,  584, 500,  578, 498,  586, 500,  580, 498,  582, 496,  586, 500,  578, 498,  582, 496,  584, 494,  584, 498,  584, 498,  580, 496,  586, 496,  582, 496,  582, 498,  584, 496,  584, 494,  586, 494,  586, 500,  580, 496,  584, 498,  582, 496,  584, 1576,  586, 500,  580, 1576,  582, 1576,  586, 496,  584, 1576,  586, 496,  582, 498,  582, 496,  586, 7430,  4414, 4322,  584, 1578,  584, 1576,  582, 1582,  580, 1580,  582, 498,  582, 496,  584, 1576,  584, 496,  584, 496,  584, 496,  584, 496,  584, 496,  586, 1574,  586, 1576,  586, 492,  586, 1576,  586, 494,  584, 496,  584, 496,  584, 498,  582, 494,  586, 1576,  582, 504,  576, 498,  584, 1574,  584, 1576,  584, 1580,  582, 1578,  584, 1576,  584, 496,  584, 1576,  582, 1578,  584, 496,  584, 494,  584, 498,  580, 498,  582, 1576,  586, 496,  582, 498,  584, 1576,  586, 496,  584, 1576,  584, 1576,  586, 496,  584, 496,  584, 496,  584, 496,  584, 496,  584, 496,  586, 494,  584, 496,  586, 496,  584, 498,  582, 496,  584, 496,  584, 496,  586, 494,  586, 494,  586, 496,  584, 496,  584, 496,  584, 500,  580, 496,  586, 494,  584, 496,  584, 496,  582, 554,  526, 502,  578, 496,  586, 496,  584, 494,  584, 1578,  584, 496,  584, 1576,  586, 1576,  584, 496,  582, 1578,  584, 494,  584, 496,  584, 496,  584};  // UNKNOWN 35DF3237
Found 327 timing entries.
Potential Mark Candidates:
[4420, 588]
Potential Space Candidates:
[7430, 4322, 1582, 554]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4417
kHdrSpace  = 4322
kBitMark   = 583
kOneSpace  = 1576
kZeroSpace = 496
kSpaceGap = 7430

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000010011111011000010010110000000000000000000000000000101101000GAP(7430)
  Bits: 80
  Hex:  0xF20D04FB096000000168 (MSB first)
        0x168000000690DF20B04F (LSB first)
  Dec:  1143052855418315593482600 (MSB first)
        106253245871786305826895 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010110000000000000000000000000000101101000 (MSB first)
        0b00010110100000000000000000000000000001101001000011011111001000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+11110010000011010000010011111011000010010110000000000000000000000000000101101000
  Bits: 80
  Hex:  0xF20D04FB096000000168 (MSB first)
        0x168000000690DF20B04F (LSB first)
  Dec:  1143052855418315593482600 (MSB first)
        106253245871786305826895 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010110000000000000000000000000000101101000 (MSB first)
        0b00010110100000000000000000000000000001101001000011011111001000001011000001001111 (LSB first)

Total Nr. of suspected bits: 160
casasale commented 4 years ago

80 bit message example for ECO_ON and TEMP24:

uint16_t rawData_ECO_ON_TEMP24[327] = {4420, 4318,  586, 1576,  558, 1600,  556, 1606,  554, 1606,  556, 524,  556, 526,  552, 1606,  554, 530,  548, 526,  552, 528,  554, 526,  552, 526,  554, 1612,  548, 1606,  554, 526,  554, 1606,  554, 528,  552, 526,  554, 526,  554, 526,  556, 524,  556, 1608,  550, 526,  554, 526,  552, 1608,  554, 1606,  556, 1606,  554, 1610,  550, 1608,  552, 528,  550, 1606,  556, 1604,  554, 528,  554, 526,  556, 522,  558, 526,  552, 1610,  548, 530,  552, 524,  556, 1610,  550, 524,  554, 1610,  550, 1606,  554, 1606,  556, 530,  550, 526,  554, 524,  554, 526,  556, 526,  554, 524,  556, 526,  554, 528,  554, 526,  556, 526,  552, 526,  554, 528,  552, 526,  554, 526,  554, 530,  550, 526,  554, 528,  552, 524,  554, 526,  556, 524,  556, 524,  556, 524,  556, 524,  556, 524,  554, 526,  556, 524,  554, 1664,  496, 1614,  548, 526,  552, 1608,  554, 1606,  556, 1606,  558, 1604,  558, 524,  552, 1610,  550, 528,  552, 7452,  4394, 4348,  558, 1602,  556, 1604,  558, 1604,  556, 1610,  550, 526,  552, 524,  556, 1608,  554, 530,  550, 526,  554, 526,  554, 528,  550, 524,  558, 1604,  556, 1602,  558, 524,  556, 1608,  552, 522,  556, 526,  554, 524,  556, 524,  558, 522,  556, 1608,  552, 524,  556, 522,  556, 1604,  556, 1604,  558, 1604,  556, 1604,  556, 1606,  556, 526,  554, 1606,  554, 1608,  552, 524,  556, 530,  548, 530,  552, 524,  554, 1608,  552, 526,  556, 526,  554, 1606,  556, 522,  556, 1608,  554, 1604,  556, 1604,  556, 526,  554, 526,  554, 524,  554, 526,  554, 524,  556, 526,  554, 524,  558, 524,  552, 528,  554, 522,  556, 524,  556, 532,  546, 530,  552, 524,  556, 526,  552, 526,  554, 524,  554, 524,  554, 532,  550, 524,  554, 524,  556, 524,  556, 526,  556, 526,  552, 524,  556, 524,  556, 1610,  552, 1608,  554, 528,  552, 1606,  554, 1610,  552, 1604,  556, 1604,  556, 524,  558, 1604,  554, 530,  552};  // UNKNOWN 3008239F
Found 327 timing entries.
Potential Mark Candidates:
[4420, 586]
Potential Space Candidates:
[7452, 4348, 1664, 532]

Guessing encoding type:
Looks like it uses space encoding. Yay!

Guessing key value:
kHdrMark   = 4407
kHdrSpace  = 4333
kBitMark   = 553
kOneSpace  = 1606
kZeroSpace = 525
kSpaceGap = 7452

Decoding protocol based on analysis so far:

kHdrMark+kHdrSpace+11110010000011010000010011111011000010010111000000000000000000000000001101111010GAP(7452)
  Bits: 80
  Hex:  0xF20D04FB09700000037A (MSB first)
        0x5EC000000E90DF20B04F (LSB first)
  Dec:  1143052855418384312959866 (MSB first)
        447444224267914265538639 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010111000000000000000000000000001101111010 (MSB first)
        0b01011110110000000000000000000000000011101001000011011111001000001011000001001111 (LSB first)
kHdrMark+kHdrSpace+11110010000011010000010011111011000010010111000000000000000000000000001101111010
  Bits: 80
  Hex:  0xF20D04FB09700000037A (MSB first)
        0x5EC000000E90DF20B04F (LSB first)
  Dec:  1143052855418384312959866 (MSB first)
        447444224267914265538639 (LSB first)
  Bin:  0b11110010000011010000010011111011000010010111000000000000000000000000001101111010 (MSB first)
        0b01011110110000000000000000000000000011101001000011011111001000001011000001001111 (LSB first)

Total Nr. of suspected bits: 160
casasale commented 4 years ago

Protocol summary:

72 bits:         MARK; SPACE; ID; ~ID; LENGTH; ~LENGTH; OP; (Temp, Swing); (Fan, Mode); Zero; (Fan^Temp, Mode^OP); GAP
56 bits Air_Dir: MARK; SPACE; ID; ~ID; LENGTH; ~LENGTH; OP; (Temp, Swing); (Fan, Air_Dir)
56 bits Swing:   MARK; SPACE; ID; ~ID; LENGTH; ~LENGTH; OP; (Temp, Swing); (Fan, Swing^Fan); GAP
80 bits Power:   MARK; SPACE; ID; ~ID; LENGTH; ~LENGTH; OP; (Temp, Swing); (Fan, Mode); Zero; Power; (Fan^Temp, Mode^Power^OP); GAP

Possible Length Values:

crankyoldgit commented 4 years ago

72 bit full message example for ON:

uint16_t rawData_ON[295] = {4426, 4314,  [SNIP],  590};  // TOSHIBA_AC

TOSHIBA_AC? Is IRrecvDumpV2 etc detecting this as the TOSHIBA_AC protocol?

casasale commented 4 years ago

Yes, IRrecvDumpV2 is sometimes detecting it as Toshiba, but if you repeat the commands, then it appears again as Unknown, so it looks like a bogus detection.

I am uploading the latest spreadsheet.

casasale commented 4 years ago

@crankyoldgit Here is the latest spreadsheet: https://docs.google.com/spreadsheets/d/1yidE2fvaO9kpCHfKafIdH31q4uaskYR1OwwrkyOxbp0/edit?usp=drivesdk

crankyoldgit commented 4 years ago

Yes, IRrecvDumpV2 is sometimes detecting it as Toshiba

Can you supply the full output of the dump when it does? And if it decodes it into detailed settings, are those settings close/correct?

It's unlikely that the library is detecting it as Toshiba incorrectly, as it does have a check as part of the decode. e.g. https://github.com/crankyoldgit/IRremoteESP8266/blob/0fb37a3afa329487a03af8d333f5f869201009c0/src/ir_Toshiba.cpp#L336-L340 & https://github.com/crankyoldgit/IRremoteESP8266/blob/0fb37a3afa329487a03af8d333f5f869201009c0/src/ir_Toshiba.cpp#L97-L110

casasale commented 4 years ago

In the dump I repeated the 72 bits ON/OFF (22C, Mode =Auto, Fan = AUTO), and as can be seen only 23 times it got detected as TOSHIBA_AC, and 48 times it was detected as UNKNOWN, while I have a feeling, that it gets detected more often as TOSHIBA_AC if I get really close to the photo IR detector, so eventually the timing settings are slightly different between Carrier and Toshiba.

The very few times it gets detected as TOSHIBA_AC, then the Mode seems to be partially correct when switching ON, but wrong (3) when switching OFF, i.e. heat is 0b0011, and off is 0b0111, so I believe the Toshiba decoder detects only 2 bits instead of the necessary 3 for the Carrier OFF and Mode_Fan, e.g. mode_fan is 0b0100, which seems to be detected too with just 2 bits instead of 3 bits, (Bold is wrong)

Mode 0 Auto 0b0000:

Mode 1 Cool 0b0001:

Mode 2 Dry 0b0010:

Mode 3 Heat 0b0011:

Mode 4 Fan 0b0010:

And the temperature seems to be correct:

The Fan seems to be detected correctly, but the levels 2 and 4 are marked UNKNOWN:

There was no match in commands of different non 72 bits lengths:


DUMP:

Timestamp : 000031.438 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4424, 4316, 590, 1572, 590, 1570, 590, 1572, 588, 1572, 588, 490, 590, 490, 590, 1570, 590, 496, 584, 490, 592, 498, 580, 492, 590, 494, 584, 1572, 588, 1572, 588, 490, 590, 1576, 584, 496, 584, 496, 584, 490, 592, 544, 534, 488, 590, 490, 590, 1570, 592, 1570, 590, 1572, 588, 1570, 590, 1570, 590, 1570, 590, 1570, 592, 1570, 588, 492, 588, 496, 584, 488, 592, 498, 580, 496, 584, 494, 584, 490, 590, 490, 590, 490, 590, 1570, 590, 490, 590, 1570, 590, 490, 590, 1572, 590, 490, 588, 490, 590, 498, 580, 492, 588, 490, 590, 490, 590, 492, 590, 488, 590, 490, 588, 490, 588, 490, 590, 490, 590, 494, 584, 490, 590, 488, 590, 488, 590, 490, 592, 488, 590, 490, 590, 490, 588, 490, 590, 1572, 588, 492, 588, 1570, 590, 490, 588, 490, 590, 490, 590, 1570, 590, 7418, 4424, 4316, 590, 1572, 590, 1570, 590, 1570, 590, 1570, 590, 488, 592, 494, 584, 1572, 592, 488, 590, 490, 588, 490, 590, 490, 588, 490, 590, 1572, 590, 1572, 590, 488, 592, 1570, 588, 490, 592, 488, 592, 488, 590, 490, 590, 490, 590, 490, 590, 1570, 592, 1568, 592, 1570, 592, 1570, 590, 1570, 592, 1570, 590, 1570, 592, 1568, 590, 490, 590, 490, 590, 488, 592, 488, 592, 488, 592, 488, 590, 490, 590, 488, 592, 488, 590, 1570, 590, 492, 586, 1576, 584, 490, 588, 1572, 590, 488, 592, 492, 586, 490, 592, 488, 590, 490, 590, 488, 592, 488, 590, 490, 588, 490, 590, 490, 590, 490, 590, 490, 590, 490, 590, 488, 592, 490, 590, 496, 584, 490, 590, 488, 590, 490, 590, 490, 590, 490, 590, 1568, 590, 490, 588, 1572, 588, 492, 590, 490, 590, 490, 590, 1570, 590}; // UNKNOWN E2D990EB

Timestamp : 000034.813 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4428, 4312, 590, 1570, 590, 1574, 588, 1568, 590, 1574, 588, 488, 592, 486, 592, 1568, 590, 490, 590, 490, 590, 488, 594, 488, 588, 490, 590, 1570, 592, 1568, 592, 492, 588, 1570, 590, 494, 586, 490, 592, 488, 592, 488, 592, 490, 592, 488, 590, 1570, 590, 1570, 592, 1568, 590, 1570, 590, 1570, 590, 1572, 588, 1570, 592, 1568, 592, 490, 590, 494, 586, 490, 590, 490, 592, 488, 590, 490, 588, 492, 588, 492, 592, 488, 590, 1570, 590, 488, 592, 1568, 592, 490, 590, 1570, 590, 544, 538, 488, 590, 490, 590, 490, 590, 490, 590, 488, 592, 488, 592, 488, 592, 488, 590, 1570, 592, 1568, 592, 1568, 592, 490, 588, 490, 592, 488, 590, 496, 584, 488, 592, 490, 592, 488, 588, 492, 590, 488, 590, 1570, 590, 490, 590, 1570, 592, 488, 588, 1572, 592, 1570, 590, 490, 590, 7424, 4422, 4312, 592, 1568, 592, 1570, 590, 1572, 588, 1570, 590, 490, 590, 490, 592, 1568, 590, 490, 590, 488, 592, 488, 588, 496, 586, 488, 592, 1570, 590, 1570, 590, 488, 592, 1570, 590, 490, 588, 490, 590, 490, 590, 488, 592, 488, 590, 490, 588, 1570, 590, 1570, 590, 1570, 590, 1572, 592, 1568, 590, 1574, 586, 1570, 592, 1570, 590, 494, 586, 488, 592, 488, 592, 492, 586, 490, 590, 488, 590, 490, 590, 494, 588, 494, 586, 1570, 590, 494, 586, 1574, 586, 488, 592, 1574, 584, 488, 592, 488, 592, 492, 588, 488, 590, 490, 592, 490, 590, 488, 592, 488, 590, 494, 586, 1570, 592, 1574, 588, 1568, 590, 490, 592, 488, 592, 488, 592, 492, 586, 492, 590, 494, 584, 490, 590, 488, 592, 488, 592, 1568, 592, 488, 592, 1568, 592, 488, 588, 1572, 592, 1568, 592, 492, 588}; // UNKNOWN 1B6696D7

Timestamp : 000039.946 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4414, 4322, 582, 1578, 582, 1580, 554, 1604, 584, 1576, 582, 498, 580, 500, 554, 1610, 576, 502, 578, 504, 548, 526, 578, 502, 582, 498, 554, 1618, 542, 1608, 562, 522, 552, 1606, 580, 498, 582, 498, 554, 528, 552, 528, 582, 498, 580, 498, 582, 1578, 568, 1594, 580, 1580, 582, 1578, 584, 1578, 554, 1606, 554, 1606, 582, 1578, 584, 498, 584, 496, 580, 502, 578, 500, 554, 524, 582, 496, 584, 496, 584, 496, 580, 500, 580, 1580, 554, 526, 554, 1606, 582, 498, 554, 1606, 582, 504, 548, 526, 582, 498, 582, 496, 584, 498, 582, 496, 584, 496, 586, 494, 584, 496, 584, 498, 582, 494, 586, 496, 584, 498, 584, 494, 584, 496, 584, 496, 584, 502, 576, 508, 572, 552, 528, 496, 586, 494, 586, 1576, 582, 498, 584, 1576, 586, 494, 586, 500, 576, 498, 584, 1584, 576, 7424, 4422, 4318, 588, 1574, 588, 1572, 586, 1574, 586, 1576, 586, 498, 582, 496, 584, 1572, 588, 500, 580, 492, 588, 496, 582, 498, 584, 496, 584, 1570, 590, 1572, 588, 498, 584, 1572, 588, 494, 584, 498, 582, 498, 584, 492, 586, 492, 588, 498, 582, 1574, 586, 1572, 590, 1570, 590, 1572, 588, 1572, 588, 1570, 590, 1572, 588, 1578, 582, 548, 532, 492, 588, 496, 582, 492, 588, 492, 586, 492, 588, 546, 534, 496, 584, 494, 586, 1574, 586, 496, 584, 1570, 588, 496, 584, 1570, 590, 492, 588, 494, 584, 492, 586, 498, 582, 492, 588, 546, 532, 496, 584, 498, 582, 546, 534, 494, 586, 496, 584, 492, 590, 494, 584, 492, 586, 492, 588, 496, 584, 496, 582, 492, 590, 496, 584, 496, 584, 496, 584, 1578, 582, 492, 588, 1578, 582, 498, 582, 494, 586, 496, 582, 1574, 586}; // UNKNOWN E2D990EB

Timestamp : 000041.743 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4424, 4314, 592, 1568, 592, 1568, 590, 1572, 590, 1572, 586, 488, 590, 490, 590, 1570, 590, 494, 586, 488, 592, 492, 586, 492, 588, 488, 592, 1570, 590, 1574, 586, 492, 588, 1572, 588, 488, 590, 494, 586, 490, 590, 494, 584, 492, 590, 490, 588, 1570, 590, 1570, 590, 1570, 592, 1570, 590, 1572, 588, 1572, 588, 1570, 592, 1574, 586, 494, 584, 490, 592, 494, 586, 488, 590, 490, 590, 494, 588, 492, 586, 492, 588, 492, 588, 1570, 590, 490, 590, 1568, 594, 490, 588, 1570, 590, 490, 590, 490, 590, 490, 590, 490, 590, 494, 584, 492, 588, 490, 588, 494, 586, 492, 586, 1570, 592, 1568, 592, 1572, 588, 492, 588, 492, 588, 492, 588, 490, 590, 492, 588, 492, 588, 496, 584, 488, 590, 490, 592, 1568, 592, 490, 590, 1576, 586, 494, 588, 1568, 590, 1574, 586, 492, 588, 7416, 4428, 4312, 592, 1572, 588, 1568, 592, 1572, 588, 1570, 588, 490, 590, 494, 586, 1570, 592, 492, 586, 492, 588, 488, 592, 494, 586, 490, 588, 1570, 592, 1574, 586, 490, 592, 1568, 590, 494, 586, 490, 590, 490, 590, 490, 590, 488, 592, 490, 588, 1570, 590, 1572, 590, 1568, 594, 1568, 590, 1576, 586, 1574, 586, 1574, 588, 1570, 590, 490, 590, 494, 586, 492, 588, 494, 586, 492, 588, 494, 586, 488, 592, 494, 584, 494, 586, 1568, 592, 490, 590, 1574, 588, 492, 586, 1578, 582, 494, 586, 492, 588, 494, 584, 494, 588, 492, 586, 494, 584, 496, 586, 494, 586, 494, 586, 1568, 590, 1576, 586, 1574, 586, 490, 588, 492, 590, 496, 584, 494, 586, 496, 584, 496, 584, 494, 586, 494, 586, 494, 586, 1576, 584, 492, 586, 1572, 590, 494, 584, 1572, 590, 1574, 586, 490, 590}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000066.239 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4422, 4322, 584, 1574, 586, 1574, 588, 1574, 586, 1574, 588, 496, 584, 494, 586, 1572, 588, 496, 584, 492, 588, 498, 582, 498, 584, 548, 532, 1574, 586, 1570, 590, 494, 584, 1576, 586, 492, 588, 494, 586, 498, 584, 496, 582, 496, 584, 494, 586, 1576, 586, 1570, 590, 1576, 584, 1570, 590, 1570, 590, 1570, 590, 1574, 586, 1578, 586, 494, 584, 494, 586, 494, 584, 492, 588, 496, 586, 492, 588, 494, 586, 492, 586, 498, 584, 1572, 590, 492, 586, 1570, 590, 496, 584, 1572, 590, 492, 586, 494, 586, 496, 584, 494, 586, 496, 584, 496, 584, 496, 584, 494, 586, 490, 592, 494, 584, 492, 588, 496, 584, 494, 586, 496, 584, 492, 588, 488, 590, 496, 586, 490, 588, 496, 582, 496, 584, 496, 582, 1576, 586, 496, 584, 1572, 588, 494, 586, 496, 584, 548, 532, 1574, 584, 7420, 4426, 4318, 586, 1570, 588, 1576, 586, 1576, 584, 1576, 586, 494, 584, 498, 584, 1574, 586, 496, 584, 494, 584, 496, 584, 494, 586, 494, 586, 1568, 592, 1570, 590, 492, 588, 1576, 586, 498, 582, 494, 586, 490, 592, 496, 582, 492, 586, 496, 584, 1628, 534, 1572, 586, 1574, 586, 1572, 590, 1576, 586, 1574, 586, 1576, 584, 1570, 590, 496, 584, 494, 586, 494, 584, 492, 588, 492, 588, 494, 586, 494, 584, 496, 584, 492, 586, 1574, 588, 494, 584, 1578, 582, 498, 584, 1572, 588, 496, 584, 496, 582, 498, 584, 496, 584, 494, 586, 490, 588, 496, 584, 496, 584, 546, 532, 496, 584, 494, 586, 492, 584, 496, 584, 494, 586, 496, 584, 496, 584, 492, 586, 500, 582, 498, 582, 490, 590, 490, 590, 1574, 586, 496, 582, 1572, 590, 494, 586, 496, 584, 492, 588, 1572, 588}; // UNKNOWN E2D990EB

Timestamp : 000068.577 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4422, 4318, 588, 1574, 588, 1572, 586, 1576, 586, 1576, 586, 492, 588, 492, 588, 1574, 588, 496, 582, 496, 584, 498, 582, 494, 586, 496, 584, 1572, 588, 1572, 590, 496, 582, 1572, 588, 500, 580, 496, 582, 498, 584, 496, 584, 496, 584, 496, 584, 1574, 586, 1572, 588, 1574, 586, 1574, 590, 1574, 586, 1576, 584, 1624, 536, 1570, 590, 496, 582, 496, 586, 546, 534, 494, 586, 490, 588, 496, 584, 494, 586, 548, 532, 496, 584, 1574, 588, 496, 582, 1572, 590, 494, 586, 1572, 588, 496, 584, 504, 576, 496, 584, 496, 582, 498, 584, 498, 582, 496, 582, 494, 584, 498, 582, 1572, 590, 1572, 590, 1572, 588, 490, 590, 492, 586, 496, 584, 496, 584, 494, 586, 492, 588, 496, 584, 494, 588, 496, 584, 1570, 590, 496, 584, 1574, 584, 498, 582, 1572, 588, 1574, 586, 496, 584, 7418, 4426, 4314, 590, 1576, 586, 1574, 588, 1570, 588, 1628, 534, 494, 584, 496, 586, 1576, 584, 494, 586, 492, 586, 492, 588, 496, 584, 498, 582, 1576, 586, 1570, 588, 496, 584, 1572, 590, 492, 586, 496, 584, 494, 586, 528, 552, 494, 586, 490, 590, 1574, 586, 1572, 590, 1576, 584, 1572, 590, 1578, 580, 1578, 584, 1574, 588, 1572, 588, 494, 586, 494, 584, 548, 532, 494, 584, 496, 584, 494, 586, 496, 586, 494, 584, 494, 586, 1570, 590, 502, 578, 1574, 586, 498, 582, 1574, 586, 496, 584, 496, 584, 496, 582, 498, 584, 496, 584, 492, 588, 496, 584, 496, 584, 494, 584, 1572, 590, 1570, 592, 1570, 588, 494, 586, 498, 582, 498, 582, 494, 586, 496, 582, 494, 584, 498, 584, 496, 584, 494, 584, 1572, 588, 496, 582, 1574, 588, 490, 590, 1570, 590, 1576, 586, 494, 582}; // UNKNOWN 1B6696D7

Timestamp : 000070.351 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4424, 4320, 586, 1574, 586, 1576, 582, 1574, 588, 1572, 588, 498, 584, 492, 588, 1576, 586, 496, 584, 496, 584, 490, 588, 548, 532, 498, 582, 1572, 588, 1574, 586, 496, 584, 1570, 590, 496, 582, 492, 588, 496, 584, 496, 584, 498, 582, 492, 586, 1572, 590, 1574, 586, 1572, 588, 1572, 588, 1576, 584, 1576, 586, 1572, 588, 1572, 588, 496, 584, 494, 584, 498, 582, 498, 580, 494, 586, 496, 586, 494, 586, 496, 584, 496, 582, 1576, 586, 498, 582, 1572, 588, 546, 532, 1572, 590, 498, 582, 496, 584, 496, 586, 494, 586, 494, 586, 548, 532, 494, 586, 496, 584, 496, 584, 548, 532, 498, 582, 492, 586, 496, 584, 496, 586, 496, 582, 548, 532, 494, 586, 496, 586, 494, 586, 492, 590, 490, 588, 1572, 588, 548, 532, 1572, 588, 496, 584, 496, 584, 494, 586, 1574, 586, 7476, 4368, 4316, 590, 1572, 590, 1572, 588, 1570, 590, 1570, 590, 492, 588, 498, 582, 1578, 582, 498, 584, 494, 584, 496, 584, 496, 584, 494, 584, 1572, 590, 1578, 582, 492, 588, 1576, 584, 496, 584, 496, 582, 498, 584, 494, 584, 492, 588, 496, 584, 1574, 586, 1574, 588, 1572, 590, 1572, 588, 1628, 534, 1572, 588, 1572, 588, 1572, 588, 496, 584, 494, 586, 496, 582, 496, 586, 496, 584, 490, 588, 496, 584, 496, 584, 494, 584, 1572, 588, 496, 584, 1574, 588, 496, 582, 1574, 586, 496, 584, 498, 582, 496, 584, 494, 586, 496, 582, 494, 586, 494, 584, 548, 532, 496, 586, 494, 586, 494, 586, 498, 582, 548, 530, 496, 584, 496, 584, 496, 584, 498, 582, 496, 584, 496, 584, 494, 584, 494, 586, 1572, 586, 498, 584, 1572, 588, 500, 580, 494, 586, 492, 586, 1576, 584}; // UNKNOWN E2D990EB

Timestamp : 000071.604 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4418, 4322, 582, 1578, 582, 1578, 586, 1580, 580, 1576, 584, 498, 580, 500, 580, 1578, 584, 496, 584, 496, 584, 498, 582, 502, 578, 496, 584, 1580, 580, 1578, 584, 552, 500, 1606, 584, 494, 584, 496, 584, 496, 582, 496, 584, 496, 584, 496, 584, 1576, 584, 1576, 582, 1580, 580, 1576, 584, 1576, 586, 1576, 584, 1576, 584, 1576, 584, 496, 584, 494, 586, 496, 584, 496, 586, 494, 584, 498, 580, 500, 578, 500, 580, 496, 584, 1576, 584, 496, 584, 1576, 584, 494, 584, 1578, 584, 496, 584, 498, 580, 496, 582, 498, 584, 496, 584, 496, 586, 496, 582, 496, 584, 496, 584, 1576, 584, 1576, 584, 1576, 586, 496, 584, 500, 580, 494, 584, 494, 586, 500, 578, 496, 584, 496, 584, 494, 586, 494, 584, 1576, 586, 494, 586, 1576, 586, 494, 586, 1574, 584, 1576, 584, 494, 586, 7422, 4422, 4318, 584, 1576, 584, 1576, 588, 1586, 572, 1576, 586, 494, 586, 494, 584, 1632, 528, 494, 584, 496, 588, 492, 586, 492, 586, 496, 584, 1574, 586, 1576, 584, 498, 582, 1574, 586, 494, 586, 494, 586, 494, 584, 496, 584, 496, 584, 494, 586, 1574, 586, 1580, 580, 1576, 586, 1576, 584, 1576, 584, 1576, 584, 1576, 584, 1574, 586, 494, 586, 494, 584, 496, 584, 494, 584, 496, 586, 494, 586, 496, 582, 496, 586, 496, 582, 1576, 584, 500, 580, 1576, 584, 498, 582, 1578, 582, 500, 582, 496, 584, 500, 578, 496, 584, 496, 584, 496, 584, 494, 586, 494, 586, 496, 584, 1576, 584, 1578, 584, 1576, 584, 500, 576, 500, 580, 496, 584, 498, 582, 496, 582, 498, 584, 496, 582, 496, 582, 498, 584, 1576, 584, 498, 582, 1582, 578, 498, 582, 1578, 580, 1578, 582, 498, 582}; // UNKNOWN 1B6696D7

Timestamp : 000073.186 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4420, 4376, 530, 1576, 584, 1574, 588, 1572, 588, 1574, 588, 496, 582, 496, 584, 1574, 588, 492, 586, 498, 580, 494, 588, 494, 586, 496, 584, 1574, 584, 1574, 588, 494, 586, 1572, 588, 494, 584, 494, 586, 494, 586, 494, 588, 498, 582, 496, 584, 1576, 584, 1576, 586, 1578, 582, 1574, 586, 1572, 588, 1576, 586, 1572, 588, 1572, 588, 498, 582, 496, 584, 494, 586, 496, 584, 492, 586, 492, 586, 496, 584, 498, 584, 548, 530, 1572, 588, 496, 586, 1574, 586, 498, 582, 1574, 586, 496, 584, 496, 584, 496, 584, 498, 582, 496, 584, 500, 580, 496, 582, 492, 590, 492, 588, 494, 586, 492, 590, 492, 586, 498, 582, 498, 582, 494, 584, 496, 584, 500, 580, 496, 584, 496, 586, 496, 582, 498, 582, 1574, 586, 498, 584, 1572, 588, 496, 582, 498, 582, 496, 586, 1570, 590, 7418, 4424, 4316, 588, 1576, 584, 1578, 584, 1574, 586, 1572, 590, 498, 582, 496, 584, 1572, 588, 496, 584, 494, 586, 498, 582, 496, 582, 492, 588, 1578, 584, 1574, 586, 496, 582, 1576, 586, 494, 586, 496, 584, 494, 584, 498, 582, 496, 584, 498, 580, 1574, 588, 1570, 590, 1570, 588, 1574, 586, 1574, 588, 1572, 588, 1572, 588, 1572, 588, 494, 584, 496, 584, 492, 588, 494, 588, 492, 586, 496, 584, 550, 530, 494, 586, 496, 582, 1578, 582, 494, 584, 1576, 586, 494, 586, 1576, 586, 494, 584, 496, 584, 496, 586, 494, 586, 494, 586, 494, 584, 496, 584, 494, 586, 496, 586, 496, 582, 496, 584, 496, 582, 496, 584, 496, 584, 502, 578, 494, 584, 496, 584, 496, 584, 494, 586, 496, 584, 494, 586, 1576, 584, 496, 584, 1576, 584, 496, 584, 494, 584, 496, 584, 1576, 584}; // UNKNOWN E2D990EB

Timestamp : 000074.790 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4362, 4322, 582, 1580, 582, 1634, 498, 1606, 554, 1608, 580, 498, 584, 496, 584, 1578, 554, 528, 580, 498, 582, 498, 582, 498, 582, 496, 582, 1586, 548, 1606, 582, 498, 582, 1578, 584, 502, 548, 526, 582, 496, 584, 496, 582, 498, 582, 498, 580, 1578, 582, 1584, 550, 1604, 582, 1576, 584, 1578, 582, 1576, 584, 1590, 544, 1606, 582, 496, 584, 496, 584, 496, 584, 496, 584, 498, 580, 498, 584, 496, 582, 498, 584, 496, 582, 1578, 584, 496, 582, 1634, 500, 526, 580, 1580, 584, 494, 584, 496, 584, 496, 584, 496, 582, 496, 584, 500, 578, 498, 582, 496, 584, 496, 586, 1576, 584, 1576, 582, 1578, 584, 500, 580, 496, 584, 498, 576, 506, 580, 496, 584, 496, 584, 496, 582, 498, 582, 496, 582, 1578, 584, 496, 582, 1580, 580, 496, 584, 1582, 578, 1576, 586, 496, 582, 7426, 4420, 4322, 584, 1580, 580, 1578, 582, 1578, 582, 1578, 584, 496, 582, 498, 584, 1582, 570, 508, 578, 496, 584, 496, 582, 496, 582, 496, 584, 1578, 582, 1578, 582, 554, 500, 1604, 584, 496, 582, 496, 582, 498, 584, 496, 582, 496, 584, 496, 584, 1576, 586, 1576, 582, 1578, 582, 1576, 586, 1576, 584, 1576, 582, 1578, 582, 1580, 582, 498, 582, 498, 584, 496, 582, 498, 584, 496, 582, 498, 582, 498, 582, 496, 582, 496, 582, 1586, 574, 500, 584, 1578, 582, 498, 582, 1578, 582, 498, 582, 504, 576, 498, 582, 498, 580, 500, 584, 496, 582, 498, 582, 498, 582, 496, 584, 1578, 582, 1580, 582, 1578, 582, 496, 584, 496, 582, 498, 580, 500, 582, 502, 578, 498, 582, 496, 582, 498, 580, 500, 580, 1578, 584, 498, 554, 1606, 582, 498, 582, 1578, 582, 1578, 582, 498, 582}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000076.354 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150000051 (72 Bits) Mesg Desc.: Power: On, Mode: 0 (Auto), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4416, 4322, 588, 1572, 584, 1576, 584, 1576, 586, 1574, 584, 496, 584, 494, 584, 1576, 584, 496, 584, 496, 584, 496, 584, 496, 582, 502, 580, 1578, 584, 1576, 584, 496, 584, 1578, 582, 498, 584, 494, 584, 498, 582, 496, 586, 494, 584, 500, 580, 1576, 584, 1576, 586, 1576, 584, 1576, 586, 1574, 584, 1576, 586, 1580, 580, 1576, 586, 494, 586, 498, 580, 496, 584, 496, 584, 496, 584, 494, 584, 496, 584, 498, 582, 500, 580, 1574, 584, 496, 584, 1576, 586, 496, 584, 1574, 586, 498, 584, 494, 584, 498, 584, 494, 586, 498, 582, 494, 586, 500, 580, 498, 582, 494, 586, 498, 582, 496, 584, 496, 584, 494, 586, 496, 586, 494, 584, 498, 584, 496, 584, 494, 586, 496, 584, 494, 586, 492, 584, 1576, 584, 498, 584, 1572, 588, 496, 584, 496, 584, 498, 584, 1626, 532, 7422, 4422, 4318, 588, 1574, 588, 1572, 588, 1572, 588, 1572, 588, 498, 582, 498, 582, 1576, 584, 494, 584, 498, 584, 496, 584, 496, 582, 498, 584, 1572, 588, 1572, 588, 496, 582, 1574, 586, 498, 584, 494, 584, 496, 584, 496, 584, 498, 582, 496, 584, 1574, 586, 1574, 588, 1576, 586, 1572, 588, 1572, 588, 1572, 590, 1574, 584, 1584, 576, 494, 586, 496, 582, 496, 584, 496, 584, 498, 582, 494, 586, 498, 582, 496, 584, 496, 584, 1574, 586, 494, 586, 1574, 588, 498, 580, 1574, 588, 494, 586, 496, 582, 498, 582, 494, 586, 494, 586, 494, 586, 494, 586, 496, 582, 502, 578, 494, 586, 496, 584, 496, 584, 504, 572, 496, 584, 498, 584, 494, 586, 494, 584, 494, 584, 498, 584, 494, 586, 496, 584, 1574, 586, 494, 586, 1574, 586, 494, 586, 496, 582, 494, 586, 1576, 584}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x00, 0x00, 0x51};

Timestamp : 000077.774 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4408, 4322, 582, 1578, 584, 1580, 580, 1578, 580, 1590, 544, 526, 582, 496, 582, 1578, 582, 496, 584, 498, 582, 504, 548, 526, 582, 510, 542, 1606, 582, 1578, 582, 498, 582, 1578, 582, 498, 582, 498, 582, 498, 582, 500, 582, 498, 582, 496, 586, 1576, 582, 1578, 584, 1584, 548, 1610, 550, 1606, 582, 1576, 584, 1578, 582, 1576, 584, 498, 582, 496, 582, 496, 584, 498, 580, 500, 580, 502, 576, 498, 584, 496, 582, 498, 580, 1584, 576, 498, 584, 1578, 580, 504, 548, 1618, 542, 528, 582, 496, 584, 496, 584, 496, 584, 496, 582, 498, 582, 498, 582, 498, 582, 498, 586, 1576, 584, 1576, 584, 1578, 582, 496, 584, 498, 582, 498, 582, 496, 584, 496, 582, 498, 582, 496, 584, 496, 584, 496, 584, 1632, 526, 500, 580, 1578, 584, 494, 584, 1576, 584, 1576, 584, 500, 578, 7426, 4418, 4322, 582, 1578, 582, 1634, 500, 1606, 584, 1578, 582, 552, 498, 526, 582, 1580, 580, 498, 582, 496, 584, 496, 586, 494, 584, 498, 580, 1580, 582, 1578, 582, 498, 582, 1576, 584, 496, 582, 500, 582, 496, 582, 554, 496, 530, 578, 498, 584, 1578, 582, 1580, 582, 1634, 526, 1578, 582, 1576, 584, 1578, 582, 1576, 582, 1578, 584, 498, 582, 498, 580, 498, 582, 496, 582, 498, 582, 500, 582, 500, 578, 500, 580, 496, 584, 1578, 584, 498, 578, 1586, 576, 500, 580, 1578, 582, 498, 584, 496, 582, 500, 582, 498, 582, 496, 584, 496, 582, 498, 584, 494, 584, 552, 526, 1580, 580, 1582, 578, 1582, 580, 496, 586, 500, 578, 498, 582, 496, 584, 496, 584, 496, 582, 498, 584, 496, 584, 552, 528, 1576, 584, 502, 578, 1576, 584, 496, 584, 1576, 582, 1578, 584, 496, 582}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000083.701 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150000051 (72 Bits) Mesg Desc.: Power: On, Mode: 0 (Auto), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4420, 4320, 586, 1570, 588, 1576, 584, 1572, 588, 1572, 588, 496, 584, 492, 588, 1572, 588, 494, 588, 496, 582, 500, 580, 496, 582, 496, 584, 1576, 584, 1574, 586, 496, 584, 1574, 586, 496, 584, 492, 588, 498, 582, 494, 586, 498, 582, 494, 584, 1574, 586, 1576, 586, 1574, 586, 1576, 586, 1574, 586, 1574, 586, 1576, 584, 1576, 584, 492, 588, 494, 586, 494, 584, 496, 584, 498, 582, 498, 582, 496, 582, 498, 582, 496, 584, 1574, 586, 494, 588, 1572, 586, 498, 582, 1572, 588, 498, 582, 494, 588, 496, 584, 496, 584, 496, 586, 492, 588, 492, 588, 498, 584, 496, 584, 494, 586, 496, 584, 496, 586, 490, 590, 494, 584, 492, 588, 496, 582, 494, 588, 494, 584, 496, 584, 498, 584, 494, 584, 1572, 590, 496, 584, 1572, 590, 494, 586, 492, 588, 494, 586, 1574, 584, 7420, 4424, 4316, 588, 1574, 588, 1574, 586, 1574, 586, 1572, 590, 500, 578, 496, 584, 1572, 588, 496, 582, 494, 588, 492, 588, 494, 584, 494, 586, 1574, 586, 1572, 588, 496, 584, 1576, 584, 494, 588, 492, 588, 492, 588, 494, 584, 492, 588, 494, 586, 1572, 588, 1628, 532, 1574, 588, 1570, 588, 1576, 586, 1574, 588, 1568, 590, 1574, 586, 498, 582, 498, 584, 496, 582, 496, 584, 496, 584, 496, 586, 494, 584, 494, 586, 496, 584, 1578, 584, 496, 586, 1626, 532, 500, 580, 1572, 588, 494, 586, 498, 584, 496, 582, 492, 586, 496, 586, 494, 586, 494, 584, 498, 582, 498, 582, 492, 588, 496, 584, 494, 584, 496, 584, 492, 588, 496, 582, 492, 590, 492, 588, 496, 584, 496, 582, 494, 590, 496, 582, 1574, 586, 492, 586, 1574, 586, 494, 586, 496, 584, 492, 588, 1572, 590}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x00, 0x00, 0x51};

Timestamp : 000085.361 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4424, 4316, 588, 1574, 586, 1576, 586, 1570, 588, 1574, 588, 494, 584, 496, 584, 1574, 586, 492, 588, 494, 584, 498, 582, 498, 584, 496, 582, 1574, 588, 1572, 588, 498, 580, 1574, 586, 494, 586, 492, 588, 492, 590, 494, 584, 494, 586, 494, 584, 1576, 586, 1578, 582, 1572, 590, 1572, 588, 1572, 590, 1570, 588, 1572, 588, 1572, 588, 496, 584, 498, 582, 492, 588, 496, 584, 498, 582, 496, 582, 498, 584, 496, 582, 496, 582, 1572, 590, 496, 584, 1572, 588, 496, 584, 1572, 588, 496, 586, 492, 590, 494, 582, 498, 582, 496, 584, 496, 584, 498, 580, 496, 584, 498, 582, 1572, 590, 1570, 588, 1576, 586, 494, 584, 496, 584, 496, 584, 496, 586, 490, 588, 496, 584, 492, 588, 494, 586, 490, 588, 1576, 586, 496, 586, 1576, 584, 496, 584, 1572, 588, 1574, 588, 494, 586, 7420, 4424, 4318, 586, 1626, 538, 1572, 588, 1574, 588, 1570, 588, 496, 584, 492, 588, 1572, 590, 494, 582, 494, 588, 496, 582, 496, 582, 492, 588, 1572, 588, 1578, 586, 494, 584, 1574, 586, 492, 588, 492, 588, 496, 584, 494, 586, 494, 586, 490, 588, 1576, 586, 1574, 588, 1574, 584, 1572, 588, 1576, 586, 1576, 586, 1578, 580, 1576, 584, 496, 582, 498, 584, 498, 582, 492, 588, 498, 582, 490, 588, 498, 582, 496, 584, 498, 584, 1576, 586, 494, 586, 1572, 588, 494, 586, 1572, 588, 496, 582, 496, 584, 492, 586, 498, 582, 496, 582, 494, 588, 496, 582, 492, 588, 498, 580, 1578, 584, 1574, 586, 1574, 588, 492, 588, 496, 582, 498, 582, 494, 584, 498, 584, 494, 586, 498, 582, 494, 584, 506, 576, 1572, 588, 500, 582, 1572, 588, 494, 586, 1572, 588, 1572, 588, 496, 584}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000087.822 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4422, 4320, 588, 1572, 588, 1572, 588, 1572, 588, 1578, 584, 496, 584, 548, 532, 1572, 590, 496, 582, 498, 582, 494, 588, 494, 586, 498, 582, 1574, 588, 1572, 588, 496, 584, 1574, 586, 492, 586, 498, 584, 500, 580, 496, 582, 498, 582, 496, 584, 1632, 528, 1574, 586, 1572, 590, 1572, 586, 1576, 586, 1576, 586, 1574, 586, 1572, 588, 496, 584, 496, 584, 494, 586, 496, 584, 494, 586, 494, 586, 494, 586, 494, 586, 496, 586, 1572, 586, 494, 588, 1572, 588, 496, 586, 1570, 590, 496, 582, 496, 584, 498, 582, 496, 584, 496, 582, 496, 584, 492, 588, 496, 584, 494, 584, 496, 584, 498, 582, 496, 584, 498, 584, 494, 584, 492, 586, 496, 584, 498, 584, 496, 582, 498, 580, 496, 584, 496, 584, 1572, 590, 492, 586, 1576, 584, 496, 584, 494, 586, 498, 582, 1576, 586, 7420, 4424, 4322, 582, 1572, 588, 1574, 588, 1572, 590, 1574, 586, 496, 582, 494, 586, 1576, 586, 494, 584, 496, 584, 496, 584, 492, 586, 492, 588, 1572, 588, 1572, 590, 494, 584, 1572, 590, 496, 584, 494, 584, 496, 584, 496, 584, 496, 584, 496, 582, 1576, 586, 1572, 588, 1572, 588, 1572, 590, 1570, 590, 1574, 588, 1574, 586, 1572, 588, 504, 576, 494, 584, 494, 586, 494, 584, 496, 584, 496, 584, 498, 582, 498, 582, 492, 588, 1572, 588, 494, 586, 1572, 588, 496, 582, 1572, 588, 494, 584, 498, 582, 494, 586, 496, 584, 496, 582, 492, 588, 496, 584, 494, 586, 498, 582, 496, 582, 492, 588, 496, 584, 496, 584, 496, 584, 492, 586, 498, 584, 492, 588, 496, 582, 496, 584, 494, 586, 496, 584, 1630, 530, 494, 586, 1576, 584, 554, 526, 548, 532, 494, 586, 1572, 588}; // UNKNOWN E2D990EB

Timestamp : 000089.077 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4422, 4318, 588, 1572, 586, 1580, 582, 1572, 590, 1572, 588, 498, 582, 496, 584, 1572, 590, 496, 584, 496, 584, 492, 588, 496, 586, 494, 584, 1572, 588, 1576, 584, 498, 582, 1572, 586, 498, 582, 496, 584, 496, 586, 494, 584, 496, 584, 498, 582, 1572, 588, 1576, 582, 1578, 582, 1576, 586, 1572, 588, 1580, 582, 1570, 590, 1572, 588, 492, 588, 496, 582, 498, 584, 490, 588, 496, 584, 492, 586, 498, 584, 496, 584, 496, 584, 1570, 590, 496, 586, 1572, 588, 496, 584, 1576, 584, 492, 588, 496, 584, 492, 588, 496, 584, 498, 582, 492, 586, 492, 588, 498, 582, 490, 590, 1576, 584, 1572, 588, 1572, 588, 498, 582, 496, 582, 496, 584, 492, 588, 496, 582, 496, 586, 496, 584, 496, 582, 496, 584, 1576, 586, 496, 584, 1572, 590, 492, 588, 1576, 584, 1574, 588, 492, 588, 7420, 4426, 4316, 588, 1572, 588, 1572, 588, 1626, 534, 1572, 590, 496, 582, 492, 590, 1570, 590, 496, 584, 494, 586, 492, 586, 498, 584, 496, 582, 1572, 588, 1572, 590, 496, 584, 1570, 590, 498, 580, 492, 590, 496, 584, 496, 584, 494, 584, 496, 584, 1572, 588, 1574, 586, 1572, 590, 1574, 586, 1572, 588, 1574, 586, 1572, 588, 1574, 588, 496, 582, 492, 586, 498, 584, 492, 586, 498, 582, 496, 586, 496, 582, 498, 582, 498, 582, 1572, 588, 492, 588, 1576, 586, 494, 586, 1572, 588, 498, 582, 496, 584, 502, 576, 498, 582, 496, 584, 494, 586, 496, 584, 496, 584, 492, 586, 1574, 588, 1572, 590, 1576, 586, 494, 584, 548, 532, 498, 580, 498, 582, 496, 584, 496, 582, 498, 584, 496, 586, 496, 584, 1572, 586, 498, 582, 1576, 586, 494, 586, 1578, 580, 1574, 588, 496, 584}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000090.337 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4426, 4314, 590, 1580, 580, 1574, 586, 1572, 588, 1572, 590, 546, 534, 494, 584, 1574, 586, 496, 584, 498, 584, 496, 582, 496, 586, 496, 584, 1572, 588, 1572, 588, 496, 582, 1572, 590, 494, 586, 494, 586, 496, 582, 498, 582, 498, 582, 498, 582, 1572, 590, 1570, 590, 1574, 586, 1574, 588, 1574, 586, 1576, 586, 1574, 586, 1570, 590, 494, 584, 496, 584, 496, 582, 498, 582, 496, 582, 498, 584, 496, 586, 494, 584, 496, 584, 1572, 588, 498, 582, 1574, 588, 492, 586, 1574, 586, 498, 584, 494, 584, 494, 584, 496, 582, 498, 582, 494, 584, 496, 584, 496, 586, 500, 578, 496, 586, 492, 586, 496, 584, 496, 584, 494, 588, 496, 584, 498, 582, 546, 534, 494, 584, 496, 584, 494, 586, 494, 584, 1576, 586, 498, 582, 1572, 588, 494, 586, 494, 586, 496, 582, 1570, 590, 7418, 4426, 4316, 590, 1572, 590, 1568, 590, 1572, 590, 1572, 588, 496, 584, 490, 590, 1576, 584, 492, 588, 496, 584, 496, 582, 498, 584, 494, 586, 1626, 534, 1572, 588, 494, 586, 1570, 590, 492, 588, 546, 534, 494, 586, 494, 584, 494, 586, 496, 584, 1572, 588, 1572, 588, 1574, 588, 1574, 584, 1576, 586, 1628, 532, 1572, 588, 1574, 586, 496, 582, 494, 586, 494, 586, 496, 584, 498, 580, 496, 584, 498, 582, 494, 586, 490, 588, 1572, 590, 494, 584, 1576, 584, 496, 584, 1572, 588, 494, 586, 494, 586, 494, 584, 496, 584, 496, 584, 494, 584, 492, 588, 496, 584, 496, 582, 496, 582, 494, 588, 496, 582, 498, 582, 496, 584, 496, 584, 496, 584, 496, 584, 498, 584, 496, 582, 550, 532, 494, 586, 1572, 588, 498, 582, 1572, 590, 492, 588, 492, 590, 494, 584, 1572, 586}; // UNKNOWN E2D990EB

Timestamp : 000091.515 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4426, 4314, 590, 1570, 588, 1574, 588, 1572, 590, 1574, 586, 496, 584, 494, 586, 1572, 588, 492, 588, 498, 580, 498, 582, 492, 588, 494, 586, 1576, 584, 1574, 588, 494, 586, 1570, 588, 496, 586, 498, 580, 498, 584, 496, 582, 494, 586, 496, 584, 1578, 584, 1574, 586, 1570, 590, 1574, 584, 1572, 590, 1574, 584, 1578, 582, 1570, 590, 498, 582, 492, 588, 492, 588, 496, 584, 494, 584, 498, 584, 494, 584, 498, 582, 496, 584, 1574, 588, 498, 580, 1578, 584, 496, 584, 1572, 588, 492, 588, 492, 588, 494, 584, 494, 586, 496, 582, 490, 590, 498, 580, 496, 584, 492, 588, 1574, 588, 1574, 586, 1572, 588, 494, 584, 496, 586, 498, 582, 496, 584, 494, 586, 496, 582, 494, 586, 496, 584, 496, 584, 1572, 590, 496, 582, 1574, 586, 498, 584, 1574, 586, 1572, 586, 498, 584, 7424, 4420, 4316, 588, 1572, 590, 1574, 588, 1570, 590, 1574, 584, 498, 582, 492, 586, 1572, 590, 492, 586, 498, 582, 492, 588, 494, 584, 496, 586, 1574, 584, 1572, 590, 496, 582, 1572, 588, 498, 584, 496, 582, 498, 582, 496, 584, 496, 584, 496, 584, 1572, 588, 1576, 584, 1572, 590, 1572, 588, 1574, 586, 1572, 588, 1572, 588, 1572, 588, 496, 584, 490, 590, 494, 586, 498, 582, 494, 586, 496, 584, 496, 582, 496, 584, 494, 586, 1574, 586, 498, 584, 1574, 584, 496, 586, 1572, 586, 492, 588, 498, 580, 498, 582, 496, 584, 496, 582, 492, 588, 496, 582, 494, 586, 494, 584, 1628, 532, 1574, 586, 1572, 588, 496, 582, 498, 582, 496, 582, 498, 582, 498, 582, 496, 584, 496, 582, 500, 582, 492, 588, 1580, 582, 492, 588, 1574, 586, 494, 586, 1572, 588, 1628, 532, 498, 582}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000093.894 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4426, 4372, 532, 1570, 588, 1572, 588, 1574, 588, 1574, 586, 492, 590, 496, 582, 1574, 588, 496, 584, 494, 586, 494, 584, 494, 586, 498, 582, 1574, 588, 1570, 588, 498, 582, 1574, 586, 494, 586, 496, 586, 496, 584, 494, 586, 496, 582, 496, 584, 1576, 584, 1574, 588, 1576, 584, 1572, 590, 1570, 588, 1572, 588, 1572, 590, 1570, 588, 494, 586, 496, 584, 498, 582, 496, 586, 546, 532, 496, 584, 496, 586, 494, 584, 496, 582, 1574, 588, 498, 582, 1574, 588, 490, 588, 1572, 590, 494, 584, 498, 582, 546, 532, 548, 530, 498, 582, 490, 590, 496, 582, 498, 584, 492, 588, 494, 584, 494, 586, 500, 580, 496, 582, 496, 584, 492, 588, 498, 582, 494, 586, 492, 588, 492, 588, 496, 584, 496, 584, 1574, 586, 496, 584, 1570, 590, 492, 590, 496, 584, 496, 584, 1574, 586, 7420, 4424, 4316, 592, 1570, 590, 1572, 588, 1572, 588, 1570, 590, 496, 582, 498, 584, 1570, 588, 496, 584, 492, 588, 498, 580, 496, 584, 496, 582, 1572, 588, 1576, 584, 494, 586, 1572, 588, 496, 584, 494, 586, 494, 584, 498, 584, 494, 586, 494, 584, 1572, 590, 1574, 588, 1570, 590, 1574, 588, 1570, 588, 1572, 588, 1572, 588, 1572, 588, 494, 588, 546, 534, 494, 586, 496, 584, 490, 592, 496, 582, 492, 588, 498, 582, 498, 582, 1574, 586, 492, 586, 1576, 586, 492, 588, 1574, 588, 496, 584, 546, 532, 498, 582, 494, 586, 498, 582, 496, 584, 496, 584, 496, 586, 496, 582, 498, 582, 492, 588, 496, 582, 498, 584, 492, 586, 498, 584, 492, 588, 494, 588, 496, 582, 498, 582, 498, 584, 494, 584, 1574, 588, 494, 584, 1574, 586, 496, 584, 496, 584, 496, 584, 1578, 584}; // UNKNOWN E2D990EB

Timestamp : 000095.042 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4422, 4372, 534, 1572, 588, 1572, 586, 1574, 588, 1572, 588, 496, 584, 492, 588, 1574, 586, 498, 582, 492, 588, 496, 584, 492, 586, 498, 582, 1572, 588, 1570, 590, 492, 588, 1574, 586, 492, 586, 494, 586, 494, 584, 498, 582, 496, 584, 496, 584, 1570, 590, 1572, 588, 1572, 588, 1572, 588, 1572, 588, 1572, 592, 1570, 586, 1574, 588, 490, 590, 496, 584, 498, 582, 496, 584, 496, 584, 494, 586, 496, 582, 494, 588, 498, 582, 1574, 586, 490, 590, 1628, 532, 496, 584, 1576, 584, 496, 584, 546, 534, 496, 584, 544, 534, 492, 588, 496, 584, 496, 584, 496, 584, 496, 584, 1576, 586, 1576, 588, 1570, 590, 494, 586, 494, 584, 496, 584, 492, 588, 496, 582, 494, 588, 494, 586, 494, 584, 496, 584, 1572, 588, 496, 584, 1626, 534, 494, 586, 1572, 590, 1578, 582, 492, 588, 7418, 4424, 4320, 586, 1572, 588, 1574, 586, 1572, 588, 1572, 590, 492, 586, 496, 582, 1574, 588, 494, 586, 496, 584, 496, 584, 496, 584, 494, 584, 1576, 586, 1576, 586, 496, 584, 1574, 586, 492, 588, 496, 584, 494, 584, 494, 584, 548, 532, 490, 590, 1576, 584, 1572, 588, 1572, 588, 1572, 588, 1572, 590, 1576, 584, 1572, 590, 1572, 588, 496, 582, 490, 590, 496, 584, 496, 582, 496, 584, 496, 584, 494, 584, 492, 588, 494, 584, 1574, 588, 498, 582, 1574, 588, 496, 584, 1572, 588, 494, 586, 496, 584, 492, 588, 498, 582, 500, 582, 490, 588, 496, 584, 494, 586, 498, 584, 1600, 560, 1576, 586, 1572, 588, 494, 588, 492, 586, 496, 584, 496, 584, 496, 584, 496, 582, 496, 582, 498, 584, 494, 586, 1572, 588, 492, 590, 1572, 586, 498, 584, 1574, 584, 1576, 586, 494, 586}; // UNKNOWN 1B6696D7

Timestamp : 000096.198 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4426, 4316, 590, 1578, 584, 1572, 588, 1572, 588, 1572, 586, 496, 584, 496, 584, 1572, 588, 496, 584, 498, 582, 496, 584, 490, 590, 494, 586, 1570, 590, 1576, 586, 492, 588, 1574, 586, 494, 584, 498, 582, 496, 582, 496, 584, 548, 532, 494, 586, 1570, 590, 1578, 582, 1576, 586, 1574, 586, 1574, 584, 1572, 588, 1572, 590, 1576, 584, 496, 582, 496, 586, 496, 582, 494, 586, 496, 584, 492, 586, 494, 586, 492, 590, 496, 582, 1576, 586, 494, 588, 1572, 588, 496, 582, 1576, 586, 496, 584, 494, 584, 494, 584, 494, 586, 496, 584, 492, 588, 492, 588, 492, 590, 494, 584, 492, 588, 492, 588, 492, 586, 498, 582, 498, 582, 496, 584, 494, 584, 494, 586, 502, 578, 496, 582, 498, 582, 496, 586, 1576, 586, 492, 586, 1572, 588, 494, 586, 496, 582, 496, 586, 1574, 586, 7420, 4426, 4314, 588, 1574, 588, 1570, 590, 1628, 532, 1572, 588, 494, 586, 492, 588, 1572, 588, 496, 584, 494, 586, 490, 586, 492, 588, 494, 588, 1572, 588, 1572, 590, 490, 588, 1572, 588, 498, 582, 496, 584, 496, 582, 494, 586, 496, 582, 498, 582, 1576, 584, 1572, 590, 1572, 588, 1572, 588, 1572, 588, 1628, 534, 1572, 590, 1572, 588, 496, 582, 496, 584, 492, 588, 490, 590, 498, 582, 490, 588, 494, 586, 496, 584, 490, 588, 1574, 588, 496, 582, 1576, 586, 496, 582, 1576, 586, 496, 584, 494, 586, 494, 584, 494, 586, 496, 586, 494, 584, 496, 584, 498, 584, 494, 584, 498, 582, 492, 586, 500, 580, 498, 582, 498, 582, 498, 584, 494, 586, 498, 582, 496, 584, 494, 588, 496, 582, 494, 586, 1576, 584, 496, 584, 1576, 586, 496, 584, 498, 584, 494, 584, 1574, 588}; // UNKNOWN E2D990EB

Timestamp : 000097.376 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4422, 4318, 590, 1570, 590, 1572, 588, 1574, 588, 1574, 586, 494, 584, 496, 584, 1576, 584, 496, 584, 496, 582, 492, 588, 494, 586, 496, 584, 1576, 584, 1576, 586, 548, 532, 1576, 584, 496, 584, 492, 588, 492, 586, 496, 584, 494, 586, 496, 584, 1574, 586, 1572, 588, 1574, 586, 1574, 590, 1570, 588, 1572, 588, 1576, 584, 1574, 588, 548, 532, 496, 582, 496, 584, 492, 588, 496, 584, 496, 584, 498, 584, 498, 582, 498, 582, 1574, 586, 496, 584, 1572, 588, 496, 584, 1570, 590, 492, 588, 492, 586, 494, 584, 496, 584, 542, 536, 498, 580, 496, 584, 496, 584, 498, 584, 1572, 588, 1572, 588, 1574, 588, 492, 586, 492, 588, 494, 584, 498, 580, 492, 590, 494, 584, 496, 584, 492, 588, 496, 584, 1572, 588, 498, 582, 1572, 592, 546, 530, 1576, 586, 1572, 586, 496, 586, 7418, 4422, 4318, 590, 1576, 582, 1574, 586, 1576, 584, 1572, 588, 498, 582, 492, 586, 1576, 586, 496, 584, 498, 582, 498, 580, 498, 584, 494, 584, 1572, 588, 1572, 588, 494, 586, 1576, 586, 496, 582, 494, 586, 498, 584, 496, 584, 550, 532, 494, 586, 1574, 586, 1572, 588, 1572, 588, 1572, 588, 1572, 588, 1572, 588, 1576, 584, 1572, 588, 548, 532, 496, 584, 494, 584, 494, 586, 498, 582, 492, 586, 498, 582, 498, 584, 492, 586, 1574, 586, 494, 586, 1578, 580, 498, 582, 1576, 584, 494, 586, 498, 584, 496, 584, 494, 584, 496, 586, 494, 586, 498, 582, 498, 582, 494, 584, 1574, 586, 1576, 584, 1576, 586, 494, 584, 496, 584, 496, 584, 498, 580, 496, 584, 496, 586, 494, 586, 494, 584, 496, 584, 1576, 586, 496, 582, 1576, 586, 494, 586, 1576, 586, 1576, 586, 500, 580}; // UNKNOWN 1B6696D7

Timestamp : 000098.724 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4424, 4314, 590, 1578, 582, 1572, 590, 1572, 588, 1576, 586, 494, 584, 492, 588, 1578, 582, 496, 586, 496, 582, 492, 588, 492, 586, 496, 584, 1572, 588, 1572, 588, 498, 582, 1576, 586, 498, 582, 500, 580, 490, 590, 548, 532, 496, 584, 492, 588, 1572, 588, 1572, 590, 1574, 586, 1578, 582, 1576, 584, 1578, 584, 1572, 588, 1578, 586, 492, 586, 494, 586, 494, 586, 498, 582, 492, 588, 494, 588, 490, 588, 498, 582, 494, 588, 1570, 590, 494, 586, 1570, 590, 546, 532, 1576, 584, 496, 584, 496, 584, 496, 584, 496, 584, 494, 586, 496, 582, 498, 582, 496, 584, 498, 582, 496, 584, 496, 584, 494, 586, 490, 590, 490, 588, 494, 584, 496, 582, 496, 584, 496, 582, 494, 588, 494, 584, 494, 588, 1576, 586, 496, 584, 1574, 584, 498, 584, 496, 584, 546, 534, 1572, 588, 7418, 4426, 4316, 588, 1576, 584, 1576, 586, 1576, 584, 1576, 586, 494, 588, 494, 584, 1572, 588, 496, 586, 494, 584, 494, 586, 548, 532, 498, 580, 1574, 588, 1572, 590, 492, 586, 1572, 590, 496, 584, 498, 582, 494, 586, 496, 584, 498, 582, 498, 584, 1574, 584, 1578, 582, 1578, 584, 1576, 584, 1572, 586, 1576, 588, 1574, 584, 1574, 586, 496, 584, 494, 586, 496, 582, 496, 584, 494, 584, 500, 580, 496, 582, 492, 588, 500, 580, 1572, 588, 496, 584, 1576, 584, 548, 532, 1572, 588, 498, 580, 494, 586, 498, 584, 494, 584, 498, 582, 498, 582, 494, 586, 496, 584, 498, 582, 492, 588, 498, 582, 494, 584, 492, 588, 494, 584, 492, 586, 492, 586, 496, 584, 496, 584, 494, 586, 494, 584, 494, 588, 1572, 588, 492, 588, 1572, 588, 492, 586, 494, 586, 494, 586, 1574, 586}; // UNKNOWN E2D990EB

Timestamp : 000099.960 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4416, 4316, 590, 1572, 588, 1574, 586, 1572, 588, 1572, 588, 496, 584, 494, 586, 1572, 588, 496, 582, 498, 582, 498, 582, 492, 590, 490, 590, 1574, 584, 1574, 586, 496, 584, 1574, 586, 498, 584, 496, 584, 496, 582, 492, 588, 496, 586, 494, 582, 1576, 584, 1572, 590, 1572, 588, 1574, 586, 1574, 588, 1578, 582, 1576, 586, 1578, 582, 498, 584, 490, 588, 492, 588, 496, 582, 494, 588, 496, 582, 496, 584, 496, 582, 496, 584, 1574, 588, 496, 582, 1574, 588, 498, 582, 1574, 586, 496, 586, 494, 582, 496, 582, 498, 582, 496, 586, 496, 582, 496, 584, 498, 582, 498, 582, 1574, 588, 1574, 586, 1574, 586, 496, 584, 492, 588, 494, 584, 494, 586, 494, 588, 494, 584, 496, 584, 498, 582, 498, 582, 1576, 584, 496, 584, 1572, 588, 548, 532, 1572, 588, 1574, 586, 498, 580, 7422, 4424, 4318, 586, 1572, 588, 1574, 588, 1572, 586, 1576, 584, 496, 584, 496, 584, 1572, 588, 494, 588, 494, 586, 496, 582, 494, 586, 496, 586, 1574, 582, 1576, 584, 496, 584, 1572, 590, 494, 584, 492, 586, 496, 584, 492, 586, 498, 582, 496, 586, 1572, 586, 1574, 588, 1574, 586, 1572, 588, 1586, 574, 1574, 586, 1574, 586, 1578, 584, 492, 586, 492, 588, 496, 584, 492, 588, 498, 580, 496, 586, 496, 582, 494, 586, 496, 582, 1576, 586, 498, 582, 1574, 586, 494, 586, 1574, 584, 496, 584, 496, 586, 494, 586, 494, 584, 496, 586, 496, 582, 494, 586, 492, 588, 496, 582, 1580, 580, 1574, 586, 1574, 584, 498, 582, 502, 578, 496, 584, 494, 586, 494, 586, 498, 582, 496, 584, 496, 584, 494, 586, 1572, 586, 496, 586, 1574, 586, 494, 586, 1574, 586, 1574, 588, 492, 586}; // UNKNOWN 1B6696D7

Timestamp : 000101.203 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4424, 4318, 588, 1572, 590, 1580, 580, 1574, 586, 1574, 588, 496, 584, 492, 588, 1572, 588, 496, 584, 496, 582, 500, 582, 496, 582, 496, 584, 1572, 588, 1572, 590, 494, 586, 1572, 588, 492, 588, 496, 584, 490, 590, 496, 582, 496, 584, 548, 534, 1570, 590, 1578, 580, 1576, 586, 1574, 588, 1572, 586, 1576, 586, 1574, 588, 1572, 588, 498, 582, 494, 586, 492, 588, 500, 578, 494, 586, 496, 584, 496, 584, 496, 584, 498, 580, 1572, 588, 498, 582, 1572, 588, 496, 584, 1578, 584, 498, 584, 494, 584, 494, 586, 494, 584, 496, 582, 492, 588, 496, 584, 492, 586, 498, 582, 548, 532, 490, 588, 496, 584, 498, 582, 548, 532, 498, 582, 498, 582, 496, 584, 496, 584, 496, 582, 496, 586, 496, 582, 1576, 586, 490, 588, 1574, 588, 496, 584, 498, 582, 496, 582, 1574, 586, 7420, 4424, 4316, 592, 1572, 588, 1572, 588, 1576, 586, 1574, 586, 490, 590, 548, 532, 1572, 590, 492, 586, 494, 586, 496, 584, 496, 584, 492, 588, 1574, 588, 1570, 588, 496, 584, 1574, 586, 496, 584, 496, 584, 496, 584, 496, 584, 496, 582, 496, 584, 1580, 582, 1572, 586, 1578, 584, 1572, 590, 1576, 586, 1574, 588, 1574, 586, 1574, 586, 494, 586, 496, 582, 494, 586, 496, 584, 496, 586, 496, 582, 496, 582, 498, 582, 494, 586, 1580, 578, 496, 586, 1574, 586, 496, 584, 1572, 588, 492, 588, 494, 584, 496, 584, 498, 582, 492, 588, 496, 584, 498, 582, 492, 586, 496, 584, 498, 582, 492, 590, 494, 584, 494, 586, 492, 586, 496, 584, 496, 584, 492, 588, 492, 590, 496, 584, 506, 572, 496, 584, 1576, 584, 492, 588, 1576, 586, 494, 586, 496, 584, 490, 588, 1630, 532}; // UNKNOWN E2D990EB

Timestamp : 000102.257 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4416, 4316, 588, 1572, 588, 1574, 586, 1572, 588, 1572, 588, 496, 584, 496, 582, 1574, 588, 498, 582, 496, 584, 494, 586, 492, 586, 494, 588, 1570, 590, 1574, 584, 492, 588, 1572, 588, 496, 586, 498, 582, 492, 588, 496, 582, 496, 586, 548, 532, 1570, 590, 1572, 588, 1572, 588, 1572, 588, 1628, 532, 1572, 588, 1574, 584, 1576, 586, 490, 588, 542, 538, 496, 584, 492, 590, 492, 588, 496, 582, 496, 584, 494, 584, 492, 588, 1572, 588, 496, 584, 1572, 590, 496, 584, 1572, 586, 498, 582, 492, 588, 498, 580, 496, 584, 496, 584, 492, 588, 494, 586, 492, 588, 498, 582, 1572, 588, 1628, 532, 1574, 586, 498, 584, 494, 584, 496, 584, 498, 582, 496, 584, 494, 588, 496, 584, 548, 532, 496, 580, 1574, 588, 492, 588, 1574, 586, 496, 582, 1574, 590, 1572, 588, 494, 588, 7428, 4414, 4316, 590, 1576, 584, 1578, 582, 1574, 588, 1576, 582, 496, 584, 496, 584, 1572, 588, 496, 584, 496, 584, 498, 582, 494, 588, 498, 582, 1574, 588, 1572, 590, 496, 584, 1576, 586, 496, 584, 496, 584, 492, 586, 496, 586, 496, 584, 494, 586, 1572, 588, 1574, 586, 1572, 590, 1574, 586, 1572, 588, 1574, 586, 1572, 590, 1574, 588, 492, 588, 496, 584, 496, 582, 496, 584, 500, 580, 494, 586, 494, 584, 496, 584, 494, 586, 1574, 586, 498, 582, 1576, 584, 496, 582, 1574, 588, 496, 582, 496, 584, 494, 584, 494, 588, 496, 582, 498, 584, 496, 582, 498, 582, 498, 584, 1572, 586, 1576, 586, 1574, 586, 494, 586, 492, 586, 494, 586, 494, 586, 498, 580, 496, 582, 494, 586, 498, 584, 496, 582, 1576, 586, 498, 582, 1578, 582, 492, 588, 1572, 588, 1572, 588, 490, 588}; // UNKNOWN 1B6696D7

Timestamp : 000103.378 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4424, 4324, 582, 1572, 590, 1572, 588, 1572, 590, 1576, 584, 540, 540, 498, 582, 1578, 584, 492, 586, 494, 584, 494, 588, 496, 584, 490, 590, 1574, 588, 1570, 588, 492, 586, 1574, 588, 492, 588, 490, 590, 498, 582, 496, 584, 492, 588, 496, 584, 1572, 588, 1572, 588, 1572, 588, 1572, 590, 1572, 588, 1628, 530, 1576, 586, 1574, 586, 490, 592, 494, 584, 492, 588, 492, 586, 496, 586, 498, 582, 492, 586, 494, 586, 494, 584, 1572, 588, 496, 584, 1572, 590, 496, 584, 1578, 584, 496, 584, 492, 586, 496, 586, 496, 584, 496, 582, 494, 584, 496, 584, 496, 584, 496, 584, 496, 584, 496, 584, 494, 588, 490, 588, 500, 580, 498, 584, 492, 588, 492, 586, 494, 584, 498, 584, 496, 582, 498, 584, 1572, 590, 494, 582, 1576, 586, 548, 532, 494, 586, 496, 584, 1572, 588, 7420, 4426, 4320, 586, 1570, 590, 1574, 584, 1574, 586, 1576, 586, 494, 584, 496, 584, 1572, 588, 494, 586, 496, 584, 496, 582, 498, 584, 496, 584, 1570, 590, 1570, 590, 496, 584, 1574, 586, 500, 580, 494, 586, 496, 584, 496, 584, 546, 532, 496, 586, 1576, 584, 1572, 588, 1576, 582, 1574, 590, 1570, 590, 1572, 588, 1570, 590, 1572, 588, 496, 584, 496, 584, 496, 584, 496, 582, 496, 584, 496, 586, 494, 582, 494, 588, 496, 582, 1628, 532, 498, 582, 1574, 586, 498, 584, 1572, 586, 494, 584, 498, 582, 496, 586, 494, 584, 496, 584, 500, 582, 494, 586, 496, 584, 492, 588, 496, 584, 494, 586, 496, 584, 496, 584, 494, 586, 496, 584, 494, 584, 496, 584, 496, 584, 498, 582, 496, 584, 496, 582, 1572, 590, 492, 586, 1572, 590, 496, 584, 496, 582, 498, 582, 1572, 588}; // UNKNOWN E2D990EB

Timestamp : 000104.485 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4424, 4316, 588, 1572, 588, 1574, 586, 1572, 588, 1574, 586, 494, 588, 492, 586, 1572, 588, 496, 584, 498, 584, 496, 582, 494, 586, 498, 582, 1576, 586, 1572, 586, 496, 586, 1574, 586, 496, 584, 492, 588, 496, 584, 496, 582, 496, 584, 496, 584, 1570, 588, 1576, 586, 1572, 588, 1572, 588, 1576, 584, 1572, 588, 1572, 588, 1572, 590, 496, 582, 496, 582, 498, 584, 492, 588, 496, 584, 494, 584, 498, 582, 494, 586, 492, 586, 1574, 588, 496, 584, 1572, 588, 494, 586, 1580, 580, 496, 584, 496, 584, 496, 582, 494, 586, 492, 588, 496, 584, 496, 584, 496, 586, 494, 586, 1574, 584, 1576, 586, 1572, 590, 494, 582, 496, 584, 496, 586, 496, 582, 496, 586, 492, 588, 500, 580, 494, 584, 496, 582, 1574, 588, 492, 586, 1576, 586, 494, 586, 1576, 584, 1572, 590, 494, 584, 7426, 4418, 4316, 590, 1570, 588, 1572, 588, 1572, 590, 1572, 590, 494, 584, 494, 586, 1574, 586, 550, 532, 496, 582, 496, 584, 498, 580, 498, 584, 1572, 588, 1574, 588, 498, 582, 1570, 590, 496, 582, 496, 584, 496, 586, 494, 586, 492, 586, 548, 532, 1624, 536, 1572, 588, 1572, 590, 1628, 534, 1570, 590, 1574, 586, 1572, 588, 1576, 586, 494, 586, 494, 586, 498, 582, 496, 584, 496, 586, 490, 588, 492, 586, 496, 584, 496, 582, 1574, 590, 490, 590, 1570, 588, 496, 584, 1574, 586, 500, 580, 494, 586, 496, 584, 496, 584, 496, 584, 496, 584, 494, 582, 494, 588, 496, 582, 1574, 588, 1572, 588, 1572, 590, 496, 584, 492, 588, 496, 586, 492, 588, 492, 588, 496, 584, 492, 588, 494, 588, 494, 584, 1574, 586, 494, 586, 1576, 586, 498, 582, 1572, 588, 1572, 588, 496, 586}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000105.795 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4418, 4316, 590, 1574, 586, 1572, 588, 1578, 582, 1572, 588, 494, 586, 498, 584, 1574, 584, 492, 588, 496, 582, 496, 584, 494, 586, 496, 582, 1574, 588, 1578, 582, 498, 584, 1574, 586, 496, 584, 490, 588, 492, 588, 494, 584, 496, 584, 496, 586, 1572, 588, 1578, 582, 1572, 588, 1572, 590, 1576, 586, 1570, 588, 1576, 586, 1578, 582, 494, 586, 492, 586, 492, 588, 496, 584, 496, 584, 496, 582, 498, 584, 494, 586, 496, 584, 1572, 588, 492, 590, 1570, 590, 496, 582, 1574, 586, 496, 584, 496, 584, 496, 584, 496, 584, 492, 588, 496, 584, 492, 588, 496, 584, 496, 584, 498, 582, 494, 586, 546, 532, 494, 586, 496, 582, 496, 582, 496, 584, 496, 584, 498, 582, 492, 588, 500, 582, 548, 530, 1572, 590, 496, 584, 1572, 590, 496, 584, 498, 582, 548, 530, 1630, 532, 7420, 4424, 4316, 588, 1574, 586, 1572, 588, 1572, 590, 1570, 590, 498, 582, 498, 584, 1572, 588, 492, 588, 494, 584, 496, 584, 492, 588, 494, 584, 1580, 582, 1572, 588, 498, 582, 1574, 586, 496, 584, 496, 584, 490, 588, 496, 584, 498, 582, 494, 586, 1576, 584, 1572, 588, 1574, 588, 1576, 584, 1574, 586, 1576, 586, 1574, 586, 1574, 586, 494, 584, 492, 588, 496, 584, 496, 584, 548, 532, 496, 584, 496, 584, 496, 584, 494, 584, 1574, 588, 498, 582, 1572, 590, 494, 584, 1576, 582, 494, 588, 496, 584, 494, 586, 500, 580, 496, 584, 496, 584, 496, 584, 496, 582, 496, 584, 550, 530, 498, 582, 496, 586, 496, 584, 494, 584, 494, 588, 496, 584, 496, 584, 498, 584, 494, 586, 496, 584, 492, 588, 1572, 588, 496, 584, 1572, 588, 496, 582, 494, 586, 496, 584, 1576, 586}; // UNKNOWN E2D990EB

Timestamp : 000106.898 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4424, 4316, 588, 1572, 588, 1572, 588, 1574, 588, 1572, 590, 494, 586, 490, 590, 1570, 590, 496, 584, 492, 588, 494, 584, 496, 584, 492, 586, 1576, 586, 1576, 584, 496, 584, 1572, 588, 498, 584, 494, 584, 496, 584, 490, 588, 492, 588, 498, 584, 1574, 584, 1574, 588, 1626, 532, 1576, 584, 1576, 586, 1576, 586, 1574, 586, 1628, 532, 496, 584, 496, 584, 496, 584, 496, 584, 496, 586, 494, 584, 496, 584, 494, 584, 496, 584, 1572, 588, 496, 584, 1572, 588, 492, 588, 1574, 588, 494, 586, 496, 584, 494, 584, 496, 582, 498, 584, 494, 586, 494, 588, 494, 584, 496, 584, 1572, 590, 1578, 580, 1572, 588, 496, 582, 496, 586, 494, 586, 498, 582, 494, 584, 496, 584, 494, 586, 498, 580, 490, 590, 1576, 584, 498, 584, 1574, 586, 496, 584, 1574, 586, 1574, 586, 494, 584, 7418, 4428, 4314, 590, 1570, 590, 1576, 586, 1576, 584, 1570, 590, 494, 584, 496, 584, 1572, 588, 496, 586, 496, 582, 498, 580, 498, 584, 496, 584, 1572, 590, 1576, 586, 494, 584, 1574, 588, 492, 588, 498, 584, 494, 584, 496, 584, 492, 588, 498, 582, 1572, 588, 1574, 586, 1572, 588, 1574, 586, 1576, 586, 1576, 586, 1570, 590, 1574, 588, 494, 584, 496, 584, 494, 588, 494, 584, 494, 586, 496, 584, 494, 586, 492, 588, 490, 590, 1568, 590, 492, 588, 1570, 590, 492, 588, 1574, 586, 496, 584, 492, 588, 498, 584, 496, 584, 496, 584, 496, 584, 494, 588, 494, 584, 496, 584, 1574, 584, 1572, 588, 1572, 588, 494, 584, 500, 582, 494, 584, 490, 590, 492, 588, 496, 584, 494, 584, 496, 584, 494, 586, 1570, 590, 496, 582, 1576, 586, 492, 586, 1572, 590, 1570, 590, 496, 584}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000108.135 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4424, 4316, 590, 1574, 586, 1576, 584, 1572, 590, 1576, 584, 492, 588, 498, 584, 1574, 586, 494, 586, 496, 582, 496, 584, 490, 592, 492, 586, 1570, 592, 1570, 588, 496, 584, 1574, 586, 496, 582, 494, 586, 492, 588, 494, 586, 496, 584, 496, 586, 1576, 582, 1576, 586, 1574, 586, 1576, 586, 1572, 588, 1578, 582, 1572, 590, 1576, 584, 496, 586, 494, 584, 496, 586, 496, 582, 496, 586, 496, 584, 490, 590, 494, 586, 492, 588, 1570, 590, 490, 590, 1572, 588, 490, 590, 1628, 532, 496, 584, 496, 582, 496, 584, 496, 582, 498, 582, 498, 582, 496, 584, 496, 586, 494, 586, 492, 588, 496, 584, 492, 588, 496, 584, 496, 584, 544, 536, 494, 586, 494, 584, 496, 584, 492, 588, 496, 584, 492, 588, 1574, 588, 498, 580, 1574, 588, 494, 584, 494, 586, 494, 586, 1570, 590, 7422, 4424, 4316, 590, 1572, 586, 1576, 584, 1576, 586, 1576, 584, 496, 582, 496, 584, 1576, 586, 496, 584, 496, 584, 494, 586, 496, 584, 496, 584, 1572, 588, 1576, 584, 548, 530, 1574, 588, 494, 586, 496, 584, 494, 588, 494, 584, 498, 584, 494, 586, 1578, 584, 1572, 586, 1576, 586, 1572, 588, 1570, 590, 1574, 586, 1574, 584, 1572, 590, 496, 584, 496, 584, 494, 584, 496, 584, 490, 590, 492, 586, 492, 590, 492, 586, 498, 582, 1574, 588, 494, 586, 1574, 586, 496, 584, 1574, 586, 496, 584, 494, 586, 496, 584, 494, 584, 494, 586, 494, 586, 496, 582, 498, 582, 496, 584, 494, 584, 494, 586, 498, 584, 494, 584, 496, 582, 498, 582, 490, 588, 494, 588, 496, 584, 496, 584, 498, 582, 496, 584, 1574, 586, 496, 582, 1576, 584, 494, 588, 496, 584, 496, 584, 1576, 584}; // UNKNOWN E2D990EB

Timestamp : 000109.318 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4424, 4316, 590, 1572, 590, 1572, 588, 1576, 586, 1576, 584, 544, 534, 496, 584, 1572, 588, 498, 584, 494, 584, 492, 588, 492, 588, 494, 586, 1574, 588, 1572, 588, 490, 590, 1574, 586, 494, 586, 492, 586, 494, 588, 494, 586, 496, 582, 496, 586, 1574, 588, 1572, 590, 1572, 586, 1574, 586, 1574, 588, 1572, 590, 1572, 590, 1574, 586, 494, 584, 496, 584, 496, 582, 496, 586, 496, 584, 496, 584, 492, 588, 496, 584, 492, 590, 1574, 586, 496, 582, 1572, 588, 496, 584, 1574, 588, 498, 582, 492, 586, 494, 586, 496, 580, 496, 588, 494, 584, 496, 582, 498, 584, 494, 584, 1576, 584, 1572, 590, 1572, 588, 496, 584, 492, 588, 494, 586, 494, 584, 494, 586, 548, 534, 494, 584, 496, 584, 490, 590, 1574, 586, 496, 582, 1572, 588, 492, 588, 1574, 586, 1576, 584, 498, 582, 7420, 4426, 4322, 582, 1572, 590, 1576, 584, 1572, 588, 1572, 588, 496, 584, 548, 532, 1572, 588, 498, 582, 494, 584, 496, 586, 496, 582, 498, 582, 1570, 590, 1576, 584, 496, 584, 1572, 588, 498, 582, 496, 584, 496, 582, 496, 584, 496, 584, 498, 582, 1572, 588, 1576, 586, 1572, 588, 1574, 588, 1574, 586, 1572, 588, 1574, 586, 1572, 588, 498, 582, 496, 584, 498, 582, 498, 582, 550, 532, 492, 588, 496, 582, 496, 586, 496, 584, 1572, 588, 494, 586, 1576, 584, 496, 582, 1572, 590, 496, 584, 498, 582, 494, 586, 498, 580, 498, 582, 498, 582, 498, 582, 496, 584, 494, 586, 1576, 584, 1570, 590, 1576, 586, 494, 586, 496, 584, 498, 582, 498, 582, 496, 584, 494, 586, 492, 588, 496, 586, 496, 582, 1576, 586, 496, 586, 1570, 590, 492, 586, 1572, 588, 1572, 588, 496, 582}; // UNKNOWN 1B6696D7

Timestamp : 000110.420 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150000051 (72 Bits) Mesg Desc.: Power: On, Mode: 0 (Auto), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4424, 4316, 588, 1574, 586, 1576, 584, 1574, 586, 1576, 584, 494, 586, 492, 588, 1572, 588, 492, 588, 496, 584, 494, 586, 496, 584, 498, 582, 1574, 584, 1576, 584, 498, 582, 1574, 586, 494, 588, 496, 584, 492, 586, 498, 584, 492, 588, 492, 588, 1572, 588, 1574, 586, 1574, 586, 1578, 582, 1576, 584, 1574, 586, 1574, 588, 1574, 586, 496, 584, 496, 582, 498, 582, 494, 586, 496, 582, 498, 582, 494, 586, 496, 584, 492, 588, 1574, 588, 498, 580, 1582, 580, 496, 582, 1576, 586, 492, 586, 498, 582, 498, 582, 496, 582, 494, 586, 496, 584, 490, 588, 494, 586, 494, 586, 496, 584, 494, 588, 494, 586, 496, 582, 494, 586, 498, 582, 496, 586, 492, 588, 496, 582, 498, 582, 498, 582, 498, 582, 1580, 580, 496, 582, 1574, 588, 498, 582, 494, 586, 496, 582, 1574, 588, 7420, 4422, 4320, 586, 1576, 584, 1574, 586, 1576, 584, 1574, 590, 490, 588, 496, 580, 1580, 582, 498, 582, 492, 588, 492, 588, 496, 584, 496, 582, 1578, 582, 1576, 586, 496, 582, 1574, 586, 498, 584, 492, 586, 498, 582, 494, 586, 496, 584, 492, 586, 1578, 582, 1574, 588, 1572, 586, 1580, 578, 1576, 586, 1574, 586, 1574, 586, 1576, 586, 548, 532, 492, 586, 494, 586, 496, 584, 494, 586, 498, 582, 492, 588, 496, 584, 494, 584, 1574, 588, 492, 586, 1574, 586, 494, 586, 1630, 530, 492, 586, 498, 582, 498, 582, 494, 586, 496, 584, 494, 586, 494, 586, 494, 586, 496, 586, 494, 586, 498, 582, 494, 588, 492, 586, 498, 584, 494, 586, 494, 584, 492, 588, 496, 584, 494, 584, 494, 586, 494, 584, 1574, 586, 494, 586, 1574, 586, 496, 584, 494, 586, 498, 582, 1574, 586}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x00, 0x00, 0x51};

Timestamp : 000111.555 Library : v2.7.8

Protocol : TOSHIBA_AC Code : 0xF20D03FC0150070056 (72 Bits) Mesg Desc.: Power: Off, Mode: 3 (Heat), Temp: 22C, Fan: 0 (Auto) uint16_t rawData[295] = {4418, 4324, 580, 1578, 580, 1580, 582, 1578, 584, 1578, 582, 496, 582, 498, 582, 1580, 584, 496, 582, 498, 582, 502, 578, 498, 582, 498, 584, 1578, 582, 1580, 580, 498, 584, 1578, 582, 498, 580, 502, 578, 498, 584, 498, 582, 500, 580, 496, 584, 1578, 584, 1576, 582, 1584, 550, 1604, 584, 1576, 582, 1578, 582, 1582, 578, 1580, 582, 502, 578, 500, 580, 496, 556, 524, 582, 498, 584, 496, 582, 498, 580, 498, 582, 498, 582, 1580, 582, 496, 582, 1578, 582, 502, 578, 1578, 582, 498, 552, 528, 580, 498, 580, 500, 574, 504, 580, 502, 576, 502, 580, 498, 582, 498, 582, 1578, 556, 1612, 548, 1610, 550, 526, 580, 498, 584, 496, 584, 496, 582, 498, 572, 508, 582, 496, 582, 500, 580, 500, 554, 1604, 582, 498, 582, 1584, 550, 526, 582, 1578, 582, 1578, 582, 502, 548, 7458, 4414, 4324, 580, 1580, 584, 1578, 554, 1608, 582, 1578, 582, 498, 554, 526, 580, 1582, 578, 504, 550, 528, 578, 504, 552, 524, 580, 500, 554, 1612, 550, 1662, 500, 530, 550, 1606, 582, 498, 580, 500, 580, 498, 580, 500, 554, 532, 548, 526, 554, 1608, 580, 1580, 582, 1578, 582, 1580, 582, 1590, 542, 1610, 578, 1584, 578, 1584, 562, 512, 582, 496, 582, 502, 576, 500, 582, 502, 550, 526, 580, 500, 578, 498, 584, 496, 580, 1580, 580, 504, 550, 1606, 582, 502, 576, 1580, 582, 498, 554, 526, 582, 500, 578, 500, 580, 500, 582, 498, 582, 498, 582, 560, 492, 528, 552, 1606, 554, 1608, 582, 1578, 556, 526, 578, 500, 580, 500, 582, 498, 580, 498, 554, 532, 546, 530, 578, 498, 556, 524, 582, 1576, 584, 498, 582, 1578, 584, 496, 580, 1580, 584, 1578, 582, 498, 582}; // TOSHIBA_AC uint8_t state[9] = {0xF2, 0x0D, 0x03, 0xFC, 0x01, 0x50, 0x07, 0x00, 0x56};

Timestamp : 000112.783 Library : v2.7.8

Protocol : UNKNOWN Code : 0xE2D990EB (148 Bits) uint16_t rawData[295] = {4416, 4322, 584, 1582, 548, 1612, 548, 1606, 582, 1578, 580, 500, 580, 500, 554, 1604, 556, 524, 564, 516, 582, 498, 580, 498, 584, 498, 582, 1578, 584, 1578, 554, 526, 580, 1578, 584, 496, 582, 498, 578, 500, 580, 500, 580, 498, 554, 526, 582, 1578, 582, 1580, 584, 1576, 584, 1578, 580, 1580, 554, 1606, 582, 1578, 556, 1604, 582, 500, 582, 500, 552, 530, 548, 526, 582, 498, 582, 498, 582, 498, 582, 496, 582, 498, 580, 1582, 554, 524, 582, 1580, 582, 500, 554, 1606, 580, 500, 554, 526, 582, 498, 582, 498, 580, 500, 554, 532, 546, 526, 582, 496, 556, 582, 498, 528, 550, 528, 580, 498, 580, 500, 580, 500, 580, 500, 584, 496, 584, 500, 580, 496, 582, 498, 554, 526, 580, 498, 584, 1578, 552, 526, 582, 1578, 582, 510, 542, 530, 550, 528, 578, 1580, 580, 7430, 4418, 4322, 582, 1578, 554, 1608, 582, 1580, 578, 1580, 580, 504, 550, 526, 576, 1584, 582, 498, 582, 498, 582, 498, 582, 504, 548, 526, 582, 1578, 582, 1578, 582, 498, 556, 1606, 552, 526, 554, 526, 580, 498, 582, 498, 580, 504, 550, 526, 582, 1578, 582, 1578, 582, 1578, 584, 1578, 582, 1580, 580, 1580, 580, 1580, 580, 1580, 554, 526, 580, 500, 556, 526, 580, 498, 580, 500, 582, 496, 582, 502, 550, 526, 582, 498, 580, 1582, 568, 512, 580, 1580, 582, 498, 580, 1582, 582, 554, 498, 526, 554, 526, 580, 498, 584, 498, 552, 584, 496, 528, 552, 528, 580, 500, 578, 500, 582, 498, 582, 510, 542, 528, 580, 498, 554, 526, 556, 524, 582, 496, 584, 498, 554, 528, 552, 526, 554, 526, 554, 1606, 582, 498, 584, 1578, 582, 498, 582, 498, 554, 532, 546, 1608, 584}; // UNKNOWN E2D990EB

Timestamp : 000113.763 Library : v2.7.8

Protocol : UNKNOWN Code : 0x1B6696D7 (148 Bits) uint16_t rawData[295] = {4418, 4322, 582, 1580, 582, 1580, 554, 1606, 582, 1578, 582, 498, 584, 502, 550, 1608, 552, 526, 582, 498, 554, 532, 550, 524, 580, 554, 498, 1610, 580, 1578, 580, 498, 582, 1578, 554, 528, 580, 504, 548, 530, 550, 526, 582, 498, 584, 496, 582, 1578, 582, 1580, 582, 1578, 580, 1578, 582, 1578, 572, 1588, 582, 1578, 554, 1606, 556, 524, 582, 498, 554, 526, 558, 522, 580, 500, 554, 526, 580, 498, 582, 498, 582, 500, 578, 1580, 554, 524, 556, 1606, 584, 500, 552, 1604, 554, 526, 582, 498, 582, 498, 554, 526, 582, 498, 582, 496, 584, 496, 582, 500, 578, 498, 554, 1608, 554, 1604, 584, 1578, 582, 498, 582, 498, 576, 504, 556, 524, 580, 498, 582, 500, 582, 498, 552, 526, 582, 498, 582, 1580, 582, 498, 582, 1580, 552, 526, 584, 1580, 578, 1582, 580, 498, 582, 7426, 4416, 4324, 580, 1578, 582, 1592, 540, 1612, 550, 1606, 582, 498, 580, 500, 582, 1578, 582, 500, 552, 526, 582, 504, 548, 536, 542, 530, 558, 1602, 552, 1606, 580, 500, 582, 1578, 582, 500, 552, 584, 498, 526, 554, 526, 582, 498, 580, 500, 554, 1608, 582, 1578, 582, 1580, 582, 1576, 582, 1580, 582, 1578, 582, 1578, 554, 1608, 552, 528, 580, 500, 580, 500, 554, 528, 578, 506, 548, 528, 552, 526, 552, 528, 580, 504, 550, 1606, 582, 498, 582, 1580, 552, 526, 582, 1584, 546, 528, 552, 526, 554, 582, 498, 526, 554, 526, 554, 524, 582, 500, 552, 530, 578, 500, 554, 1608, 570, 1590, 580, 1592, 544, 528, 552, 524, 582, 498, 554, 532, 548, 528, 552, 526, 582, 500, 582, 498, 580, 498, 582, 1578, 582, 500, 552, 1606, 580, 500, 580, 1580, 554, 1606, 580, 498, 582}; // UNKNOWN 1B6696D7

crankyoldgit commented 4 years ago

Thanks for the data, that's helpful. I'll see what I can do.

casasale commented 4 years ago

Looking for Toshiba and Carrier on Google I found the following, which would explain things :) https://www.toshiba-carrier.co.jp/global/about/index.htm http://www.toshiba-carrier.co.th/AboutUs/Pages/CompanyProfile.aspx

So basically my AC models are branded as Carrier, and were produced at the Toshiba Carrier joint venture manufacturing plant in Thailand.

casasale commented 4 years ago

If I adjust the values for matchGeneric(), then all the 72 bit version messages so far are recognized as Toshiba.

bool IRrecv::decodeToshibaAC(decode_results* results, uint16_t offset,
                             const uint16_t nbits, const bool strict) {
  // Compliance
  if (strict && nbits != kToshibaACBits)
    return false;  // Must be called with the correct nr. of bytes.

  // Match Header + Data + Footer
  if (!matchGeneric(results->rawbuf + offset, results->state,
                    results->rawlen - offset, nbits,
/*
                    kToshibaAcHdrMark, kToshibaAcHdrSpace,
                    kToshibaAcBitMark, kToshibaAcOneSpace,
                    kToshibaAcBitMark, kToshibaAcZeroSpace,
                    kToshibaAcBitMark, kToshibaAcMinGap, true,
*/
                    4406, 4337,
                    554, 1604,
                    554, 526,
                    554, 7441, true,
                    _tolerance, kMarkExcess)) return false;
...
casasale commented 4 years ago

With the following small changes (does not include the different timing values for decodeToshibaAC/matchGeneric) the 72 bit messages get recognized mostly correctly, e.g. the 7 for the off mode gets an Unknown in the report, while Fan2 and Fan4 get Unknown, because of an unrelated generic issue, i.e. reporting seems to handle only generic Min(Fan1)/Med(Fan3)/Max(Fan5) values, and basically both reporting issues are just cosmetic none-issues.

diff ir_Toshiba.h irToshiba.h

32c32
< const uint8_t kToshibaAcModeSize = 2;  // Nr. of bits
---
> const uint8_t kToshibaAcModeSize = 3;  // Nr. of bits
36a37,38
> const uint8_t kToshibaAcFan = 4;
> const uint8_t kToshibaAcOff = 7;

diff ir_Toshiba.cpp irToshiba.cpp

28a29,38
>
> // Toshiba Carrier A/C
> const uint16_t kToshibaCarrierAcHdrMark = 4406;
> const uint16_t kToshibaCarrierAcHdrSpace = 4337;
> const uint16_t kToshibaCarrierAcBitMark = 554;
> const uint16_t kToshibaCarrierAcOneSpace = 1604;
> const uint16_t kToshibaCarrierAcZeroSpace = 526;
> const uint16_t kToshibaCarrierAcMinGap = 7441;
>
>
144c154
<             kToshibaAcHeat);
---
>             kToshibaAcOff);
208a219,220
>     case kToshibaAcFan:
>     case kToshibaAcOff:
227c239,240
<     // No Fan mode.
---
>     case stdAc::opmode_t::kFan:   return kToshibaAcFan;
>     case stdAc::opmode_t::kOff:   return kToshibaAcOff;
253a267,268
>     case kToshibaAcFan:  return stdAc::opmode_t::kFan;
>     case kToshibaAcOff:  return stdAc::opmode_t::kOff;
305c320
<                             kToshibaAcHeat, kToshibaAcDry, kToshibaAcAuto);
---
>                             kToshibaAcHeat, kToshibaAcDry, kToshibaAcFan);

The other question that remains is:

casasale commented 4 years ago

OK, I checked the IRsendDemo and used sendToshibaAC() to send a command periodically every 2 seconds: Basically, both the original timing values, as well as the ones I averaged over a few dozen of messages mentioned above worked, but only with my values does IRrecvDumpV2 recognize all the commands as Toshiba.

Looking at the differences of each timing value, it looks like as if the ZeroSpace one has the biggest difference of ~-11% followed by MinGap with ~-5%, while the rest of the values is 2% or less, so I tested adjusting ZeroSpace to the average between the original 472 and my 526, i.e. 499 and with that IRrecvDumpV2 recognizes it now in 83% of time as Toshiba in a test scenarion of around 100 samples. Setting it to 513 improved the recognition to 96%. Setting it to 515 started to degrade recognition grade, which indicates that some other parameter has influence too.

Using 549 for BitMark and 499 for MinGap improved the recognition rate from 83% to 90%, and using 549 for BitMark and 513 for MinGap did not improve the recognition rate from 90% significantly, and adjusting additionally OneSpace to 1613 too degraded to 86%.

Adjusting all of the following values to the average between the original and my values increased the recognition rate to 97%: const uint16_t kToshibaAcBitMark = 549; const uint16_t kToshibaAcOneSpace = 1613; const uint16_t kToshibaAcZeroSpace = 499; const uint16_t kToshibaAcMinGap = 7244;

There was no significant recognition rate difference with the above settings between OnceSpace 1613 and the original 1623.

And the consistency cross check over 100+ samples with my settings returned a 100% recognition rate.

The biggest impact has been achieved with the ZeroSpace adjustment, and then adding BitMark too.

casasale commented 4 years ago

@crankyoldgit Tomorrow I will check your basic support code

crankyoldgit commented 4 years ago

Thanks for the testing above. So, yeah, it looks like it's the same protocol. I'll look at adjusting timings & tolerances. I'll try to see if there is a way I can tell from the data if it is the Toshiba or the Carrier model, so we can get the mode/swing values correct etc

casasale commented 4 years ago

By the way the last byte of all different length messages is the XOR result over all previous bytes. The swing binary values are mixed up in the spreadsheet (hex is correct), and if they are corrected, then the XOR value is also correct.

crankyoldgit commented 4 years ago

Yep. That's the same as Toshiba.

crankyoldgit commented 4 years ago

BTW, nice work on working out that the 3rd byte is the length. That's cool/helpful. I'm still trying to work out how I can tell the difference between this and Toshiba from the decoded hex data. :-/

crankyoldgit commented 4 years ago

For the record, looking back at the history of Toshiba AC support, it looks like someone found a link to some existing code and I imported it based on me reading/re-coding it. So we don't have a lot of analysis data for it to verify against. :-/

crankyoldgit commented 4 years ago

So, I think the original code I looked at had poor analysis. Looking at your data & analysis, it looks a better fit. I'll thus update Toshiba to match your results.

crankyoldgit commented 4 years ago

Hey @casasale can you please download and try out the following branch: https://github.com/crankyoldgit/IRremoteESP8266/tree/Carrier72

I've tried to improve the Toshiba matching and protocol decoding. I think it will probably match the 72bit versions of your messages better.

Let me know how that goes, and I can then try to work on the shorter and longer versions of the messages.

casasale commented 4 years ago

Hi @crankyoldgit,

Great, thank you. I will download it and test it.

casasale commented 4 years ago

Hi @crankyoldgit,

This is the current testing status of the receiving side:

By the way, another behavior information is that in the special 80 bit High/Eco power command modes the 80 bit command length stays only in 80 bit when no Mode (Auto/Cool/Dry/Heat/Fan) or Power (Off/On) is changed, i.e. if the Mode button is pressed or Power Off and then On, then the 80 bit Hi_Power/Eco mode is reset to the normal 72 bit mode, and vice versa changing temperature, swing on/off and air direction maintain the current bit length of 80 bit. Although a simplified approach where only setting Hi/ECO-Power is possible and any other command would reset it to 72 bit, e.g. if someone wants Hi/Eco, then the settings could be changed followed by enabling Hi/Eco.

Code diff:

*** ir_Toshiba.cpp_org  2020-06-30 05:04:09.000000000 -0400
--- ir_Toshiba.cpp      2020-06-30 13:33:37.640796200 -0400
***************
*** 225,230 ****
--- 225,231 ----
      case stdAc::opmode_t::kHeat: return kToshibaAcHeat;
      case stdAc::opmode_t::kDry:  return kToshibaAcDry;
      case stdAc::opmode_t::kFan:  return kToshibaAcFan;
+     //case stdAc::opmode_t::kOff:  return kToshibaAcOff;   //Don't know if this is necessary
      default:                     return kToshibaAcAuto;
    }
  }
***************
*** 251,256 ****
--- 252,259 ----
      case kToshibaAcCool: return stdAc::opmode_t::kCool;
      case kToshibaAcHeat: return stdAc::opmode_t::kHeat;
      case kToshibaAcDry:  return stdAc::opmode_t::kDry;
+     case kToshibaAcFan:  return stdAc::opmode_t::kFan;   //Missing case
+     //case kToshibaAcOff:  return stdAc::opmode_t::kOff;    //Don't know if this is necessary
      default:             return stdAc::opmode_t::kAuto;
    }
  }
***************
*** 303,309 ****
    result += addBoolToString(getPower(), kPowerStr, false);
    if (getPower())
      result += addModeToString(getMode(), kToshibaAcAuto, kToshibaAcCool,
!                               kToshibaAcHeat, kToshibaAcDry, kToshibaAcAuto);
    result += addTempToString(getTemp());
    result += addFanToString(getFan(), kToshibaAcFanMax, kToshibaAcFanMin,
                             kToshibaAcFanAuto, kToshibaAcFanAuto,
--- 306,312 ----
    result += addBoolToString(getPower(), kPowerStr, false);
    if (getPower())
      result += addModeToString(getMode(), kToshibaAcAuto, kToshibaAcCool,
!                             kToshibaAcHeat, kToshibaAcDry, kToshibaAcFan);    //Fix Mode Fan reporting
    result += addTempToString(getTemp());
    result += addFanToString(getFan(), kToshibaAcFanMax, kToshibaAcFanMin,
                             kToshibaAcFanAuto, kToshibaAcFanAuto,

Here are the reports with the above code changes:

Protocol : TOSHIBA_AC
 Code : 0xF20D03FC0150070056 (72 Bits)
 Mesg Desc.: Power: Off,Temp: 22C,Fan: 0 (Auto)
uint16_t rawData_OFF[295] = {4424,4322,584,1572,588,1576,582,1576,586,1572,590,496,584,490,588,1574,586,492,588,494,586,496,584,492,588,494,
  586,1576,584,1574,586,490,588,1572,586,496,584,496,584,494,586,496,582,492,590,494,584,1572,588,1578,582,1572,588,1572,588,1574,588,1580,580,
  1574,586,1576,586,496,584,490,590,496,584,490,588,496,584,498,582,496,586,496,582,500,584,1572,586,534,544,1572,588,498,582,1576,584,492,588,490,
  588,492,588,494,586,496,584,498,584,490,588,496,582,498,584,1570,588,1576,586,1576,586,490,588,498,584,494,586,496,584,492,590,490,588,490,590,494,
  586,492,588,1576,584,496,584,1576,584,492,586,1574,588,1572,590,494,586,7420,4424,4316,590,1574,586,1572,588,1574,586,1574,588,492,588,496,584,1576,
  586,494,586,496,584,492,588,496,586,492,588,1572,588,1576,586,496,582,1576,586,496,584,496,582,496,582,492,590,496,584,498,584,1576,584,1572,588,1572,
  588,1572,588,1576,584,1576,586,1576,582,1574,590,496,582,496,584,496,584,490,588,496,584,496,582,494,588,494,586,494,586,1578,582,498,582,1574,586,496,
  584,1574,586,496,584,492,586,494,584,496,584,498,582,496,584,490,590,496,584,496,584,1576,586,1576,586,1572,588,492,590,496,584,498,584,548,530,496,584,
  494,586,496,582,492,588,496,584,1576,584,492,590,1572,588,494,586,1576,586,1570,590,490,588}; // TOSHIBA_AC
 uint8_t state[9] = {0xF2,0x0D,0x03,0xFC,0x01,0x50,0x07,0x00,0x56};

Protocol : TOSHIBA_AC
 Code : 0xF20D03FC0150000051 (72 Bits)
 Mesg Desc.: Power: On,Mode: 0 (Auto),Temp: 22C,Fan: 0 (Auto)
uint16_t rawData_ON[295] = {4422,4316,590,1574,586,1572,588,1572,588,1576,586,490,586,498,586,1572,586,496,584,494,586,496,582,492,590,494,
584,1576,586,1570,588,496,582,1572,590,492,586,492,588,496,582,498,582,498,582,498,582,1572,588,1578,584,1576,584,1572,588,1576,586,1574,586,
1576,586,1572,588,494,586,494,586,496,582,494,586,494,584,494,588,496,584,492,590,494,586,1580,580,496,584,1574,586,494,584,1572,588,494,584,496,
586,494,586,496,584,496,584,496,584,496,584,494,586,496,582,498,584,496,584,496,584,496,582,492,590,494,584,496,586,490,588,500,582,496,584,494,584,
494,586,1574,586,490,590,1576,584,498,582,494,586,492,588,1572,590,7418,4426,4320,584,1576,586,1572,588,1574,586,1572,588,494,586,494,584,1572,590,
494,586,490,588,494,586,494,586,498,582,1572,588,1576,584,498,584,1572,588,494,584,496,584,496,582,494,588,490,590,496,582,1574,586,1572,588,1576,586,
1578,584,1572,586,1572,588,1576,584,1574,588,496,582,498,582,494,584,496,586,496,582,496,584,498,584,496,582,494,586,1572,588,496,584,1574,586,496,582,
1576,586,490,586,496,586,492,588,494,586,494,586,494,584,496,584,496,582,498,582,492,586,492,588,490,590,492,588,496,584,490,590,496,582,498,582,498,584,
494,584,492,588,496,584,1574,586,490,590,1570,590,498,582,496,584,498,582,1574,588}; // TOSHIBA_AC
 uint8_t state[9] = {0xF2,0x0D,0x03,0xFC,0x01,0x50,0x00,0x00,0x51};

Protocol : TOSHIBA_AC
 Code : 0xF20D01FE210120 (56 Bits)
 Mesg Desc.: Power: On,Mode: 0 (Auto),Temp: 17C,Fan: 0 (Auto)
uint16_t rawData_SWING_ON[231] = {4424,4320,586,1574,586,1578,582,1572,590,1574,586,496,582,498,582,1572,588,498,582,498,582,496,584,494,584,
  496,584,1574,586,1630,530,496,582,1576,586,498,582,498,582,498,580,496,586,494,584,492,588,498,582,1572,588,1572,588,1574,588,1572,588,1578,580,
  1572,590,1570,588,1576,586,494,586,498,582,494,586,1574,586,492,588,498,582,492,588,494,588,1574,586,494,586,490,590,492,588,492,588,496,584,498,
  584,496,582,1574,588,496,582,492,588,1574,586,546,534,496,584,496,584,496,584,490,590,7426,4418,4316,590,1572,590,1574,584,1572,590,1572,588,496,
  584,494,584,1574,588,494,586,494,586,494,584,496,584,494,586,1572,590,1576,586,494,584,1576,584,496,584,490,588,498,582,494,584,496,584,498,582,498,
  584,1572,588,1578,582,1578,582,1572,588,1576,584,1572,586,1576,586,1576,582,498,582,492,588,492,590,1580,580,498,582,498,582,494,586,496,582,1574,586,
  496,584,492,586,494,586,494,588,494,584,496,584,496,582,1572,590,496,584,496,586,1574,586,496,582,494,586,498,582,498,582,494,586}; // TOSHIBA_AC
 uint8_t state[7] = {0xF2,0x0D,0x01,0xFE,0x21,0x01,0x20};

Protocol : TOSHIBA_AC
 Code : 0xF20D01FE210223 (56 Bits)
 Mesg Desc.: Power: On,Mode: 3 (Heat),Temp: 17C,Fan: 0 (Auto)
uint16_t rawData_SWING_OFF[231] = {4424,4322,584,1572,588,1576,586,1578,584,1572,588,494,586,490,588,1574,588,494,584,498,582,498,580,496,586,
  496,584,1578,584,1572,588,496,584,1572,588,494,584,494,584,500,580,494,586,490,590,496,582,496,584,1574,588,1574,584,1574,588,1572,590,1576,584,
  1574,586,1576,586,1574,584,496,584,492,586,492,590,1572,588,498,582,496,586,496,584,494,584,1572,588,492,588,496,584,496,584,496,582,498,582,496,
  584,1572,588,498,582,496,584,494,584,1572,588,494,588,492,586,496,584,1576,586,1576,584,7420,4424,4318,588,1576,584,1576,584,1576,584,1572,590,496,
  584,496,584,1630,530,496,582,494,586,498,582,496,586,494,584,1574,586,1572,586,498,582,1580,582,496,584,496,584,496,582,496,584,496,582,494,586,496,
  584,1572,590,1576,586,1570,590,1572,588,1570,588,1576,586,1574,588,1574,586,494,584,492,588,494,584,1578,582,492,590,494,586,496,584,494,586,1572,590,
  496,582,498,584,496,584,492,588,496,584,492,586,1574,588,494,584,496,584,496,584,1574,588,496,584,498,582,496,584,1576,584,1576,586}; // TOSHIBA_AC
 uint8_t state[7] = {0xF2,0x0D,0x01,0xFE,0x21,0x02,0x23};

Protocol : TOSHIBA_AC
 Code : 0xF20D01FE210021 (56 Bits)
 Mesg Desc.: Power: On,Mode: 1 (Cool),Temp: 17C,Fan: 0 (Auto)
uint16_t rawData_AIR_DIR[115] = {4424,4320,586,1574,584,1574,588,1574,586,1574,586,494,584,496,584,1572,588,492,590,494,584,496,586,496,586,
  494,584,1574,586,1572,590,496,582,1580,584,492,586,494,586,496,584,490,590,494,586,496,584,494,584,1576,586,1574,586,1572,588,1578,584,1570,588,
  1572,588,1576,586,1570,590,498,582,498,582,498,582,1576,584,490,590,498,582,494,586,494,586,1576,584,496,584,494,586,494,584,498,584,494,586,496,
  584,492,588,496,584,494,586,494,584,1574,588,496,584,494,584,500,580,496,584,1576,586}; // TOSHIBA_AC
 uint8_t state[7] = {0xF2,0x0D,0x01,0xFE,0x21,0x00,0x21};

Protocol : TOSHIBA_AC
 Code : 0xF20D04FB095000000158 (80 Bits)
 Mesg Desc.: Power: On,Mode: 0 (Auto),Temp: 22C,Fan: 0 (Auto)
uint16_t rawData_HIGH_POWER[327] = {4424,4318,588,1572,584,1572,590,1576,584,1572,590,492,586,494,586,1576,584,494,586,496,584,492,588,494,588,
  496,584,1572,588,1576,584,496,586,1576,586,494,584,496,582,498,584,494,584,498,584,1572,588,494,586,492,590,1624,536,1576,584,1570,590,1574,588,
  1574,584,496,584,1578,582,1572,588,490,588,496,584,492,586,496,584,1572,590,494,586,498,582,1576,584,496,584,1572,588,494,586,1576,584,496,586,496,
  582,498,582,496,586,494,586,494,586,492,588,496,584,492,588,498,582,494,584,498,584,496,582,490,590,494,586,496,580,498,584,490,590,496,582,498,584,
  496,582,494,586,492,588,498,582,496,584,496,584,494,586,1572,590,496,584,1576,584,498,582,1572,588,1576,586,498,582,498,582,496,584,7420,4424,4322,
  584,1572,590,1570,590,1578,582,1572,590,496,582,492,588,1576,584,500,582,496,584,490,590,496,582,496,586,1572,588,1572,590,496,582,1572,590,496,584,
  500,580,492,588,494,586,496,584,1574,586,494,584,492,588,1576,586,1576,584,1572,588,1576,586,1572,590,490,588,1578,584,1572,588,494,586,500,582,496,
  584,494,584,1572,588,498,582,496,586,1570,588,496,584,1572,588,494,586,1574,584,498,582,492,588,492,588,494,586,498,582,496,584,492,590,494,584,496,
  584,490,590,494,586,496,584,496,586,490,590,496,582,496,584,496,584,492,588,492,590,494,584,496,584,494,586,496,584,496,584,490,588,498,584,496,584,
  1574,586,494,584,1576,584,492,590,1576,582,1576,586,496,584,494,586,496,584}; // TOSHIBA_AC
 uint8_t state[10] = {0xF2,0x0D,0x04,0xFB,0x09,0x50,0x00,0x00,0x01,0x58};

Protocol : TOSHIBA_AC
 Code : 0xF20D04FB09500000035A (80 Bits)
 Mesg Desc.: Power: On,Mode: 0 (Auto),Temp: 22C,Fan: 0 (Auto)
uint16_t rawData_ECO_POWER[327] = {4418,4316,592,1574,586,1572,588,1572,588,1574,588,494,586,494,584,1576,586,494,584,496,584,494,586,494,586,
  490,588,1572,588,1572,590,494,584,1574,586,498,582,498,584,494,584,492,588,494,586,1576,586,496,582,500,582,1570,590,1576,584,1576,584,1572,588,
  1576,586,490,588,1574,586,1578,584,496,584,494,586,498,582,496,584,1572,588,496,584,496,582,1572,588,492,590,1570,588,492,588,1574,588,494,584,496,
  584,494,586,494,586,490,588,496,584,494,584,498,584,494,584,496,584,496,584,492,588,492,586,498,582,492,588,498,582,494,586,498,584,494,584,498,584,
  496,582,498,582,494,584,494,586,494,586,494,586,1578,582,1578,584,496,584,1578,582,496,582,1572,590,1572,590,496,584,1570,590,494,586,7424,4418,4318,
  588,1576,584,1572,590,1576,584,1572,588,490,588,498,582,1572,590,494,584,498,582,498,582,494,586,496,586,1570,590,1572,588,498,582,1572,590,494,584,
  492,588,494,584,496,584,496,582,1578,584,496,584,496,582,1574,588,1574,588,1576,584,1576,584,1576,584,496,582,1578,584,1576,584,494,586,496,584,494,
  586,496,582,1574,586,494,586,490,590,1576,584,494,586,1574,586,494,584,1576,586,494,586,492,588,494,586,490,588,498,584,496,582,498,584,496,582,498,
  584,496,584,492,590,494,586,496,584,494,584,494,586,490,588,492,586,498,584,490,588,496,584,496,584,494,586,492,588,492,588,496,586,496,584,1572,588,
  1572,588,494,586,1572,588,492,588,1578,582,1572,590,494,586,1570,588,492,590}; // TOSHIBA_AC
 uint8_t state[10] = {0xF2,0x0D,0x04,0xFB,0x09,0x50,0x00,0x00,0x03,0x5A};
NiKiZe commented 4 years ago

If the code is changed to be correct for your model, it would be wrong for previous supported models (assuming they are/where correct), so more logic is probably needed(?)

casasale commented 4 years ago

Previous old Toshiba models potentially seem to have had just 2 bits for Mode, so extending it to 3 bits is still "somewhat" backwards compatible, e.g. I imagine the AC will either ignore the Mode Fan command (0b100), or read the lower 2 bits which would default to Auto mode (0b00). Nevertheless I imagine that newer Toshiba models support Mode Fan and have the same 3 bit value .

crankyoldgit commented 4 years ago

@casasale Thanks for the feedback and data.

  • There was 1 reporting issue in 72 bit mode regarding the mode string when Mode Fan is enabled (potential code fixes in code diff below)

Yep. That's something I missed. I'll add it shortly.

56 bit messages report wrong mode values (Auto, Cool, Heat), which seems to indicate that the last XOR byte is being used to get the mode value, and additionally it reports also wrong temperature, i.e. in case of 56 bit messages no Power/Mode/Temp/Fan states should be read or set, while 80 bit should be fine (needs to be enhanced)

As I said, the non-72 bits messages are not expected to decode to settings yet. If they do, that's just luck at this point.

My main goal is to get the 72 bit stuff working then fix up the 56/80 stuff later.

@NiKiZe

If the code is changed to be correct for your model, it would be wrong for previous supported models (assuming they are/where correct), so more logic is probably needed(?)

I think it's a case that the code I borrowed from was slightly incorrect/incomplete. Seeing the data that @casasale has collected, I can see how "that" code had evolved that way. The data is/format is largely compatible with the previous implementation, and I think still decodes "real" messages correctly. Previously people had guessed there was a single power on/off bit as used in most A/C implementations, however, it looks like it really is just a special "mode" that turns the unit off, which just happened to flip that bit as well. This is highlighted/proved by the "fan" mode. Which changed that bit, but didn't affect power operation. It also better fits the weird "the mode has to be set to heat in addition to turning the power off" previous implementation.

In general, we relied on someone else's implementation, and I think they didn't (or couldn't) do as good a data collection/analysis as we can with this make/model etc.

crankyoldgit commented 4 years ago

@casasale That branch has been updated and should have better "fan" mode support.

I'll try working on the different bit length stuff tonight.

casasale commented 4 years ago

Thank you very much.

casasale commented 4 years ago

@crankyoldgit FYI https://stackoverflow.com/questions/628526/is-short-circuiting-logical-operators-mandated-and-evaluation-order The above can be taken advantage of by setting the faster to evaluate, or more probable to fail(&&)/hit(||), conditional expression first within e.g. a logical operator evaluation.

crankyoldgit commented 4 years ago

@crankyoldgit FYI https://stackoverflow.com/questions/628526/is-short-circuiting-logical-operators-mandated-and-evaluation-order The above can be taken advantage of by setting the faster to evaluate, or more probable to fail(&&)/hit(||), conditional expression first within e.g. a logical operator evaluation.

Yep. I know this well. The most likely case is once it's made it through the data collection match (i.e. timings sequence, and length) successfully which is more than half and the most expensive battle, the "validation" step is almost always likely to pass and thus require all of the sub-checks to be run. The checksum (Xor) is the most likely to fail (single bit error anywhere in the entire message) and it is checked first. It's not the fastest of the checks, but it's only a few instructions longer. i.e. it's O(n), the "length" check is O(1) but it's probably the least likely to be wrong/fail.

crankyoldgit commented 4 years ago

@casasale Can you please download and test the latest version of that branch?

I think it should support everything except for the Swing Dir function. I'll look at adding that tomorrow. i.e. swing on/off, turbo on/off, and econo on/off.

Let me know what doesn't work etc etc etc.

casasale commented 4 years ago

Thanks @crankyoldgit, I will test it and come back to you.

casasale commented 4 years ago

Reception test:

Additionally for all 56 bit Swing messages, maybe it would make sense not to report the dummy constant Temp 17?

Protocol  : TOSHIBA_AC
  Code      : 0xF20D03FC0150600031 (72 Bits)
    Mesg Desc.: Temp: 22C,Power: On,Mode: 0 (Auto),Fan: 2 (UNKNOWN),Turbo: Off,Econo: Off
      uint8_t state[9] = {0xF2,0x0D,0x03,0xFC,0x01,0x50,0x60,0x00,0x31};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D04FB095060000138 (80 Bits)
    Mesg Desc.: Temp: 22C,Power: On,Mode: 0 (Auto),Fan: 2 (UNKNOWN),Turbo: On,Econo: Off
      uint8_t state[10] = {0xF2,0x0D,0x04,0xFB,0x09,0x50,0x60,0x00,0x01,0x38};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D03FC0150600031 (72 Bits)
    Mesg Desc.: Temp: 22C,Power: On,Mode: 0 (Auto),Fan: 2 (UNKNOWN),Turbo: Off,Econo: Off
      uint8_t state[9] = {0xF2,0x0D,0x03,0xFC,0x01,0x50,0x60,0x00,0x31};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D04FB09506000033A (80 Bits)
    Mesg Desc.: Temp: 22C,Power: On,Mode: 0 (Auto),Fan: 2 (UNKNOWN),Turbo: Off,Econo: On
      uint8_t state[10] = {0xF2,0x0D,0x04,0xFB,0x09,0x50,0x60,0x00,0x03,0x3A};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D03FC0150600031 (72 Bits)
    Mesg Desc.: Temp: 22C,Power: On,Mode: 0 (Auto),Fan: 2 (UNKNOWN),Turbo: Off,Econo: Off
      uint8_t state[9] = {0xF2,0x0D,0x03,0xFC,0x01,0x50,0x60,0x00,0x31};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D01FE210120 (56 Bits)
    Mesg Desc.: Temp: 17C,Swing(V): Off
      uint8_t state[7] = {0xF2,0x0D,0x01,0xFE,0x21,0x01,0x20};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D01FE210223 (56 Bits)
    Mesg Desc.: Temp: 17C,Swing(V): On
      uint8_t state[7] = {0xF2,0x0D,0x01,0xFE,0x21,0x02,0x23};

Protocol  : TOSHIBA_AC
  Code      : 0xF20D01FE210021 (56 Bits)
    Mesg Desc.: Temp: 17C,Swing(V): Off
      uint8_t state[7] = {0xF2,0x0D,0x01,0xFE,0x21,0x00,0x21};
casasale commented 4 years ago

Transmission test:

- 80 bit Hi Power On/Off: OK, but in the ac.send() report only 72 bits  instead of 80 bits are reported, i.e. the checksum byte is missing in the IR Code

ac.setTurbo(true); printState(); ac.send(); delay(2000); ac.setTurbo(false); printState(); ac.send();

Toshiba A/C remote is in the following state: Temp: 22C, Power: On, Mode: 0 (Auto), Fan: 2 (UNKNOWN), Turbo: On, Econo: Off IR Code: 0xF20D04FB0950600001

Toshiba A/C remote is in the following state: Temp: 22C, Power: On, Mode: 0 (Auto), Fan: 2 (UNKNOWN), Turbo: Off, Econo: Off IR Code: 0xF20D03FC0150600031

- 80 bit Eco Power On/Off: Both commands accepted, but in the ac.send() report only 72 bits instead of 80 bits are reported, i.e. the checksum byte is missing in the IR Code

ac.setEcono(true); printState(); ac.send(); delay(20000); ac.setEcono(false); printState(); ac.send();

Toshiba A/C remote is in the following state: Temp: 22C, Power: On, Mode: 0 (Auto), Fan: 2 (UNKNOWN), Turbo: Off, Econo: On IR Code: 0xF20D04FB0950600003

Toshiba A/C remote is in the following state: Temp: 22C, Power: On, Mode: 0 (Auto), Fan: 2 (UNKNOWN), Turbo: Off, Econo: Off IR Code: 0xF20D03FC0150600031


- 56 bits Swing On/Off: Commands accepted, but Swing does not work, and IR Code report looks like 72 bit report instead of 56 bits

ac.setSwing(false); printState(); ac.send(); delay(5000); ac.setSwing(true); printState(); ac.send();

Toshiba A/C remote is in the following state: Temp: 22C, Power: On, Mode: 0 (Auto), Fan: 2 (UNKNOWN), Turbo: Off, Econo: Off IR Code: 0xF20D03FC0150600031

Toshiba A/C remote is in the following state: Temp: 22C, Power: On, Mode: 0 (Auto), Fan: 2 (UNKNOWN), Turbo: Off, Econo: Off IR Code: 0xF20D03FC0150600031