Watching live sport in Hong Kong can always be a bit of a challenge. There’s generally two providers of many things pay TV, and sometimes it feels like it’s all a bit of a stitch up. When I first arrived in Hong Kong (8+ years ago!) I signed up for nowTV with the Sports pack as they had the English Premier League. After their 3 year contract with the English Premier League expired the rights were taken by iCable. Given that pay TV contracts here generally run on 2 year timetables, you can see how this can lead to all sorts of contract madness. I’d ditched the sports stuff by this though, as staying up to 11:00pm to watch football had lost it’s appeal. Also, nowTV is delivered by IPTV, and they obviously cram as many channels into as small a pipe as possible, resulting in pretty awful image quality. Even the so-called HD channels never looked great.

There is of course a mature industry in VPNs and smart DNS providers who can help you spoof your location to pick up various ‘geo-locked’ programming, so it’s not like I’ve gone without my sporting fix entirely. For some live sports I’m even prepared to cough up money, and if it provides a legitimate viewing method then so much the better. So, going through some sporting events:

2011 Rugby World Cup

Screened by Setanta over here (yes, they may have gone belly up back in the UK/Ireland, but they survive here). Having done away with nowTV it was therefore a bonus that they had a ‘web only’ offer available, and had an Android application which I could connect up to a TV. It wasn’t perfect – however the picture quality was acceptable, and there were maybe some dropped frames. Overall, I’d give this about a 7/10 score.

2012 London Olympics

I think this was screened by terrestrial TV over here – which means an emphasis on events like ping pong! Whoo! The BBC, on the other hand, screened just about everything (somewhat overkill in my mind). This meant wheeling out the VPN, or an HTTP proxy. On the whole, not bad. The VPN would buffer the most, but probably be the most reliable. The HTTP proxy wasn’t great. A bit too much Clare Balding for my liking, but we got to see most of what we wanted.

2014 Football World Cup

Again, iPlayer and ITV Player on a tablet hooked up to a TV or casted via a Chromecast worked pretty well. This time I used a smart DNS and it worked pretty decently. The iPlayer streams always seemed a bit more reliable than the ITV streams.

2013 Ashes in Aus

Watching cricket in Hong Kong is not easy, as it’s not exactly a mainstream sport here. There is the awful Star Sports Cricket channel, which takes the Sky Sports feed, and then must put it through a pixelator as the quality is dropped. They also play repetitive adverts at every over break (sometimes not coming back in time!), and have the nerve to charge the highest price of any channel for this, err, service. Given that at times it seemed only one team was playing cricket in this particular series it could be argued I wasn’t missing much …

I have in the past used the dubious ‘Internet streams’ of sports – and this has been largely unsatisfying. They’re inevitably Adobe Flash based. The quality is even lower than PCCW nowTV (almost like 8 bit gaming at times!). The actual channel being streamed can be ‘turned over’ by the streamer – yes, I’ve gone from cricket to MMA in the blink of an eye! The channel being streamed can be from some weird and wonderful places (I’ve watched American coverage of cricket …). Channels get closed down rapidly, only to pop up elsewhere.

I may have found my preferred (and paid for) solution though … nowTV! Not the rubbishy nowTV that PCCW provide, but the UK version that Sky provide. It’s not cheap – £10 for a week – but a single use covers a single Test match, and seems reasonable. Combined with a smart DNS provider and a Chromecast, I’m pleased to report that last night I watched the Sky Sports feed at decent quality, with no interruptions (the OH would point out that it did take about 90 minutes of faffing around before it actually worked). As a bonus the southern hemisphere rugby championship starts this weekend, and we’ll get that too!

The only slight drawback is that the Chromecast is pointing to unlocator DNS servers, and my tablet is using adfreetime DNS servers (so I’m actually using 2 providers right now). When both tablet and Chromecast were using Unlocator, the nowTV app wouldn’t connect to the Chromecast, and when both used the adfreetime servers then the nowTV app wouldn’t connect with the stream … It’s just a shame that the day’s play of cricket was so turgid (I suspect England have asked for lifeless pitches as they want to nullify the Aussie pace bowlers).

Yep – a new set of Jabra earphones turned up yesterday. As promised by Jabra, they’ve sent me a pair of Sport Coach earphones, which are supposedly the next development from the Sport Pulse ones I was previously using and breaking wearing out in rapid time. Unfortunately, this model of earphones do not have the heart rate monitor technology, but they are a nice set of bluetooth earphones, and come with some kind of integrated ‘training coach’ functionality. A lot of the marketing material pushes this at cross training types – i.e. not really me, but we’ll see how they go.

I had resurrected my old Polar chest strap heart rate monitor for a while. I’m not a huge fan of this, as during my lung busting exercise routines/gasping for breath jogs (delete as appropriate) it can feel restrictive. It probably isn’t at all restrictive, and it’s my lack of fitness/aerobic ability causing me to be gasping for air – but this was one of the main points of appeal of the Jabra pulse earphones. Anyway … it turns out that the Polar heart rate monitor doesn’t react well to being put through a washing cycle. Oops. I now have no heart rate monitoring.

I was excited to try out the new earphones, so went for a run this lunch time – the plan was to jog from Kowloon Park through Western Kowloon and then back the way I came back to the park. It was kind of successful. A few too many people – Hong Kong streets are definitely not jogger friendly – and the construction works round West Kowloon doesn’t help. I also took a wrong turn on my back and added some extra distance to the return trip, and as I wasn’t too sure of the exact route back, decided to stop running after finally getting away from the Elements shopping mall centre.

The nicest part was running round Western Kowloon – helped by following some other guy, who unfortunately was slightly quicker than me which was probably half the reason I took a wrong turn on the way back. Run details on Strava as usual. I’ve also resurrected my old phone to link to the Jabra earphones, so I have definitely stepped back a bit in terms of the amount of stuff I run with (now running with: a FitBit, a phone, the Sony Smartwatch, and the earphones). So, not really much progress there. It was very hot and humid for the run, so at least the earphones will have had a good stress test today.

Wee on the floor

In what is undoubtedly an echo from the future – Sunday morning had me cleaning up wee on the floor. The OH was changing The Son’s nappy, and had let him have a bit of wander – into the corner of his room by the change table, whereupon he’d decided to make a puddle on the floor. We’re (at least) a few months away from genuinely starting potty training, but this did strike me as the shape of things to come.

Baby Monitoring

The temperature/humidity and camera monitor continues to work – I decided to simply let the temperature and humidity reading/updating be called via a cron job once a minute rather than try to have a process that runs endlessly that needs to calculate when to run. I found there was a certain amount of drift no matter how I coded it – and I went for the easy solution. It also means that I don’t need to monitor whether the program is still running, as it simply runs once and then exits.

I also modified the code to check the WiFi plug is reachable to use arping instead of ping and it seems to be much more reliable now. Certainly, the thermostat functionality seems to ‘just work’. Fascinating stuff, eh?

Another run without earphones was completed last night – I’ve reverted to using a Polar chest strap hear rate monitor whilst the Jabras are in their non-working state. Relatively faster and slow interval running last night – at over 30C and high humidity it’s not much fun. Jabra have offered to check my failed earphones to help determine root cause analysis (it’s a refreshing change to be on the other end of an RCA issue!), and have offered to send me a set of Sport Coach earphones. They don’t have an integrated heart rate monitor, but are a further development from the Sport Pulse earphones that keep failing on me. The plan is that if these work, then Jabra could incorporate changes to the Sport Pulse headset and resolve the problem I am continually suffering from. Result!

Programming loops …

Last night, The Son figured that 3:45am was a good time to ‘ask’ for his milk. As usual, I have a lower resistance to staying in bed that the OH, so up I got to prep the milk. He wasn’t in a good mood – we think he’s teething again (although if he had teeth for all the times we thought he was teething he’d have about 30 by now!). Sad, but true, upon walking in to his room, one of my initial thoughts was ‘it’s pretty warm in here, and the aircon hasn’t automatically kicked in’. Milk was duly delivered and drank, followed up by a dose of Nurofen – at which point the OH appeared to provide comfort as well (The Son was noisy enough to ruin her chances of a restful night too!).

Whilst OH was settling The Son, as I was fully awake by now I couldn’t help myself but to check the thermostat code. As I suspected, the code had entered an infinite loop and then been called again and again every 5 minutes. I’m still not sure why the Raspberry Pi is occasionally unable to reach the WiFi enabled plug, and that it stays unreachable, as it did last night. I performed some manual pings from the Raspberry Pi, checked arp tables, and the WiFi plug (seemingly) randomly started responding to pings, which cleared the looped thermostat scripts, and kicked in the air con unit to work.

We were back to bed for 4:15am or so, and I then had my brain pondering why the plug occasionally becomes non-responsive and how to ‘fix’ this.

Restrict the looping code to 5 iterations and then exit with an error code (probably a good idea)

Try a different (or additional) connection to the WiFi plug (maybe using UDP?)

Clear the arp table prior to pinging

Try an arping instead of a regular ICMP ping

It’s stuff like this that is keeping me awake at night … that and The Son of course!

Unfortunately, it’s more running without heart rate monitoring earphones, as the fifth pair have now failed. I make that just about 5 pairs failed inside 5 months. I am not going to warranty replace these ones – there is quite clearly a flaw and I don’t really see the point in continuing to trek out to Kwun Tong every couple of weeks.

I’ve passed this news onto the Jabra Director of Product Management, so we’ll see where we go with this …

It was hot last night – over 30C and it felt pretty humid too, so I changed my regular steady run into a kind of fartlek run, by pushing harder on the straights of the race track, and taking it easy round the bends. It was a convenient coincidence that most of the hilly parts are on the bends! 3 external and 1 internal lap was the distance – reasonably accurately tracked by the watch at about 3.5 miles.

Baby Monitoring

The IR camera and temperature monitoring Raspberry Pi in The Son’s room continues to work well – there were some minor issues with the monitoring code and the code that turns the air con unit on and off. I’ll happily hold my hand up here and admit I’m not much of a coder.

There might still be a problem with the thermostat code that should run on a cron job – as on one (maybe two) occasions the Pi has had lots of cron scheduled jobs running and not exiting. This eventually causes the pi account to fail to complete commands – I’ve a suspicion this is the thermostat code going into an infinite loop, which is theoretically possible, as if the WiFi enabled plug socket doesn’t respond the code should keep pinging the adapter, and retrying the power command until it succeeds. The adapter should always respond eventually though. Maybe I’ll put in some logic where if it hasn’t responded after X number of attempts we give up on it – I’d probably also need a notification system though, so that I can be notified when this failure happens!

Having already basically created a thermostat using a Raspberry Pi and a temperature monitor in conjunction with the WiFi power socket I was wondering what functionality I could add. Having looked around for a bit I found that there is a camera module available which can pick up infra-red light.

This is the Raspberry Pi-Noir camera module. Basically, it’s the regular camera module with the IR filter removed. The cable is connected to one of the ZIF sockets on the Raspberry Pi board, so that’s quick and easy. The reason I liked the idea of the IR camera is that it could act as a baby monitor camera – particularly at night. However, a camera that doesn’t filter IR light still needs an IR light source though, and this is solved with the Bright-Pi module.

This is a board with 8 IR LEDs and 4 regular light LEDs that connect to the pins on the Raspberry Pi board. Unfortunately, the assembly instructions point out that ‘some’ soldering is required. Bugger. Having previously noted that my previous experience with soldering wasn’t entirely positive this did have me slightly concerned. Not being one to back away from a challenge, I duly ordered myself a soldering iron and as small a tip as possible.

It turns out I’m still not great at soldering, however, it seems I am good enough. It probably took me 45 minutes in total (which is quite slow really), but I managed to solder all the LEDs and the cable connector to the board. Even more amazingly the LEDs worked when the board was connected to the Pi and the control commands sent. I was quite impressed with myself at this point.

Casing

Adding all these modules meant I needed a case for the Pi – and there are loads of cases available. Having looked around, I finally settled on this one:

A lego compatible case! With a camera compartment. Given this is going to be in The Son’s room – it definitely appealed to my geeky side. The only slight drawback was that the Bright-Pi add-on didn’t fit with the camera compartment cover – so the camera module would have to remain fully exposed. Not a disaster, and nothing a bit of Blu-Tac wouldn’t fix. See, I can do low tech solutions too!

The finished article now looks like this:

OK, so I bought a few bits of lego as well … so that the camera can be raised up a bit, and a couple of blocks for the temperature/humidity sensor to sit on. The online document for putting the temperature/humidity module together had used glue to attach the module to a case – again, I used Blu-Tac to attach the module to the lego bricks.

The final addition to this project was to make sure that the camera output be available as a webpage – OH approval being important here. There seemed to be quite a few options available, in the end I settled for an implementation using MJPEG and making the results available on a web page – along with lots of configuration options. Making some minor changes I was able to put together a web page that included the live camera feed, and the last 6 hours of temperature/humidity monitoring in a graph. There are even Android and iOS apps available that can interface directly with the web page for viewing the camera output.

I could take things even further and enable motion detection and video recording, but so far I haven’t felt that is necessary.

More running …

Yes, it’s the regular running update. I had a run on Thursday night – unfortunately the GPS wouldn’t lock on the watch, so there was no Strava recording. However, the wireless earphones worked for their second use. I also had another run this evening, and the earphones worked for the third successive run. Unfortunately, it seems that there was a problem with Ghostracer during the run and the last lap has been lost, but the remaining run was recorded but the earphones worked correctly.

As written in a previous post I’d bought some wireless controlled electrical plug adapters primarily for use to remotely control the air conditioning unit in The Son’s room, especially in the evenings after he had been put down for the night. The adapters are controlled via a smartphone application, and certainly meet the functionality they promised. However, I’m a curious sort of person, and am always looking to see if ‘improvements’ can be made, and all the better if those improvements involve a bit of customisation and poking around with the Linux command line, or ‘messing around on my computers’ as the OH would describe it.

I’d already discovered that there was a project called ninjablocks that was set up to automate certain hardware and tasks, however in the negative column is that this project had run out of money and was winding up. In the positive column was they had a framework that ran on a Raspberry Pi Linux system, and allowed control from ‘the cloud’, although given the money has run out, how long this cloud remains is open to question. It’s also slightly overkill for my needs – I don’t really need to control my air con from the cloud. A bit more looking produced a simple perl script hosted on github. I had previously tried simply sending the UDP control packets via a netcat command to the S20 power adapters, but couldn’t reliably ensure that the adapters were switched on and off, and for my intended project I needed to ensure that the adapters were in the state I wanted them in.

From a Linux device on the same wireless network as the plug adapters, I can control their state (and query their current state) using this bauhn.pl script. e.g. ‘bauhn.pl <MAC address of plug adapter> on’ would switch it on. Nice and simple.

Automating the process – step one

As has probably become clear, I’ve been expanding my interest into the Raspberry Pi system boards. If you don’t already know, these are brilliant little system boards, and has recently been updated to version 2, with a multi-core CPU and 1GB of memory to play with.

There’s a nice picture of a Pi 2 board showing the 4 USB sockets, 1 ethernet port (100Mbps), 1 HDMI out, and an audio socket. The 40 pins you can see are available for various uses (data, power, GPIO) allowing lots of (cheap) components to be added and providing a huge number of potential projects that this can be used. There are two ZIF sockets (the black and white ones in the picture), one for camera module, and one for a display module. To this, for my home automation project, I’m adding an AM 2302 temperature/humidity sensor as seen below.

There is a great tutorial already written up on connecting one of these monitors to a Raspberry Pi, so I won’t need to go through all the steps here. Some soldering of the wires onto the connectors was listed, however I found using a crimping tool provided a secure enough connection, and avoided me having to try out soldering again – memories of ‘technology’ class at school came flooding back and ugly blobs of solder I’d used to connect two wires together. To say I was not good at soldering is an understatement, and it’s a skill I wasn’t in a hurry to re-visit.

Skipping forward …

Amazingly, I have my Raspberry Pi board connected to my temperature and humidity sensor and it all works exactly as listed. I made some modifications to the C code for recording the readings so that any obviously wrong readings were silently ignored and not added to the database of results. At the same time I discovered that my C coding is really not very good at all, so I’m in the process of putting together a python program/script to replace the C code that reads the sensor. This has all demonstrated to me that I’m also not much of coder at all – but I can quite happily lift pieces of code from around the Internet and put together a hodge podge of code that will work for my needs. Using python, as it’s a nice high level language, makes this even easier for me …

Anyway, with the components all working, I cobbled together an HTML page that draws a Google Chart from data in the MySQL database:

Awesome! I can draw charts that automatically update themselves! I did discover that reading all records from the database would result in slower load times for the graphs, so I’ve limited the main page to just show the last six hours of readings.

Automating the process at home – step two

On my Raspberry Pi, I have set up a cron job that runs a bash script every five minutes between 7:00pm and 6:00am. This bash script queries the last record in the MySQL database, and if the temperature is above a threshold it will then call the aforementioned bauhn.pl script to turn the power adapter on. If the temperature is below a threshold then the same script will turn the adapter off.

As can be seen, the temperature (and humidity) fluctuate whilst the script runs. Basically, I have created a thermostat … Whoo! Admittedly, not the most exciting thing in the world – and given the bill of materials came to about US$50 or so, it probably wasn’t the most cost effective either. It was fun doing it though, and there is a sense of achievement that it actually works, or in the words of the OH ‘you’re such a geek’.

Running …

No post is complete without my latest running update: I ran last night. The GPS on the watch worked throughout my run! I used a wrist sweatband under the watch, so undoubtedly looked a bit naff, but I know where I ran! (round Happy Valley). I have warranty replaced my Jabra earphones for a fourth time, so had heartrate monitored whilst I ran – but had no music to listen to, as I had reset my watch which wiped the cached music and I hadn’t thought to resynchronise it:

Ran a bit further than usual – and due to mucking about with wondering why my music wasn’t working the run record was split into 2 activities. On the subject of the earphones – I’ve been contacted by the Director of Product Management and passed on my experience to him, so it will be interesting to see where that leads. I’m not expecting the current (fifth) set of earphones to last any longer than the previous sets though.

Those who know me, know I’m really quite stubborn … Even so, I really had thought I’d finished with writing about my challenges with being a running geek. Honest! Hopefully this won’t be yet another lengthy whinge update.

The Watch and GPS

I’d already said that my Sony Smartwatch 3 had been updated to Android 5.1.1, and that the last few runs have been somewhat inaccurate with the GPS tracking. Another run was ‘performed’ (i.e. I shuffled round Happy Valley none to fast) on Thursday evening:

There’s a couple of arrow straight lines where the GPS has lost it’s signal only to reacquire it. And, it finally lost it’s lock at the ‘1.9 mile’ mark. Once again, another inaccurate GPS recording. I’d tried a suggestion of removing Android Wear from my phone, and resetting the watch. That didn’t work very well then.

For my next trick I’m going to be the retro-runner, and will be running with a sweat wristband. All very 1980s. Maybe some day-glo running gear would complete the look. Anyway, the reason for this is to wear the watch on top and try and reduce the (copious) amount of sweat that it gets in contact with. Watch this space, or not …

The earphones …

Having once again been refused the option to swap my broken earphones via postage, and had no helpful response from a couple of support requests to Jabra (admittedly, one was to the Jabra US support page), I have finally had a response … by using twitter [1]. I’ll hold my hand up here and admit I don’t like twitter. I really don’t see the point in it. I think it’s pretty pointless. I work in tech, and I know I should probably be more pro-twitter, but I just think it’s daft. I do have a twitter account (handle?) though.

Tweeting (ugh!) @We_Are_Jabra produced a really fast response. They’ve offered to put me in email (thank god) contact with a product manager to discuss the problems I’ve had. This is great for me personally, but I really don’t like ‘having to go public’ to get this kind of response. I work in a tech support role, so I do appreciate this kind of behaviour is pretty annoying, however it pretty much demonstrates that he who shouts loudest and most publicly gets a better response.

I’d already mentally given up on the Jabra earphones – asking for a refund that had been point blank refused. Looking around, the following caught my attention:

There was another German product kickstarter project, but I now can’t find the site (not very memorable obviously). These all look very version 1.0, or prototype-y though, so I’m somewhat skeptical (or is it sceptical?) as to whether they’d survive the punishment. The Sony’s are tempting though – and available in Hong Kong.

Like an addict who knows no better, I’m probably going to give the Jabra’s ‘one last go’ given I have now contacted them directly.

A suggestion to go for Jaybird Bluebuds X was made – been there, done that, and knackered two pairs in quick succession. Oddly enough, in a similar fashion to the Jabras they stopped holding a charge too.

[1] The OH used twitter to contact the Hong Kong British Passport people last year over the fiasco we had getting The Son’s UK passport, and got a far better response than any calls or emails to the proper channels. Might be another future whingey post on that subject.

At the start of this year I’ve tried to go running using bluetooth earphones, and met with mixed poor results. Alongside the bluetooth earphones I had also decided to try and do away with bringing my phone with me whilst running. I previously owned a Sony Xperia Z, and the earphone socket showed the pink hue on the hydration detector suggesting it had at some point come into contact with water, and the back had begun to lift away from the chassis. The waterproof flaps were also showing signs of regular use, and overall it was just feeling a bit tired – and on the odd occasion the microphone wouldn’t work on phone calls. All of this was probably not helped by being brought on runs in an armband which would inevitably end up quite damp, due to running in the rain, and also due to my previously mentioned propensity to sweat profusely. The fact that the armband was designed for the slightly smaller Galaxy Nexus phone (at times I can be quite cheap [not that the OH would believe me] and re-use stuff that isn’t quite right for the job) didn’t help either. Anyway … I quite liked the idea of a new Nexus phone, but the Nexus 6 wasn’t available quite yet, so I ended up with a Huawei Ascend Mate 7. I could write lots about what I like and don’t like about this phone, however that’s not really the point here.

Ditch the phone, and get a watch

The Ascend Mate 7 definitely doesn’t fit the armband to go running, and is pretty large, so I had in mind to get some kind of watch. I liked the idea of a Garmin, Polar, or TomTom fitness watch, preferably with heart rate sensor. However, these are quite expensive (see, I really can be cheap!) – especially for a watch that I’d likely only wear whilst running, which given my available time might amount to one hour per week. I then quite liked the look of the FitBit Surge, however it was also not available at the time I was buying. Also, I’ve learnt that although getting data into FitBit is easy, getting that data out is not so straightforward and as far as I’m aware the FitBit Surge wouldn’t really integrate with other apps I might like to use. None of these options also provided an ability for listening to podcasts whilst running either. At this point I decided to look to smartwatches as a potential option.

GPS was a necessity – the whole point is to ditch the phone so I didn’t have to run with it. That narrowed the options drastically to either the Samsung Gear S Watch which runs Tizen or the Sony Smartwatch 3 which runs Android Wear. Neither of which would pass the OH’s ‘is it ugly?’ test though. Not being a fan of the Samsung Android styling, and having liked the Sony phone I had, I went for the Sony Smartwatch 3.

The Not-so Good

Almost immediately I found some limitations – syncing media content to the phone is not something that many apps do. As far as I’m aware only Google Play Music and the Sony Walkman will sync music across to the watch. Pocketcasts is my podcast app of choice and at the time had no Android Wear support. OK, slight compromise, I’ll listen to music whilst I run. I had tried a number of running apps on my phone – Endomondo, Runtastic, Strava, and Runkeeper (I’m persistent …), and whilst some of these did support Wear, it was really only to remote control the app on the phone. In other words you were expected to take the phone with you! Not exactly what I had in mind – but probably due to not many watches having GPS therefore not being a focus of development. This has improved lately, however the best application is still the independently developed Ghostracer which could upload data to Strava (and now Runkeeper too).

The watch also takes a bit of time to acquire a GPS lock – phones typically use their SIM to help optimise the location identification, whereas this is not available on the watch, and as far as I’m aware phones can also cache Satellite data to help speed up location services, and this is also not available on the watch. You can manually start the GPS under the watch’s ‘developer options’ which I generally do on my walk over to where I run hoping that a lock has been acquired by the time I get there (the subway tunnel does not help this though). Otherwise there’s a bit of standing around looking like a dork waiting for the watch to lock onto the GPS satellites …

The Good

When the bluetooth earphones worked it was great running with just the watch and listening to music. When not running, having the watch mirror notifications from the phone was something I got used to quite quickly and would have to say it’s ‘nice to have’, but not exactly essential. The watch also supports Google Fit, and counts steps so this could at some point replace the FitBit I still use (although it seems as though the Google Fit step counting can be a bit varied at times). The Sleep as Android app could also potentially replace the sleep monitoring function of the FitBit too. And, it tells the time too, which is a bit of a bonus (except for the embarrassing time I changed the watch face and read the time wrong when asked … problem exists between watch and brain [pebwab] in this instance).

The annoying …

The recent update to version 5.1.1 added wifi, wrist gestures, and a screen lock – but does seem to have introduced GPS lock problems.

Same route, GPS locked at the start of the run – no earphones, and using the Polar chest strap heart rate monitor.

Both of these should be following the same route. Last night I’d noticed the distance wasn’t updating after a while so paused for a bit to try and re-acquire GPS lock (with a bit of swearing at the watch too). Apparently, GPS issues have been reported by other users (on all versions of Android Wear on the Smartwatch 3). I’d be quite tempted to downgrade back to an earlier release, but that seems to be impossible (or at least very difficult – so possibly a weekend job). Some suggestions are to factory reset the watch after the update to 5.1.1, so I’ve done that and will be testing again later this week.

Ignoring the garbage statistics – I do know that I definitely run faster in the winter months. Given it was 30C and horribly humid last night, this isn’t exactly surprising though.

Where does this leave things?

I have a suspicion I’ll be back out running with a phone in the next few weeks – it acquires GPS better, and I can listen to my podcasts/music more reliably. In conclusion – this has not been one of my more successful technology ideas …

Two posts in a week. A relative flurry of activity it would appear. I had planned to write about running and the various bits of technology I use, or have used, in a future update. Circumstances have come together to persuade me to write it now. I like to do a bit of running. I don’t run very far, and I don’t run very fast. Some of this is due to heat and humidity of Hong Kong, but mostly it is due to not finding sufficient time. So, on average I get out for a 30 minute run, which means actual running time of between 20-25 minutes. This is just about perfect for a 3-3.5 mile run. Being able to run round the infield of Happy Valley racecourse is a bonus – whilst not the most exciting run to do it does provide consistency and I can get a general measure of how fast I’m running, and how well I’m lasting. My regular run is therefore 3 ‘external’ laps, and 1 ‘internal’.

That’s all incredibly fascinating, I’m sure you’ll agree. Times have moved on from the 1980s when a digital watch could have a stopwatch and ‘lap’ timer. Being the geeky tech guy I am, I bought a FitBit nearly two years ago (ok, I’m actually onto my second Flex as the first one died on me). I also like to listen to podcasts whilst running, and I also bought myself a Polar heart rate monitor. I don’t need all these vital measurements, this stuff, but I do kind of like knowing it, and as the OH would attest, I like my gadgets.

Running without wires

The wired earphones are annoying, and the chest heart rate monitor does sometimes feel a bit restrictive round the chest. It was with a degree of excitement when I saw Jabra wireless earphones that can also measure your pulse become available. This could be the perfect solution for what I want when running. I duly bought a pair at the end of January, and they were awesome. Working exactly as advertised – Bluetooth connection to listen to music or podcasts, and a Bluetooth Low Energy connection for heart rate recording. Apparently, the heart rate is measured by recording blood flow in your ears, I didn’t care how they measured rate though – these seemed great. And they were, right up until they broke, after about 15 runs, by the middle of March. The central power button had seemed to collapsed, and they could no longer power on.

The joys of warranty

There is a 12 month warranty period with these earphones – although you do have to go the warranty repair centre in Kwun Tong, with the original packaging, and the store receipt. I’ll admit I have a bad habit of throwing receipts away quite regularly, and that was the case here. Fortunately, the shop were happy enough to reprint the receipt, so all I had to do next was get myself out to Kwun Tong … First off; I know Hong Kong is geographically quite small, and incredibly well connected, so it’s a bit childish to complain about travelling whilst living here. However, that’s what I’m going to do. And yes, Kwun Tong is on an MTR line – although the warranty repair centre is nowhere near the station. Similarly there are plenty of buses going through Kwun Tong. However, it’s still an HK$150 taxi trip, or 45-50 minutes by bus/MTR to get to the warranty centre. In order to swap my now broken earphones over for a new working pair would cost me HK$300 in taxis, or 1.5-2 hours of my time. Did I mention the warranty centre only opens Mon-Fri, and is closed between 12:00-2:00pm for lunch? Brilliant – it’s only open during the working day, and you need to physically bring the earphones to swap them. No mailing in of broken equipment here. That’s a big negative for customer service right there.

Trip #1

A swap was duly made, and to be fair, this was as painless as I could have hoped for, and a new working pair of earphones was provided when I went to the warranty centre to swap them over. These earphones worked for about 3-4 runs before they too failed. This time, the power button (and volume buttons) were still working, but they would not charge, and the red charging LED would never light up green to show a full charge. I think this is symptomatic of a battery problem.

Trip #2

Having made the first trip using expensive taxis, I realised if I had to make six of these trips I’d have shelled out enough for another set of earphones. This time I took the bus from just outside my office during lunch to try and arrive just as they re-opened after lunch. Again, no hassles swapping the earphones over. I had expressed my disappointment in emails to the warranty centre that the earphones had failed again, and fruitlessly asked for the option to mail swap the earphones. Earphone set number 3 … lasted one run! On my second time wearing them, they would not switch on. Exactly the same fault as set number 2.

Trip #3

At least I knew exactly which bus to catch and where to get off this time. Another wasted set of email exchanges pleading to exchange via mail as well. The warranty centre ‘helpfully’ suggested I could get a friend to swap them. Because, of course, my friends don’t work, and have nothing better to do than traipse out to Kwun Tong for me … What would be more helpful is if the earphones actually worked. Earphone set number 4 were a 100% improvement on set number 3. They worked for 2 running sessions, and had failed by the time I went for a third run with them. They are now sitting on a table beside the couch mocking me every time I look at them. The OH has suggested that I simply ask for a refund this time, and I think she might be right.

What have I learnt?

Not a great deal – I suspect the first set lasted as ‘long’ as they did due to it winter here and less humid. As the humidity cranked up, the lifespan of the earphones dropped dramatically, and I, like my Dad, and it seems I’ve passed this delightful trait onto The Son as well, am a heavy sweater when exercising. Clearly the Jabra earphones aren’t up to working well in humid conditions. It’s a product I so dearly wanted to like and enjoy using, and it’s probably all the more frustrating that when they did work they were great, and meant I had no dangly earphone wire, and no chest strap heart rate monitor as well. Like I said, I’m not angry, I’m just so disappointed that a product that promised so much, ultimately delivered so little.

WordPress says that is 1100 words … Over a thousand words on earphones (that don’t work), to follow up a previous lengthy post on plugs. Fascinating stuff, eh? The readers will just be poring in at this rate.

Obviously the blog hasn’t been updated for a long time. That either means nothing of note has happened or so much has been happening I just haven’t had time to keep things updated. It’s a little bit of the latter, and predominantly because I simply couldn’t be bothered. Anyway, today’s post is very much a first world problem and my current solution.

Problem:

When putting ‘The Son’ [1] to bed in the evenings we like to switch on the air conditioning unit in his room so it’s not too hot and humid. Unfortunately, the aircon in his room is of the non-remote control, plugged into the wall and manually switched on variety. The switching on is obviously no problem – however, at some point it does need to be switched off, and this means going back into the room and running the gauntlet of potentially waking him up. And that’s a quick way to ruin the evening … Like I said, first world problem, but still one that needs solving.

[1] You mean you didn’t know? This probably falls into the first category of reasons as to why this hasn’t been updated for so long …

The Solution:

The other half (OH from now on I think), had suggested putting some kind of ‘plug timer’ device on the socket that the aircon was plugged into. This would certainly have worked as designed, but wouldn’t have given a huge amount of flexibility, and to be honest, is a bit too boring for my liking. And let’s face it, we’re living in the 21st century now, and supposedly the Internet of Things means everything is going to be connected.

Clearly this called for something a bit more geeky. The answer, unsurprisingly, is a wifi enabled plug socket passthrough adapter. With this gizmo, it plugs into the socket, and the aircon then plugs into it. The power can be controlled by an app on Android or iPhone. Early research (i.e. using google and amazon) suggested there were quite a few options available. However, the requirement of a UK plug socket limited choices a bit, and then limited options completely as it seems Amazon UK wouldn’t ship them to Hong Kong. I suspect they don’t like exporting electrical related products – even though Hong Kong has the same electrical system as the UK. Prices were also looking slightly higher than I imagined, e.g. 40GBP per unit.

Not to be deterred, it occurred to me that these things are going to be made in China, and I live in China Hong Kong then surely there must be a more local solution. And indeed there is … alibaba.com (OK, not so much local as massively global these days). No such shipping restrictions here. And choices galore. In fact it was difficult to decide which suppliers to contact.

The fact I didn’t want to order 100s or 1000s of units, as well as the strict design guidelines I had in mind (i.e. it wouldn’t fail the ‘it’s ugly’ test from the OH) helped narrow this down somewhat and I think I sent off contact requests to about 5 different suppliers. Of which only one responded and asked for my WhatsApp contact details. Not exactly ideal, but I figured I would be providing contact details if an order went ahead, so duly contacted ‘Crystal’ via WhatsApp.

Despite my initial caution, this started very well. The company was based in Shenzhen, had the units in UK format in stock, and could ship the following week. Each unit would be US$20 – so I ordered three. The only problem was that Crystal required a delivery address in Chinese … I had decided to get delivery to my office, and even though the official address is English in Hong Kong, I still needed to supply a Chinese address for delivery.

The double sided printing of business cards here, with one side in English, and one side in Chinese came to the rescue. A quick scan provided the address in Chinese, and sure enough a few days later three wifi enabled plug adapters turned up. one of which has been installed into The Son’s room for his aircon, and we’re now happily remotely controlling the aircon without the danger of waking him up and ruining our evening.

Epilogue:

The plugs are Orvibo S20 models, and it seems they’re not particularly security conscious. Initial pairing sends your supposedly secret WPA2 passphrase in cleartext to the S20. However, the easy setup didn’t work for me – probably due to so many wifi signals in our vicinity, so I had to use the AP set up method where the S20 hosts a wifi network which your smartphone joins, and then you configure the S20 for the real wifi network. Once this was completed, then I could use the app on my phone whilst connected to my home wifi network.

Kind of. The S20 app on Android called Wiwo looks pretty modern and seems to adhere to Google’s material design guidelines (suggesting it might be reasonably recently coded). Unfortunately it kept crashing on my phone (running Kit Kat). It worked on my tablet though (running Lollipop), even if it didn’t really conform to the tablet layout. Fortunately, the older Wiwo app (designed for S10 plugs apparently) does work on the phone, even if it is a bit ugly. The OH gave this solution the thumbs up, and even installed the iPhone app … which promptly refused to find the S20 plug. Fiddling about in the app settings, I randomly added the wifi details, and lo! it found the S20. Overall app experience felt a bit flaky.

Doing a bit of network scanning, it seems that the S20 listens for UDP traffic on port 10000. There’s a couple of blogs that go into way more detail than I needed, but it shows some promise for being able to control the socket outside of the app. Even better, I found that someone had put together a driver for Orvibo kit (including the S20) for a solution called ninjablocks. Unfortunately, ninjablocks was a Kickstarter project that as of a couple of weeks has run out of money, and is starting to wind up, which is a shame.

The outcome of this is that I could install the ninjablocks software on a Raspberry Pi, register this to the ninjablocks cloud, and then remotely control the aircon via this cloud dashboard. For however long the ninjablocks cloud remains in operation anyway.

Sorry – a much longer post that I initially imagined. Well done on getting this far, just to read about me plugiing an aircon in.