Thursday, February 26, 2015

Smart Watches

The announcement of the new Pebble Time reminded me to post a blog about my LG G Watch experience since I purchased it in September. Something I now find invaluable.

At the time, I'd switched off many of my phone apps' notifications because I found them distracting and would often venture off into other apps on the phone when acting on them. However with the watch, I could see the notification and be presented with a very narrow set of options. Somehow I found this much less distracting and as a result, I've since increased the number of notifications apps can emit on my phone, I find even when coding, my phone beeps and I briefly look at my watch, swipe it away and carry on. If I do need to act, then I can save the notification for later if needed.

I still find the voice part a little embarrassing to use in public, but in the car or by myself I find dictating to the watch very useful. I've dictated at least half the text messages I've sent over the past few months. I also quite liked the default replies selectable via the watch. Usually it gets the dictation spot on.

A great recent feature is Google Music integration, having synched my music to Google it's nice to be able to ask Google to 'play some Mogwai' for example. Though I've never found the ability to store music on the watch useful as I've always got my phone with me.

The watch ties in very well if you use Google Keep or Google Inbox where you can create reminders for certain locations. I.e. an email for collection at a specific store or simply a photograph/note of something to buy next time you're at a shop.

There is a variety of watch faces available, I've settled on Weather Watchface which shows me the current weather, temperature with highs and lows. It also provides useful feedback if I walk away from my phone.

Navigation is pretty cool too, getting a vibration alert on your wrist to tell you a junction is coming up is useful, however the display is useless if it's a complicated junction like a double roundabout or 'left then right' type junction. You might be shown a 'turn right' arrow at a junction or roundabout, but you're never entirely sure as the screen doesn't reflect your current direction or show you a local map view.

Over time many of my initial niggles have disappeared, there has been a stream of system updates. Some apps still don't take full advantage such as Facebook only ever showing 'open on phone' instead of providing a bit more information.

The battery appears to have improved lasting about 2.5 days now, though still on one or two times I've forgotten to charge my watch or hadn't seated it properly in the dock and worn a brick on the wrist for the day. In fact on one day I wore my old 'traditional' watch and found myself looking at that watch when my phone made noises!

I didn't like the watch strap that came with the LG G Watch, but since it has a 22mm watch strap fitting I could fit a Milanese Mesh watch strap instead.

One of the main features I bought the watch for was Google Now's 'time to leave' card; but this is actually a bit hit and miss. Sometimes it forgets to notify you until it is too late and other times it notifies you way too early leaving me with a dilemma about dismissing the notification for a few hours orhaving to remember to look at it again.

Many of the other Google Now cards aren't supported and don't appear which is fair enough, but means I tend not to see them at all as I'll rarely access the feature on the phone.

Answering calls on the watch is very useful, I get to see the caller and options to abort the call or answer, but unfortunately there is no option to answer on speaker making the feature more limited than it could be. Thankfully Wear Speaker comes to the rescue by putting a big button on the watch when a call is connected to enable speaker.

So after Pebble's Time announcement I thought I'd write a list of the things I've come to really like about Android Wear:

  • I like dictating text messages and creating reminders for myself. I particularly like the geo based reminders. E.g. "Ok Google, remind me to write this blog post when I get home"
  • I like the 'time to leave' functionality
  • I like seeing who called me on my watch. 
  • I like reading SMS messages on my watch. 
  • I like seeing email message summaries on my watch. 
  • Replaceable 22mm watch strap. 

All of the above should be possible on the new Pebble Time and probably in a more useful format using the time line function.

How about the feature's I'd lose:

  • The touchscreen is attractive and seems great for things like Google Keep lists, but I've never used it for that. It's more of a hindrance as you must look at the screen to ensure you touch the right place. 
  • The OLED screens looks fantastic, but it spends most of its time switched off to save battery power and the watch face I've chosen doesn't have fancy graphics. 
  • Having to charge my watch every 2 days. 

I've pledged for two Pebble Time watches and look forward to trying one out alongside my LG G Watch for a week in May. I wonder which will go on eBay after?

Saturday, January 17, 2015

Linn DS Homebrew RCU with Playlist Support

After installing a hidden Linn DS for my bathroom, I found controlling it tricky, whilst using the phone is okay, I'd still like the convenience of a remote to switch off the music on the way out.

I worked around this problem by extending the alarm clock functionality already in use for my kitchen to include a 'set standby' option. This would place the bathroom DS into standby mode at known times. Not ideal, but more useful.

The Linn solution to this is a control panel on the wall which offers volume, power and a remote IR sensor. Whilst this gives me the ability to switch off on the way out. It would mean having a remote control in the bathroom to change source and not something I'd like. Since I'd added functionality to schedule stored playlists to start as well as the radio I convinced myself I also wanted the ability to preload a known selection of music at the press of a button. I'm a coder and after watching the RI Christmas lectures on 'hacking your home' I felt this was something I should do myself.

After some online digging around I was going to go for a home grown button panel solution hooked up to a RaspberryPi in the loft; until a work colleague @kylegordon suggested a home automation solution might be an alternative. After discovering the RFXCom433 and the LightwaveRF Mood Switch I realised I could make this happen. Kyle also recommended a Node.js library which had support for everything I needed and would advertise the LightwaveRF button clicks as events.

I ordered an RFXcom433 and a LightwaveRF Mood Switch/LightwaveRF inline relay bundle; the original idea was to replace the bathroom light switch tying the 'on' and 'off' buttons of the Mood switch to trigger the in-line relay (switching the bathroom light).

On Friday I received all the bits.

I initially installed the Windows drivers and upgraded the firmware for the RFXcom, although it already had support for everything I wanted. I had a few issues getting the node-rfxcom package installed on windows due to a serialport dependency node-gyp which required python. Updating the package.json for node-rfxcom to a newer version of serialport (~1.4) solved this problem on windows.

I then wrote a quick node.js app using the node-rfxcom library to send a LightwaveRF switch command on initialisation so I could pair the lightswitch, then display a console message on each button click afterwards.

Once paired and working I transferred the RFXcom to my Debian Linux Microserver, where I found I needed no drivers for the RFXcom transceiver. The node.js app was updated to send HTTP calls to the DS playlist service to toggle standby and preload 1 of 3 named playlists.

The code I wrote is on Github

After trying it out, I realised I didn't want to just toggle standby, I wanted to override the standby button to play radio if it was already off.

'GroupOff' = Switch Off or Switch On and Play Radio
'Mood 1' = Play 'preset1' playlist
'Mood 2' = Play 'preset2' playlist
'Mood 3' = Play 'preset3' playlist

After installing this on the wall next to the lightswitch I realised, the top buttons could be refashioned as volume controls and I could leave the existing 'manual' light switch. I added some new endpoints to the upnp-playlist-service to increase or decrease the volume of a Upnp device via a RESTful HTTP call and reconfigured the home-automation app to call these when the buttons are pressed.

After just a day, I've got a fully functional control pad on the wall, controlling my bathroom DS giving me, power, volume, radio and preset playlist support!

I've also got a spare radio controlled relay burning a hole in my pocket for installation somewhere - I'm thinking my outdoor light could do with some geofence based control!