A Short Guide for Product Managers
Note Terms presented in bold represent formal Electric Imp Platform terminology. There is a useful glossary of terms at the end of this article. For a more detailed description of the Electric Imp Connected Factory Process, please see this guide.
A production device is any unit of imp-enabled hardware that has been prepared for end-use rather than development work. Advanced customers may assemble development devices on a full production line, but as these devices are not commercial units, their production does not require the Electric Imp Connected Factory Process.
A Device Under Test (DUT) is a unit of newly manufactured imp-based hardware that has not yet been readied for end-use. To become a production device, it needs to be tested and then blessed. This is the lifecycle such units:
The Electric Imp Connected Factory Process is the part of the manufacture of a commercial imp-enabled connected product in which DUTs become production devices. This process registers the device with the Electric Imp impCloud™, whether Public or Private.
The Connected Factory Process is one of three key phases in the lifecycle of a commercial imp-enabled device. It forms the first and the most intricate phase. As such, it is the focus of this document. However, the subsequent two phases are closely related to the Connected Factory Process and so they are covered here too, even though they take place outside of the factory.
The three phases are:
For a commercial imp-enabled device, this phase of the factory process involves four stages in which the device:
In order for this phase to begin, the DUT must powered on. The factory must be equipped with a local network (typically wireless) and Internet connectivity.
Let’s look at each of these stages in turn:
Though the DUT contains a wireless module, it is not yet able to connect because it has not been supplied with local network access credentials. All imp-enabled devices are provisioned with these credentials using a patented optical data-transmission technique called BlinkUp™. You can view a video of BlinkUp in operation here. BlinkUp sends the wireless network’s name (SSID) and password to the device. It also sends a token that allows the device to gain access to the impCloud, a process called enrollment. BlinkUp takes approximately five seconds. In the factory, the source of the BlinkUp signal is an imp-enabled assembly line component called a factory BlinkUp fixture, such as Electric Imp’s impFactory™ appliance.
Some imp modules support other modes of connectivity, such as wired Ethernet. DUTs based on these modules may not require wireless network credentials, but they will still require enrollment.
The DUT uses the data it received via BlinkUp to connect to the factory network and then to the impCloud, to which it submits its enrollment token. Enrollment causes the DUT to receive the software it will run within the factory: its factory firmware.
A product’s factory firmware is typically prepared alongside the product’s application firmware. The factory firmware will have been developed and tested before production commences so that it is ready to be downloaded to DUTs on the line.
What does the factory firmware do? The factory firmware incorporates code which tests the DUT, allowing faulty units to be identified. If the DUT passes your tests, it is suitable for sale and end-use, and can now be registered with the impCloud. This registration is called blessing and is the second key task of the factory firmware. A registered device is said to have been blessed.
Blessing registers the production device with the Electric Imp billing system. Only when a device is blessed is it ready for end-use. Blessing is effectively permanent — unlike a development device, a blessed device’s application firmware cannot be changed by an end-user.
Upon blessing, the production device is assigned to a Production Device Group. The specific Device Group determines which application firmware the production device will receive: application firmware is deployed to Device Groups, not to the devices themselves. When a device is assigned to a Device Group, it receives the group’s code. When updated application firmware is deployed to a Device Group, all member devices will receive that update automatically and without end-user intervention.
It is important that all testing functions are performed before blessing. Indeed, the result of the tests (pass or fail) is given to the blessing code so that the device can signal its status to an assembly line operator. A device that has tested successfully and been blessed will light its LED green. Any other outcome (failed test and/or failed blessing) will cause the LED to turn red, allowing such units to be identified and removed from the assembly line.
The successful completion of this stage of the factory process will be signalled to your server if you have set up the Blessing webhook.
As a final step, the factory firmware should clear the production device’s network settings and enrollment token. This ensures that the unit will be in a clean state when an end-user applies their own settings (using BlinkUp and a configuration app that you will provide — see ‘Activation’, below).
Typically, the production device will download its application firmware at this time, though customers may instead elect to have the software download once an end-user has activated the device in the field. The former is useful if you need your application to run as soon as the end-user powers up their device.
Whichever of these alternatives you pick, you can be sure that once an end-user has configured a device, it will receive the latest version of the application firmware at that time.
The Connected Factory Process in now complete. Another production device is ready to be packaged and shipped. However you distribute your product, it will next interact with the Electric Imp impCloud when it is activated by or on behalf of one of your end-users.
Let’s look ahead to the next phase in the device’s lifecycle. An end-user has purchased or leased one of your production devices, which has been installed and is ready for use. The product packaging and/or documentation will have encouraged the end-user to download your BlinkUp app or to access it via mobile web browser. The end-user may also have signed up for an account that you maintain so that you have a record of their ownership of the device. If your product has a display, you may have used the device’s own software, running as soon as the device is powered on, to present a set-up walkthrough on the screen.
The BlinkUp app is essential: it will use the features provided by the Electric Imp BlinkUp SDK to allow the end-user to configure the device for local network access, just as the factory BlinkUp fixture configured DUTs on the assembly line for factory network access. Where the factory fixture transmits the BlinkUp signal using an LED, the BlinkUp app uses the host device’s display. Factory BlinkUp and end-user BlinkUp are summarized later in this article.
Once again, the device connects to the local network and then to the Electric Imp impCloud. This time, however, the device is enrolled as an end-user device — a process called activation. This is only possible if the device has been blessed, as described above. If this second enrollment is successful, billing commences for the device’s impCloud usage, the device’s agent is activated, and its URL returned to the app which may, for example, use it to transmit any changes that the end-user now makes to the device’s application-specific settings.
All this takes place in seconds, though at all times the end-user is given feedback through the device’s LED, which always indicates the status of each stage of the BlinkUp and activation process.
The successful activation of the device will be signalled to your server if you have configured the BlinkUp webhook.
The Electric Imp Platform makes it very easy to deploy updates and improvements to your application firmware whenever you need to. At least one version of the application firmware should be deployed before assembly commences, but further versions can be deployed as often as you require, even part way through a production run. This is because all blessed production devices will automatically receive newly deployed versions of the application firmware when they connect to the Electric Imp impCloud.
The following table summarized the differences and similarities between the configuration of a device as it undergoes the Electric Imp Connected Factory Process and when it is set up by its end-user in the field:
|Action or Event||In the Factory||In the Field|
|Device Under Test runs...||Factory firmware||N/A|
|Production Device runs...||Factory firmware||Application firmware|
|BlinkUp performed by...||Factory BlinkUp fixture||BlinkUp SDK-based mobile or web app|
|impCloud Enrollment Token Type||Factory||Production|
|Production Device Connects to...||Factory network||End-user’s network|
|Usage Mode||Device test and bless||Product end-use|
The name of process by which a production (blessed) device is enrolled by its end-user.
The process of registering a new production device with the Electric Imp impCloud. More detailed information can be found here.
The patented process by which network configuration information and an impCloud enrollment token are sent to an imp-enabled device using the screen of a phone or tablet, or an LED. Development devices and factory BlinkUp fixtures are configured using the Electric Imp app. Production devices under test are configured by factory BlinkUp fixtures. Blessed production devices are configured by end-users with your BlinkUp SDK-based mobile app. More detailed information can be found here.
The prototype version of your hardware, or simply a unit based on an imp breakout board that is being used to test your connected product’s software or evaluate the Electric Imp Platform. Development devices are configured using the Electric Imp app, not your BlinkUp SDK-based mobile app (this is for production devices only).
Any hardware which will be connected to the Internet and the Electric Imp impCloud using an integrated imp.