A Guide For Developers
Whether you’re an enthusiast who has just completed a personal imp-based hardware project and is wondering whether other people might be keen to buy a device like this, or you have successfully developed a prototype with the express intention of bringing it to market, the next step on your Internet of Things journey is to understand how imp-enabled devices are put into production.
Though simple, this procedure isn’t quite the same as working with development hardware. Because imp-based products take advantage of the close integration between device hardware and the Electric Imp impCloud™, there is some new terminology to understand and additional processes to implement. That said, there are many similarities between working with development devices and preparing production devices, so you should have no difficulty making the move.
Most importantly, you will need to enter into a commercial relationship with Electric Imp. This will bring you access to impCentral™’s production tools, which allow you to set up a Connected Factory for your product. Customer status also provides you with the means to develop the mobile app your end-users will use to set up their devices for Internet access.
A Connected Factory is where imp-enabled connected devices are prepared for sale and end-use. It may be part of an existing assembly line or a facility in its own right. In either case, it must have an Internet connection, and a local network compatible with your product.
The Connected Factory Process governs how each newly assembled unit — a Device Under Test (DUT) — is made ready to be operated by an end-user. The outcome of the Connected Factory Process is a blessed device, called a Production Device, ie. one that is ready to be sold to an end-user. Unlike development devices, Production Devices can only run their intended application firmware, and their use is metered for billing by Electric Imp. Metering begins when an end-user Activates their Production Device using BlinkUp.
Inside the Connected Factory, blessing is mediated by factory firmware, software which runs on DUTs on the assembly line and on the imp-based factory equipment used to enroll and configure those DUTs. This equipment is called a factory BlinkUp fixture and it is used to transmit factory network access credentials to each DUT just as the Electric Imp mobile app is used to send your network details to your development devices. The fixture also sends the DUT a factory enrollment token. The DUT uses this token to identify itself to the impCloud, and this ensures the DUT receives the same factory firmware as the fixture that enrolled it.
Running on the DUT, the factory firmware first performs tests on the hardware and, if those tests pass, blesses the unit. The DUT is assigned to the correct Production Device Group, receives its application firmware and wipes the stored network credentials and enrollment information. The unit is now no longer a DUT: it is a Production Device and is ready to be sold to an end-user.
To put your own product into production, you will need to develop factory firmware and prepare one or more factory BlinkUp fixtures which will be installed on your contract manufacturer’s assembly line, or elsewhere if you will be blessing your DUTs separately.
As a developer, you know that impCentral is where application software development takes place, in Products’ Development Device Groups. Electric Imp customers also use impCentral to prepare factory firmware, to test it, and then to deploy it to BlinkUp fixtures and DUTs.
Gaining access to impCentral’s production facilities first allows you to create Test Factory Device Groups, which are where you not only develop your factory firmware, but also provide a complete factory test environment that mirror the real production process. You test your factory firmware with BlinkUp fixtures, which you can use to bless real DUTs; these Test Blessed Devices can then be activated with your BlinkUp SDK-based app, just as real Production Devices will be by your end-users.
The key point to understand about factory firmware is that the same code runs on both BlinkUp fixtures and DUTs. As such, the code needs to be determine at runtime on what type of device it is running and carry out operations appropriate to that type and only that type. This is quite a straightforward process, and Electric Imp provides a library, Factory Tools, which does most of the heavy lifting for you.
Application firmware within a Development Device Group will need to be made available to the factory test environment through a process called Promotion. This makes a specific instance of your firmware, called a deployment, accessible to the impCentral production tools.
For testing, the promoted application firmware is registered with the Test Factory Device Group so that Test Blessed Devices receive that application firmware after test-blessing.
BlinkUp fixtures are managed as development devices so are added to your account using the Electric Imp app and then assigned to a Test Factory Device Group to help test your factory firmware in the lab, or to a Factory Device Group for use in a Connected Factory factory. Fixtures used for testing can be re-assigned to Factory Device Groups, and vice versa.
When you are satisfied with your factory tests, you can move into production. You will create at least one Production Device Group and deploy promoted application firmware to it. It is to this group that Production Devices will be added automatically once they have been blessed.
In addition, you will create at least one Factory Device Group to which you will deploy promoted factory firmware from your Test Factory Device Group. You will also assign your factory BlinkUp fixture(s) to this group — they will then be ready to begin configuring DUTs in the Connected Factory.
As a developer, you use the Electric Imp app to add development devices to your account. These devices can then be assigned to any Development Device Group. However, your end-user will not able to use the Electric Imp app to activate the Production Devices that they have purchased from you. The Electric Imp app can’t be used for this purpose; it only works with development devices. Instead, you must develop or commission an app based on Electric Imp’s BlinkUp SDK, which is made available to you when you become an Electric Imp customer.
Creating an activation app for your end-users is the last key task in putting an imp-enabled product onto the market, and either you or the contractor(s) you use to create your app will have to understand how to integrate the BlinkUp SDK into your app.
Currently, the SDK is made available in native Android and iOS versions, to support the vast majority of mobile devices in use today. Calls to the SDK are authorized by the use of a BlinkUp API Key which will be made available to you when you become a customer. Your key is bound to your account and is unique.
You use impCentral’s factory test environment to test your BlinkUp SDK-based app. Test Blessed Devices are functionally equivalent to Production Devices, so they can be activated with your app in exactly the same way that Production Devices will be. Test Blessed Devices log to impCentral, so you can track the progress of your tests.
It’s also possible to test your BlinkUp app on development devices. The only requirement is that you must first add the device to your account and assign it to at least one Development Device Group before attempting to activate it with your app. Which Development Device Group you assign the device to to doesn’t matter; it simply ensures that when you subsequently activate the device with your BlinkUp app, it will not be rejected. For more information, please see our guide to supported enrollment flows.
The following is a checklist of the steps you need to take to move your project from development to volume production.