I wrote a MicroPython driver for the Ansluta one and can give you some details I learned along the way.
The $20 Ansluta one-button remote uses a 2.4GHz TI CC2500 to transmit one of four 6 byte commands.
https://www.ikea.com/au/en/catalog/products/90300773/
I am using it to control 10W and 30W Ansluta transformers with Forbattra under-kitchen-cupboard LED panels.
https://www.ikea.com/au/en/catalog/products/10320181/
https://www.ikea.com/au/en/catalog/products/80300764/
https://www.ikea.com/au/en/catalog/products/80316878/
It seems the whole Ansluta range is using 2.4GHz CC2500 chips, while the Utrusta range was on 433MHz.
Each time you press the remote's button, it cycles through 0%, 50%, 100%, 50%, 0% brightness.
The inspiration for writing my own driver was so that I could go straight to 100% brightness, and use a microcontroller with PIR and timer to illuminate the panels.
To pair, hold down the pair button on the transformer until it blinks.
Then press and hold the remote button to send the pair command.
After that, the transformer only listens to commands from the remote's unique 16-bit address.
The remote's unique 16-bit address can't be changed.
I sniffed the pair command from a few lights inside IKEA and can confirm each remote has a unique address.
One remote can control multiple transformers, if you pair the remote with each.
Each transformer can only listen to one 16-bit remote address.
The transformers can also be chained.
Instructions:
- 0x01 set brightness to 0% (LEDs off)
- 0x02 set brightness to 50%
- 0x03 set brightness to 100%
- 0xFF pair
The SPI tx packet looks like this:
- 0x7F enter CC2500 TX burst mode (sends each of these bytes without toggling CS pin)
- 0x06 packet length
- 0x55 begin ansluta command 1/2
- 0x01 begin ansluta command 2/2
- 0x66 remote unique address 1/2
- 0x77 remote unique address 2/2
- 0x01 instruction (see above)
- 0xAA end ansluta command
- 0xFF end of packet
When you press the button on the remote, it sends the command 50 times to ensure the receiver is awake and receives it.
Communication is unidirectional. Remote -> Transformer. There is no acknowledge or data sent back from the transformer.
You can adjust the TX power of the CC2500 in code.
Set register 0x3E to 0xFF.
I am not sure what the original TX power level of the one-button remote is, but it works from at least 5m away.
I made a breakout board for making a CC2500 module breadboard friendly, available on OSH Park for around $3.50 for 3x.
https://oshpark.com/shared_projects/chUQvFmW