-
Notifications
You must be signed in to change notification settings - Fork 667
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Universal receiver and sniffer and protocol generator #103
Comments
I updated the code to provide reasonable recognition and decoding capacity for INVERTED signals. Now it is a complete possible drop-in replacement for the original receiving code of rc-switch, with the advantage that it can also recognize UNKNOWN PROTOCOLS (that is, with different timings to those in current protocols' table, given that a minimum similar structure is present). TEST:
in the one with the receiver. I would appreciate if someone tested whether this works equally well with arduino and ESP8266. |
Hi. Here is experimental results, Sender
Receiver
confirm that receiver is working. But there is no log on DC250 and AC114. |
Strange... did you use the protocollessreceiver branch of rc-switch? In the first place, @kyet, thank you for testing! My results were positive, the protocollessreceiver branch of the library was able to detect these new protocols out-of-the-box. I cloned fresh versions of ninjablocks/433Utils and sui77/rc-switch (I could have used my branches but I did not want to enter any additional factor to signal generation) in one device with an emitter connected.
(The last one is from a recent commit) I cloned fresh versions of ninjablocks/433Utils and Martin-Laclaustra/rc-switch (-b protocollessreceiver) in one device with a receiver connected. Note that this version of rc-switch does NOT include the new protocols. And used these three commands in the device with the emitter connected:
And this was achieved in the receiver device:
I would be grateful if some other programmers would test and try to reproduce these successful results (also reproduce it with Arduino), and also test original remotes of different brands. |
Addes protocol settings for Einhell garage door
Just tried the AC114 protocol code and it doesn't work either, both with my own remote and code. Anyone figured this out? |
@Martin-Laclaustra thanks alot for the example in #135
@Martin-Laclaustra Maybe this helps to someone: Suggestion; another source for transmitting / understanding (decoding is like raw data , but transmitting works very good, if you dont need exact decoded dec numbers )
and thanks a lot @sui77 ! |
I updated the branch:
I have tested this to be working on Raspberry Pi, ESP8266, and Arduino, for the 6 "official" protocols in RCSwitch.cpp, and for a protocol 1 remote control. |
Hello, With "sudo ./RFSniffer -v" i have https://paste2.org/efekjaBV I added the suggested protocol. But they not works ! Ideas? Note: LEM/Ariane YCT-100N with YCR-3500N perfectly work with ./codesend 5242901 1 |
I think it is the bit-length. Please note that your protocol is 20 bits and the default sending length is 24 bits. You should dig a little bit in the code to see how to set the bit-length. |
Has anyone successfully used this method with an rf3399-based device? I've been able to get the C-based code found here to work, but would love to be able to use a python version to remove the need to recompile the code each time I want to change something. As far as I can tell, it uses a 48-bit protocol. Thanks |
That will not be automatically decoded with my branch. It would look something like: |
Thanks for the advice. Unfortunately I don't have any Arduino hardware, only RPi devices. I've ordered a couple of WeMos units, but it will take 4-6 weeks for them to arrive. |
You don't need an Arduino. |
I had a brief attempt as using the python script. I got lost when it complained about needing a license key for the code that generates the graph. I may give it another look after I finish some other parts of the project. Thanks |
@mpember I ported SimpleRCScanner to Raspberry pi. You can download it at the rpi_capture branch at my fork of SimpleRCScanner: here. |
I had an attempt. The scanner never displayed any output.other than a screen full of 0s. Since the reason I started down this path was to try and replace an executable with a python equivalent, I have decided to simply replace the few Kambrook sockets that use the unsupported protocol. I appreciate all the assistance. In the end, it will be easier to give the Kambrook sockets to a mate who already has a number of them. Since he is not using a python-based setup, the advantage of an all-Python codebase isn't applicable. |
Most probably you are attaching the receiver to the wrong pin. Anyway I am sorry that you could not solve your challenge. |
It is possible. After starting from scratch, I took a different approach. I connected both the sending and receiving programs to an unused GPIO pin. This also removed any chance of noise. I sent the command 3 times Here's what I got: Is that a clearer representation of the code? |
Has anyone found that the RC-Switch ReceiveDemo-Advanced sketch wont capture the codes for some RC Transmitters? I have successfully used the sketch to capture the codes for a Watts Clever RC operating on 433.92mHz but I also have an Arlec unit (RC213) supposedly operating on the same frequency but am unable to capture the sent codes. I have tested the sender unit and it works fine and sends a signal that appears binary in shape when viewed on an oscilloscope although I am pretty new to all this so hoping I am seeing and saying things correctly. (I believe the binary signal may be 32bit?/). The Oscilloscope signal is hard to capture as there is also a lot of background noise being captured by the Rx so very hard to get a steady signal and doubt my ability to convert that image to a binary number anyway although I believe it can be done. I have opened the Arlec RC213 Tx and it has RC-10-V1-2 and the number 4801 printed on the board. The transmitter puck has HD R433M printed on it and the 14 pin chip has no ID at all. |
Hi all, The point now is that, as far as i understand, there is no straightforward way to emulate it with my own circuit. I attached a couple of shots of what i grabbed while the remote was sending the 'Turn On' and the 'Turn Off' commands. Any hint about how i could proceed? Thanks a lot in advance |
At Line 82 in a9da9c3
Then use the send function with your codes and length (22bits). |
Wow! Thanks a lot, i made it working!!! Very good stuff guys, congratulations! And super clear explanations! |
Thanks for this - this has saved my bacon and enabled me to get an Energenie 433Mhz smart socket working again that was intermittently playing ball. Turns out the 'pulselength' was out by just enough to make it work most of the time but fail intermittently. This enabled me to sniff the exact pulselength (from the original remote control) and now I have a working RPi transmitter again! Thanks @Martin-Laclaustra for this awesome bit of code! |
Awesome patch - the Universal Sniffer worked great with the recommended decoding on a PAGTR-011 315 MHz transmitter. |
I am using rc-switch and a couple 433Mhz tx-rx to transmit small amount of data between 2 points, in other words I don't control a switch. There are other rf tx libs but I have seen this one works also with the ESP WiFi turned on (I guess it is more efficient in the use of the hardware) so I am using it. Protocol 1 for the first tests.
|
Hello, I am unable to produce any output with the https://github.com/Martin-Laclaustra/rc-switch/blob/protocollessreceiver/examples/ProtocolAnalyzeDemo/ProtocolAnalyzeDemo.ino on my Arduino. It works with one remote but I cannot seem to find a protocol for the other one. Simply nothing happens and when I ignore the With the help of https://github.com/sui77/SimpleRcScanner/blob/master/htdocs/Sketchbook/SimpleRcScanner.ino I got the raw data: https://test.sui.li/oszi/ gives me: I think this is:
but my knowledge of math is limited so I am having trouble figuring out how to turn that into the definition that I can add to the Any help is appreciated. |
Hi, sadly I don't really know much about you guys talking here but big thanks to @Martin-Laclaustra! I bought the "Brennenstuhl Comfort-Line" off Amazon and wasn't able to sniff the codes with either rpi-rf (the python port of Funnily enough, sending works both with Amazon Link (not sponsored): |
Update 2017/04/30:
Working on Raspberry Pi, ESP8266, and Arduino (tested).
Use:
git clone -b protocollessreceiver https://github.com/Martin-Laclaustra/rc-switch.git
Among the examples, the sketch "ProtocolAnalyzeDemo" ease the creation of new protocols.
This works for single-sync-gap protocols with uniform width bits (all bits have the same length).
=======================
Dear Suat and collaborators,
thank you for your work developing the library.
I have seen the request for receiving codes for unknown protocols and I have explored some ideas in a fork.
It works (
except for the inverted protocols) and receives the information regardless that the protocol is unkown.It is currently the "protocollessreceiver" branch at my fork. I added lots of comments, and the commits are also quite explicit. The changes can be reviewed in chronological order across the commits history to get the idea.
Detection is based on repetition of the duration of a longer gap, and then regularity of the length of the bits read between those gaps.
I created a verbose sniffer that performs a complete description of the signal received and proposes a protocol that can be copied directly into the protocol list if the aim is to generate new signals.
I tested this on Raspberry pi because I do not have Arduino. However you should not have problems porting it to Arduino for testing.
To test this in Raspberry pi,
once the wiringpi library is installed:
write:
edit RFSniffer.cpp to set your PIN in the line "int PIN = 2;"
I sent from another unit (as an example):
sudo ./codesend 12345 4
and got the following:
I hope that this can be useful to figure out new protocols (or to be used directly for detection). The library should work almost exactly like the original (except
for inverted protocols, andmight be too permissive in identifying the protocol), and returns all data and protocol, and protocol is set to 0 when no protocol roughly matches.The text was updated successfully, but these errors were encountered: