19
Apr 15

Multi-zone audio: a discussion of the options

Multi-zone Audio: the last 15 years

Multi-zone audio has been possible in the home for decades now, but until recently has only been an option for the super-house; the high price of systems and installation meant it was out of reach for the average home.

The first cheap device I know of that opened-up multi-zone audio to the consumer market was the SliMP3 (2001), which quickly matured into the Logitech Squeezebox ecosystem of devices and apps. Unlike the old paradigm, where a multi-zone amplifier had to be connected to a central source which was then controlled from each room – thus requiring direct connection from each room to the central unit (i.e. in-wall wiring) plus speaker cable running from a central location back out to the rooms (i.e. in-ceiling wiring) – the Squeezebox was situated in your living room and bedroom and connected to your speakers directly. It used a wireless connection to talk to the central controller, providing access to a central store of music, sync’d or independent control of audio for each zone, internet music, and other bells and whistles.

Sadly Logitech abandoned the product in 2013, but as of 2015 the ecosystem lives on thanks to software players and a surplus of cheap, high quality second-hand audio players which are still traded online.

Sonos filled the vacuum. Their units are more expensive than Squeezebox devices and many have built-in amplification. They are frankly sexier and more user-friendly, but for the audiophile, advanced music cataloger, classical music listener, DIYer, or home automation expert, Squeezebox still has huge advantages over Sonos.

The Problem / The Dream

The problem with the Squeezebox/Sonos paradigm of multi-zone audio is this: although you can play different music or listen to different radio stations in each room, you are limited by what the system itself can do. For example, Squeezebox and Sonos are internet-enabled music players. They don’t play Bluetooth audio or music playing on your Apple TV, they don’t play CDs, and they can’t pump the music from a YouTube video projected onto your wall around the home. Surely this is “The Dream”?

You still need a multi-zone audio amplifier for this. And they cost bucks. Big bucks.

You want

  • expensive hi-fi quality audio in your living room, and some cheap amplifier to power the speakers in your bathroom and hallways?
  • 12 zones of control instead of 4 because your hallway speakers are next to the kids room and you would rather have them off and night?

Forget it. Not without quadrupling your budget from £1500 to £6000.

The likes of Niles Audio who produce a network-controlled amplifier, and Russound who make interesting looking wireless-powered receiver amplifiers amongst other things seem like good options. Again these options do appear to total the thousands, not the (very) low hundreds which I’m aiming for.

And sadly even if you spend £6k+ do you think you can have the bells and whistles? What about

  • controlling audio volumes in each room from your central automation system (e.g. OpenHAB) as well as some proprietary wall panel?
  • fading the music across the whole house when someone calls you on the ‘phone?
  • fading the music down when the doorbell goes?
  • having your house speak to you?
  • speaking to the burglar when he enters to freak him out?
  • [insert your own #homeautomation fantasies!]

Possible Solutions

I looked at multiple source, multiple zone systems for a long time before deciding that I needed to home-brew my own. Here was my thought process:

  • I have some nice Class A amps sitting around. They cost me hundreds in total, not thousands. Why can’t I use them?
  • I can pick up a Class D amp with power supply for £20, for kitchen and non-audiophile zones
  • I just need to find a way to do the switching and mixing of multiple audio sources

Reed relay switches. With a view to making my own Arduino-controlled source switcher I looked at using transistors, relays, or dedicated audio ICs. I gravitated towards the idea of a series of reed relays to switch multiple audio sources. A relay is a cheap and very high quality way to switch an audio signal because it introduces no distortion or load to a circuit. Reed relays are great because they would minimise the audio click you’d otherwise get when using a metal relay to switch from one source to another. Reed relays unfortunately don’t come in complex arrangements such as 2P6T which would be nice, as this would allow you to switch the positive signal path for L and R between 6 sources – but this is not a huge problem as they are only a couple of quid each and so you can buy multiple reed relays.

After thinking about this a little more, it becomes apparent that you can’t just connect up a load of relays and hope for the best: your board design must account for minimising cross-talk. Whatsmore, using relays only solves 1/3rd of the problem: the input stage. You still have to route signals to multiple rooms and if you are aiming for the dream option of fading something down when something else happens, you have to design gating and signal detection. Routing audio to multiple rooms isn’t simply a case of connecting one signal path up to multiple rooms’ amplifiers. Adding more than one load will introduce distortion. And although gating and signal detection is possible with cheap ICs, this is starting to grow into a big project!

Wow… this idea got out of hand quickly.

Using dedicated audio ICs. Whilst it’s possible to find audio switching and mixing ICs, it becomes apparent after a little research that such ICs have rather specific applications, furthermore then aren’t very “black box”; a significant investment of understanding about their inner workings is required to design them into an application. When an ICs application notes is a document 45 pages long, this particular home automation DIYer knows it’s time to consider alternative options!

Making the Dream Happen!

Sorry, dear reader, to drag you through this rather pointless process. I’ve banged-on about my take on the development of multi-zone audio over the years, and let you into my raw thoughts about designing my own system, which amounted to nothing.

If you’ve got this far, however, I do have a great solution for the Audio / Home Automation enthusiast looking for the same things as me.

The ClearOne XAP 800

  • It’s a 12×12 audio switch / mixer
  • No it’s not an amplifier, but it will be the core of your multi-zone automation system
  • It’s cheap – very cheap and highly available second hand (£30 ebay)
  • It’s very powerful
  • It’s rackmount

And here it is:

xap800

ClearOne XAP 800 – a 12×12 audio mixer

 

 

If the above looks to you like it has worryingly few buttons on the front, then like me you may be thinking… “hmmm, is this thing software controlled?” Yes it is.

And if the above looks to you like it may be far too small to house the numbers of inputs and outputs you would need to power a whole home, then rest assured:

xap800-rear

 

I’ve just bought mine on eBay for £25.

Don’t be put off, it’s called a “microphone mixer” and a “conferencing system”, and whilst I’m sure it’s great for B&Q’s staff announcements, this baby is a dream come true for home automation and multi-zone audio.

Why is it so cool? The product manual will answer that (nicely written too), but here’s my take with a Home Automation hat on:

  • Core use: an audio routing matrix. Basically this provides everything that the most expensive Crestron multi-zone system does, and more. Route an audio source to a single room, multiple rooms, or groups of rooms. Route another audio source to another room or set of rooms. Switch the source or zones from anywhere in the home. Keep going until all rooms have the exact audio you want. Rooms could be set up as stereo zones, mono zones (e.g. bathroom), or even 5.1 theatre zones.
  • Scenario presets. Because of the possible complexity of a 12×12 routing matrix (i.e. assigning different sets of audio to different rooms) you will want to have presets. The XAP 800 supports 32 whole-system user presets.
  • GPIO: interface with your home automation hub via an Arduino. Amazing! Imagine the possibilities:
    • Remotely control the presets, e.g. listening scenarios.
    • Remotely control volume, set EQ Presets, and control audio routing direct from my MQTT wall panels! (Did I mention this thing has digital signal processing?)
    • Page someone from another room, and fade-down the audio if they are listening to something
  • Not only does the unit have GPIO, it has GPIO assignment. There’s even a “GPIO builder window” in the software, meaning that you can assign whatever you wish to the input / output pins.
  • The device supports gating, gating groups, configurable ramps, and a whole load of other advanced stuff when it comes to stopping one sound when another one happens.
  • The device has echo cancellation and some advanced “adaptive ambient level”, which means it can detect noise even when there’s ambient noise in a room. Useful if you want to hook-up some home automation voice commands with boundary mics
  • Rest assured, mic/line level can be configured for each input

Looking forward to getting my new XAP 800 hooked up with some pre-amps, amps, audio sources, speakers, and an Arduino to give it all a whirl!


31
Jan 15

Pimped-Out DIY Alarm Bell Box

For reasons of general sensibleness and security I won’t go into much detail about exactly how my DIY Alarm Bell Box is configured to work in relation to actually keeping thieves away. Suffice to say: network of sensors indoors and out, differential siren sounds depending on alarm state, iPhone notifications and emails to neighbours (seriously, I will be doing the same custom install for them, they are very nice people. And big. Very very big. 7 foot. And they have dogs. Dogs that eat anything.)

So the thing pictured below looks like a dummy box, it’s sold as a dummy box, but it is far from a dummy box.

It’s sold on eBay for £9.10 including postage from a UK seller (that price is without “dummy LEDs” – I’ll be adding my own thanks), and it does rather fortuitously have a rather sophisticated plastic moulding design inside that allows the placement of alarm sirens, LEDs, internal housing boxes, and incoming cables.

Cheapo alarm sensor casement  £9.10 including postage

The box itself is not IP66 rated, but that’s not a problem because I have bought from Maplin an internal component box and some anti-mould silicon sealant which will do the job of making sure the electronics I’m about to pimp this thing up with stay nice and dry.

So what’s going into this puppy?

Arduino Nano, obviously. And a tiny red W5100 break-out board to provide networking. Oh and this cool super-tiny buck converter to allow me to power the thing over ethernet:

nanow5100-redmini-fulree

 

And the cool stuff? Why not:

  • Vibration sensor (for anti-tamper)
  • BMP180 Barometric pressure sensor (we always need to know outdoor pressure, right?)
  • BH1750FVI Ambient light sensor. This is mounted under the blue window, but it doesn’t matter because the serial output needs calibrating to some kind of meaningful scale anyway, so it’s all relative
  • DHT22 Temperature and Humidity sensor. Because it’s wrong not to
  • 4x ultra-bright red LEDs
  • 4x ultra-bright blue LEDs
  • 4x ultra-bright green LEDs
  • 2x cheapo very loud buzzers (Maplin and eBay – £2 each – different pitches)

BH1750FVI_I2C_Digital_Light_Sensor_Module$_35large_DHT22sku_172935_1ledsKnight-Rider-knight-rider-the-classic-series-15237185-1003-694

The astute amongst you will notice I’ve already maxxed-out the pins on the Nano, but LEDs will be in groups of 2, meaning 6 pins. This still gives me Knight Rider options. More importantly it allows me to use a number of signals to would-be burglars.

I may even use these addressable LEDs with driver, if I can be bothered not to program individual LEDs myself.

Naturally the thing will report sensor values on their own individual MQTT topics back to my OpenHAB server which stores all data for historic purposes.

And naturally the thing will respond to commands such as:

  • Make discreet but audible warning beep to potential intruder in back garden when house armed
  • Make screaming noise when house security has been compromised (this of course along with iPhone notifications / emails sent to me and three other nominated contacts. I’m lucky, I have cooperative neighbours who will take care of these things)

Such commands will be triggered in OpenHAB from network of sensors inside and outside the house, including vibration sensors on doors etc.

Will I get a twitter notification when a cat / dog / fox moseys into the back garden? Probably.

And the fun stuff:

  • Using a series of fun flashing sequences, alert me when I walk down the road whether wife, child, or both are home. (FYI I’m not really married.)
  • Using a series of fun flashing sequences, alert me when I walk down the road that I should have brought an umbrella as the forecast shows it’s going to rain in the next 4 hours
  • Using a series of rather serious and angry flashing sequences alert me that I left the window open when I left the house
  • etc.

 


27
Jan 15

How Kerning Could Save Your Life

As someone who buys electronic goods from China on a regular basis, I am used to looking closely at the CE logo to check how close together the letters are.

For my buying habits it doesn’t matter. I’m dealing with low-voltage stuff. The worst that could happen is a component might overheat and cause a fire in my loft space melt a bit.

hazymat-CE-marks

It’s not that the Chinese make dangerous electronics. It’s just that they (I should be specific; “they” means the Chinese Export regulatory bodies) don’t do a great job of checking whether the electronics they do make are safe, or whether they are likely to kill you.

I’m probably splitting hairs.

Recently I bought a job lot of COB – as in “corn on the cob”, or “Chip On Board” – LED light bulbs. Gladly mine were safe by design, but as this video shows I got lucky.

 


16
Jan 15

Home Automation PoE with Arduino – in praise of DIY PoE!

Disclaimer

First up I’d say in any professional environment there’s no way I’d recommend anything but “proper” PoE, that is to say 802.3af or PoE plus.

For DIY home installations, however, we can do things differently. And I don’t mean “substandard” by any means. Rather we can do them in a more tightly-spec’d way, we can design our own system of distributing power that is equally efficient in terms of power loss, and equally reliable… but far cheaper.

(The reason you wouldn’t inflict this on a corporate environment is not because it isn’t as good, but rather the next guy / girl who comes along won’t spec the replacement power supply properly, and blow something up. Also DIY jobs tend to vary in quality, whereas using a PoE switch and device gives a standard of power distribution quality that can be relied upon. We DIY types do things properly, we are masters of our own home, and we know how to do basic maths, so it’s okay, right?)

DIY PoE with a buck converter - dodgy connections fine for prototyping but we can do better

DIY PoE with a buck converter – dodgy connections fine for prototyping but we can do better

Preliminary

I suppose I would sing the praises of DIY PoE for the home, because when it comes to electronics I love doing things myself.

This isn’t true with computers, I can’t be bothered to faff around swapping RAM out or upgrading motherboards for my own gear any more, although I used to love doing that. Perhaps that’s because in the 90s desktop PCs were the rage and to play better games you had to have the better video card, which required knowing how to change the video card, which meant knowing how to build a computer. I don’t play games any more and I certainly don’t remember the last time I used thermal paste on a CPU. Or maybe it’s because there are no cost gains to be had with DIY computers these days.

Not so with PoE!

Below is a little chat about PoE, and at the bottom of the post I’ll go into what I am using in my wall controller project.

Most computer / network techies already know the basics when it comes to PoE, but this post seeks to shed some light on the choices to be made when considering PoE for Home Automation.

Why PoE? (Skip this if you already get it.)

Most wired network devices also need some way of powering them. Wireless Access Points, network cameras, intercom systems, control panels, they all need power – but if you are already taking a network cable to them, why not use that cable to also deliver power to them as well? Here are two benefits: no need to hire an electrician to extend your ring mains to awkward places, no ugly extra cables on wall-mounted devices to compound the felony.

Certainly in the case of my uber wall control panels, they are being sited inside wall boxes at various points in the house that don’t require power. To bring power to each panel would be a lot of extra cables in walls, and the installation cost would increase hugely. There’s spare capacity in a CAT6 or CAT7 cable, why not use it?

Active vs. Passive PoE

“Passive PoE” is a bit of a misnomer, but that aside – here’s a comparison.

Active PoE is industry standard in business, and involves sending 48V down a network cable to the device. The power usually* comes from the network switch itself, and the device has some special electronics that talks to the switch on the other end of the wire and negotiates power using a series of signals (resistance detections and presentations of loads). It’s pretty complex, and in fact PoE isn’t really one standard at all. (“The thing I like about standards is that there are so many to choose from…”)

The other thing the device must do is step-down the voltage to whatever it requires.

* Many people use mid-span injectors, that’s where the switch doesn’t supply power but you can inject power using a separate device. This gets messy if you have very many devices requiring power, but as a general rule fine for the odd one or two.

Passive PoE is a system that simply splits your ethernet cable at both ends, allowing you to place your own power supply at one end, and then connect your device power to the splitter the other end. No power negotiation – no voltage step-down.

There are shoddy implementations of passive PoE, and there are lovely ones.

A common example is where, instead of hooking up a power supply directly to where your security camera is installed, you can install a splitter at both ends. On the camera end, your splitter has a little power plug that connects to your camera (sinking power), and on the other end your splitter has a socket that connects to the power supply (sourcing power).

Active PoE – pros and cons for home use

Pros:

  • Higher 48V transmission over cable means lower voltage drop-off = decreased power loss (saving money on bills).
    • NB Passive PoE allows you to supply whatever voltage you like, but more often than not it’s used with existing 12V or 9V device power supplies
  • Power negotiation is great because it means that a device is only allocated the power it requires; where there are more than a few PoE devices, this quickly becomes a sensible idea for all aspects of a system (cooling, conserving energy, etc.)

Cons:

  • PoE switches are usually expensive (£350+)
  • PoE switches are usually very noisy (bad for the home environment). You can find cheap fanless switches such as the Cisco 2960C-12PC-L or D-Link DGS-1008P/B, but most smaller switches tend to have PoE capability only on half the number of ports (e.g. 8 port switch has PoE on 4 ports).
  • PoE requires your Arduino project OR your network device must support it. Network devices supporting PoE are usually far more expensive.

Re the last point, it’s possible to include some electronics that will supply your Arduino project with PoE but they cost £16 on top of the network shield:

From Sparkfun: a network shield with PoE module (the black board that sits vertical on the shield)

From Sparkfun: a network shield with PoE module (the black board that sits vertical on the shield)

£160 for 10 units, not including the network shield!

Or you could get an Arduino with built-in network and PoE, such as the excellent EtherMega. These are wonderful, but this is even more expensive.

Finally you could get your own chip and include this in a project but it’s still about £6 per unit, see Silvertel Ag9800 themal protected 12vDC module.

Passive PoE – pros and cons

Pros

  • Reduced complexity for your project. No inherent need for power negotiation electronics, or step-down converters (unless you want to)
  • Far cheaper. PoE passive injectors cost £20 for 8 ports. You supply your own power supply. Of course, no extra electronics at the device end, so it will support most things that come with their own power supply. Your Arduino project may need no special electronics, depending on how you implement it. In my case I added step-down voltage at the other end, read on for more info.

Cons

  • Most devices want to run at 9, 12, 15, 18v DC. At these lower voltages, the power loss over cables is significantly higher. This requires thought about two things:
    • Electricity bills – are you wasting money?
    • Power tolerances – will your device work reliably if running from a slightly lower voltage?
  • An extra hub in your comms cabinet = double the number of patch cables = more mess

Which is best?

So which is better for Home Automation? Looking at the Passive PoE cons, I can live with the extra mess, but really how much power is lost over a CAT6 cable?

Joule’s Law

If we can minimise power loss, perhaps we can justify the cheaper option as our cable runs in the home won’t be so long. Let’s take a closer look.

According to Joule’s Law, if we keep the voltage high then DC electrical transmission power line loss will be low. So the first thing we want to do with passive PoE is get the voltage as high as we can (within reason – we are talking low voltage systems here!)

On the other hand, the higher the voltage on your Arduino, the less efficient the conversion down to 5V will be, this is because your Arduino has a linear voltage regulator which is not wonderfully efficient. Also the harder you drive that voltage reg, the hotter it gets. And don’t forget the acceptable voltage input range that your particular Arduino can handle – check the data sheet!

As you can see it’s a trade-off. The best option is to use a non-linear voltage regulator, aka a switch-mode power supply or buck converter. Obviously this is places at the same end of the CAT5/6/7 as your Arduino, so you can benefit from lower power loss over the cable.

Pros of using a separate buck converter to power your arduino over ethernet:

  • Doesn’t get as hot = safer for home installations
  • Doesn’t waste as much power in the conversion down to 5V. Buck converters are typically 95% efficient. Linear regs’ efficiencies depend on a number of factors such as how hard you drive them, but they are generally 50-70% efficient. (I’ve pulled these numbers from the air!)
  • Means you can put a far higher voltage down the line, e.g. some small buck converters can take 30V down to 5V without getting too hot. This in turn means less wasted power because of Joule’s Law.

Cons of using a separate buck converter

  • Introduces another component that takes up space on your circuit board or project board
  • Can introduce EMI (electric noise) to your circuit, which means you need to be careful about how you design your circuit, and how you lay out your circuit board.

For an excellent introduction to buck converters, check out the videos of Julian Ilett or Afrotechmods on Youtube.

For the sake of answering my own question above, “how much power is lost over a CAT6 cable”, I measured 12V down a 20m cable sinking 400mA at the end of it, and the power had dropped 0.9V. This is fine, but it will vary for cable runs, so let’s run at a higher voltage and not use the Arduino’s in-built linear regulator.

In the end I found this lovely little device on eBay. You can pick them up for £8.30 for 5 = £1.66 each including shipping. Search for “Ultra Mini DC Buck Converter”.

Cheap as chips. (Actually cheaper.) Ultra mini buck converter.

Cheap as chips. (Actually cheaper.) Ultra mini buck converter.

Strangely the auction says “12V to 5V Power Supply 7-22V to 5V”. I think that means you can get them in various flavours outputting anything from 12V to 5V. Lower down on the auction it says “Output Voltage: DC 5V”, so that’s okay. I tested them before I hooked them up and the voltage was a very reliable 5V… although I didn’t test with different current draws, only about 550mA.

Incidentally if anyone with an oscilloscope has used these before, let me know how clean the output is.

They also come in 1A and 2A flavours, I plumped for the 2A versions of course. I’m sceptical about driving 2A from it and I don’t plan to do that ever!

This “Fulree” branded cheap buck converter seems like the same thing as one you can get from Sparkfun:

Sparkfun Buck Converter - tiny

Sparkfun Buck Converter – tiny

I’ve no doubt the “Traco Power” branded one, also available from Farnell, is superior in quality, shielding, and design. But it’s £5 and I’m a complete cheapskate. (i.e. I’m making 20 of these things and every little saving will reduce my total project cost from thousands to hundreds.)

You could also buy another type of buck converter, even cheaper but not as compact. It exposes the whole circuit on a board of its own and is based on the LM2596 switching regulator. If you do, make sure to watch Julian Ilett’s warning video on not getting a dodgy version:

The other alternative is to include your own buck converter circuit in your project using components from scratch, but there are some design challenges you must be aware of and the components stack up to be more like £3-4 – not worth it. See this beautiful Youtube vid from Afrotechmods for more info.

What cable to use with DIY PoE?

We don’t normally bother about cable gauge when it comes to CAT6, as performance is more about minimising cross talk, shielding, and data transmission speed – not wire thickness. Well, of course the latter does affect the former, but either way for the pursuit of low cost PoE, we must consider this.

Do get good quality CAT5/6/7 cable – preferably CAT6 minimum for PoE. I measured a single strand of my CAT6 cable. The cable measured 0.6mm diameter on my Vernier scale, which is approximately equal to 23AWG. I’m using LSZH (low smoke zero halogen, aka LS0H) infrastructure cable, that is, rigid non-stranded cable that can bend a few times but is not designed for regular movement. Good for home installation if a little rigid. It cost £100 for 305m reel from a local electrical reseller.

My wall controller project

After a whole load of price checking and electronics research, I decided on this solution for powering my Arduino over ethernet:

  • Standard network switch
  • Cheap 8 port PoE injector (£20 each)
  • Re-use old Dell power supply (free if you have them already)
    • 19.5V = perfect for longer runs
    • High power (90W or 60W), high quality
      • 90W split 8-ways is 11.25W per port
      • Almost certainly enough for your project, unless you are powering motors or lights
      • P = VI. My project uses max. 450mA at 5V, so that’s 2.25W.
      • 2.5W. Don’t forget to do a back-of-fag-packet calculation for power loss and include a lot of headroom. Include line loss, and assume 5-10% loss in the buck converter
    • Chop connector off and replace with 2.1mm connector
  • CAT6 LSZH
  • Fulree buck converter at Arduino end. Connect both browns to GND and both blues to IN (check wiring standards and verify this yourself!)
  • Split ethernet cable at Arduino end and use PCB block connectors. I may develop this to route power through the W5100 board in the future, but right now this works for me.
  • Connect output of buck converter to Arduino’s 5V connector.

I do have a PoE switch at home, but given the amazing cost benefits of the above option, and the fact it makes a big noise, I’m not going to use it for my project.

 


09
Jan 15

The spec for the ultimate home control panel

A number of months ago I became obsessed with the idea of controlling my room lighting using knobs in the wall. Crazy, I know ;)

Seriously though, most lighting automation systems do not use rotary controllers (i.e. knobs), but rather you have to keep your finger on a button until the desired light level is reached. Isn’t that so 1990s? Knobs are the way forward. Worse still, many only let you select “scenes” without even controlling individual light level. So I set about making my own digitally controlled lightswitch. The process has been one of research and learning new skills. Soon enough I stumbled upon the ultimate way for things within the home to communicate with other things: MQTT.

Here are my design goals for the ultimate home control panel for each room.

Aesthetics

Use physical buttons and lights NOT touchscreen. I find touchscreens great for web browsing but when I want to control lights and volume I need an accuracy and responsiveness that can only come from;

  • tactile switches with visual feedback
  • rotary controller knobs
  • display screen showing levels as percentage (i.e. numbers) for fine adjustment

Look sexy. DIY metal faceplates with push buttons conjure-up images of 1970s style control panels. Disabled toilets. Hobby aeroplane remotes. I’m going with brushed stainless steel faceplates with no visible screws, smaller LED-integrated tactile buttons, matching brushed steel knob.

Use numbers on the display. In the increased sexification of home automation, things have become too touchy-feely. Having controlled lights and music from my iPad, I get annoyed if you press in slightly the wrong place, or need to make that super-fine adjustment. Also I get annoyed by the ubiquitous slider and the lack of information it provides the user.

Installation

  • The faceplate must run at low voltage, requiring no special electrical certification
  • Connected with ethernet (CAT5, 6, or 7)
  • Powered over the same ethernet cable
  • Fit within a back-box readily available in shops: 47mm depth max

Function

  • Use “Scene” buttons to quickly select the lighting mood in a room
  • Dim individual lights in a room to create your own scene
  • Quickly cycle between different lights in a room
  • Control music volume and see what’s playing (track title and artist)
  • Similar to light scenes, there should be audio “favourites” (i.e. radio channels, playlists, shuffle mode for a given genre, etc.)

Scalability

  • The unit is designed for a range of functions, but can be expanded later to incorporate more. e.g. lighting and audio modes have their special uses and displays. As it’s based on Arduino, the sketch can be updated by USB later.
  • “Thing” settings (i.e. how many lights in a room, the name of a light in the room, the name of a scene for a given room) should be queried from a server and downloaded to volatile memory at startup. These things are not stored in the unit.
  • We should be able to press an “update” button to pick-up the latest settings. Home automation installers and users change their minds all the time!

Interface

  • “WAF” is an offensive phrase used in #homeautomation talk. It stands for “wife adoption factor”. Maybe “GAF” – grandparent adoption factor? No – that’s swapping one prejudice for another. “HAF” will do nicely – human adoption factor. The controller must be the perfect balance between powerful and usable. I don’t mean “powerful for the geek, usable for the granny”. I mean “equally powerful and usable for both”.
  • This means: consistency of display and immediate access to primary functions. No menus, no prompts! Placement of buttons should be intuitive.
  • All light should cease when it hasn’t been touched for a while. No lights in the middle of the night!

The solution I’ve settled for is a “mode cycle” one. Like old digital watches. The mode button is set apart from other buttons and placed near the icon displaying the current mode. All other physical controls depend on the mode in question, and their function is intuitive given the placement.

Consistency comes from the unit defaulting back to a “primary” mode after x seconds of not being touched. The display dims appropriately.

Here’s a brief demo of the progress so far – January 2015:


12
Aug 14

Arduino and code efficiency

The thing I love about programming for Arduino is that, unlike programming in most other environments nowadays, you are forced to think about memory footprint, memory allocation, and how your code relates to the hardware.

That’s great for people like me who don’t really consider themselves coders at all, because “perfect code” is less about something that’s mathematically beautiful and conceptually elegant, and more about getting the job done. In fact the code is often more efficient if you spell it out line-by-line in a bunch of nested if statements, rather than abstracting it into a pre-written processing function that may do the job in fewer lines of code but end up costing more in storage space because the function itself is general purpose.

Take for example this code. Horrendous to mathematicians I’m sure, but lovely for electronics engineer types;


void callback(char* topic, byte* payload, unsigned int length) {

Serial.println("Volume Callback");

if (length == 1) { output = payload[0] - 48; Serial.println(output); }
else if (length == 2) { output = ((payload[0] - 48) * 10 + (payload[1] - 48)); Serial.println(output); }
else if (length ==3) { output = 100; Serial.println(output); }

}

In the above you can see I have a byte array, each location in the array is an ASCII representation of a digit that forms a number. I know that number coming in from the payload will only ever be between 0 and 100, AND have considered in what situations that might not be the case and what would happen. So it will have a maximum of 3 digits. Indeed if it does have 3 digits the number must definitely be exactly 100. And so rather than using expensive string to integer manipulation functions which add 2k (yes, 2k!) to my sketch it is cheaper to write it out in if statements that calculate it in a “units – tens – hundreds” way working on the basis that the characters 0 to 9 are represented in the ASCII table consecutively.

So oftentimes it’s more computationally efficient to write more lines of code than fewer, which is great for idiots like me who tend towards wanting to put everything in terms of flow charts and IF statements!

There are so many examples of the above I’ve discovered so far, e.g. using a switch statement, whilst looking a little clearer on the page, is worse than using IF statements unless you have over at least 4 cases. The exact detail depends on your sketch and how variables are stored of course.

Arduino helps us by showing us how many bytes your sketch is at compile time. Great for keeping an eye on things as you progress your project.


09
Aug 14

Arduino, MQTT, OpenHAB and the Ultimate Room Control Panel

Little demo video of the project so far below!

My idea for a room control panel came about after seeing the vastly expensive options on the market, and because we are building a new home!

Lovely! But I can do *far* better, right?

Lovely! But I can do *far* better, right?

 

I love the brushed stainless steel precision-cut panels they offer – so I plan to make my own.

Not only are the options available a little* over budget, more importantly they don’t come close to addressing my ideals:

* a lot

  • Combine lighting and audio control into one panel. Soft dimming of multiple lighting channels with advanced / user-friendly audio control.
  • Field nodes small enough to be placed in wall back-boxes and controls flush-mounted in the wall.
  • Accessible but autonomous. Should not require changing batteries or worrying about someone hacking the RF wireless protocol. CAT6 and mains powered. RF options with secured MQTT an option, but we have a blank slate with cabling so prefer to go wired.
  • All control to communicate with an automation server (Windows laptop / RPi / whatever) which provides rules that integrate audio, lighting, security, and give me access from out of the home. Must be resilient to server outage; lighting must still work using physical switches.

The audio control aspect is particularly close to my heart:

  • I have always used Squeezebox. Whilst Sonos is more “user friendly” it doesn’t cut the mustard for me!
  • Hardware controls for audio in every room. Physical dials and buttons with tailor-made visual feedback and ergonomic design.
  • Audio to be controlled from anywhere and any device, therefore control panel must show updated volume and status. Volume display using LED ring around a knob (muted colours, no “chav-blue”!)
  • Backlit display showing current artist / track.
  • Discreet display which lights up when you walk past, or move within e.g. 1m of the panel (distance sensors).
  • Presence sensing for added convenience.

You’ll see I have shunned wireless communications and touchscreen control devices. Whilst they might seem sexier, to me nothing beats the reliability of cables and the hard, fast, robustness of a physical knob. Especially when we are controlling digital devices, it’s so hard to get that lovely “feel” when turning things up and down, but we must try!

(Also I have a huge surplus of CAT6 cable :)

My budget includes laser cutting some screwless faceplates, and even with this custom work, it’s looking very likely it will still be around 5-10 times cheaper than anything else I’ve seen… and SO much better.

Check out my progress so far!

In this video I’m perhaps unfairly harsh about OpenHAB and provide no detailed information about MQTT, but I’ve spent a great deal of time assessing OpenHAB vs. alternatives like Domoticz, and I’m sold. I believe it will become the glue that will hold the increasingly disparate world of automation together. It provides persistence, data access layers, and a binding for pretty much any automation device or system you care to think of.

It’s true that OpenHAB is daunting for the non-coder, but v2 is set to address these problems. Most importantly for me, OpenHAB has an advanced rule engine and a lovely array of software control interfaces.

MQTT as a transport protocol is a winner; HTTP is clearly not appropriate for sensor networks and REST is for sleeping. I may post about MQTT in more detail later but I’m really satisfied by how sophisticated and simple it is, and I find it highly intuitive. I like the mindset behind MQTT which you can read about here.

 


03
Aug 14

A world of home automation opening up

So I became pretty obsessed with home automation. You know, the type where your home detects you walked through the door, turns the lights on, and says through the speakers, “Hello Mat, did you have a nice day?”

Actually the above, whilst it sounds a bit sci-fi, is something I already tested out in my home to great success. My home automation system can now speak to me and tell me things. It’s a fine line tweaking it to only communicate useful things, such as “I see you are getting ready to go out, don’t forget your kitchen window is open”, but it’s important that the automation system doesn’t become a gimmick. For example, and this is something I tested, using a combination of cheap wireless sensors in different rooms allows me to write rules: bedroom door shut, lights off, bathroom detects movement, front door opens, BANG – he is leaving the house. Automatically check windows and if any are left open then speak a message through the home network audio system using Google’s voice servers. Then send a notification to my iPhone.

Sounds far too neat to be true, but it works a treat, and reliably too. It really is “set and forget” once you get the rules right.

Whilst I ditched the “hello Mat” bit spoken through the speakers (it got annoying after a while), you must agree the hallway lights coming on when you enter the home is a rather warm and lovely thing you might want to keep.

Using a combination of cheap and free bits of tech, it’s rather easy to do this*.

* I say easy. It’s easy for the geek or the technically-minded, but sadly out of reach for the technically-challenged at the moment. No doubt this may change in the coming years.

First of all you need to replace your lightswitches with the lovely RF controlled dimmer types available from manufacturers such as Z-Wave / Fibaro, or closer to home, an English company called LightwaveRF who make very cheap multi-way multi-gang dimmer switches that pair with controllers also manufactured by LightwaveRF. These were until recently found in B&Q, I think stock may come back shortly. After playing with those for a while you can stop using the LightwaveRF handheld radio remotes (they are radio, not infrared. That means they work anywhere in the house), lovely as they are, and for £80 buy an RFXtrx which is a little USB device you plug into your laptop or server or Raspberry Pi and it transmits and receives signals and talks to your lights.

Now hook the RFX with a computer running one of the excellent open source automation products, all free of course, and hey presto – you can now control your lights from the nearby park from your iPhone! One-touch access to moods, scenarios, dimmer sliders, you name it.

A lightswitch is an “actuator”. LightwaveRF – and many others – also sell “sensors”, such as PIRs to detect movement in a room, or door sensors, which feed into the system too.

Many home automation products – the one I have settled on is called OpenHab – allow you to integrate with a number of systems you might already own. Network home audio? You bet! OpenHab has a binding for Sonos and Squeezebox. They integrate with Google Voice. No extra cost and only a bit of extra playing to get it working. The world of opportunities now opens up – you can now control your music AND your lights from your light switches…

Actually it turns out that of course the LightwaveRF switches only receive signals, they don’t send them out. They ship with remote controls that can be re-purposed for controlling your volume and play / stop etc., but the lightswitches themselves will clearly need upgrading to the more expensive Z-Wave RF types which have 2-way communications in order to do such a thing. Well I don’t plan to do that because I’m a cheapskate, and more importantly I love the challenge of building my own room audio controller. This gives me a chance to integrate a pretty flush-mount digital display into my walls showing the current playlist.

Next post: the new home.


03
Aug 14

Arduino – the beginnings of a journey

Warning: geek post to follow.

Anyone who has been unlucky enough to know me over the last 3 weeks will realise my obsession with all things Arduino has got out of hand. From the initial buzz of realising “I can do ANYTHING with one of these things” to the late-night shopping sprees with Amazon sellers who distribute from warehouses in Hong Kong (I placed my 18th Ardunio order in 3 weeks yesterday night at 4am … gladly most of these purchases come in around a quid per unit so it’s not even that expensive a hobby so far), it has been a fun journey so far.

My first stop was to give myself a brief refresher in electronics and coding in C, so I followed some excellent examples from the Arduino “getting started” book. Right, after 13 minutes of making a little circuit that pulses an LED at the speed set by a knob and a few other beginner projects, I thought I should dive right in and do something serious.

I mean *REALLY* serious. A piezo tune generator. #sarcasm

The key array basically sets out the diatonic notes of a scale for 8 notes. The ones following those 8 notes are a random selection of semitones that I snuck in just so that I could program “You are my sunshine”. Musos will understand why.

Next instalment: how to control your hi-fi volume using an Arduino, RF signals, and a rotary encoder!

Here’s the sketch:

// Whack a piezo between 8 and GND
// Comment or uncomment the tune array definitions

int key[] = {261,294,330,349,392,440,494,523,587,622,659,698,784,880,987,1046};

// "You're Just Too Good To Be True"
// int tune[] = {5,5,5,6,5,3,5,0,5,5,5,6,5,3,5,0,5,5,5,6,5,3,5,0,5,5,4,5,4,5,4,0,4,4,3,5,4,3,4,0,4,4,4,4,3,2,3,0,3,3,3,3,2,1,2,0,2,2,2,2,1,1,1,0};

// "You are my sunshine"
int tune[] = {5,8,9,11,0,11,0,0,11,10,11,8,0,8,0,0,8,9,11,12,0,14,0,0,14,13,12,11,0,0,0,0,8,9,11,12,0,14,0,0,14,13,12,11,0,8,0,0,5,8,9,11,0,0,12,9,9,0,11,8,0,0,0,0};

int tunelength = sizeof(tune) / sizeof(int);
void setup() {
}

void loop() {
int currentnoteindex = 0;
while (currentnoteindex < (tunelength)) {
if (tune[currentnoteindex] == 0) {
delay(180);
currentnoteindex++;
}
else {
tone(8,key[tune[currentnoteindex++]-1],90);
delay(180);
}
}
currentnoteindex = 0;
}


30
May 14

I have discovered a new use for chocolate

As an “extreme owl” I often stay awake working in the night time.

Mornings are therefore not enjoyable for me. Even when I have a lie-in I can feel grumpy until the coffee flows.

I’m not sure if this is because my senses are heightened or if they are asleep. Either way, I reckon I am more sensitive than most to changes in light, sound, smell, and definitely taste.

Aside from the obvious side effects of morning hatred such as inability to open eyes and short-lived rage at the world (which incidentally can be extended into a general ratty mood for the rest of the day if some negative external thing happens during this window of opportunity) – aside from this I have another strange symptom.

I can’t put anything in my mouth. No water, no food, not even coffee. I have to be awake for at least 45 minutes before attempting to do this. Is this normal?

Today I discovered an exception: 3g of Dark Chocolate.

Not the sweet caramel substances you find in the newsagent. I mean the kind that you put in your mouth which, if stored in a larder, tastes like a cold, hard lump of nothing for the first few seconds.

This is perfect. The initial shock to the tastebuds (texture, sour, salty, watery) I experience with most other foods makes we want to run for cover.

But chocolate is neutral at first. It is already the right temperature for the mouth before it goes in. Then as it warms the flavour gently develops into something that is neither too sweet nor too bitter. It turns into a warm goo, much like being handed a soft blanket.

It gently wakes up the tastebuds.

Then as it disintegrates it slowly releases more and more interesting natural flavours. In doing so it activates the bitter and the sweet receptors just the right amount if it’s the correct balance of cocoa, cocoa butter, and sugars. It activates the sour receptors shortly after this, and gives them something to think about if the chocolate has a red fruit (cherry, raspberry, or strawberry) note.

The chocolates I like are more naturally fruit-like than nut-like, but even my favourite chocolates have a small amount of nut-like flavour, which also stimulates the salt glands – and we know what that does for saliva.

And all it takes is half a square of good chocolate.

Chocolate, I love you.