433Mhz remote sockets - Part 2

As mentioned previously, the kit I bought has 2 sockets. But knowing that the remote can control 4 (it has a total of 8 buttons), it would be good to be able to use the remaining unused buttons. And why not, since the state of the socket can't be retrieved, to intercept and store the current state.

Lacrosse/Digispark receiver

It happens that I already have a 433Mhz reception system which was recently extended.

Maybe there is a way to squeeze yet another protocol?

It turned out that it was quite easy to do without much interference to the existing two decoding pipelines!

Meet the 433Mhz receiver

433Mhz Receiver

Basically, the signal from the remote will appear as a series of High pulses which are shorter (~ 320µS & ~ 960µS) compared to the one from the sensors (~ 500µS/1300µS and 1900µS/3800µS). If a string of these specific pulses is detected, then we switch to the remote decoder.

The signal being sent at least 3 times from the remote, this mean that we can intercept the second or the third transmission. The transmission itself starts with a "very long" pulse (31 times the base pulse). The encoding is based on a tri-state system which basically means, since we can ignore the floating state, that every other bit must always be a 1. The data consists in the address part, the button part and the state (ON/OFF) repeated but inversed.

For example:

1010111010 1110101010 1110

can be decoded in (checking then removing all the odd bits):

00100 10000 10

and interpreted as:

  • address (DIP switches): off-off-on-off-off
  • button: A
  • Action: On

Code

Since there is now a little bit more than Lacrosse sensor decoding, I renamed the project on GitHub to 433Mhz receiver...

The code can now be found at the following address: https://github.com/guillier/433mhz_receiver

And now?

Since I embraced the MQTT protocol, I added the conversion and now any touch on the remote control is translated into something like (to carry on with the example above):

  • Topic: cm/remote-00100/action/a
  • Payload: {"ts": 1451215192, "value": "on"}

The first part is complete. Hooking up a 433 Mhz emitter (remember this?) on the Raspberry Pi is easy but for both technical and whimsical reasons, I have something else in mind...