BMW Joins Cars to The Internet of Things

by | May 10, 2017 | Blog, Featured |

What if your car could tell your wife (or husband) when you’re going to be home? Or how far away you are from picking them up from town?
My car does exactly these things. At the moment, BMW is well ahead of the game – the only other player is Tesla, and their offering isn’t as versatile. But it’s early days for cars joining the Internet of things, and it still takes quite a bit of hacking things together to make anything useful happen.

IFTTT applet triggers are executed in the car

For me it all started over a year ago when BMW Labs launched its IFTTT channel. The IFTTT plug-in for the BMW Connected Drive system enables the car to send triggers to IFTTT when significant events occur, for example when it starts to drive, or parks somewhere. These triggers contain useful pieces of information derived from the car’s navigation system and on-board computers, like GPS coordinates, range and current mileage.

You may have come across IFTTT (If This Then That) as a popular SmartPhone app. IFTTT is a service which makes simple connections between trigger and action. It calls these connections Applets, though they started out as Recipes. When you create an Applet, you select one of the available triggers and actions from the available Channels. There are IFTTT channels for hundreds of services including most of the household IoT brands and social networking websites. The idea is that when something happens on one thing, you can make something happen on another. For example, you could switch your Philips Hue lights on when you get home, and off again when you leave – plunging your family into darkness. There’s no complex logic, no way to maintain counters or state information, no way to express two things happening within a short time of each other, or anything like that. This is simple automation, and hard to place in the real world because you can’t really do very much with an IFTTT trigger.

You can send data from the car with a trigger

That is, unless you forward it to somewhere else. And that’s where the real power begins. The something else is some kind of web server running some custom code. So although IFTTT provides the trigger from its huge ecosystem of third party providers, you get to do anything you want with the data if you use the IFTTT Maker Channel.

You need somewhere for the Maker Channel to call. This is called a REST endpoint. Tools such as Node Red, Microsoft Flow, or Amazon AWS Lambda can provide these. Node-Red and Microsoft Flow are interesting because they provide graphical ways to do most of the logic by just linking up functional nodes. But ultimately almost everything of real world use requires some coding, and that’s generally done in JavaScript, in a NodeJs environment.

So let’s go back to the beginning for a moment. How does my car know where home is, or where my wife is standing in town? The simple answer is that it doesn’t. All it knows is where it, the car, is at any given moment. Other pieces of data have to be provided by other sensors, and orchestrated in some way. But that’s the point of the Internet of Things – lots of simple data sources can be combined to provide rules processing and information. Unfortunately convenient ways of orchestrating all this data from different places are thin on the ground as yet (although JFDI is on the case – watch this space). At the moment it’s still a techie job, hence the need for some coding.

Keep a log of your BMW drives

IFTTT Applets created against the BMW Labs channel get loaded by the car when the Connected Drive system starts the BMW Labs plugin. Then the plugin sends a trigger to IFTTT whenever some condition is satisfied. For example, you might want to just log whenever your car goes on a journey. For that, you could set up an IFTTT applet which is triggered on starting to drive or parking. When you set up an applet, you can choose from some piece of data the car knows, like its current latitude, longitude, mileage, heading and travel range. It’s a little fiddly, but easy enough to get to grips with. As an action, one of the simplest ways to just log data is using Google Spreadsheets. Actually, BMW Labs includes this as one of the stock IFTTT Applets you can just add with just a couple of clicks.

Web services can send custom messages to your car

I use Node-Red to receive IFTTT triggers from my car, and from a whole load of other sources. For example I’ve played with Locative and OwnTracks for personal geofencing and transmission of GPS coordinates. So if Node-Red knows where my wife is, it can work out the name of the street where she’s waiting for me and what’s near to her using the Google Maps API. Then it can send a message to my car dashboard telling me that she’s standing on Grey Street outside the Boots Chemist. Interestingly there’s no published way as yet to transmit GPS coordinates directly to the car navigation system, though this must be possible internally because it’s something used by the BMW Concierge Service.

Similarly if I’m an estimated 20 minutes away from a destination set on my car’s navigation system, it can send an IFTTT trigger for that too – the Arriving Soon trigger. If Node-Red knows my wife’s location, and my destination happens to be close to where she is, it can send useful ETA messages to her via Pushbullet. I’ve set up IFTTT triggers for 20, 10 and 5 minutes from destination.

It’s not just my wife who gets the benefit of all this… my kids and my business partner also enjoy my ETA messages. Of course I could set it up as a subscription service for anyone to use who’s in the know, if only there was a way for people to easily send their location to an endpoint… Maybe a Twilio SMS service and the iPhone Workflow app. Friends will know when to start baking the soufflés, or how long they’ve got for a loo break. Isn’t technology wonderful?

The BMW satnav integrates with IFTTT too

Not really, no. Because although a few companies like BMW are right up there on the leading edge, others are dragging behind. No other car company has connected its cars in this way – even Tesla’s IFTT channel isn’t great. And out of all the myriad satellite navigation apps and devices available, precisely none can do what the BMW in-car satnav can do using IFTTT. So here’s a challenge for TomTom, Sygic and others. Allow people to set up simple REST endpoints in your apps, to be called on starting or completing a journey, or when a given number of minutes away. Or just create an IFTTT channel like BMW did. The first one who does, I’ll feature in my blog, and include it in our range of targets for Automate Everything.

In the meantime, if you want something like this done for your BMW car fleet, get in touch with me at the company who can Automate Everything – JFDI Consulting.