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 manufactured and prepared for sale to end-users. 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. 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™.
The Connected Factory Process is mediated by factory firmware, software which runs on DUTs on the assembly line and on the imp-based BlinkUp fixture units that are used to prepare those DUTs to connect to the impCloud. There are two types of factory firmware: one to run on the DUTs; the other drives the BlinkUp fixtures.
The fixture performs factory BlinkUp: it retrieves a factory enrollment token from the impCloud and transmits it optically to the DUT. It also sends factory network access credentials, if required. The DUT connects to the Internet and uses the token to identify itself to the impCloud. It then receives its assigned firmware: the code deployed to the DUT Device Group the DUT is now assigned to. The DUT Device Group is specified by setting it as a target of the Fixture Device Group to which the fixture was assigned.
The DUT firmware first tests the DUT and, if those tests pass, blesses it: the DUT is assigned to a nominated Production Device Group and so receives the application firmware deployed to that group. The unit is now no longer a DUT: it is now a Production Device and is ready to be sold to an end-user. The Production Device Group is also specified by setting it as a target of the Fixture Device Group.
To put your own product into production, you will need to develop factory firmware for your DUTs and for your BlinkUp fixtures. You will prepare one or more of these fixtures which will then 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.
Application firmware within a Development Device Group will need to be Promoted. This makes a specific instance of your firmware, called a deployment, accessible to the impCentral testing and production tools.
Gaining access to impCentral’s production facilities allows you to make use of the impCentral Test Zone you will create test versions of the Device Groups mentioned above: a Test DUT Device Group in which to develop your DUT firmware, a Test Production Device Group to which DUTs will be assigned once they have been blessed, and a Test Fixture Device Group where you will develop your fixture firmware and deploy it to BlinkUp fixtures assigned to the group.
When you create the Test Production Device Group, you will need to specify a promoted promoted application firmware deployment.
When you create a Test Fixture Device Group, you must specify its Test DUT Device Group and Test Production Device Group targets. When your BlinkUp fixture prepares a DUT, the DUT is assigned to the target Test DUT Device Group. Upon blessing, the DUT receives the application firmware deployed to the Test Fixture Device Group’s target Test Production Device Group.
Electric Imp has a free-to-use open source reference design you can use to create your own BlinkUp fixture for testing. Alternatively, you can purchase a pre-built fixture such as Electric Imp’s impFactory™.
BlinkUp fixtures are managed as development devices so are added to your account using the Electric Imp app and then assigned to a Test Fixture Device Group or to a Fixture Device Group for use in your Connected Factory. Fixtures used for testing can be later re-assigned to Fixture Device Groups, and vice versa.
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. The Electric Imp app only works with development hardware. 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 a 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 Test Zone to test your BlinkUp SDK-based app. Test Production 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 activated by their end-users. Test Production Devices log to impCentral, so you can track the progress of your tests.
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 DUTs in the factory will be added automatically when they are blessed. You will also create a DUT Device Group and deploy promoted DUT firmware to it; this is the group DUTs will be assigned to after factory BlinkUp. Finally, you will create at least one Fixture Device Group to which you will deploy promoted fixture firmware. You will also assign one or more BlinkUp fixtures to this group — they will then be ready to begin preparing DUTs in the Connected Factory.
These production groups can be created manually, or from an existing configuration of test groups — impCentral has a Wizard to walk you through this process.
The following is a checklist of the steps you need to take to move your project from development to volume production.