Inside Electric Imp’s Powerful Next-generation IDE
Electric Imp’s impCentral™ is the next-generation version of the Electric Imp IDE. It provides a much more flexible and far more scalable foundation for developing and deploying high-volume IoT products based on the Electric Imp Platform than the legacy IDE allowed.
This introduction to impCentral will help you understand how the app works to bring you powerful yet flexible code, device and product management functionality.
For owners of free Electric Imp development-only accounts who are working solely on their own projects, using impCentral is straightforward: there are some terminology and user-interface changes to learn, but the broad process of writing code and running it on your devices is much the same as it was in the IDE. You will need to understand the relationship between Products and Development Device Groups, and how they differ to models.
Electric Imp Enterprise account holders, and free account holders who are collaborating on shared Enterprise accounts, will also need to understand how the different types of Device Group — Development, Production, Factory and Test Factory — are applied and how they interrelate. They will need a firm grasp of how factory BlinkUp™ Fixtures are assigned in impCentral, how the web app is used to deploy production firmware to Production and Factory Device Groups, and how Test Factory Device Groups can be used to pre-flight your Connected Factory setup before you go into production.
Electric Imp maintains two Public ImpClouds: one hosted on Microsoft Azure, the other on Amazon Web Services (AWS). All existing accounts are hosted on AWS, but new accounts may be created on either impCloud. Accounts on the two impClouds are not linked in any way: even if you possess the same username on both impClouds, you will not be able to access one account’s Products and devices from the other account. Owning a given username on one impCloud does not guarantee that you will be able to make use of the same username on the other impCloud.
In addition to this introduction to impCentral, we have also prepared a set of FAQs to answer commonplace questions about the system.
impCentral should work on almost any desktop browser. However, only the following browser versions are formally supported and targeted for new features:
To maintain compatibility with impCentral, you are advised to enable automatic browser updates. We will always support the two most recent vendor supported versions at any given time. As new versions of these browsers are released, support for the earlier of the two previously favored versions will end: we will not test new features and updates with older browsers.
impCentral will be very familiar to anyone who has used the IDE. However, a number of small changes have been made to the way its key features are accessed. These changes make access to the components of your product quicker and easier.
impCentral’s first user-interface element, named for the Electric Imp logo it contains, is the bar at the top of the app’s browser window. It contains the devices menu (), the status menu , the help menu () and the My Account menu. The devices menu provides quick access to all of the Development Devices available to the account owner (via the My Development Devices link) both assigned and unassigned. It also includes the device-search field into which you can enter a device’s ID, its MAC address or an agent ID:
Note The following sections introduce some new terms to describe the way Electric Imp applications are organized in impCentral, including Product, Device Group, Development Zone and Production Zone. These terms are explained in more detail later in this document.
Below the Electric Imp bar is a new ‘breadcrumb’ navigation bar, which initially presents the currently selected account. When you log in, this will be your own account. If you have access to other accounts as a collaborator, clicking on Account will pop up a list of the accounts available to you. The currently selected account is highlighted in this list:
The list indicates what collaboration role you have for a given account; your own account is marked personal account.
Clicking on the account name in the navigation bar itself, or an account in the menu, will show the selected account’s Products. Products are impCentral’s way of encapsulating an Electric Imp-enabled connect product. Selecting one (by moving the mouse pointer onto its listing and clicking either Development Zone or Production Zone link in the MANAGE column) will add it to the navigation bar:
The Development Zone and the Production Zone are impCentral’s two primary areas of functionality. Holders of free Electric Imp accounts only have access to the Development Zone, unless they have also been granted access to an account with production permissions as a collaborator. The Zones are color-coded: blue for development, green for production.
Below the name of the Product is a pop-up list of the account’s most recently accessed Products (Product ) so you can quickly jump to other Products. Next to this menu is a switch which moves you between Development and Production Zones for the currently selected Product ( ). If the selected account does not have permission to access impCentral’s production functionality, Production will not respond to clicks.
impCentral provides a new component, the Device Group, to help you organize devices. Development Device Groups are where you gather Development Devices to run pre-release application firmware; a Development Device Group is the minimum you need to get working on a Product. Indeed, whenever you create a Product, you are invited to create a Development Device Group too. When you select a Development Device Group, impCentral presents a code editor where you write code and test it by deploying it to the devices assigned to the Device Group. Clicking on a Product in the navigation bar will show that Product’s Development Device Groups, as will selecting Development Zone under MANAGE from the Products list.
You can have as many Development Device Groups as you need to develop your Product’s application firmware. For example, you might have a Development Device Group for each regional or functional variant of your product. Moving the mouse pointer onto a Development Device Group and clicking the group’s name, or the Code, Deployments or ‘Devices link in the MANAGE column, will add the Device Group to the navigation bar:
Again, the menu below the Device Group’s name in the navigation bar provides access to a pop-up list of all of the Product’s Device Groups relevant to the current zone: Development and Test Factory groups in the Development Zone, Production and Factory groups in the Production Zone.
Whenever an item on the navigation bar is selected, impCentral adds a context-sensitive column of options to the left side of the screen. Clicking the Account entry in the navigation bar, for example, shows three icons which, when clicked, respectively present lists of the account’s Products, of the account’s collaborators and of the account’s devices. The Products icon (and therefore the Products list) is selected initially. The remaining icons when clicked take you to lists of, respectively, collaborators on your account and your account’s Development Devices.
Clicking on the Products item in the navigation bar displays (or clicking Development Zone under MANAGE in the Products list) places two icons in the side panel which, when clicked, present lists of the account’s Development or Test Factory Device Groups — the ‘D’ and the ‘F’ symbols indicate which is which. The Development Device Groups list is selected initially:
Clicking on the Device Groups item in the navigation bar (or an item in the list of device groups) displays four icons which, when clicked, present (top to bottom) device group information dashboard, the code editor, the group’s deployment history and a list of devices assigned to the selected group. The dashboard is selected initially:
The code editor icon indicates the status of the code it currently has loaded: unsaved draft code (indicated by the label DRAFT), or read-only already deployed code (indicated by the label SHA):
The code editor section, below, explains the difference between these two code editor modes.
Clicking on the devices icon () will take you to one of two device lists:
For more information on testing the factory process with Test Factory Device Groups, see ‘Testing Factory Firmware And Blessing’, below.
If you are able to access a Product’s Production Zone and do so, you will see icons which, when clicked, present (top to bottom) the Product’s Production Device Groups and its Factory Device Groups:
Clicking Devices under MANAGE in the Production Device Groups list, or on Fixtures under MANAGE in the Factory Device Groups list, will call up a view of, respectively, Production Devices or BlinkUp Fixtures assigned to the chosen group. Clicking Deployments under MANAGE will call up a list of production firmware deployments made to the chosen group. Clicking the chosen group’s name will present the information dashboard for that group. In any of these cases, the side panel changes to allow you to switch quickly between these three views (dashboard, devices and deployments):
impCentral displays lists of items — Products, Device Groups, Devices, Deployments etc. — in a standard, consistent way. The items are listed in a table with columns that are relevant to the type of item being listed:
Column headings with triangles () can be clicked to re-order the table by sorting the column entries alphabetically and numerically, alternating between ascending order (triangle points up) and descending order (triangle points down).
Some column headings feature question marks () — click on these to get more information about the meaning of the information in the column.
Many lists have a selection column at the far left: use the checkboxes to select or deselect multiple items. The checkbox in the table’s headings bar can be used to select or deselect all the items on the page. The row of buttons above the table are used to apply actions to selected list items. impCentral will disable some of these bulk-action buttons until a selection is made; other buttons do not need a selection to be made. If the selection contains items that do not respond to an action, the button that triggers that action will be disabled. For example, if you select both assigned and unassigned devices from the Devices list, the Restart button will remain disabled because unassigned devices can’t be restarted this way. De-select the unassigned devices, and the Restart button will become enabled for the selected assigned devices.
Lists are paginated, and you can use the far-right arrow buttons () to navigate between pages. These buttons are only active if there are more than one page of items available to view.
All lists have a MANAGE column at the far-right of the table. This column includes actions specific to the item type and which will be applied to the row item only. To apply an action to multiple items, select them using their checkboxes and the buttons discussed above.
Lists of items which you or your collaborators can create — Products and Device Groups — will features a context-sensitive Create New… button above the page-navigation buttons:
impCentral’s code editor is an improved version of the IDE code editor: it features the standard agent and device code panes, and a pane in which the logs for a device assigned to the host Development or Test Factory Device Group can be viewed by selecting that device from the list at the bottom left:
The log pane also displays a device’s ID and its agent’s URL. A convenient new Assign devices button appears in the device list to allow you to add more of the account’s unassigned devices to the Device Group.
The code editor’s code panes will preserve their contents between sessions, but to deploy the displayed code to all the devices assigned to the Device Group, you need to click the Build and Force Restart button at the top:
To make code available to collaborators and to impCentral’s Production Zone, it must be deployed (using Build and Force Restart) and then promoted using the Promote button:
This button will not be present if the currently selected account has not granted you access to production functionality.
The Deployments view (selected by clicking Deployments under MANAGE for a given Device Group, or clicking the Deployments side panel icon) lists all the deployments made to the Device Group. Code is deployed to Development and Test Factory Device Groups by clicking on the code editor’s Build and Force Restart button; deploying code to Production and Factory Device Groups is handled differently (see below). Deployments are listed with their the date and time of deployment, SHA value and whether they were also promoted. They are listed in date order, most recent first:
You can click on a deployment’s SHA in order to display its code in the code editor. The code icon in the side panel will now feature the SHA label, and the agent and device code panels will show a lock icon to indicate that they cannot be edited. Once a deployed has been created, it cannot be changed (though it can still be promoted; a deployment’s promoted status is indicated in the Deployments list). To work with code that has been deployed, select its SHA from the Deployments list and then click on the code editor’s Edit button (which only appears in the SHA mode):
This causes the deployment’s code to be copied to a new draft within the code editor. You will be asked if you wish to overwrite an existing draft — if you do, the code editor goes into Draft mode, and its side panel icon will now feature the DRAFT label. Make your changes and then click Build and Force Restart to generate a new deployment.
Individual deployments can be deleted from the Deployments list, but you can’t delete the most recent deployment, and impCentral preserves all deployments made to Production and Factory Device Groups (see below).
You can also click on Settings under MANAGE to provide a description of the deployment.
The Deployments list’s DEPLOYMENT TYPE column indicates which of the Device Group’s deployments is current (the topmost deployment on the list) and which has been set as the minimum. The latter is used to ensure devices are running up-to-date code. For more information, see Deployment Types, below.
In impCentral, deployments are referenced by their SHA. SHAs are generated from the code and the account owner ID when you click the Build and Force Restart button in the code editor. The SHA is displayed immediately in the readout to the right of the code editor’s action buttons:
Above, the Code Editor button area before Build and Force Restart is clicked. After the button is clicked, the SHA is displayed:
The SHA will also appear as a new entry in the Deployments list. You can also click on the triangle to the right of the Draft button to get a pop-up list of the most recent deployments made to the Device Group:
Once you have clicked Build and Force Restart, the code editor disables this button until you make further changes to the code. This is to prevent you accidentally making multiple deployments of identical code, all of which will therefore have the same SHA.
If the same code is deployed to two separate Device Groups in Products owned by a single account, they will again both have the same SHA. This is to allow you to discover which Device Groups are running the same code.
Deploying new code to a Device Group stages the code: the devices assigned to the group will receive the code when they actively connect to the impCloud, usually by restarting. The most recent deployment made to a Device Group is called its Current deployment.
Device Groups can also be set to have a Minimum deployment. This is essentially a baseline version — a given device cannot run code deployed before the Minimum was deployed. A Device Group’s Current and Minimum deployments are marked as such in the Deployments list.
These deployment types are used primarily during a polite deployment. Polite deployment is a feature of the imp API and your application code which allows the latter to defer an impOS or Squirrel update until it has completed a critical task. If polite deployment is implemented in your application code, you can use impCentral to trigger either forced or conditional restart when you either make a deployment, or simply tell a Device Group to restart its devices.
A forced restart is the same as restarting any device whose application doesn’t suport polite deployment: if the device is not running the latest code, it will restart and receive it now.
A conditional restart has two possible outcomes. If the device is running a version of the code that isn’t the most recent deployment and the code is from a deployment made before Minimum, then it will be forced to upgrade to the latest deployment, ie. Current.
If the device is running a version of the code that isn’t the latest one, but the code is Minimum or later, then the application will be given the chance to defer the upgrade using its polite deployment support.
Minimum and Current are initially the first deployment made to a Device Group. As further deployments are made, Current will always be the most recent deployment, but Minimum will not change until more than ten deployments have been made. From that point, Minimum always stays ten deployments behind Current — unless you use impCentral to adjust it upwards. Minimum can never be adjusted downwards. If you move Minimum up, afterwards, as new deployments are made, it will again remain unchanged until Current is ten deployments ahead, after which it will always be ten deployments behind Current.
To use this facility with Development and Test Factory Device Groups, click on the triangle to the right of the Build and Force Restart button and select Build and Conditional Restart:
The is a third option on the menu, Build, which will always stage the deployed code without triggering a restart: devices must be restarted manually to receive the deployed code. Individual devices can be restarted using the controls in the code editor’s log pane device list:
For Production and Factory Device Groups, the choice of whether to force restarts or restart conditionally is made when you deploy code to them. You do this by selecting Deployments under MANAGE column in their respective Production Zone lists. Now click on New Deployment or, to re-use an existing deployment, Redeploy under MANAGE. In the Deploy panel, select either Forced or Conditional as required:
Again, if your application code doesn’t support polite deployment, all restarts are de facto forced. And forced deployments will always override an application’s own polite deployment support.
All device groups include a data readout, the Dashboard, to provide you with useful information about and insights into the devices assigned to the group. The Dashboard is particularly useful for Production Device Groups, to view statistics collated from millions of devices in the field, but it is available to all device group types. To view a group’s Dashboard, click on the group’s name from any of the Product’s Device Group lists. If you have already selected a group, view its Dashboard by clicking the Dashboard sidebar icon ().
The Dashboard comprises three sections. The first of these provides useful information about the device group: the Product to which it belongs; the number of devices currently assigned to it; and the firmware Deployment currently applied to the group:
The second section provides aggregate device-impCloud communications data, either in terms of the number of messages passing in (to devices) or out (to the impCloud), or the volume of data transmitted. Click on the Bytes button to switch to the messages view, and back again:
Move the cursor across the chart to view data for specific times. Click the refresh button () to update the chart at any time.
Click on the date value to select a different end date. How much device data the chart will compile depends on whether you select Days, Hours or Minutes: the previous 30 days, seven days or 24 hours, respectively:
The final section presents a global map pinpointing the approximate location of the group’s devices based on their IP addresses. Click on the World button to select a US view, or vice versa:
Device locations are derived from known relationships between IP address and geography, but some international Internet Service Providers may span their host nation’s IP addresses across multiple territories, so this data can only ever be an approximation.
impCentral allows you to invite other account holders to work on your account’s Products, Device Groups, code and devices. If you select your account in the impCentral navigation bar, you’ll see the collaborators icon () in the side panel — click this to access the collaboration interface where you can add collaborators to your account (click the Add a Collaborator button) and chose what access privileges they have — and therefore what impCentral functionality they can make use of while viewing your Products.
Potential collaborators must first be invited to access your account — an invitation they need to respond to before they are granted access. Click the Add a Collaborator button, then enter the potential collaborator’s email address into the Add Collaborator panel that appears. Choose one or more roles and then click the Add Collaborator button.
You can view a full list of the actions that account collaborators may perform on a shared account, according to their role, here.
Once a collaborator has accepted your invitation and logged into impCentral using their own Electric Imp account, they can click on the arrow alongside the left-most entry in the navigation bar to switch between their own account (marked personal account) and the shared account (and any other shared accounts they are collaborating on).
If you receive an invitation, you acknowledge it by clicking the link provided in the email you will receive (sent by the account owner as detailed above). You can also do so by clicking Invitations and Roles in the My Account menu in impCentral’s Electric Imp bar. The view this presents allows you to see any pending invitations and to review the accounts on which you are collaborating. If you no longer wish to collaborate on a given account, click Resign under MANAGE for that account.
The MANAGE column also includes a Switch item which, when clicked, will select that account as the one impCentral’s UI will present to you.
You can alter a collaborator’s role(s) later by clicking Settings under MANAGE in the Collaborators list for your account.
If you wish to revoke a collaborator’s access entirely, click Remove under MANAGE in the Collaborators list for your account.
The devices menu () includes a BlinkUp option: BlinkUp New Device. You can use this to add development devices, including BlinkUp fixtures, to your account. BlinkUp is performed in a window within impCentral’s browser window on your monitor.
This option is an alternative to the Electric Imp mobile app. In some cases, you may need to use the mobile app: your devices are not within easy reach of your monitor, perhaps because they are mounted on the ceiling or in some other difficult-to-access location. In addition, your monitor may not be bright enough, or your system not capable to driving the BlinkUp animation sufficiently well to ensure smooth BlinkUp.
Select BlinkUp New Device to try it out. You will see the following screen:
Enter your WiFi name (SSID) and password, if you need to, then click Start BlinkUp. A panel will appear to present a five-second countdown, after which it will flash to send the data to the development device:
Hold your device up to the screen and keep it steady.
Always run a BlinkUp with the screen facing away from you and towards the device being configured, especially if you suffer from a medical condition that makes you susceptible to strobing light.
Managing production in impCentral involves creating at least one Production Device Group and at least one Factory Device Group. This takes place in impCentral’s Production Zone, which becomes accessible when you select a Product to work on.
When you create a Production Device Group, impCentral expects you to select a promoted application firmware deployment to re-deploy to the new group. You must have taken a deployment from in one of the Product’s Development Device Groups and promoted it for deployment to production.
Clicking on Settings under MANAGE column in the Product’s Production Device Groups list opens up a panel in which you can change the group’s name, add a description and choose when devices assigned to the group receive their application firmware.
By default, this takes place immediately after blessing: the Production Device will be sent its application code one second after the device is blessed (ie. there is sufficient time to run post-bless callback in your factory firmware). This enables out-of-the-box operation by the device's end-user. However, you may choose to have device not receive its application firmware until it has been activated (first end-user BlinkUp). This should be selected if you are performing device activation in the factory.
A Production Device Group’s Settings panel also allows you to set webhooks which will be triggered when key events in a Production Device’s lifecycle take place. Please see the webhook documentation for more information.
Clicking Deployments under MANAGE column in the Product’s Production Device Groups list will call up a list of application firmware deployments made to the group.
Clicking on Devices under MANAGE in the Product’s Production Device Groups list will call up a list of the Production Devices that have been assigned to the group. From this list you can re-assign any of these devices — typically, this is done to re-assign devices to a Production Device Group to which alternative application code has been deployed.
You will assign your BlinkUp Fixture(s) to the Factory Device Group. You will deploy your production factory firmware to the Factory Device Group and thus to all the fixtures assigned to it. In addition, you will set the Factory Device Group’s target: this is the Production Device Group to which DUTs configured by the Factory Device Group’s fixtures will be automatically assigned upon blessing.
When you create a new Factory Device Group, impCentral will expect you to set the new group’s initial target so you must have already created a Production Device Group for the Product. You can change the group’s target by clicking on Settings under MANAGE in the Product’s Factory Device Groups list:
Clicking on Fixtures under MANAGE in the Product’s Factory Device Groups list will call up a list of the BlinkUp Fixtures assigned to the group. From this list you can re-assign any of these fixtures (for example, when you wish to re-use them for a different Factory Device Group within this Product or under another Product entirely), restart them or gain further information about them, just as you can with Development Devices.
Clicking on Deployments under MANAGE in the Product’s Factory Device Groups list will call up a list of factory firmware deployments made to the group.
The list of a Production Device Group’s devices is organized into those devices which have been activated by an end-user (enrolled) and those which have been not yet been activated. Electric Imp Customers can choose to convert any Production Device into a Development Device (unblessing) by clicking Delete under MANAGE in the device list.
If you know the device ID and/or MAC address of the unit in question, you can enter this information in the Device Lookup field in the devices menu (). The device details page that will now appear has an Actions menu in the top right corner: selecting Delete from this menu will unbless the device (provided it is a production device).
The device details page mentioned above is also used to view Production Device logs in impCentral. Simply use Device Lookup to locate the specific Production Device you are interested in and, on the device details page, click the LOGS tab.
Select Profile from the Electric Imp bar’s My Account menu to make changes to your account. Your options are presented as a sidebar menu:
The first of these, Profile is selected initially. Here you can update the email address registered for your account and/or change your password:
Click on the appropriate change link to update either of these settings. In each case, a panel will pop up to allow you to enter and confirm new values, or to cancel the operation.
impCentral Login Keys provide you with a means to allow collaborators to access your account via the impCentral API without the need to give them your account credentials. Uaing Login Keys is therefore the more secure approach, and has the added benefit of allowing you to monitor access.
To create a new Login Key, or view details of an existing key’s usage, click Login Keys in the sidebar. Click the Create Login Key button near the right of the window to generate a new key:
You should enter a description of the key’s role: for example, note who it will be sent to and why they are receiving the key. Now enter your account password and then click the Create New Key button. The new key will now be listed in the main window. Only basic information is shown at first, but if you click the disclosure triangle () you will see more data, including key usage:
The Login Key’s entry contains two links on the far right side. The first, Settings, allows you to update the key’s description. The second link, Delete, is used to permanently revoke the key. Deletion occurs immediately, and any application using the deleted key will no longer be able to access your account.
The sidebar’s Invitations and Roles option allows you to view the accounts which have added you as a collaborator. Any pending invitations to collaborate are listed here too, for the period in which they remain open.
impCentral organizes applications into entities called Products and Device Groups. Each Product in your account embodies a single Electric Imp-based product or product family. It can include any number of Device Groups, as required by your development process, your production workflow, and the nature of your product. Let’s look at each of impCentral’s new elements.
Products encompass all the different types of firmware — application and factory; development and production — that are required to develop a product, to put it into production, and to make it successfully operate in the field. However, Products don’t hold code or have devices assigned to them directly. Instead, they contain one or more Device Groups, and these are the entities to which devices are assigned and code is deployed.
Example Terry is building a connected weather monitor called Meteor and which is powered by the Electric Imp Platform. At the start of development, he creates a new Product in impCentral and names it “Meteor” for the product he is designing.
Device Groups in the Development Zone — Development Device Groups and Test Factory Device Groups — combine code and devices. These Device Groups are used solely for code development and testing. Development Device Groups are used to work on application firmware; Test Factory Device Groups to work on factory firmware.
Test Factory Device Groups are only available to Electric Imp Enterprise accounts, or to free accounts which have been granted access to an Enterprise account as a collaborator. When viewing their own accounts, holders of free accounts will not be able to work with Test Factory Device Groups, only Development Device Groups.
Within impCentral, each of these Device Groups’ UI incorporates a code editor where you work on your software, as described above. When you click Build and Force Restart in the code editor, impCentral automatically creates a new code deployment, stages this deployment, and causes all of the devices assigned to the Device Group to restart so that they receive the new code. The new deployment is also listed in the Device Group’s Deployments list, which can be viewed by clicking on the Deployments icon () in the Side Panel.
The Side Panel also includes a device icon () which, when clicked, presents a list of devices assigned to the Device Group. If you are viewing a Development Device Group, they will be the Development Devices assigned to that group. If you are viewing a Test Factory Device Group, they will be any Test Blessed Devices activated by the BlinkUp Fixtures assigned to the Device Group.
Clicking on the Code icon () in the Side Panel takes you back to the code editor.
Example When Terry created his Product “Meteor”, impCentral also created an initial Development Device Group, which Terry named “Meteor App Code 1.0.0”. This will be where he develops the first release of his connected weather monitor’s application firmware, and where he will deploy it to his development hardware for testing. Later, Terry creates a Test Factory Device Group called “Meteor Factory Firmware 1.0.0” under which he will develop his factory firmware and deploy it to a BlinkUp Fixture as he tests and optimizes his Connected Factory set-up ahead of production.
A Test Factory Device Group doesn’t only allow you to develop factory firmware and deploy it on BlinkUp Fixtures. It also allows you to use those fixtures to pre-flight the Connected Factory Process by configuring Devices Under Test (DUTs) that will be akin to the units that will roll off the assembly line in due course. Once primed by BlinkUp from a fixture assigned to the Test Factory Device Group, these DUTs will then run the Test Factory Device Group’s factory firmware, just as they would if they were production units in a Connected Factory. They will even be blessed as they would in the factory. This mirroring of the Connected Factory Process within a Test Factory Device Group means that you can fully test your factory firmware on both BlinkUp fixtures and DUTs before you deploy it to production-grade factory BlinkUp fixtures.
Clicking on the Devices icon () in the Side Panel while viewing a Test Factory Device Group will present a list of all the Test Blessed Devices which have gone through the factory pre-flight process, ie. DUTs which have run the factory firmware: they have passed your hardware tests and been successfully blessed. The list is in the form of the code editor’s log pane, so you can easily view the log output of any Test Blessed Devices that you select:
The Test Blessed Devices list includes a Deploy button: click this to select a promoted application firmware deployment. See the code editor section, above, for information on promoting deployments. The application firmware deployed this way will be the code that Test Blessed Devices receive after blessing.
Behind the scenes, impCentral creates but does not expose a Pre-production Device Group. This is a the test equivalent of the Production Device Group, and it is to this hidden group that Test Blessed Devices are assigned upon blessing (and thus receive the application firmware deployed to the Pre-production Device Group as described in the previous paragraph). Though impCentral does not expose the Pre-production Device Groups it creates for you, this type of Device Group is accessible via the impCentral API.
Example Terry tests his Connected Factory setup by assigning an impFactory™ to his Test Factory Device Group “Meteor Factory Firmware 1.0.0”. In the lab, he uses the impFactory to perform BlinkUp on a number of hand-build Meteors, which will then run the Device Group’s factory firmware and, eventually, be test-blessed. In addition, he tests his BlinkUp SDK-based Meteor app on the Test Blessed Devices to verify hist product’s end-user activation process.
In the Production Zone, Device Groups are used solely to organize production hardware: devices that have come off the factory assembly line after blessing (which places then in Production Device Groups), and the BlinkUp Fixtures used to prepare newly assembled DUTs for access to the impCloud. They are not used to develop code, and impCentral does not present a code editor within these groups.
impCentral’s Device Groups make it easy to take an arbitrary number of Production Devices (DUTs that have been blessed), create a new Production Device Group for them, deploy alternative application firmware to that group, and thus switch those devices to different code that that run by your other Production Devices.
For example, this allows you to deploy an updated version of your product’s application firmware to a small number of Production Devices in the field for real-world testing purposes. As your confidence in the stability of the update increases, you can move more devices from Production Device Group A (to which the old release is deployed) to Production Device Group A (to which the update has been deployed). Eventually all remaining devices can be moved across, and the now empty group A deleted or held in readiness for the next update.
In addition to Production Device Groups, there are Factory Device Groups, which organize the BlinkUp Fixtures that will be installed in your Connected Factory. You deploy your latest factory firmware (developed in a Test Factory Device Group and then promoted to production) to Factory Device Groups. Again, you can have as many Factory Device Groups as you need. For example, your Product can support multiple factory firmware releases — say, different versions for the variants of your product, each with its own hardward testing requirements and hence its own factory firmware, that will ship to different territories.
A Factory Device Group is connected to a Production Device Group by its target property: when a DUT is blessed, the impCloud reads the value of this property for the Factory Device Group containing the fixture which configured the DUT. It then assigns the DUT to the target Production Device Group. When you create a Factory Device Group in impCentral, you must select an existing Production Device Group as its target. You can change the target later by navigating to the Product’s Factory Device Groups list and clicking Settings under MANAGE for the chosen Factory Device Group.
Example Having begun producing and selling Meteors, Terry decides to add a new software feature. He creates a new Development Device Group, “Meteor App Code 1.1.0”, to develop and test the new code in the lab. When the code is ready, Terry elects to release the code to a small group of end-users as a field trial. He creates a new Production Device Group, deploys the 1.1.0 code to it and assigns those users’ Meteors to it too. All other Production Devices, new and existing, continue to use the code promoted from “Meteor App Code 1.0.0” until Terry is happy with the trial’s outcome and chooses to migrate all Production Devices to the new Group. At this point, he also updates his Factory Device Group’s target to reference the new Production Device Group so that all devices blessed from that point on are assigned to the new group — and so receive the 1.1.0 code — automatically.
impCentral allows you to manage devices in new ways. Let’s look at each type of device in turn.
When you add a new Development Device to your Electric Imp account using the Electric Imp mobile app and BlinkUp, the device will be in an unassigned state. All of the devices you add to your own account can be listed by selecting My Development Devices from the devices menu () in impCentral’s Electric Imp bar.
impCentral’s account view provides a list of all of the devices assigned to the currently selected account — click on the device icon () in the Side Panel — and from here you can assign them to any Development or Test Factory Device Group under any of the selected account’s Products. The list includes devices owned by other accounts but assigned to a Device Group belonging to the selected account.
Example Terry’s hardware team has completed a number of Meteor prototypes that are ready to be used to test the monitor’s application firmware. Terry adds them to his account using the Electric Imp app then assigns them to the Development Device Group “Meteor App Code 1.0.0”. He goes to the code editor and clicks the Build and Force Restart button to check, compile and save the latest draft of his code, which is then deployed to the prototype units.
A Device Group’s list of assigned devices includes a Details option under the MANAGE column. This pops up a convenient readout of key device information: its ID, MAC address, agent URL, imp type and more. A tabbed interface allows you to switch between the device’s details, its most recent log messages, and its activity history: its assignments, enrollments, blessings, and if and when it has been unassigned.
Like Development Devices, BlinkUp Fixtures are added to an Electric Imp account using the Electric Imp mobile app. Newly added fixtures are also unassigned, but you have a choice about where to assign them: to a Test Factory Device Group or to a Factory Device Group.
You assign a fixture to a Test Factory Device Group because you want to use it to test your in-development factory firmware. Within a Test Factory Device Group, the fixture and factory firmware can be used to bless DUTs in the lab just as if they were being processed in your Connected Factory. Test Factory Device Groups therefore give you the capability to pre-flight your Connected Factory setup before you go into production. This can both speed up your time to market and reduce your costs.
When you create a Test Factory Device Group and use its fixtures to bless devices, impCentral manages any Test Blessed Devices for you — you can view a list of them by clicking the Devices icon () in the Side Panel.
You can also assign a BlinkUp Fixture straight to a Factory Device Group. Typically, this is done before a fixture is sent to the factory for installation, or with a factory collaborator’s shared device. Assigning a fixture to a Factory Device Group is all you need to do to register the unit for factory work.
Note impCentral does not support the use of imp001-based factory fixtures, only fixtures based on imp modules (imp002, imp003, imp004m, imp005).
Example Terry has purchased an Electric Imp impFactory to test his factory firmware, which he has been preparing in the Test Factory Device Group “Meteor Factory Firmware 1.0.0”. He adds the impFactory to his account using the Electric Imp app and then assigns it to “Meteor Factory Firmware 1.0.0”. He goes to the Device Group’s code editor and clicks the **Build and Force Restart** button to check, compile and save the latest draft of his factory code, which is then deployed to the impFactory. This unit is now ready to configure DUTs for test-blessing.
If you need or want to re-configure a BlinkUp Fixture and it is currently assigned to a Factory Device Group or Test Factory Device Group, you must unassign it or re-assign it to a Development Device Group first.
Production Devices are DUTs which have been tested and blessed so that they are ready for end-use. They receive their application firmware after they have been blessed, either immediately (the default) or when have been activated by an end-user. During blessing, a DUT is assigned to a specific Production Device Group — its application firmware is the code deployed to that group — and it becomes a Production Device.
How does the impCloud know which Production Device Group to assign a newly blessed Production Device to? The Factory Device Group to which the BlinkUp Fixture that configured the DUT has a Production Device Group set as its target, and it’s this target group to which Production Devices are assigned upon blessing.
As we’ve seen, Development Devices are assigned not to Products but to Device Groups in the Development Zone. Since these Device Groups always belong to a Product, to move a generic Development Device from Product A to Product B, all you have to do is move it from one of Product A’s Device Groups to one of Product B’s. impCentral allows you to do this with the standard device-assignment panel: just select a different Product and Device Group.
Production Devices are not generic, because their hardware and application firmware are typically very tightly integrated. As such, it doesn’t generally make sense to move such a unit from one Product to another and, indeed, this process is not supported for blessed devices. Don’t forget, though, that blessed production devices can be moved to other Production Device Groups within the Product. This is the recommended way to manage multiple versions of the same product: the Product is the product family, and maintain as many Production Device Groups as there are family members.
If you are using generic units to test your factory flow — using a Test Factory Device Group — you may well wish to re-use such hardware with other Products. In this case, you can use impCentral to unbless the units after they have been test-blessed. Once unblessed, the devices can be re-used in any other test-blessing flow.
BlinkUp Fixtures can be moved between Products because what ties them to a given Product is the factory firmware they are currently running, not their hardware capabilities. Again, re-using a fixture for another Product is just a matter of re-assigning it to a Test Factory or Factory Device Group under another Product.