Go Down

Topic: rf433 code for ELRO Flamingo home devices (FA500) (Read 59078 times) previous topic - next topic


Hi erlz,
thanks for the pictures and the codes:

You have to sort the codes according to the rolling code number:

You used the ones in the following order: 3 then 0 then 1 then 2
Please try to send the codes in the following order 0,1,2,3:

Then you should play a little bit around with the pulse length: I am using 330 right now.

Counter: 0 Code: 39230050 Code: 0x2569A62 Bin: 0010010101101001101001100010 Button: 1 ON/OFF/DIM: 1 Rolling-Code: 3 TransmitterId: 0x9DA9
Counter: 1 Code: 41657942 Code: 0x27BA656 Bin: 0010011110111010011001010110 Button: 1 ON/OFF/DIM: 1 Rolling-Code: 0 TransmitterId: 0x9DA9
Counter: 2 Code: 40312990 Code: 0x267209E Bin: 0010011001110010000010011110 Button: 1 ON/OFF/DIM: 1 Rolling-Code: 1 TransmitterId: 0x9DA9
Counter: 3 Code: 41500278 Code: 0x2793E76 Bin: 0010011110010011111001110110 Button: 1 ON/OFF/DIM: 1 Rolling-Code: 2 TransmitterId: 0x9DA9


Dear WJ4TandA,

I've used the keys captured by my remote.
On the remote I've used the button 1 on/off.

The switch is paired with this button 1. It should be the same code as Im trying to send with RCSwitch.

I do have an update.
I left my arduino running the entire night (forgot to turn it off).
When I woke up I saw the light burning and the switch being toggled on.
Or I have a ghost in my house, or it looks like its working sometimes.
Altho the script is now running for hours without any effect.

What this means is I have to fine-tune the adeptation of RCswitch protocol 4.


Feb 22, 2017, 07:14 pm Last Edit: Feb 22, 2017, 07:21 pm by WJ4TandA
Hi Erlz,

Great it is working now, I never tried to decrypt my remotes. I only utilize work done by others. I also think there are two objectives (perhaps maybe three)
1) switch the switch with an Arduino sketch
2) Find additional codes (in case your neighbour switches your lights) :)
3) create a complete library.

Because I only troubled myself with point 1 I have a sketch which can switch 6 switches.
I simplified the sketch as mentioned before only how the switches are addressed.
This sketch is doing its job for months now with an occasionally flaw
As you can see there are more entries in the library, but only the first 6 are working in my case.

With this version of the sketch you can learn your switches an additional code.
Because each switch can handle multiple codes no urgent need to decrypt the remote.
But new codes are welcome.

As attachments the simplified sketch, library and picture of Action remote/switch.
I think the library is suitable for other self-learning switches.


Hi Karl-Heinz,

I've tried your approach but the response was not good.
I adapted your theory and made 4x4 4-rows variation of the binairy codes.
Im using each posible combination on this way.

Im playing with the setPulseLength and found the "most frequent" results between 320 and 330.
Nevertheless, its very unreliable. Sometimes the switches trigger after just a couple of seconds after my arduino boots. Sometimes it takes minutes before it to react.

I've got 2 switches in my test setup. one 1 meter away, the other 4 meters away.
The strange thing is that the 4 meter away switch triggers more often.
So weird.

Im putting this in the loop, so (except for the delay) there is a constant stream of 443mhz traffic.

What I can conclude out of this:
IT works! but not very functional.
It will be hard "programming" stuff with switches that respond so bad.

Im very curious what I can "tweak" further to improve the results.


Got it working..... :)

found this scatch on Github:


seems that RCSwitch ignoring some codes, and this script also sync the remote to the plug.


I'm new to the topic.. so can someone explain if and how it is possible to run this script on a raspberry pi?
What ist the effect and how do you control the switches after the configuration via Script in rc switch?

Thanks in advance :)


Since this took me a little while to realize, I want to point out here, that there is another type of flamingo rf-devices. The SF-500s. In my case I'm talking about some rf-controlled sockets, I bought on amazon. The vicious thing is, that according to the article description, I even bought m-FS300 and they also look exactly the same. But apparently they are not and they do not use the same rf-codes (at least if I'm not completely mistaken here). They are SF-500s (according to the inscription on the sockets). Maybe it's the next generation or so.

I was not able to receive any signal at all from my remote control with the flamingoswitch library and the rc-switch library. Only the rfcontrol library was able to detect the rf-signals correctly/at all. (I guess because it's too many bits or too many states for the other libraries.)

Now that I have the possibility to detect the code, it does not seem to be such a big deal to work with it. The code seems pretty trivial compared to the stuff, that I read in this topic. However, I wanted to share this inforation here. Maybe it is helpful to somebody.

If you're interested in it, here's the code, that I receive from one of the buttons of my remote control (in the two representations as I getthem from the examples of the rfcontrol-library):

b: 264 2556 1300 10720 0 0 0 0

252 2564 264 1288 260 272 272 276 268 1288 268 276 260 1296 260 1292
256 284 268 280 256 1296 256 280 272 1288 264 1292 252 284 264 284
256 1300 252 288 260 1296 252 288 256 1300 256 1292 260 284 260 284
264 1296 252 1292 256 288 260 1300 252 292 248 1312 236 292 256 1316
236 292 252 296 244 1304 248 288 260 1300 256 292 248 1304 244 292
256 1304 248 284 264 1304 236 300 252 1304 252 284 260 1296 256 292
244 1304 256 284 252 1304 248 296 252 1300 252 296 244 1308 248 1300
248 300 248 288 252 1308 244 296 256 1296 256 1296 248 292 260 292
244 1308 248 10816


Thanks @st3f0 for pointing this out. I was struggling with flamingoswitch and rc-switch, as well. With RfControl, I was able to get our set of m-FS300 working.

Code inspired by Link and Link:

Code: [Select]

#include <Arduino.h>
#include <RFControl.h>

void setup() {


  unsigned long buckets[] = {848, 308, 10364, 0, 0, 0, 0, 0};
  char compressTimingsAon[] =     {"01101010101001100101010110010110101010100101010110101010100110011012"};
  char compressTimingsAoff[] =    {"01101010101001100101010110010110101010100101011010101010100110101012"};
  char compressTimingsBon[] =     {"01101010101001100101010110010110101010100101100110101010100101101012"};
  char compressTimingsBoff[] =    {"01101010101001100101010110010110101010100101101010101010100101011012"};
  char compressTimingsCon[] =     {"01101010101001100101010110010110101010100110010110101010101010011012"};
  char compressTimingsCoff[] =    {"01101010101001100101010110010110101010100110011010101010101010101012"};
  char compressTimingsDon[] =     {"01101010101001100101010110010110101010101001010110101010011010011012"};
  char compressTimingsDoff[] =    {"01101010101001100101010110010110101010101001011010101010011010101012"};
  char compressTimingsAllon[] =   {"01101010101001100101010110010110101010101001101010101010011001011012"};
  char compressTimingsAlloff[] =  {"01101010101001100101010110010110101010100110101010101010101001011012"};

  RFControl::sendByCompressedTimings (4, buckets, compressTimingsAon, 8);
  RFControl::sendByCompressedTimings (4, buckets, compressTimingsAoff, 8);

void loop() {
  if(RFControl::hasData()) {
    unsigned int *timings;
    unsigned int timings_size;
    unsigned int pulse_length_divider = RFControl::getPulseLengthDivider();

    RFControl::getRaw(&timings, &timings_size);
    unsigned int buckets[8];
    RFControl::compressTimings(buckets, timings, timings_size);
    Serial.print("b: ");
    for(int i=0; i < 8; i++) {
      unsigned long bucket = buckets[i] * pulse_length_divider;
      Serial.write(' ');
    Serial.print("\nt: ");
    for(int i=0; i < timings_size; i++) {
      Serial.write('0' + timings[i]);


For what it's worth:
I was trying to get my FA500 switches to work this weekend and stumbled onto this forum.
I have noticed that a lot of people had the same issue: switching ON works, but switching OFF doesn't.
It's not clear to me if a solution has been posted here, but this is what I did to make it work:

I recorded the pulse widths with a simple program into an array. Then I played back the array on the send pin to see if I had captured the A-OFF signal correctly. Once I had a recording that worked, I trimmed away the unnecessary pre- and post pulses by trail and error. So in the end I was left with the minimal sequence of pulses that was needed to trigger the A-OFF. This is the minimal sequence I ended up with:
0100 S 0010 0100 0110 0110 0100 1100 0110 S 0010 0100 0110 0110 0100 1100 0110

S = the start symbol: 1 15
0 = the bit 0 symbol: 1 3
1 = the bit 1 symbol: 3 1

I used a unity pulse width of 330 microseconds.

So it looks like the first start symbol requires an extra 0100 prefix AND the 28 bit sequence needs to be sent 2 times.

I have not yet tested this on the B, C and D buttons yet, so I am not sure if the prefix is the same, or if it is even the same for all devices. So you may need to determine the prefix for your specific device.

I hope this is helpful for anyone out there.

Go Up