This is part of a series of posts related to My Internet of Things and MobileFirst adventure. An index to all posts can be found at the end of the first post.
Today I am going to configure my Bluemix environment that will talk to my Raspberry Pi. I already have a Bluemix account, but you can go to https://ibm.biz/IBM-Bluemix and get your own free account.
Create a Bluemix application
Bluemix provides a number of boilerplates. Boilerplates are packages of services already bundled together. This is usually the easiest way to get started.
- Click Catalog and then MobileFirst Services Starter to create a new application based on the boilerplate.
- Enter a name for your app. It has to be unique, so consider including your initials or something in the name. Click Create.
- Bluemix will start cranking through the creation process. First your application will be staged, then created. Once it says your app is running, the creation process is done.
Add the IBM Internet of Things Foundation service
IBM Bluemix provides a service called Internet of Things Foundation. This is sort of a registry service and a message broker all in one. You can register your device in the Internet of Things, then communicate with it through IoT nodes in Node-RED.
- From your Bluemix App’s Overview page, click Add a service or API. Search or scroll to the bottom and select Internet of Things Foundation.
- Your app will need to be restaged to add the service. Wait until App Health indicates your application is running again.
Add the Raspberry Pi to the Internet of Things Foundation
- Once the app is running again, click the Internet of Things Foundation tile.
- Click Launch Dashboard.
- From the Overview tab, click Add a device.
- Create a device type. This can be anything you want, say myPi.
- You can optionally choose the attributes you want to assigned for each device of this type. You can skip this for now if you want. If you choose to add attributes, you will be asked to supply defaults on the next screen. You can also add additional metadata in JSON format.
- After entering all that information about the device type, you will return to the Add Device wizard. The only bit of information here that is absolutely required is the Device ID. That is the device’s MAC address. To find it, go back to your Raspberry Pi command line and type ifconfig eth0. The output will look something like this:
- Type the string of characters following the HWaddr (leaving out the colons) into the Bluemix IoT dialog. In my example, it would look like this:
- Click through the rest of the screens until you get to the page displaying Your Device Credentials. You will be shown a box with the Authentication Token. Copy this down immediately! You will not be given a second chance to see it!
Configuring the IBM Push Notifications service
Next, I’ll configure the IBM Push Notifications service. This is one of those cases where in reality, I came back and did this later, but since we are in Bluemix now, let’s set it up here.
The IBM Push Notifications service is, in a sense, a notification broker. Applications that want to sent push notifications to devices (in my case, the Raspberry Pi), will send message requests to the IBM Push Notifications service via HTTP REST commands. The IBM Push Notifications service will, in turn, dispatch the request to the notification services for the appropriate platform. In my case, I an going to be writing the app on iOS, so the IBM Push Notifications service will invoke the APNS (Apple Push Notification Service), which will send a remote notification to my device. In order to receive the notification, the device app software will need to register with the IBM Push Notifications service.
Configuring Apple Push is not for the faint of heart. First of all, it requires you to have an Apple Developer license. You can buy a personal license for $99 per year if you don’t have access to a corporate license. Once you have a license, you must use the Apple Developer Portal to create a Device ID, an App ID and a Provisioning Profile as well as an SSL certificate that must be used by any application that wants to request APNS to send a push notification. That process is out of scope for this blog, but you can read about it in the iOS Developer Library.
Once you have your SSL key, you will need to register it with the IBM Bluemix Push Service.
- Go to your Bluemix application Overview and click the IBM Push Notifications service.
- Click Setup Push.
- Click Choose file under Apple Push Certificate. (Note that the process would be similar for Google Cloud Messaging for Android devices.)
- Upload your p12 SSL key and enter the password for it.
It is possible to use the IBM Push Notifications dashboard to send out test notifications. This can be helpful in debugging the process.
That takes care of configuring the Bluemix services in the cloud. You have two primary services:
Internet of Things Foundation
- Acts as a broker for MQTT messages between IoT Applications and Devices
- Maintains registration information for all your Devices
IBM Push Notifications
- Acts as a broker for remote notifications between requesting applications and the vendor cloud messaging services.
- Provides a manual Push testing interface
That takes care of the system setup tasks. In the next post, I will start implementing my solution and configure my Raspberry Pi Node-RED flows to send Push Notifications. In a later post, I will enable my mobile application to request a picture from the Raspberry Pi and the Raspberry Pi to return the picture using the IoT Foundation.