Sunday, October 04, 2009

HomeEasy Meets Arduino - HomeEasy Automatic Protocol

After several late nights on this one, I've finally cracked it.
Thanks to Barnaby and Peter's postings on I've managed to build an Arduino sketch that will send On/Off signals to a HomeEasy HE302 socket via a little 433 mhz transmitter.

This code takes a HE device code (6 digits) and sends an on signal, then an Off signal.

Code is here, If you want to build this, you just need a little Arduino board, and the 433mhz transmitter I talk about in earlier posts.
Now, go forth and build my friends 8-)


James Byles said...

Perfect, thanks!

Peter said...

The HomeEasy arduino library on the google code page can now handle both sending and receiving of messages. That should make sketches even simpler!

Pete said...

I was wondering if you could help? I'm using BBSB and HomeEasy devices, but using a BBSB Online Controller which I've modified (
I cannot find any contact details for this guy, but he mentions he uses
for off/on commands respectively. I've seen in your code you construct such messages, but I cannot seem to decode them. Could you help me break down the message such that I can send messages to more than 1 device. Ultimately I'd love to be able to send a dim level too.

mart said...

Hey Pete thanks for your comment, I'll see if I can explain the protocol (as I understand it) a little more.

Bruce, the guy who did the firmware mod you mention briefly discusses it here:

To understand the protocol format firstly, take a look at: the sample code on Arduino playground (listing 2 AM-HRR3 receiver test) as it perhaps explains the protocol best: (

It says: "The actual message is 32 bits of data (64 wire bits), bits 0-25: the group code a 26bit number assigned to controllers, bit 26: group flag ,bit 27: on/off flag,bits 28-31: the device code - a 4bit number."

This is slightly different to the implementation bruce has done, mainly because he had to work around BBSB's original firmware and any constraints it had - so I'm not sure how Bruce intended to implement dimming or group control - it may be that he simply didnt do it.

There are loads of posts now on the arduino for HomeEasy, including a really nice library for controlling devices, which you may find more comprehensive than working with the hacked firmware on the controller - I'm afraid apart from reading his site like you did I just kept using my BBSB controller with its original FW for by BBSB devices, and then built an arduino controller that can talk homeeasy as well.

It sounds like you want to do group control (send messages to more than one device?) - you might find that it's more flexible simply to send multiple messages via the controller, because as soon as you involve grouping you'll never be able to separate them for individual control.

You might also want to consider simply 'teaching' all the devices you want to control together the same HomeEasy code from your transmitter? - remember they support several codes in their memory, so I would 'make up' a device address for them all together, send that, teach them all that, then make up 3 more addresses and teach 3 devices one address each - then you get group and individual control.

As for Dimming, the protocol supports it, but no-one I can find has implemented it - you can do a crude dim mode by sending multiple 'on' signals within a second (as you no doubt know from pressing a switch too many times), but an accurate 'go to this level' would be much better - perhaps this is your chance to add to the existing library?

Hope I helped you a bit, sorry I couldnt answer everything. 8-)


derrij said...

Hi, can you explain, if i buy BBSB Ceiling Switch - ICBBMS

it is possible to control Ceiling Switch with Arduino and Home Easy library?

And as i understand I can control Ceiling Switch by Wall Switch BBSB-WS

Am I correct?
Thank you!

mart said...

Hi Derrij.

Ok so you're looking to have autmated as well as manual control of a BBSB Ceiling switch with a wall switch and an arduino.

What you describe should work fine - you just need to make sure you use the 'simple' protocol , as this is the version that BBSB uses e.g A1, B3 etc), rather than the 'complex' protocol that HE uses e.g. 304587 etc.