Skip to main content

Moving From Development to Production

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 the Electric Imp’s impCentral™ production tools, which allow you to set up the factory process for your product. Customer status also includes the means to develop the mobile app your end-users will need to run to set up their devices for Internet access.

Example
Terry is building a connected weather monitor. He has built a prototype and tested it, and is now ready to put the device into production. He has the industrial design done and has signed up a contract manufacturer. He talks to Electric Imp and becomes a customer. This gives him access to the BlinkUp™ SDK, with which he can develop the app his end-users will run to connect their weather monitors. His Electric Imp account is upgraded; he gains access to impCentral’s production features, through which he can manage the production of monitors.

When you’re ready to move from development to production, please contact Electric Imp Sales to discuss the options available to you.

The Electric Imp Connected Factory Process

The Electric Imp Connected Factory Process controls how each newly assembled unit (a device under test (DUT)) is made ready to be operated by an end-user. The outcome of the factory process is a blessed device. Unlike development devices, blessed devices (production devices) can only run customer-assigned software, and their use is metered for billing by Electric Imp. Metering begins when an end-user activates the production device using BlinkUp.

Inside the factory, blessing is mediated by factory firmware, software which runs on DUTs on the assembly line and on the 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 Electric Imp 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 the factory BlinkUp fixture(s) which will be installed on your contract manufacturer’s assembly line, or elsewhere if you will be blessing your DUTs separately.

Preparing a Production Device Group

As a developer, you know that Electric Imp’s impCentral is where application software development takes place, in Products’ Development Device Groups. Electric Imp customers also use impCentral to prepare the software that controls the factory process, the factory firmware, and to test and then deploy to both types of firmware.

The first task you need to perform is to create the Production Device Group that your DUTs will be assigned to as they are blessed. This is done in impCentral’s Production Zone, an area only made available to Electric Imp customers. Creating a new Production Device Group requires the availability of the application code that will deployed to it. Making application code available to the Production Zone is called promotion, and customers gain a ‘Promote’ button in the code editor for this purpose. ‘Promote’ is only enabled when code has been deployed to the Device Group, ie. you have clicked ‘Build & Run All’ in the code editor. Promoting code requires you to enter a deployment comment, perhaps a brief description of the changes made to the code.

Example
Terry selects his “Weather Monitor” Product in impCentral, and then its “Dev 1.0” Development Device Group, where he has been developing and testing the monitor’s agent and device code. He clicks on the ‘Build & Run All’ button and, once he sees that the build process is successful, clicks on the ‘Promote’ button. Promotion makes the code, which is identified by its SHA, available to be deployed to Production Device Groups. Terry now clicks on “Weather Monitor”’s ‘Production Zone’ switch in the impCentral navigation bar. He can now create a Production Device Group, “Weather Monitor 1.0”, and deploy the promoted code to it. When he eventually begins to bless his DUTs, they will be assigned to this Device Group and so receive the code he has deployed to it.

Preparing Your Factory Firmware

In impCentral, factory firmware is developed using Factory Test Device Groups. Unlike Development Device Groups, Factory Test Device Groups are only available to customer accounts, or to collaborators working on shared customer accounts. Just as development devices are assigned to the Development Device Group to which in-development application code will be deployed, so test BlinkUp fixtures are assigned to the Factory Test Device Group to which in-development factory firmware will be deployed.

Those test fixtures can now be used to enroll DUTs. impCentral lists DUTs that have been blessed by test fixtures in the Factory Test Device Group’s devices view, selected from the sidebar. From here they can be unblessed to make them available for further factory testing. In this way, Factory Test Device Groups provide a means not simply to write factory firmware, but to thoroughly test it on both BlinkUp fixtures and on DUTs and in a way that accurately emulates what will take place in your factory.

The key point to understand about factory firmware is that the same code runs on both fixtures (test or factory) 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.

For more detailed information on preparing your own factory firmware, see ‘Writing, Testing and Using Factory Firmware’.

Deploying Factory Firmware

When you are happy with your factory firmware, it too must be promoted to make it available to the Production Zone, where it will be deployed to a Factory Device Group. Factory Device Groups are used to organize the factory BlinkUp fixtures you will install on assembly lines. To create a Factory Device Group, you need to have already created a Production Device Group (see above), which will be added as the Factory Device Group’s Target. This target is the Production Device Group to which DUTs enrolled by the Factory Device Group’s fixtures will be assigned upon blessing.

Having created a Factory Device Group, you can now deploy your promoted factory firmware to it by clicking on ‘Deploy’ under the ‘Manage’ column for the chosen Factory Device Group. You select the promoted code and add a brief description of the deployment. Once the code has been deployed, the Factory Device Group is ready to have factory BlinkUp fixtures assigned to it.

Example
Terry selects his “Weather Monitor” Product in impCentral, and then its “Factory Dev 1.0” Factory Test Device Group, where he has been developing his factory firmware. He clicks on the ‘Build and Force Restart’ button and, once he sees that the build process is successful, clicks on the ‘Promote’ button. Terry now clicks on “Weather Monitor”’s ‘Production Zone’ switch in the impCentral navigation bar. He can now create a Factory Device Group and set his “Weather Monitor 1.0” Production Device Group as its target. He now opens the ‘Deploy’ panel and selects the promoted factory firmware to the “Factory Firmware 1.0”. DUTs enrolled in the factory by fixtures assigned to this group will automatically receive the deployed factory firmware.

Preparing Your Factory BlinkUp Fixture

Electric Imp has a free-to-use open source reference design you can use to create your own factory BlinkUp fixture. Alternatively, you can purchase a pre-built fixture, the impFactory. Both contain an imp module which needs to be set up for use within a BlinkUp fixture.

Factory BlinkUp fixtures are managed as development devices so are added to your account using the Electric Imp app. Once added, they can be assigned to Factory Test Device Groups to help test your factory firmware, or to Factory Device Groups for use in the factory. Fixtures used for testing can be re-assigned to Factory Device Groups for use in the production.

Example
Terry has purchased a number of impFactory appliances. He uses the Electric Imp app to add all of them to his account. One he assigns to his “Factory Dev 1.0” Factory Test Device Group to replace the more basic hand-built test fixture he has worked with so far. The remainder he assigns to his “Factory Firmware 1.0” Factory Device Group. He then sends them to his contract manufacturer for installation on the assembly lines.

Blessing

Your factory firmware has been tested on a test fixture and DUTs, and then promoted before being deployed to a Factory Device Group. You have a factory fixture assigned to that group and therefore ready to begin performing factory BlinkUp. You have a Production Device Group which your promoted application firmware has been deployed to, and which has been set as your Factory Device Group’s target.

All the elements of the Electric Imp Connected Factory Process are in place, and the blessing of newly assembled DUTs can begin. The factory BlinkUp fixture’s LED is aligned with a DUT’s photosensor and BlinkUp begins, triggered by assembly line equipment of by an operator. The DUT connects to the impCloud and gets the factory firmware. The firmare tests the DUT and, assuming the tests are passed, calls the code that blesses it. If the tests fail, this is signalled automatically, and the operator can remove the faulty unit. Upon blessing, the production device is assigned to the Factory Device Group’s target Production Device Group and thus receives the correct application firmware.

Create a Mobile App for Your End-users

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 set up and enroll the production devices that they have purchased from you, a process called Activation. 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 SDK Key which will be made available to you when you become a customer. Your key is bound to your account and is unique.

App Development with the BlinkUp SDK

If the BlinkUp SDK is designed for end-user apps which will enroll production devices — and only production devices — and the Electric Imp app only works with development devices that are to be tied to Electric Imp accounts, how do you incorporate your mobile apps into the factory test flow?

You use the app as is to enroll test-blessed devices within a Factory Test Device Group exactly as your end-users will use the app to enroll production devices in the field. However, the Factory Test Device Group presents logs for the test-blessed devices so you can observe the app’s BlinkUp capabilities in the lab.

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 Product/Development Device Group combination before attempting to enroll it with your activation app. Which Product/Development Device Group you assign the device to to doesn’t matter; it simply ensures that when you subsequently re-enroll the device with your BlinkUp app, the enrollment will not be rejected. For more information, please see our guide to supported enrollment flows.

Example
Terry has developed his own BlinkUp SDK-based app. He uses on an existing prototype Weather Monitor, which has already been added to his Electric Imp account and used for application firmware testing. He successfully tests the app on his Weather Monitor prototype. He also uses it to activate test-blessed devices in his Factory Test Device Group. When he is ready to ship the app — and his Weather Monitor product — he compiles a deployment build and submits it to the iTunes App Store (iOS) and Google Play (Android) from which his end-users will be able to download it and activate their own Weather Monitors.

Checklist

The following is a checklist of the steps you need to take to move your project from development to volume production.

  1. Contact sales@electricimp.com to discuss becoming an Electric Imp customer and to purchase an impFactory appliance for factory BlinkUp.
  2. Create a Product in impCentral.
  3. Ready your Product’s application firmware in a new Development Device Group:
    • Test your code on development devices assigned to the Development Device Group.
    • Use the code editor to promote the approved deployment.
  4. Create a Production Device Group:
    • Deploy the promoted application firmware to this group.
  5. Ready your Product’s factory firmware in a new Factory Test Device Group:
    • Develop device-side code to control the impFactory, and to test and bless DUTs.
    • Develop agent-side code to transfer information from DUTs to the Internet and/or to the impFactory.
    • Assign test fixtures to your Factory Test Device Group and use them to enroll DUTs.
    • View the resulting test-blessed devices in the Factory Test Device Group’s ‘Devices’ view.
    • Promote the factory firmware.
  6. Create a Factory Device Group:
    • Set the Production Device Group as the Factory Device Group’s target.
    • Deploy the factory firmware to the group.
    • Assign factory BlinkUp fixture(s) to the group.
  7. Use the BlinkUp SDK to develop your end-users’ activations app:
    • Test your app on development devices by assigning them to any Product/Development Device Group combination first.
    • Test your app on test-blessed devices in the Factory Test Device Group.
    • Submit your app to the app stores.
  8. Assemble your product in the factory:
    • Enroll and configure each DUT using the impFactory.
    • The factory firmware tests and blesses each DUT.
    • Use factory firmware agents to drive the addition of unit identification stamps or stickers.
  9. Ship your product!

Learn More