Comments (40)
The protocol is documented here: http://www.sbprojects.com/knowledge/ir/rcmm.php
Seems fairly straight forward, yet a little odd compared to other common protocols.
from irremoteesp8266.
@darshkpatel Care to give https://github.com/crankyoldgit/IRremoteESP8266/tree/philips-rc-mm a try?
from irremoteesp8266.
Ping.
from irremoteesp8266.
Ping.
from irremoteesp8266.
from irremoteesp8266.
@crankyoldgit
Sorry for the long day
I checked it on my bench and the lib
Could identify the protocol , but still gives different codes for the same button
from irremoteesp8266.
I enquired with a few colleagues , came to know it's not the protocol, but the wrong receiver for the frequency the IR transmitter is transmitting at.
I suppose someone with the right receiver can try it out ?
The 38KHz receiver doesn't work well
from irremoteesp8266.
Um, let me check/confirm. Are you trying to send RC-MM or receive it?
I only added sending btw. If you are getting different results from something for each send, can you share them please? It should produce the same signal when sending the same data., but seeing the different outputs might help me work out what's not working.
from irremoteesp8266.
Ah, yeah. 38kHz vs 36kHz might be an issue. Don't know. I've only got 38kHz ones myself. :-(
from irremoteesp8266.
from irremoteesp8266.
I might add what I've got to the library as is, and label it untested/experimental etc. That way someone might be able to check it.
Or, you could probably order a 36kHz receiver module off ebay for a couple of dollars etc.
from irremoteesp8266.
Actually, can you describe what the testing setup is? I didn't add a decode for rc-mm, just the sender.
but still gives different codes for the same button
the 'unknown' code values should be taken with a grain of salt. It is a hash of the raw data, not an indication of the actual code signal. A minute change in a timing length will produce a very different 'unknown' code even if the underlying pattern is the same. The underlying pattern in your earlier examples however looks fine/the same. So, I can probably try to add a decode routine we might have some luck.
from irremoteesp8266.
Decoding one of your captures by hand:
unsigned int rawData[35] = {450,250, 150,300, 150,600, 150,600, 200,250, 200,750, 150,600, 200,250, 200,250, 150,600, 200,600, 150,450, 150,600, 200,250, 150,300, 150,250, 200,250, 200};
HEADER + 00 + 10 + 10 + 00 + 11 + 10 + 00 + 00 + 10 + 10 + 01 + 10 + 00 + 00 + 00 + 00 + FOOTER
== B00101000111000001010011000000000 == 32 bits of data (which the protocol says should only be 12 or 24 bits???) == 0x28e0a600
from irremoteesp8266.
Hey @darshkpatel, care to try the latest update to my 'philips-rc-mm' branch?
Based on the data you provided, I think I now understand the RC-MM protocol better than the limited reference docs I could find. i.e. There is a footer mark that wasn't documented.
It also has my very first attempt at writing a decode routine. No promises etc. Completely untested. No warranties etc etc.
from irremoteesp8266.
from irremoteesp8266.
I have got it working with 38khz tsop38338, tested this with stb remote with success, was looking for this for a long! thanks and kudos
from irremoteesp8266.
I have tested the decoding (receiving), will confirm the send too tomorrow.
from irremoteesp8266.
from irremoteesp8266.
Many thanks for that @tejipal
However, I think I have a bug. Decoding by hand, that middle dump should decode to:
B00100110000000000010011100000010 (0x26002702)
yet my code is getting:
B00010101000000000001011000000001 (0x15001601)
I think it is not matching the spaces well, in that it is matching a lower 2-bit value when it should be matching a higher 2-bit value per mark/space pair.
Looking at the code MATCH code, the tolerances for it matching are too wide. We need to reduce the tolerances for this to accurately match values received.
e.g.
a space of 550us (which should equal to B10 (0x2) for which we expect has a space of 611us) has a lower tolerance of 611*0.75 = ~458us and an upper of 611*1.25 = ~764ms. This also matches the recorded space of 750us (which should be B11 (0x3) which has an expected value of 777us).
I'll need to work out a nice way to reduce the tolerances for this protocol and not for all the others for this to work correctly.
from irremoteesp8266.
the tolerance thingy looks promising, I will test it again and get back with results. I also ordered 36khz decoder, will share results after testing.
from irremoteesp8266.
hatts off to your quick remedy :)
from irremoteesp8266.
@tejipal I'm currently developing in my personal fork under this branch https://github.com/crankyoldgit/IRremoteESP8266/tree/rework-match
But beware, I haven't tested it at all yet. It's flat out compiling. ;-) i.e. Expect things to break.
from irremoteesp8266.
@tejipal & @darshkpatel Care to test the current master branch? Should be better/working, I think. (famously wrong/last words.)
from irremoteesp8266.
from irremoteesp8266.
@darshkpatel Did your next ESP arrive? Care to test master and/or v2.0-dev branch?
from irremoteesp8266.
from irremoteesp8266.
No worries. I'm writing some test-cases for the code now. So, in a day or so I should be more confident if it will work or not, but nothing beats real-world tests.
from irremoteesp8266.
@darshkpatel & @tejipal The v2.0-dev tree should have an updated & working version for both sending and decoding.
I think I've ironed out the remaining bugs when I wrote the unit tests for them, but real hardware is different etc.
Note: You'll need to call it via sendRCMM(0xb01dface, 32);
etc if you want to send your 32-bit messages you've listed in this issue. It defaults to 24-bits.
Feedback etc most welcome. Good or bad. :)
I'm hoping to have a release candidate out for v2.0 by the end of the month.
from irremoteesp8266.
from irremoteesp8266.
Out of curiosity, any chance you can include the dumps here please?
I would have thought the tsop1738 would have worked fine as it is also a 38kHz receiver.
from irremoteesp8266.
from irremoteesp8266.
from irremoteesp8266.
Just checking. You used the latest v2.0-dev branch in your latest tests?
from irremoteesp8266.
from irremoteesp8266.
@crankyoldgit I am attaching the dump for my Tatasky remote , looks like this
First two are pressing the same button and the third is for another button on the number pad.
also the last two cases are while sliding the finger actoss the touchpad ( not sure what it's called , but remote blasts out a lot of codes while sliding the finger , similar to scrolling with fingers )
Encoding : MITSUBISHI
Code : 0 (0 bits)
Timing[35]:
+ 450, - 250 + 200, - 300 + 200, - 650 + 200, - 650
+ 200, - 300 + 200, - 800 + 200, - 650 + 200, - 300
+ 200, - 300 + 200, - 300 + 200, - 650 + 200, - 450
+ 200, - 650 + 200, - 300 + 200, - 300 + 200, - 300
+ 200, - 450 + 200
uint16_t rawData[35] = {450,250, 200,300, 200,650, 200,650, 200,300, 200,800, 200,650, 200,300, 200,300, 200,300, 200,650, 200,450, 200,650, 200,300, 200,300, 200,300, 200,450, 200}; // MITSUBISHI 0
uint64_t data = 0x0;
Encoding : MITSUBISHI
Code : 0 (0 bits)
Timing[35]:
+ 450, - 250 + 200, - 300 + 200, - 650 + 200, - 650
+ 200, - 300 + 200, - 800 + 200, - 650 + 200, - 300
+ 200, - 300 + 200, - 650 + 200, - 650 + 200, - 450
+ 200, - 650 + 200, - 300 + 200, - 300 + 200, - 300
+ 200, - 450 + 200
uint16_t rawData[35] = {450,250, 200,300, 200,650, 200,650, 200,300, 200,800, 200,650, 200,300, 200,300, 200,650, 200,650, 200,450, 200,650, 200,300, 200,300, 200,300, 200,450, 200}; // MITSUBISHI 0
uint64_t data = 0x0;
Encoding : MITSUBISHI
Code : 0 (0 bits)
Timing[35]:
+ 500, - 250 + 200, - 300 + 200, - 650 + 200, - 650
+ 200, - 300 + 200, - 800 + 200, - 650 + 200, - 300
+ 200, - 300 + 200, - 300 + 200, - 650 + 200, - 450
+ 200, - 650 + 200, - 300 + 200, - 300 + 200, - 300
+ 200, - 650 + 200
uint16_t rawData[35] = {500,250, 200,300, 200,650, 200,650, 200,300, 200,800, 200,650, 200,300, 200,300, 200,300, 200,650, 200,450, 200,650, 200,300, 200,300, 200,300, 200,650, 200}; //
MITSUBISHI 0
uint64_t data = 0x0;
Encoding : UNKNOWN
Code : EA0E5282 (4 bits)
Timing[7]:
+ 400, -3700 + 150, -1300 + 150, -2950 + 200
uint16_t rawData[7] = {400,3700, 150,1300, 150,2950, 200}; // UNKNOWN EA0E5282
Encoding : UNKNOWN
Code : A8B55377 (9 bits)
Timing[17]:
+ 450, - 300 + 200, - 300 + 150, - 700 + 150, - 700
+ 150, -2100 + 150, - 500 + 200, -1550 + 150, -1000
+ 150
uint16_t rawData[17] = {450,300, 200,300, 150,700, 150,700, 150,2100, 150,500, 200,1550, 150,1000, 150}; // UNKNOWN A8B55377
from irremoteesp8266.
Nice. Thanks for the data.
Not sure about the UNKNOWN's, but your results have highlighted a bug in how I've re-done decodeMitsubishi(). It shouldn't be grabbing and claiming those messages.
from irremoteesp8266.
@darshkpatel Once #214 is merged into v2.0-dev, I think it should decode RC-MM for you,
from irremoteesp8266.
from irremoteesp8266.
You could try the branch https://github.com/markszabo/IRremoteESP8266/tree/v2.0-dev-mitsubishi-unittests in the meantime.
from irremoteesp8266.
This should now be working in v2.0-RC0. Marking this closed. Please either re-open if there are issues, or create a new issue.
from irremoteesp8266.
Related Issues (20)
- Does this library support for OnePlus TV , realme TV and Mi TV remote. HOT 1
- Problem with Zanussi A/C HOT 7
- IRHaierAC160 light toggle only working every 2nd time
- Unable to include C libraries HOT 3
- How to get or find CarrierAc 32 bit protocol? HOT 1
- Common AC Control - Swing turn on HOT 1
- Toshiba AC Remote Control B Support HOT 1
- Feature Request: De'Longhi Pinguino PAC N82 ECO IR Protocol HOT 5
- DAIKIN IRHVAC Off Issue. HOT 1
- The implementation and declaration of some functions differs from the function call HOT 4
- Coolix protocol "fan only mode" sends "dry mode" command instead HOT 1
- Support for Carrier RG56CMI-WRAC1 HOT 1
- Got error messages in Arduino IDE v3.0.1(ESP32C3) something like timerAlarm or void gpio_intr() HOT 1
- making a ir hub HOT 1
- FUNIKI AC remote (85 bits) need to be supported!
- Support for 'quiet' mode in COOLIX protocol
- Using any other mode than "Cool" causes AC to turn off. HOT 6
- Solution to AC remote giving different data for same button pressed HOT 2
- timer-related functions in IRrecv.cpp need to be updated HOT 2
- [XIAO_ESP32C6] IRrecv.cpp:246:3: error: 'timerAlarmEnable' was not declared in this scope; did you mean 'timerAlarm'? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from irremoteesp8266.