Rapid prototyping is a quick way to prove your ideas, enhance them, or take them a step further in production. Before electronic boards such as the Intel® Edison board or the Intel® Galileo board were available, hardware prototyping was expensive and accessible only to a select few. Now, with online orders and a wide variety of learning tools, such as Instructables, it’s easy to dive into your first Internet of Things (IoT) project and bring your ideas to life.
Either because you’re a hobbyist and want to solve a problem you face daily or you have an idea you want to develop before you seek funding, the Intel® IoT Developer Kit provides the platform and support you need. Multiple moving parts must coexist before you can achieve a functional solution. The tangible parts are the sensors, actuators, microcontroller, and board; then, there’s the software portion, which interacts with the hardware, and any additional software layer to assist with data collection and manipulation.
Software
You can use the Intel® System Studio IoT Edition on computers running a Windows*, OS X*, or Linux* operating system to access the libraries that facilitate functions to get data from the sensors and actuators. With multiple development environments available, such as Arduino*, C++, Python*, and Java*, the Intel® IoT Developer Kit caters to developers of all types. Node.js* functionality is achieved through the Intel® XDK IoT Edition integrated development environment, also available under free distribution from the Intel® Developer Zone. Intel® IoT technology integrates with other systems, as well, such as Microsoft* Azure*, IBM* Bluemix*, and Amazon Web Services* (AWS*). Remember to check the latest updates on new version releases, which may support further plugins and crossplatform functionalities.
Hardware
You can use either the Intel® Edison board or its predecessor, the Intel® Galileo board (see Figure 1). Multiple sensor and wire kits are available. In particular, consider the Grove* Starter Kit Plus to get your feet wet with prototyping. Note that you can mount the Intel® Edison board on various extension boards, such as that from SparkFun*. In addition, you can create enclosures for your prototypes with threedimensional printers or laser cutters to give your project a finished look.
Uses and Implementation
Our daily actions are usually routine, following a state of action and reaction. As an example for those who have pets, it’s given that we will need to feed it and provide fresh water for them. A more eccentric example is a laundry notification system that tells users when washing machines or dryers for laundry are available. For those who live in apartment complexes or don’t have their own washing machine or drier, such a solution would be a time saver. For example, the Smart Walking Stick for Blind People is a project that looks to solve daily challenges for people who have disabilities or accessibility challenges.
Let’s walk through it in terms of sensors and actuators. When you start to prototype, you need to identify which technology, both hardware and software, you want to use. Your choices depend on which development platforms you’re comfortable with, which platforms you’re looking to learn, and which approach you take to solve the issue at hand. Say you’re tackling an automatic feeder prototype for your pet: You could use a pressure sensor that measures the weight of both the food and water bowls separately. By calculating a minimum weight for each bowl (showing when it’s empty) and an average, you’ll know when a bowl will soon run out of its content.
Another approach is to determine how many servings the pet food container holds. By using a sound sensor, your IoT device could count down and send you a notification when only a few servings remain. This implementation would have a timer with the specific times throughout the day when a serving should be allocated. Connected to the Internet, the device could alert or inform you when your pet’s food bowl needed to be refilled or automatically take action. Depending on how you configured the device, it could also reorder supplies if it “sensed” that the food would soon run out. You could add a display to provide a visual status of the number of servings left. This is just one solution of many, and you could quickly test which approach might be most effective, enhancing or dismissing each option by using the Intel® IoT Developer Kit
The possible uses are endless: Which you choose depends on the issues you want to solve and the benefit your device creates for your end users, such as time efficiency or cost reduction. You will need multiple iterations for testing because adjustment or redesign of the prototype is common in the early stages. With the Intel® Edison or Intel® Galileo boards, you can quickly reuse sensors and microcontrollers without having to order new parts. If you’re using a breadboard or some other means of connecting that doesn’t include soldering, the time and effort required to rewire your board shrink compared to previous decades, where you had to reengineer the device from scratch. The size and weight of the Intel boards and sensors make them an appealing product if you’re interested in solutions that are mobile and quickly assembled or disassembled.
Data Collection
Data helps us take action and identify patterns. Without data from sensors, the actuators would probably not have a reaction to the observations made in the physical world. You can connect the Intel® Edison board to cloud platforms such as Microsoft* Azure, IBM Bluemix*, Amazon AWS*, or the Intel® IoT Analytics Dashboard to collect and process the data. These features can be expanded to other databases, allowing data manipulation and adding value to your prototype through tangible metrics. You can also add security measures to your prototype, security being at the forefront of consumers’ concerns these days.
Even though data collection might not be an essential part of your prototype, for some use cases, it will be a great addition. For example, for the automatic pet feeder, an optional step while you’re working on a prototype is to collect data on automatic lights and energy consumption, post the data in the cloud, and analyze it for energy saving times frames. Having the Intel® IoT Developer Kit count, with the option of adding data analytics to your projects, is a plus. If you’re interested in exploring cloud options and capabilities further, see Cloud and Analytics Tools.
Figure 2 shows the relationship between hardware and software options. It also includes the various cloud options as part of the software stack.
Summary
You can prove an IoT idea wrong in a matter of days or weeks with the Intel® Edison board. The online community, documentation, and resources promote quick adoption of the system, ensuring that if you run into any roadblocks, the support team or community of hobbyists will help you overcome it. At an accessible price point and a small size and powered by great technology, prototyping with the Intel® Edison board and Grove* Starter Kit Plus can take place anywhere. Supporting multiple coding platforms, coders of all levels can tackle their projects in a variety of programming languages. All it takes is some hardware, some software, and a problem to solve!
When you connect Internet of Things (IoT) devices (devices that support Intel microcontrollers such as the Intel® Edison board, Intel® Curie™ Compute Module, and Intel® IoT gateways) to the IBM Watson* IoT Platform, you can rapidly build IoT apps that realize your IoT use case. This article provides guidelines to help you make just such a connection to your Watson IoT Platform environment.
IBM Watson* IoT Platform and IBM Bluemix*
The Watson* IoT Platform is a fully managed, cloud-hosted service that makes it simple to derive value from IoT devices. The platform provides device management capabilities as well as data collection and management in a time series format. As part of IBM’s Platform as a Service offering, IBM Bluemix*, you can use the Watson IoT Platform to rapidly build IoT apps from the catalog of services available in Bluemix. You can choose from such IoT app options as storage services, rules, analytics services, stream analytics, machine learning, visualization, and user apps (web or mobile). You can also embed cognitive capabilities in your IoT apps by using IBM Watson services available in Bluemix.
Communication Strategy
The IBM Watson* IoT Platform supports the MQ Telemetry Transport (MQTT) protocol, which is the foundation for all communication between Intel or other IoT devices and the IBM Watson IoT Platform. MQTT is lightweight message-oriented middleware based on a publish-subscribe model. The protocol was designed for machine-to-machine communication that involves a small data footprint. The publish-subscribe model relies on a message broker, which mediates interactions between interested clients based on the topic of message. Clients can act as subscribers, consuming messages from topics, or as publishers, publish messages to corresponding topics. In the context of the IoT, IoT devices connect to a central MQTT broker over TPC to send and receive messages. MQTT is widely used in resource-constrained devices and networks where high bandwidth is an issue. For details about MQTT, see A Comparison of IoT Gateway Protocols: MQTT and Modbus.
The Watson IoT Platform provides device client libraries that make it easier to connect devices to the platform. Client libraries are available in the Python*, Java*, Embedded C, Node.js*, and C# programming languages. For details about the client library application programming interface (API), see IBM Documentation and Reference Material.
An alternative to connecting Intel devices to the Watson IoT Platform is using the open source Eclipse* Paho MQTT Library, which provides a client implementations of MQTT. To use Paho, you’ll need to pick up a supported Paho MQTT library—for example, Microsoft .Net for Windows* 10 devices or a C client for devices that support that programming language.
Figure 1 illustrates how Intel IoT devices can communicate with the Watson IoT platform.
Connecting the Intel® Edison Board to the Watson IoT Platform
For connecting Intel® Edison boards to the Watson* IoT platform, you have your choice of C or C++, JavaScript*, or the Java library that the Watson IoT Platform provides. You can also use the Paho MQTT Library directly to connect the devices to the Watson IoT Platform.
To interact with sensors and actuators on boards, Intel provides the libmraa library. This library provides an abstraction layer on top of supported hardware so that you can read data from sensors and actuators in a standard way and create portable code that works across supported platforms.
When the sensor data is read, it is transmitted to the Watson IoT Platform using the MQTT protocol over the supported network. You typically convert the data into a format like JavaScript Object Notation instead of sending the raw data over MQTT using the device client library. The device can connect directly to the Internet and to the Watson IoT Platform by using Wi-Fi or an Ethernet connection, or it can connect to an Intel gateway that then connects to the Watson IoT Platform.
To connect to the Watson IoT Platform, you must register your device with the Watson IoT Platform. Then, you receive an organization ID—a unique six-character identifier for your account. A Watson IoT Platform Organization acts like a domain, where data is accessible only from devices and apps in that domain. When you have registered your devices, those devices and API keys are bound to that Organization. When an application connects to the Watson IoT Platform by using an API key, that connection registers with the Organization that “owns” the API key. The combination makes it impossible for devices and apps that aren’t part of the same Organization to communicate with each other. For detailed instructions on registering devices, see How to Register Devices in IBM IoT Foundation.
Connect the Intel® Curie™ Compute Module to the Watson IoT Platform
The Intel® Curie™ module is a system on a chip that uses an Intel® Quark™ processor. It provides a complete low-power solution that’s designed for wearable devices and consumer and industrial edge products. The Intel® Curie™ module has a built-in six-axis combo sensor and features a Bluetooth* Low Energy (Bluetooth LE) radio and low power usage, making it the perfect board for “always-on” projects like health and fitness monitors.
To start prototyping and developing apps, you can use the Arduino 101*/Genuino 101* development board, which ships with the Intel® Curie™ module. The Arduino* IDE lets you write a program (called as sketch in Arduino) that reads values from sensors. The sensor data is then transmitted to the Watson* IoT Platform over MQTT using the supported network. The Intel® Curie™ module provides support for Bluetooth LE, and one option is to connect the Intel® Curie™ module to a smartphone over Bluetooth, using the smartphone’s cellular or Wi-Fi connectivity as a hub to connect to the Internet. The Intel® Curie™ module provides dedicated Bluetooth LE libraries, which make it easier to communicate with other devices that support Bluetooth (read the Intel® Curie® Bluetooth Reference Guide for more details). Another option is to connect the Intel® Curie™ module to an Intel gateway by Bluetooth; the gateway then connects to the Watson IoT Platform. Other options are available, as well, such as using a Wi-Fi shield with an Arduino 101 board to enable the development board to connect to the Internet directly. The network strategy you choose depends on your use case and how the end product will be used.
Note: Stay tuned for Intel® System Studio for Microcontrollers, an Eclipse-integrated software suite that eases development and helps you create exciting consumer and industrial solutions with the Intel Curie module.
Connect an Intel Gateway to the Watson* IoT Platform
An Intel gateway is required when devices are unable to connect directly to the Watson* IoT Platform because of protocol-incompatibility issues or require that existing data from the device pass through a central entity for various requirements. Typical requirements include filtering out the data at the edge and transferring the relevant data to the Watson IoT Platform, performing local analytics for real-time insights, or ensuring network security and compliance.
The protocol-incompatibility issues are particularly common when connecting and integrating with legacy industrial devices or home automation devices (for example, smart building solutions), which typically employ protocols like ZigBee* or Z-Wave*. Employing an Intel gateway device gives you the option of connecting these smart devices to your gateway and collecting the data using the protocol that these devices support. The gateway then transfers the data to the cloud using the protocol that the cloud platform supports.
Watson* IoT Intel Device Recipes
To start connecting Intel IoT devices to your Watson* IoT Platform, IBM provides a set of recipes (running code and documentation) as part of the IBM developerWorks* Recipe community. The following recipes are currently available for Intel IoT devices:
Build IoT Apps with the Watson* IoT Platform and Bluemix*
When device data is available to the Watson* IoT Platform, you can start to visualize the data. The data from devices is available in a corresponding topic for consumption and apps (that is, Bluemix* services) can subscribe to the topic to consume the device data. For instance, you can create a Node-RED Bluemix service that you would invoke when the message arrives on the corresponding topic. In the Node-RED service, you can create an application flow based on your requirements to invoke other Bluemix services (for example, MongoDB* to store the device data), create rules to filter and process the data using rules service, and invoke IBM SPSS* machine learning services to analyze the data and predict an outcome. Finally, you could use the IBM Push Notification service to send notifications to mobile devices.
Summary
In this article, you learned how to connect Intel IoT devices to the Watson* IoT Platform. When data is made available to the Watson IoT Platform, you can consume it and rapidly build IoT apps by composing corresponding Bluemix* services, realizing your IoT use case.
Intel offers three integrated development environments (IDEs)—Intel® XDK IoT Edition, Intel® System Studio IoT Edition, and the Arduino* IDE—to help you build and deploy your Internet of Things (IoT) projects. The choice of IDE depends on your project and its device requirements as well as which programming language you’ll use to interface with the devices. This article provides general guidelines to help you choose the right IDE for your projects as well as the high-level features and programming languages that each IDE supports.
Intel® XDK IoT Edition
Intel® XDK IoT Edition is a HTML5 hybrid–Node.js* application development environment that you can use to create, run, debug, and deploy JavaScript*-based IoT projects. Many development boards have adopted the Node.js programming language, making it an ideal choice if you want to read sensor values and transmit the sensor data quickly to the cloud for further processing. Together with the HTML5 hybrid development environment that Intel® XDK IoT Edition provides, you can easily create an application (web application or mobile app) that displays the sensor values.
To get you started, Intel® XDK IoT Edition provides a variety of Node.js templates and samples for running on Intel® IoT platforms like the Intel® Edison and Intel® Galileo boards. These templates make it easier to interface with sensors and actuators connected to your board. Figure 1 provides a snapshot of the template view in Intel® XDK IoT Edition.
A list of supported sensors and actuators is available in the IoT Sensor Library Explorer, which makes it easier to add sensor code or modify the code to interact with a component (Figure 2). The code uses the Libmraa* sensor communication library to communicate with sensors. Libmraa provides an abstraction layer on top of supported hardware so that you can read data from sensors and actuators in a standard way and create portable code that works across supported platforms. The code available in the Sensor Library Explorer is part of the sensor library project included with the Useful Packages & Modules (UPM). UPM makes calls to MRAA application programming interfaces to provide a high-level repository for various sensors and a standard pattern for integrating with them.
Intel® XDK IoT Edition also provides HTML5 hybrid templates that you can use or customize to deploy your IoT application to the web or mobile devices (Android*, iOS*, or Windows*). To test your application, you can use the emulator or deploy it to an actual device. Typical use cases include reading the values from the sensor, performing analysis, and displaying the analyzed sensor data on the web or on mobile devices or sending out notifications.
Intel® System Studio IoT Edition
Intel® System Studio IoT Edition is an IDE based on Eclipse* for developing in the C++ or Java* programming language. It allows you to connect, update, and develop IoT projects on a compatible board, such as the Intel® Edison board or Intel® Galileo board. You use C++ when you need full control over your interactions with a device, and a host of C++ libraries is available. For instance, if your application involves image processing (for example, facial recognition), you’re better off using the readily available Open Source Computer Vision (OpenCV) C++ libraries rather than building your own.
Intel® System Studio IoT Edition is available for Windows, Mac* OS X*, or Linux*. To get started, download the installer for your operating system. You can create Java or C++ projects and add the appropriate sensors to start interacting with the components on boards. Figure 3 shows the Intel® System Studio IoT Edition IDE.
To make it easier to interface with sensors, you can import the required UPM and MRAA libraries (C++ or Java) for your sensors to the IDE and start interacting with the devices.
Intel System Studio IoT Edition also makes it easier to synchronize the libraries that your projects use in the IDE and on the actual devices, ensuring that you always use the latest libraries. The IDE also makes it easier to work with and synchronize code across multiple development boards.
The Arduino* IDE
Arduino* is an easy, open source, C++-based programming environment that makes it easier to program devices using the Arduino language and deploy applications on compatible boards. Arduino is supported on the Intel® Edison board and Intel® Galileo board, as well as Arduino 101*/Genuino 101* boards (which ship with the Intel® Curie™ Compute Module).
You use the Arduino IDE primarily when you’re working with Arduino-compatible devices, such as the Intel® Edison board, Intel® Galileo board, and Arduino 101/Genuino 101 boards. Because Arduino is widely supported, it’s a good choice when you want to build meaningful IoT applications quickly by adding sensors, actuators, and shields (such as Wi-Fi shields) because many code samples are available.
The Arduino IDE is available for Windows*, Mac OS X*, and Linux*. To get started, download the installer for your operating system. Start the Arduino application, and then choose Tools > Board > Boards Manager to select your board type and install it on the Arduino board. For the Intel® Edison board, choose Intel i686 Boards. For the Galileo board, choose Intel i586 Boards; for Intel® Curie™ modules, choose Arduino/Genuine 101. You can than create a sketch (that is, programming code) or install one of the available examples the IDE provides (such as LED blink) on your board.
Python*
Intel doesn’t currently provide an IDE for Python*, but you can use any of the available Python IDEs to build and deploy Python code on compatible boards, including the Intel® Edison board, or Intel® Galileo board. You can use the Python libraries available in UPM at GitHub* at to interact with compatible sensors.
Summary
This article discussed the various Intel® IDEs for developing IoT solutions. It looked at the typical requirements for when to use a particular IDE based on your project requirements. Using these IDEs makes it easier to interact with sensors and actuators through MRAA and UPM libraries and build, deploy, debug, and run your IoT projects.
Now that you’ve got an idea or perhaps you’ve built your game, it’s time to think seriously about pricing. How much will you charge for your game? How much will users be willing to pay? It’s tempting to think that the more money you charge for your product, the more money you’ll make, but there’s a big difference between game development and selling widgets.
Take a look below for tips on how to determine your price point, and make sure you’re thinking about pricing the right way.
Why You’ll Make More with “Free”
Charging nothing for your game might seem like a crazy way to make money, but unless you’re offering unique gameplay, or a sequel to a big hit, you might find the biggest wins by offering your game for free—for the first download, at least. Another way to think about this is that profit isn’t always made at the front door. With a game, you’re engaging with your customer over a longer period of time, so consider how to price the experience along the way. If you allow them to start for free, you can attract a larger install base, and then gain bigger profits through in-app purchases or micropayments.
One of the Many Ways to Monetize
There’s more to your monetization strategy than “free” and “not free,” of course. For a deeper understanding of the different approaches and why they might or might not work for your game or app, read our article about monetization[1] strategies. Most Android games combine free download with in-app purchases. We’ll focus on this strategy for the rest of this article.
How Much Is Each User Worth?
One way to look at profit, and help you set your price, is to understand the average revenue per user (ARPU)—and then multiply that by your anticipated number of users. What is the average amount that each user needs to spend to keep your business going? For a paid app, your ARPU is simply the cost of the download. For in-app purchases, you need to anticipate users’ behavior over time, and how that behavior will add up. The formula looks like this:
Of course, without a crystal ball, you won't know for sure how many purchases each user will make—but you can make good assumptions based on conversion rate.
Understand Your In-App Conversion Rate
To estimate revenue, you’ll need to not only consider how many players will download your game but how well you can convert their gameplay into in-app purchases. It’s generally a good idea to assume a range of .5% to 5%—which means that .5 to 5% of the time a player is presented with a choice to make an in-app purchase, they’ll go for it. Price works on this number like a lever—if you price up, conversion goes down, but by how much? If you price down, conversion goes up, but by how much? Maybe you have a low conversion rate at $1. If you drop the price to $0.50 per in-app purchase, and your conversion rate more than doubles, then it’s a win. You’re charging less per transaction, but getting enough new purchases to make up the difference and more.
Timing Is Important!
When should you introduce the offer of in-app purchase? This is a key development question, as in-app purchases should be integrated as seamlessly as possible into the game. Look to the game itself for answers: How you can you be there when they need you? In-app purchases should be offered during gameplay, and specifically when a player is trying to solve a level or accomplish a task. If you can reach them when they’re frustrated by their inability to get through a challenge—and offer them a solution for a small price—they just might be willing to throw down a few coins to move on.
A Few Key Things to Keep in Mind:
Start at the higher end of the price range. It’s easier to drop the price than to raise it later, so if you think you might be able to get $2 for an extra shield or life expectancy points just before a big battle, start there and see if it works. If you decide to drop the price later, do it incrementally.
Do a competitive analysis. What are similar games charging for in-app purchases? Your game will definitely be viewed alongside its competition, so it’s important that you understand how similar experiences are priced.
Consider placement. Are there other places within the game more likely to compel players to buy? If too many people are passing, maybe you haven’t found that moment where frustration meets need.
Be very careful with “cheat codes.” Anything that feels like pay-to-play could cost you loyalty. Paying users will get bored, and non-paying ones will feel cheated.
Think about Engagement
In-app purchases shouldn’t be one-off purchases or things that satisfy too completely—instead, they should be things that lead to further engagement. In other words, how can you unlock more commitment from the user? You want to entice users further into the experience, earning not just their dollar, but their loyalty. Do that by giving them something that they can use later, like a cool new power. Give them choices, which will help make them more invested in future gameplay. For example, you don’t want to sell them all the coins they’ll ever need because then they’ll be done and they won’t need anything anymore. But if you sell them enough coins to purchase either an invisibility charm or a new weapon? Then their head’s in the game, and they’re becoming more invested.
Research Is Your Friend
Not only is it important to do a thorough competitive analysis, it’s also important to continue doing your own research to understand the results of your efforts. Consider doing A/B testing if you have a few different pricing options. That way, you can test out different prices for different in-app purchases to see what makes the most sense for your actual customers, then make adjustments as needed.
Exceptions to the Free Rule: When Should You Charge for the App Itself?
Although the model we’ve discussed here is by far the most common and popular model for Android games, there are still some situations when a paid download makes sense. If you have an installed user base and are launching the sequel to a big hit, you should be able to charge for the download without losing too many customers. The same goes for really established game developers, unique gameplay, or a new technology that people have been waiting for.
Ask Your Customers!
Market validation is something we’ve covered in more detail in an earlier article, but it’s a good thing to return to here. Essentially, it’s the process of actually talking to your customers before you launch, and it can be really valuable when it comes to pricing. Ask them directly what they’re willing to pay for certain options, and their answers might surprise you.
What makes you click Buy in a game? Can you think of a moment in your game when users might be particularly motivated to spend more? Tell us about it in the comments!
This article provides general guidelines for connecting any Intel Internet of Things (IoT) devices (that is, devices that support Intel microcontrollers like the Intel® Edison board and the Intel® Curie™ Compute Module) and Intel® IoT Gateways to the Microsoft Azure* IoT Suite. When the devices are connected and data from devices is available to the Azure IoT Suite, together with Microsoft’s Platform as a Service (that is, Microsoft Azure) offering you can rapidly build IoT applications to realize your IoT use case.
Azure* IoT Suite and Microsoft Azure*
Azure* is an open, flexible, enterprisegrade cloud computing platform—a growing collection of integrated services such as analytics, database, mobile, networking, storage, and web for building scalable solutions rapidly. Microsoft provides Azure IoT Suite as part of its preconfigured IoT solutions built on the Azure platform and makes it easy to connect devices securely. Azure supports a broad set of protocols, and Azure IoT Suite consists of set of IoT services (referred to as Azure IoT services) to help build IoT apps rapidly. These services enable you to collect data from devices, analyze data streams in motion, store and query large data sets, and analyze and visualize both realtime and historical data. Services include Azure IoT Hub, Azure Machine Learning, Azure Stream Analytics, Azure Notification Hubs, and Microsoft Power BI. You can combine these services with other Azure services, such as those for data and storage, to store device data in an Azure Blob or use cognitive services to build intelligent IoT apps.
Azure IoT Hub is a fully managed bidirectional devicetocloud connectivity bus that provides device management, device security, identity, and MQ Telemetry Transport (MQTT) protocol support with HTTP and Advanced Message Queuing Protocol (AMQP). Azure IoT Hub provides complete device access through its device identity registry. It provides perdevice authentication and secure bidirectional connectivity between devices and Azure IoT Hub. Azure IoT Hub can also integrate with your custom device registry through a token service to create a devicescoped token for secure communication. In addition, Azure IoT Hub provides local storage of messages and a dedicated device queue for each connected device for storing device messages that devices consume securely, eliminating the overhead of creating separate queues for sending messages back to devices.
Azure Machine Learning gives you a visual way to build a machine learning model that supports R and Python* custom packages. Prebuilt algorithms enable you to build custom models by adding custom code based on your requirements. Azure Stream Analytics provides realtime stream processing of millions of events per second, enabling you to compare and correlate multiple realtime streams, query data using familiar Structured Query Language (SQL), and create realtime dashboard and alerts.
Azure Notification Hubs provides a common interface in which to send out push notifications to mobile devices. The Power BI cloud service allows you to visualize and analyze data in powerful, flexible dashboards. Azure Stream Analytics can feed realtime data events into Power BI, you can design dashboards that use the data and can be updated at runtime.
Communication Strategy
Azure IoT Hub supports HTTP, AMQP, and MQTT. All communication between Intel devices (or any other IoT devices) and Azure IoT Hub must happen over these supported protocols.
MQTT is a lightweight Message Oriented Middleware (MOM) based on the publish–subscribe model. The protocol is designed to be used for machinetomachine communication that involves small data footprint. The publish–subscribe model consists of a message broker that mediates interactions between interested clients based on the topic (named logical channels for communication) of the message. The client can act as a subscriber to consume the messages from topics or act as a publisher to publish the messages to corresponding topics. In the context of the IoT, IoT devices connect to a central MQTT broker over TCP to send or receive messages. The MQTT protocol is widely used in resourceconstrained devices and networks where high bandwidth is an issue. For details about the MQTT protocol, check out A Comparison of IoT Gateway Protocols: MQTT and Modbus.
AMQP is another popular MOM. The protocol supports both queuebased and publish–subscribe messaging models, and messages can be processed in a transactional context. AMQP operates over TCP and ensures reliable message delivery. AMQP is also interoperable: Disparate client systems with different software languages can interoperate with AMQP servers. From an IoT perspective, sensor devices that generate loads of data are streamed to AMQP servers (either in a raw or processed form), then consumed by receivers to perform monitoring and analytics.
The Azure IoT Hub provides device software development kits (SDKs) for platforms like Linux*, Windows*, and realtime operating systems, which makes it easier to get started on any device and connect to Azure IoT Hub. The device SDKs are optional; device manufacturers can also use application programming interfaces (APIs) to get started quickly or add their own device connectivity code to connect to the Azure platform—for example, using a JavaScript* device API for an Intel® Edison board, or an optimized C SDK for a Linux device. The Azure IoT SDKs are available in GitHub* to connect devices to Azure IoT Hub.
Figure 1 illustrates how Intel IoT devices can communicate with Azure IoT Hub.
Connecting the Intel® Edison Board to Microsoft Azure* IoT Hub
To connect Intel® Edison devices to Microsoft Azure* IoT Hub, you have a choice of C, JavaScript* (Node.js*), or the Java* library that the Azure IoT SDKs provide. For development and debugging device code, you can download the required integrated development environment (IDE) based on the programming environment. For instance, you can download Intel® XDK IoT Edition for JavaScript, Intel® System Studio IoT Edition for C and C++, Intel System Studio IoT Edition for Java, or the Arduino* IDE to program the Intel® Edison board with Arduino. You can then import the required Azure IoT SDK into your code to connect to Azure IoT Hub and send data (that is, senor data) to the Azure IoT Hub.
Another option is to generate the device client connectivity code from the Connect your device to Azure IoT Hub page. Then, complete these steps:
Under Select a Device, click Intel Edison.
Under Select a Platform, click Linux.
Under Select a language, click the tab that corresponds to your chosen programming language (C, C#, JavaScript, or Java).
The connectionString value that appears in the resulting code should point to your Azure IoT Hub instance. You can find the value of connectionString the Azure IoT Hub instance configuration details in the Azure portal.
To interact with sensors and actuators on device boards, Intel provides the Libmraa* library. This library provides an abstraction layer on top of supported hardware so that you can read data from sensors and actuators in a standard way, then create portable code that works across supported platforms.
When the sensor data has been read, it’s transmitted to Azure IoT Hub by AQMP or MQTT over the supported network. You would typically convert the data in a format like JavaScript Object Notation and send it over AQMP or MQTT using the Azure IoT Hub device client library. If the device has the capability, it could connect directly to the Internet and to Azure IoT Hub over WiFi* or an Ethernet connection or to an Intel Gateway that connects to Azure IoT Hub.
Connecting the Intel® Curie™ Compute Module to Azure IoT Hub
The Intel® Curie™ module uses the Intel® Quark™ system on a chip, which provides a complete lowpower solution for wearable devices and consumer and industrial edge products. The Intel® Curie™ module has a builtin sixaxis combination sensor, Bluetooth* low energy radio, and low power usage, making it the perfect board for building “alwayson” projects like health and fitness monitors.
To start prototyping and developing apps, you can use the Arduino* development board—also called Genuino 101* or Arduino 101*—which ships with the Intel® Curie™ module. To start developing, you can use the Arduino IDE and write the program (called as sketch in Arduino) that reads the values you’re your sensors.
The sensor data is then transmitted to Azure IoT Hub over AQMP or MQTT using the supported network. The Intel® Curie™ module provides support for Bluetooth low energy, so one option is to connect the module to a smartphone over Bluetooth and use the smartphone’s cellular or WiFi connectivity as a hub to connect to the Internet. The Intel® Curie™ module provides dedicated Bluetooth low energy libraries, which make it easier to communicate with other devices supporting Bluetooth (for details, see the Intel® Curie™ Bluetooth LE Library). The other option is to connect the Intel® Curie™ module to an Intel gateway using Bluetooth, with Intel gateway then connecting to Azure IoT Hub. Other options are available, as well, such as using a WiFi shield with an Arduino 101 board to enable the development board to connect to the Internet directly. Your choice of network strategy depends on the use case and how the final product will be used.
Note: Stay tuned for a Software Development Kit (SDK) that will allow you to run an RTOS on the Intel® Curie™ Module. Sign up to receive more information.
Connecting an Intel Gateway to Microsoft Azure* IoT Hub
Intel® IoT Gateway Technology is primarily required where devices are unable to connect directly to Azure* IoT Hub because of protocol incompatibility issues or because existing data from the devices are required to pass through a central entity for various requirements, such as filtering out the data at the edge and transferring the relevant data to Azure IoT Hub, performing local analytics for realtime insights, or ensuring network security and compliance.
The protocolincompatibility issues are particularly common when connecting and integrating with legacy industrial devices or home automation devices (such as smart building solutions), which typically employ protocols like ZigBee* or ZWave*. Employing Intel Gateway devices gives you the option of connecting these devices to an Intel gateway and collecting the data by using the protocol these industrial devices support. The data is then transferred to the cloud platform from the Intel gateway over a protocol that the cloud platform supports.
For connecting Intel Gateway devices to Azure IoT Hub, you have your choice of C or C++, Python*, JavaScript*, or the Java* library that the Azure IoT SDKs provide. The steps required to connect Intel Gateway devices are similar to the steps for connecting an Intel® Edison board to Azure IoT Hub.
Building IoT Apps with Microsft Azure* IoT Hub and Azure Services
When the device data is available to Azure* IoT Hub, you can start visualizing it. Typically, other Azure services would consume the data for further processing. For instance, you can create an Azure Stream Analytics service that you invoke after the device data arrives in Azure IoT Hub. The service would use rules to filter and process the input device data using SQLlike queries and output the results to storage (like an Azure Blob), Azure Event Hubs, or even Power BI for visualization using flexible dashboards. Azure Event Hubs acts a central processing engine, where multiple event handlers can consume the messages from Azure Event Hubs to carry out the required functionality. For instance, event handlers can invoke the Azure Machine Learning service to analyze the filtered data and predict an outcome, while another event handler can invoke the Azure Notification Hub service to send notifications to mobile devices.
Summary
This article showed you how to connect Intel IoT devices to Microsoft Azure* IoT Hub. When your data is made available to Azure IoT Hub, you can consume it and rapidly build IoT apps by composing corresponding Azure services to realize your IoT use case.
Intel® Distribution for Python* can become unstable and potentially crash because of the following:
Installing in OS X*:
When trying to install, the message “intelpythonXX-2017.0.007.app is damage and can’t be opened” will be displayed. Solution: Execute the following command and run the application again:
xattr –rc <path_to_intelpythonXX-2017.0.0.07.app>
When trying to install, the message “gettext is not installed”. In order to use Intel® Distribution for Python* X.X, you must have gettext installed. Solution:
If you have not installed, proceed to install it.
Open a terminal and add to your PATH the directory where you installed gettex
From the same terminal window run:
open –a intelpythonXX-2017.0.007.app
Conda package manager for Linux 2.7.11:
Trying to install or update a package using conda will show a list of packages incompatibilities.
After installing the distribution run the following command:
conda update –y conda intelpython
PYTHONPATH should be cleared before installation (set PYTHONPATH=) on Windows
Reference the Installation section to avoid PYTHONPATH-related issues
Intel® Distribution for Python should work with most Mac OS version
Officially supports Yosemite (OS X 10.10)
PyDAAL on Mac not yet supported on El Capitan (OS X 10.11)
Python tk interface (Tkinter module) requires Xquarts 2.7.7 on Mac
If installation differs from default location, user may need to create symlink to /opt/X11
Python gdbm module requires 1.11 on Mac
If installation differs from default location, user may need to create symlink to /usr/local/lib/gdbm.4.dylib
Python 3 requires gettext 0.19.5.1 on Mac
Install gettext via Homebrew or MacPort
Python will look for /usr/local/lib/libintl.8.dylib or /opt/local/lib/libintl.8.dylib
User may need to add symlink to this location if Homebrew or MacPorts destination is not default
cpython
Python version
Linux
Windows
OS X
2.7.11
test_gdb, test_urllib fail
test_urllib2_localnet fails depending on computer’s proxy/network settings
test_math fails for a function called expm1 when the values fed as an argument are less than - 745.0. Rest of functions from test suite do not fail
test_gdb, test_urllib fail
test_urllib2_localnet fails depending on computer’s proxy/network settings
Test_interp_alt_scipy, test_rank_methods_frame, test_rank_methods_series_test_nankurt, test_nansem, test_nanskew fails. This is a known issue; these have been fixed on master (upstream) and their fix would be part of future release.
Test_interp_alt_scipy, test_rank_methods_frame, test_rank_methods_series_test_nankurt, test_nansem, test_nanskew fails. This is a known issue; these have been fixed on master (upstream) and their fix would be part of future release.
Test_axis_limits, test_set_locale fail
Test_interp_alt_scipy, test_rank_methods_frame, test_rank_methods_series_test_nankurt, test_nansem, test_nanskew fails. This is a known issue; these have been fixed on master (upstream) and their fix would be part of future release.
3.5.1
Test_axis_limits, test_set_locale fail
Test_interp_alt_scipy, test_rank_methods_frame, test_rank_methods_series_test_nankurt, test_nansem, test_nanskew fails. This is a known issue; these have been fixed on master (upstream) and their fix would be part of future release.
Test_interp_alt_scipy, test_rank_methods_frame, test_rank_methods_series_test_nankurt, test_nansem, test_nanskew fails. This is a known issue; these have been fixed on master (upstream) and their fix would be part of future release.
Test_axis_limits, test_set_locale fail
Test_interp_alt_scipy, test_rank_methods_frame, test_rank_methods_series_test_nankurt, test_nansem, test_nanskew fails. This is a known issue; these have been fixed on master (upstream) and their fix would be part of future release.
matplotlib
Python version
Linux
Windows
OS X
2.7.11
N/A
Unit test fails
Unit test fails
3.5.1
N/A
Unit test fails
Unit test fails
Scipy
Python version
Linux
Windows
OS X
2.7.11
N/A
Executing test_mpmath.TestSystematic.test_betainc takes very long time to finish
test_mpmath.TestSystematic.test_legenp_complex_3, test_data.test_boost(,), and test_data.test_boost(,) fail
N/A
3.5.1
N/A
Executing test_mpmath.TestSystematic.test_betainc takes very long time to finish
test_mpmath.TestSystematic.test_legenp_complex_3, test_data.test_boost(,), and test_data.test_boost(,) fail
This article provides general guidelines for connecting any Intel® Internet of Things (IoT) devices (that is, devices that support Intel microcontrollers, such as the Intel® Edison board and the Intel® Curie™ Compute Module) and Intel gateways to the Amazon Web Servives* (AWS*) IoT platform. When the devices are connected and data from devices is available to the AWS IoT platform, together with Amazon Web Services, you can rapidly build IoT applications to realize your IoT use case.
AWS* IoT and Amazon Web Services*
AWS* IoT is a highly scalable, managed cloud platform that allows devices to connect securely and interact with AWS services and other devices over standardized MQTT, WebSocket, and HTTP connections. AWS IoT makes it easier to build IoT apps, and the AWS IoT platform allows you to collect, store, analyze, and take actions against large volumes of data streaming from your connected devices.
The AWS IoT platform consists of a core set of capabilities, shown in Figure 1.
Figure 1. AWS* IoT components
The platform includes the following components:
Device Gateway– The AWS IoT Device Gateway is a highly scalable managed service that enables devices to communicate securely with AWS IoT. The Device Gateway supports a publish–subscribe model and provides support for MQTT, WebSocket, and HTTP 1.1. The main advantage of using this pattern is that it decouples sender and consumer, thereby allowing new devices to connect and start receiving the messages by subscribing to relevant topics.
Device Registry– Device Registry stores metadata about the devices and acts as an identity store of devices. Device Registry assigns each device a unique identity during registration.
Device Shadows – Device Shadows is a unique capability provided as part of the AWS IoT platform that creates a virtual device, or shadow, of the device that contains its latest state. Apps can communicate with the shadow device through application programming interfaces even if the actual physical device is offline. When the actual device is connected, AWS IoT automatically synchronizes the state and pushes changes to the actual device based on changes on the virtual device.
Rules Engine – The AWS IoT Rules Engine is a highly scalable engine that transforms and routes incoming messages from devices to AWS services based on business rules you create. You create these rules by using Structured Query Language (SQL)–like syntax and make queries against an MQTT topic to extract the required data from the incoming message. The incoming message must be in JavaScript* Object Notation (JSON) format. You can filter the messages based on SQL-like queries, with configured AWS services consuming the output. AWS IoT also provides various options for secure communication between devices and the AWS IoT platform. Devices connect using your choice of identity through one of three options: digital (X.509) certificates, AWS authentication through user names and passwords, or by using the device’s identity provider or third-party providers like Google or Facebook through Amazon Cognito. When a device is authenticated, AWS IoT handles authorization through policies, which let you execute device operations (connect, publish, subscribe, receive) based on the permissions you define. Once authorized, you can perform the specific operations. This process completes device communication with the AWS IoT platform. As part of your IoT app, you will probably invoke other AWS services, like persisting the device data from an MQTT topic to Amazon DynamoDB or processing large data streams in real time through Amazon Kinesis. Amazon Kinesis provides real-time data processing, enabling apps to capture continuous streams of data from devices and other sources, analyzing them at runtime to generate real-time dashboards or trigger required action. To invoke an Amazon Kinesis stream instance (or any other AWS service), you must define a policy in AWS Identity and Access Management, which the rule instance uses to allow your AWS IoT instance to access the Amazon Kinesis stream instance securely. This integration ensures an end-to-end, secure connectivity between devices and the AWS IoT platform and from the AWS IoT platform to the rest of your AWS services.
Communication Strategy
The AWS* IoT platform supports MQTT, WebSocket, and HTTP. All communication between Intel devices (or any IoT device) and the AWS IoT platform must happen over the supported protocol.
MQTT is a lightweight message-oriented middleware based on the publish–subscribe model. The protocol is designed to be used for machine-to-machine communication that involves a small data footprint. The publish–subscribe model consists of a message broker that mediates interactions between interested clients based on the topic (named logical channels for communication) of the message. The client can act as a subscriber to consume the messages from topics or act as a publisher to publish the messages to corresponding topics. In the context of the IoT, IoT devices connect to a central MQTT broker over TCP to send or receive messages. The MQTT protocol is widely used in resource-constrained devices and networks where high bandwidth is an issue. For details about the MQTT protocol, check out A Comparison of IoT Gateway Protocols: MQTT and Modbus
The WebSocket protocol supports a persistent connection between a client and the server over a single TCP connection. WebSocket facilitates near-real-time communication and data transfer to and from the server without the client or server polling for data updates and transmitting relevant updates without an explicit request between the client and the server. AWS IoT supports WebSocket over MQTT.
The AWS IoT Device SDK simplifies the process of connecting devices securely to the AWS IoT platform over MQTT, WebSocket, and HTTP. The software development kit (SDK) currently supports the C SDK for Linux*, libraries for the Arduino* platform, and Node.js* libraries. Read more about the AWS IoT Device SDK.
Figure 2 illustrates how Intel IoT devices can communicate with the AWS IoT platform.
Connecting the Intel® Edison Board to AWS IoT
To connect Intel® Edison boards to the AWS* IoT platform, you have a choice of C, Arduino*, or the JavaScript* library that the AWS IoT Device SDK provides. For development and debugging device code, you can download the required integrated development environment (IDE) based on the programming environment. For instance, you can download Intel® XDK IoT Edition for JavaScript, Intel® System Studio IoT Edition for C and C++, or the Arduino IDE to program the Intel® Edison board with Arduino. You can then import the required AWS IoT device SDK library into your code to connect to the AWS IoT platform and send data (that is, sensor data) to the AWS IoT platform.
To interact with sensors and actuators on device boards, Intel provides the libmraa library. This library provides an abstraction layer on top of the supported hardware so that you can read data from sensors and actuators in a standard way, then create portable code that works across supported platforms.
When the sensor data has been read, it’s transmitted to the AWS IoT platform by MQTT (or WebSocket) over the supported network. You would typically convert the data into a format like JSON and send it over MQTT (or WebSocket) using the AWS IoT Device SDK library. If the device has the capability, it could connect directly to the Internet and to the AWS IoT platform over Wi-Fi or an Ethernet connection or to an Intel Gateway that connects to the AWS IoT platform. Typically, the data would be read after every X intervals and published to the required topic in the AWS IoT platform.
To connect to the AWS IoT platform, you must register the devices in a registry, create certificates, assign policies, and use the relevant SDKs. The following high-level steps are applicable for registering any class of device (for example, an Intel® Edison board, an Intel® Curie™ module, gateways) with the AWS IoT platform:
Create a device in the Thing Registry.
Create certificates and policies for secure communication.
Attach a certificate to the device.
Generate SDKs.
For these steps, you can use the AWS Management Console or AWS command-line interface commands. For detailed instructions on how to register devices, see Create a Device in the Thing Registry.
Note: To start connecting Intel IoT devices to the AWS IoT platform, you can also buy the Intel® Edison Board and Grove* Indoor Environment Kit, Powered by AWS, and start building cloud-connected projects quickly.
Connecting the Intel® Curie™ Compute Module to the AWS* IoT Platform
The Intel® Curie™ module uses the Intel® Quark™ system on a chip, which provides a complete low-power solution for wearable devices and consumer and industrial edge products. The Intel® Curie™ module has a built-in six-axis combination sensor, Bluetooth* low energy radio, and low power usage, making it the perfect board for building “always-on” projects like health and fitness monitors.
To start prototyping and developing apps, you can use the Arduino* development board—also called Genuino 101* or Arduino 101*—which ships with the Intel® Curie™ module. To start developing, you can use the Arduino IDE and write the program (called a sketch in Arduino) that reads the values of your sensors.
The sensor data is then transmitted to the AWS*IoT platform over MQTT using the supported network. The Intel® Curie™ module provides support for Bluetooth low energy, so one option is to connect the module to a smartphone over Bluetooth and use the smartphone’s cellular or Wi-Fi connectivity as a hub to connect to the Internet. The Intel® Curie™ module provides dedicated Bluetooth low energy libraries, which make it easier to communicate with other devices that support Bluetooth (for details, see the Intel® Curie® Bluetooth LE Library). The other option is to connect the Intel® Curie™ module to an Intel gateway using Bluetooth, with the Intel gateway then connecting to the AWS IoT platform. Other options are available, as well, such as using a Wi-Fi shield with an Arduino 101 board to enable the development board to connect to the Internet directly. Your choice of network strategy depends on the use case and how the final product will be used.
Note: Stay tuned for a Software Development Kit (SDK) that will allow you to run an RTOS on the Intel® Curie Module. Sign up to receive more information at https://software.intel.com/en-us/iot/hardware/curie.
Connecting an Intel Gateway to the AWS* IoT Platform
Intel® IoT Gateway Technology is primarily required when devices are unable to connect directly to the AWS* IoT platform because of protocol-incompatibility issues or because existing data from the devices are required to pass through a central entity for various requirements, such as filtering out the data at the edge and transferring the relevant data to the AWS IoT platform, performing local analytics for real-time insights, or ensuring network security and compliance.
The protocol-incompatibility issues are particularly common when connecting and integrating with legacy industrial devices or home automation devices (such as smart building solutions), which typically employ protocols like ZigBee* or Z-Wave*. Employing an Intel Gateway device gives you the option of connecting these devices to an Intel gateway and collecting the data by using the protocol these industrial devices support. The data is then transferred to the cloud platform from the Intel gateway over a protocol that the cloud platform supports.
For connecting Intel Gateway devices to the AWS IoT platform, you have your choice of C, Python*, JavaScript* libraries, which the AWS IoT Device SDK provides. The steps required to connect an Intel Gateway device are similar to the steps for connecting an Intel® Edison board to the AWS IoT platform.
Building IoT Apps with the AWS* IoT Platform and AWS Services
When the device data is available to the AWS* good IoT platform, you can start visualizing it. Typically, other AWS services would consume the data for further processing, so you start by creating rules with the Rules Engine service that route incoming data to one or multiple AWS services for processing. You can create multiple rules—for instance, one rule can route the message to an Amazon Kinesis stream instance for real-time processing, while another rule could directly insert the incoming data into Amazon DynamoDB tables for historical and offline analysis.
Multiple applications can receive the Amazon Kinesis data streams and work in parallel. The data from the Amazon Kinesis stream instance can be emitted to AWS Lambda, a compute service that provides the ability to run your custom code in an AWS infrastructure. You can add your custom code based on your IoT app. For example, you can invoke the Amazon Machine Learning service to predict an outcome, execute your own proprietary code, or send notifications to mobile devices using the Amazon Push Notification Service.
Summary
This article showed you how to connect Intel IoT devices to the AWS* IoT platform. When your data is made available to the AWS IoT platform, you can consume it and rapidly build IoT apps by composing corresponding AWS services to realize your IoT use case.
Gartner predicts that in 2016, 6.4 billion connected “things” will exist . Much of that growth is in the consumer space, where opportunities abound for wearable devices. But bringing new wearables into existence requires basic capabilities, for example: detecting movement, processing that data, and making it available for use in a power-efficient way. Intel designed the Intel® Curie™ module for just this application.
The Intel® Curie™ Compute Module is a low-power hardware module for industrial edge devices and consumer devices such as wearables. It also includes a software platform specifically for this module. This article explores the ideas behind the Intel® Curie™ platform, its key elements, the benefits you could realize through this enabling edge technology in your Internet of Things (IoT) apps, and how it could radically change the landscape of Internet of Things products.
What Is the Intel® Curie™ Module?
The Intel® Curie™ module is a new hardware product that creates a complete, low-power solution for IoT apps. It incorporates numerous features that make it ideal for the “always-on” fitness or healthcare IoT space. You’ll find a compute engine (Intel® Quark™ processor), motion and temperature sensors, Bluetooth* Low Energy (Bluetooth LE) for communication, and a range of interfaces with a battery charge controller. The motion sensor is a six-axis combo sensor that includes a three-axis accelerometer and a three-axis gyroscope; it measures acceleration and rotation in three axes.
You’ll also find a digital signal processor (DSP) sensor hub that can easily and accurately identify actions and motions of the device using data from the six-axis combo sensor (see Figure 1). This pattern-matching accelerator is a key design element for wearables, and you can use it to perform fast and accurate gesture detection.
Figure 1. Simple Block Diagram of the Intel® Curie™ module
You can extend the Intel® Curie™ module through interfaces. Interface options include I2C, SPI, UART (serial port), and many general-purpose input/output pins. The board also has a USB interface for programming and debugging the module’s firmware.
The Intel® Curie™ module will include a new software platform created specifically for it. This means that you have the necessary hardware and software components to build apps quickly. Get more information on this upcoming SDK.
Benefits of the Intel® Curie™ Module
Beyond the innovative architecture of the Intel® Curie™ module, there are several other benefits to consider:
The module is a tiny device packed with features that can operate from a coin-sized battery.
The module is packed with security features at the hardware and firmware level that protect both the data originating from the device and the code running on the device.
The module will include the necessary firmware and software for a variety of use models as well as a software development kit focused on building efficient code for the Intel Curie platform.
With all the features available and the ability to expand functionality through a range of interfaces, you’ll also enjoy quick time to market: Just add your firmware. The Intel® Curie™ module, shown in Figure 2, may be small, but it’s packed with features and new opportunities.
Apps That Intel Curie Technology Makes Possible
Intel demonstrated the Intel® Curie™ module in the 2015 Winter X Games. By attaching it to a snowboard, Intel could measure the speed, height, distance, air time, flip, rotation, g-force, and even the landing impact for a jump over the duration of a snowboarder’s run. Similar to what’s going on in Formula 1* racing telemetry, the Intel® Curie™ module enables data collection during a broad range of activities. The module’s minimal onboard memory resources will certainly restrict the apps that are possible, but there’s enough to do some amazing things. Let’s look at some of the applications that Intel® Curie™ technology makes possible:
Sports and Fitness– Imagine the Intel® Curie™ module embedded in the head of a golf club, measuring all aspects of a golfer’s swing. Or embedded within a football, measuring the arc and spiral from a quarterback’s throw. Or in a skateboard, measuring kick flips and other tricks, recording them for play-back later on a computer. You could also embed an Intel® Curie™ module in a shirt collar to provide feedback when a sit-up or push-up doesn’t meet someone’s workout requirements. The size and minimal power requirements of the Intel Curie module enable many applications that before could not be achieved.
Health Care– The opportunities for Intel® Curie™ technology in the healthcare space are massive. You can imagine a monitoring device for the elderly that can detect a fall, then notify an attendant or neighbor. The module can record movement during the day to identify when a wearer has met the required level of exercise. In a hospital or residential care setting, the Intel Curie module can detect a patient’s movement and notify a nurse (to avoid a fall).
Pet Care– What has your dog been doing all day? With Intel® Curie™ technology in her collar, you can see her activity during the day, where she sleeps, and where she gets into trouble. With additional sensors, you can monitor her overall health and have the module notify you if her temperature or respiration don’t fit within prescribed normal ranges.
Fleet Monitoring– The Intel® Curie™ module is so small you could embed it within a tire and identify wobble or a worn tire (and notify the vehicle through a Bluetooth* connection). The accelerometer and gyroscope can map a car’s movement in any direction and acceleration for accident playback or to ensure that drivers aren’t exceeding desired parameters for vehicle operation.
Civil Engineering– Imagine an array of Intel® Curie™ modules scattered around a building or bridge, measuring small amounts of movement. During an earthquake or windstorm, you could use these sensor arrays to measure movement around the structure to determine whether it exceeds its tolerances.
Example Application
Consider an assisted care scenario to see where you could apply Intel® Curie™ technology capabilities:
With the module’s small size (about 18 mm across in a circular board design), you could use the device in a small badge that patients can wear on a hospital gown.
Using the six-axis combo sensor, the module can detect patient movement in an optimal fashion by using the module’s pattern-matching accelerator.
With detection of movement, the onboard firmware can use the Bluetooth* LE wireless interface to notify an attendant. In particular, this application would exploit the Bluetooth LE “find me” application profile to identify the rough location of the patient through receivers placed throughout the hospital.
You could extend the app by using the Bluetooth LE proximity application profile to identify when the patient has entered a prohibited area of the hospital (such as a hospital exit or another patient’s room.
Finally, you could exploit the Bluetooth LE battery application profile to report battery state and charge level, ensuring that the badge is always operable.
Hospital personnel could use such a device, as well, to keep track of employee location and optimize notification of emergencies to those attendants closest to the patient.
Summary
The Intel® Curie™ module is small, but the opportunities that it creates are boundless. By creating a tiny device that can operate on a coin-sized battery, the places you can apply Intel® Curie™ technology expand greatly. By accelerating the ability to recognize gestures and motions through the DSP sensor hub, Intel is providing a platform for developers and makers to build devices with new, innovative user interfaces. The introduction of Bluetooth* LE allows the device to communicate with minimal power. It will be exciting to see how Intel® Curie™ technology enables the next big thing in wearable technology.
Intel® Media SDK 2016 R2 is now available! Which includes a number of significant additions and enhancements including 10-bit HEVC support with new API 1.19.
Media RAW Accelerator enhancements for improved flexibility and performance.
AVC/H.264 encode new features for Video conferencing and Cloud gaming applications support.
VPP filters to enhance usability and flexibility.
Dynamic API improvements with Memory management and platform query features.
Windows Redstone Preview support.
Feature Overview:
Platform Support: With this release we are happy to announce new full hardware accelerated support for HEVC and VP9.
HEVC Main 10 (10-bit) encoder and decoder support.
VP9 8-bit and 10-bit decoder support.
AVC Encode: Slice Size limitation and reporting features are added to help ensure low latency and meet real-time transfer protocol (RTP) requirements. Developers can use these features to deliver outstanding user viewing experience in Video conferencing/Cloud gaming applications.
Media RAW Accelerator: For flexibility and performance improvements, Media RAW Accelerator is now included and distributed with graphics driver, so distribution of plugin with applications no longer required. 16-bit ARGB feature input support has been added, which can be used with Gamma Correction, Chroma Aberration, 3DLUT and Les Geometry Correction filters. Now, developers in their applications can easily apply filters to the picture with applied debayer processing or customize their own pre-processing blocks by adding them in the pipeline as shown in figure below.
VPP extensions: Developers can select bt.601, bt.709 color conversion matrices, nominal range and full range video with Videosignal Info feature. With Scaler & Format Converter (SFC) pipeline available from 6th generation Intel® Core™ Processors (codenamed Skylake) new scaling modes are included with this release, where during Media SDK operation workload is released from render engine and no longer locked. So, developer can take full advantage by better managing available GPU EUs for other workloads during processing.
API ease-of-use improvements:
API 1.19 adds platform reporting feature, where application can query and retrieve information about underlying hardware during run-time.
For better memory management and performance improvements in memory allocation is re-aligned for 3D and OpenCL configurations.
This document contains information on how to get started with Intel® Active Management Technology (Intel® AMT). It provides an overview of the features, as well as information on minimum system requirements, configuration of an Intel AMT client, and the developer tools available to help create applications for Intel AMT.
Intel AMT supports remote applications running on Microsoft Windows* or Linux*. Intel AMT Release 2.0 and higher supports only Windows-based local applications. For a complete list of system requirements see the Intel AMT Implementation and Reference Guide.
Getting Started
In order to manage an Intel AMT client or run the samples from the SDK, use a separate system to remotely manage your Intel AMT device. Refer to the Intel AMT Implementation and Reference Guide located in the Docs folder of the Intel AMT SDK for more details.
What is Intel® Active Management Technology?
Intel AMT is part of the Intel® vPro™ technology offering. Platforms equipped with Intel AMT can be managed remotely, regardless of its power state or if it has a functioning OS or not.
The Converged Security and Manageability Engine (CSME) powers the Intel AMT system. As a component of the Intel® vPro™ platform, Intel AMT uses a number of elements in the Intel vPro platform architecture. Figure 1 shows the relationship between these elements.
Figure 1: Intel® Active Management Technology 11 architecture.
Pay attention to the network connection associated with the Intel® Management Engine (Intel® ME). The NIC changes according to which Intel AMT release you are using.
The CSME firmware contains the Intel AMT functionality.
Flash memory stores the firmware image.
Enable the Intel AMT capability by using the CSME as implemented by an OEM platform provider. A remote application performs the enterprise setup and configuration.
On power-up, the firmware image is copied into the Double Data Rate (DDR) RAM.
The firmware executes on the Intel® processor with Intel ME and uses a small portion of the DDR RAM (Slot 0) for storage during execution. RAM slot 0 must be populated and powered on for the firmware to run.
Intel AMT stores the following information in flash (Intel ME data):
OEM-configurable parameters:
Setup and configuration parameters such as passwords, network configuration, certificates, and access control lists (ACLs)
Other configuration information, such as lists of alerts and Intel AMT System Defense policies
The hardware configuration captured by the BIOS at startup
Details for the 2016 platforms with Intel vPro technology (Release 11.x) are:
14nm process
Platform (mobile and desktop): 6th generation Intel® Core™ processor
CPU: SkyLake
PCH: Sunrise Point
What Is new with the Intel® Active Management Technology SDK Release 11.0
CSME is the new architecture for Intel AMT 11. Prior to Intel AMT 11 CSME was called Intel® Management Engine BIOS Extension (Intel® MEBx).
MOFs and XSL files: The MOFs and XSL files in the \DOCS\WS-Management directory and the class reference in the documentation are at version 11.0.0.1139.
New WS-Eventing and PET table argument fields: Additional arguments added to the CILA alerts provide a reason code for the UI connection and the hostname of the device which generates the alert.
Updated OpenSSL* version: The OpenSSL version is at v1.0. The redirection library has also been updated.
Updated Xerces version: Both Windows and Linux have v3.1.2 of the Xerces library.
HTTPS support for WS events: Secure subscription to WS Events is enabled.
Remote Secure Erase through Intel AMT boot options: The Intel AMT reboot options has an option to securely erase the primary data storage device.
DLL signing with strong name: The following DLLs are now signed with a strong name: CIMFramework.dll, CIMFrameworkUntyped.dll, DotNetWSManClient.dll, IWSManClient.dll, and Intel.Wsman.Scripting.dll
Automatic platform reboot triggered by HECI and Agent Presence watchdogs: An option to automatically trigger a reboot whenever a HECI or Agent Presence watchdog reports that its agent has entered an expired state.
Replacement of the IDE-R storage redirection protocol: Storage redirection works over the USB-R protocol rather than the IDE-R protocol.
Updated SHA: The SHA1 certificates are deprecated, with a series of implemented SHA256 certificates.
Configuring an Intel® Active Management Technology Client
Preparing your Intel® Active Management Technology Client for Use
Figure 2 shows the modes, or stages, that an Intel AMT device passes through before it becomes operational.
Figure 2: Configuration flow.
Before configuring an Intel AMT device from the Setup and Configuration Application (SCA), it must be prepared with initial setup information and placed into Setup Mode. The initial information will be different depending on the available options in the Intel AMT release, and the settings performed by the platform OEM. Table 1 summarizes the methods to perform setup and configuration on the different releases of Intel AMT.
Setup Method
Applicable to Intel® Active Management Technology (Intel® AMT) Releases
For More Information
Legacy
1.0; Releases 2.x and 3.x in legacy mode
Setup and Configuration in Legacy Mode
SMB
2.x, 3.x, 4.x, 5.x
Setup and Configuration in SMB Mode
PSK
2.0 Through Intel AMT 10, Deprecated in Intel AMT 11
Setup and Configuration Using PSK
PKI
2.2, 2.6, 3.0 and later
Setup and Configuration Using PKI (Remote Configuration)
There are no feature limitations when configuring a platform manually since the 6.0 release, but there are some system behaviors to be noted:
API methods will not return a PT_STATUS_INVALID_MODE status because there is only one mode.
TLS is disabled by default and must be enabled during configuration. This will always be the case with manual configuration as you cannot set TLS parameters locally.
The local platform clock will be used until the network time is remotely set. An automatic configuration will not be successful unless the network time was set (and this can only be done after configuring TLS or Kerberos*). Enabling TLS or Kerberos after the configuration will not work if the network time was not set.
The system enables WEB UI by default.
The system enables SOL and IDE-R by default.
The system disables Redirection listener by default starting in Intel AMT 10.
If KVM is enabled locally via the CSME, it still will not be enabled until an administrator activates it remotely.
Starting with Intel AMT 10, some devices are shipped without a physical LAN adapter. These devices cannot be configured using the current USB Key solutions provided by Intel SCS 11.
Manual Setup
During power up, the Intel AMT platform displays the BIOS startup screen, then it processes the MEBx. During this process, access to the Intel MEBX can be made; however the method is BIOS vendor-dependent. Some methods are:
Most BIOS vendors add entry into the CSME via the one-time boot menu. Select the appropriate key (Ctrl+P is typical) and follow the prompts.
Some OEM platforms prompt you to press <Ctrl+P> after POST. When you press <Ctrl+P>, control passes to the Intel MEBx (CSME) main menu.
Some OEMs integrate the CSME configuration inside the BIOS (uncommon).
Some OEMs have an option in the BIOS to show/hide the <Ctrl+P> prompt, so if the prompt is not available in the one-time boot menu check the BIOS to activate the CTRL+P.
Client Control Mode and Admin Control Mode
At setup completion, Intel AMT 7.0 and later devices go into one of two control modes:
Client Control Mode. Intel AMT enters this mode after performing a basic host-based setup (see Host-Based (Local) Setup). It limits some of Intel AMT functionality, reflecting the lower level of trust required to complete a host-based setup.
Admin Control Mode. After performing remote configuration, USB configuration, or a manual setup via the CSME, Intel AMT enters Admin Control Mode.
There is also a configuration method that performs an Upgrade Client to Admin procedure. This procedure presumes the Intel AMT device is in Client Control Mode, but moves the Intel AMT device to Admin Control mode.
In Admin Control Mode there are no limitations to Intel AMT functionality. This reflects the higher level of trust associated with these setup methods.
Client Control Mode Limitations
When a simple host-based configuration completes, the platform enters Client Control Mode and imposes the following limitations:
The System Defense feature is not available.
Redirection (IDE-R and KVM) actions (except initiation of an SOL session) and changes in boot options (including boot to SOL) requires advanced consent. This still allows remote IT support to resolve end-user problems using Intel AMT.
With a defined Auditor, the Auditor’s permission is not required to perform un-provisioning.
A number of functions are blocked to prevent an untrusted user from taking control of the platform.
Manually Configuring an Intel Active Management Technology 11.0 Client
The Intel AMT platform displays the BIOS startup screen during power up, then processes the BIOS Extensions. Entry into the Intel AMT BIOS Extension is BIOS vendor-dependent.
If you are using an Intel AMT reference platform (SDS or SDP), the display screen prompts you to press <Ctrl+P>. Then the control passes to the CSME main menu.
In the case of it being a OEM system It is still easy to use the one-time boot menu, although entry into the CSME is usually an included option as part of the one-time boot menu. The exact key sequence varies by OEM, BIOS and Model.
Manual Configuration for Intel® AMT 11.0 Clients with Wi-Fi*-Only Connection
Many systems no longer have a wired LAN connector. You can configure and activate the Intel ME, then via WebUI or some alternate method to push the wireless settings.
Change the default password to a new value (required to proceed). The new value must be a strong password. It should contain at least one uppercase letter, one lowercase letter, one digit, and one special character, and be at least eight characters.
Enter CSME during startup.
Enter the Default Password of “admin”.
Enter and confirm New Password.
Select Intel AMT Configuration.
Select/Verify Manageability Feature Selection is Enabled.
Select Activate Network Access.
Select “Y” to confirm Activating the interface.
Select Network Setup.
Select Intel® ME network Name Settings.
Enter Host Name.
Enter Domain Name.
Select User Consent.
By default, this is set for KVM only; can be changed to none or all.
Exit CSME.
Configure Wireless via ProSet Wireless Driver synching, WebUI, or an alternative method.
Manual Configuration for Intel AMT 11.0 Clients with LAN Connection
Enter the CSME default password (“admin”).
Change the default password (required to proceed). The new value must be a strong password. It should contain at least one uppercase letter, one lowercase letter, one digit, and one special character, and be at least eight characters. A management console application can change the Intel AMT password without modifying the CSME password.
Select Intel AMT Configuration.
Select/Verify Manageability Feature Selection is Enabled.
Select Activate Network Access.
Select “Y” to confirm Activating the interface.
Select Network Setup.
Select Intel ME network Name Settings.
Enter Host Name.
Enter Domain Name.
Select User Consent.
By default, this is set for KVM only; can be changed to none or all.
Exit CSME.
Accessing Intel® Active Management Technology via the WebUI Interface
An administrator with user rights can remotely connect to the Intel AMT device via the Web UI by entering the URL of the device. Depending on whether TLS has been activated, the URL will change:
Non-TLS - http:// <IP_or_FQDN>:16992
TLS - https:// <FQDN_only>:16993
You can also use a local connection using the host’s browser for a non TLS connection. Use either localhost or 127.0.0.1 as the IP address. Example: http://127.0.0.1:16992
Intel Active Management Technology Support Requirements
In addition to having the BIOS and CSME configured correctly, the Wireless NIC needs to be Intel AMT Compliant. Specific drivers and services must be present and running in order to use the Intel AMT to manage the host OS.
To verify that the Intel AMT drivers and services are loaded correctly, look for them in the Device Manger and Services in the host OS. Frequently check the OEM’s download site for upgraded versions of the BIOS, firmware, and drivers.
Here are the drivers and services that should appear in the host OS:
Intel® Management and Security Status (Intel® MSS) Application Local Management Service**
Intel® AMT Management and Security Status application**
HID mouse and keyboard drivers***
* Network controller and wireless interface versions will vary depending on the generation of the Intel vPro platform.
** Part of the complete Intel MEI (Chipset) Driver package
*** HID Drivers are needed when connecting via Intel AMT KVM. These default drivers are not normally an issue; however, we have seen issues on stripped-down custom OS installs. If a connection is made to a device without the HID drivers, the OS tries to auto-download the drivers. Once the install is done, reconnect the KVM connection.
Note: The version level of the drivers must match the version level of the firmware and BIOS. If non-compatible versions are installed, Intel AMT will not work with the features that require those interfaces.
Physical Device - Wireless Ethernet Connection
By default, any wireless Intel vPro platform will have an Intel AMT enabled wireless card installed, such as an Intel Dual Band Wireless-AC 8260. Any wireless card other than one from Intel will not have wireless Intel AMT capabilities. If you have a card other than the Intel Dual Band Wireless-AC 8260 you can use ark.intel.com to verify whether the wireless card is Intel AMT compliant.
Windows OS Required Software
Device drivers are not necessary for remote management; however, they are essential for local communication to the firmware. Functions like discovery or configuration via the OS will require the Intel MEI driver, SOL driver, LMS service and Intel® Management and Security Status (Intel® MSS).
Intel MEI is required to communicate to the firmware. The Windows automatic update installs the Intel MEI driver by default. The Intel MEI driver should stay in version step with the Intel MEBX version.
The Intel MEI driver is in the Device Manager under “System devices” as “Intel® Management Engine Interface.”
Device Drivers - Serial-Over-LAN Driver
The SOL driver used during redirection operation where a remote CD drive is mounted during a IDE redirection operation.
The SOL driver is in the Device Manager under “Ports” as “Intel® Active Management Technology – SOL (COM3).”
Figure 3: Serial-Over-LAN driver.
Service - Intel Active Management Technology LMS Service
The Local Manageability Service (LMS) runs locally in an Intel AMT device and enables local management applications to send requests and receive responses. The LMS responds to the requests directed at the Intel AMT local host and routes them to the Intel® ME via the Intel® MEI driver. This service installer is packaged with the Intel MEI drivers on the OEM websites.
Please note that when installing the Windows OS, the Windows Automatic Update service installs the Intel MEI driver only. IMSS and the LMS Service are not installed. The LMS service communicates from an OS application to the Intel MEI driver. If the LMS service is not installed, go to the OEM website and download the Intel MEI driver, which is usually under the Chipset Driver category.
The LMS is a Windows service installed on the host platform that has Intel AMT Release 9.0 or greater. Prior to this, the LMS was known as the User Notification Service (UNS) starting from Intel AMT Release 2.5 to 8.1.
The LMS receives a set of alerts from the Intel AMT device. LMS logs the alert in the Windows Application event log. To view the alerts, right-click My Computer, and then select Manage>System Tools>Event Viewer>Application.
Tool - Intel® Management and Security Status Tool
The Intel MSS tool can be accessed by the blue-key icon in the Windows tray.
Figure 5: Sys Tray Intel® Management and Security Status icon.
General tab
The General tab of the Intel MSS tool shows the status of Intel vPro features available on the platform and an event history. Each tab has additional details.
Figure 6: Intel® Management and Security Status General tab.
Intel AMT Tab
This interface allows the local user to terminate KVM and Media Redirection operations, perform a Fast Call for Help, and see the System Defense state.
Figure 7: Intel® Management and Security Status Intel AMT tab.
Advanced Tab
The Advanced tab of the Intel MSS tool shows more detailed information on the configuration of Intel AMT and its features. The screenshot in Figure 8 verifies that Intel AMT has been configured on this system.
Figure 8:Intel® Management and Security Status Advanced tab.
Intel Active Management Technology Software Development Kit (SDK)
TheIntel AMT Software Development Kit (SDK) provides low-level programming capabilities so developers can build manageability applications that take full advantage of Intel AMT.
The Intel AMT SDK provides sample code and a set of APIs that let developers easily and quickly incorporate Intel AMT support into their applications. The SDK also includes a full set of HTML documentation.
The SDK supports C++ and C# on Microsoft Windows and Linux operating systems. Refer to the user guide and the Readme files in each directory for important information on building the samples.
The SDK, as delivered, is a set of directories that can be copied to any location. The directory structure should be copied in its entirety due to the interdependencies between components. There are three folders at the top level: DOCS (contains SDK documentation), and one each for Linux and Windows (sample code.) For more information on how to get started and how to use the SDK, see the Intel® AMT Implementation and Reference Guide.
As illustrated by the screenshot in Figure 9 of the Intel® AMT Implementation and Reference Guide, you can get more information on system requirements and how to build the sample code by reading the Using the Intel® AMT SDK section. The documentation is available on the Intel® Software Network here: Intel® AMT SDK (Latest Release)
Figure 9: Intel AMT Implementation and Reference Guide
Other Intel Active Management Technology Resources
There is no "best" App Designer framework. Each framework has pros and cons. You should choose that framework which serves your application needs best. The list below provides a quick list of pros and cons for each of the frameworks that are available as part of App Designer.
The "non-deprecated" UI frameworks are shown in the recommended order of "easiest to apply" to "most difficult to apply" as part of an Intel XDK app.
Twitter Bootstrap 3 -- PRO: a very clean UI framework that relies primarily on CSS with very little JavaScript trickery. Thriving third-party ecosystem with many plugins and add-ons, including themes. Probably the best place to start, especially for UI beginners. CON: some advanced mobile UI mechanisms (like swipe delete) are not part of this framework.
Framework 7 -- PRO: provides pixel perfect layout with device-specific UI elements for Android and iOS platforms. CON: difficult to customize and modify; requires a strict adherence to the Framework 7 "rules of layout" for best results. You should have a good understanding of how Framework 7 works before using this framework to build your app!
Ionic -- PRO: a very sophisticated mobile framework with many features. If you are familiar with and comfortable with Angular this framework may be a good choice for you. CON: tightly coupled with Angular, many features can only be accessed by writing JavaScript Angular directives. If you are not familiar or comfortable with Angular this is not a good choice!
App Framework 3 -- This UI framework has been deprecated and will be retired from App Designer in a future release of the Intel XDK. You can always use this (or any mobile) framework with the Intel XDK, but you will have to do so manually, without the help of the Intel XDK App Designer UI layout tool. If you wish to continue using App Framework please visit the App Framework project page and the App Framework GitHub repo for documentation and help.
Topcoat -- This UI framework has been deprecated and will be retired from App Designer in a future release of the Intel XDK. You can always use this (or any mobile) framework with the Intel XDK, but you will have to do so manually, without the help of the Intel XDK App Designer UI layout tool. If you wish to continue using Topcoat please visit the Topcoat project page and the Topcoat GitHub repo for documentation and help.
Ratchet -- This UI framework has been deprecated and will be retired from App Designer in a future release of the Intel XDK. You can always use this (or any mobile) framework with the Intel XDK, but you will have to do so manually, without the help of the Intel XDK App Designer UI layout tool. If you wish to continue using Ratchet please visit the Ratchet project page and the Ratchet GitHub repo for documentation and help.
jQuery Mobile -- This UI framework has been deprecated and will be retired from App Designer in a future release of the Intel XDK. You can always use this (or any mobile) framework with the Intel XDK, but you will have to do so manually, without the help of the Intel XDK App Designer UI layout tool. If you wish to continue using jQuery Mobile please visit the jQuery Mobile API page and jQuery Mobile GitHub page for documentation and help.
The "center type" parameter defines how the map view is centered in your div. It is used to initialize the map as follows:
Lat/Long: center the map on a specific latitude and longitude (that you provide on the properties page)
Address: center the map on a specific address (that you provide on the properties page)
Auto Calculate: center the map on a collection of markers
This is just for initialization of the map widget. Beyond that you must use the standard Google maps APIs to move and/or modify the map. See the "google_maps.js" code for initialization of the widget and some calls to the Google maps APIs. There is also a pointer to the Google maps API at the beginning of the JS file.
To get the current position, you have to use the Geo API, and then push that into the Maps API to display it. The Google Maps API will not give you any device data, it will only display information for you. Please refer to the Intel XDK "Hello, Cordova" sample app for some help with the Geo API. There are a lot of useful comments and console.log messages.
Trying to implement "pixel perfect" user interfaces with HTML5 apps is not recommended as there is a wide array of device resolutions and aspect ratios and it is impossible to insure you are sized properly for every device. Instead, you should use "responsive web design" techniques to build your UI so that it adapts to different sizes automatically. You can also use the CSS media query directive to build CSS rules that are specific to different screen dimensions.
Note:The viewport is sized in CSS pixels (aka virtual pixels or device independent pixels) and so the physical pixel dimensions are not what you will normally be designing for.
The Intel XDK provides you with a way to build HTML5 apps that are run in a webview on the target device. This is analogous to running in an embedded browser (refer to this blog for details). Thus, the programming techniques are the same as those you would use inside a browser, when writing a single-page client-side HTML5 app. You can use the Intel XDK App Designer tool to drag and drop UI elements.
It could be that you are using an outdated version of the App Framework* files. You can find the recent versions here. You can safely replace any App Framework files that App Designer installed in your project with more recent copies as App Designer will not overwrite the new files.
You can replace the App Framework* files that the Intel XDK automatically inserted with more recent versions that can be found here. App designer will not overwrite your replacement.
This FAQ applies only to App Framework 2. App Framework 3 no longer includes a replacement for the jQuery selector library, it expects that you are using standard jQuery.
App Framework is a UI library that implements a subset of the jQuery* selector library. If you wish to use jQuery for XPath manipulation, it is recommend that you use jQuery as your selector library and not App Framework. However, it is also possible to use jQuery with the UI components of App Framework. Please refer to this entry in the App Framework docs.
Ensure you have upgraded to the latest version of App Framework. If your app was built with the now retired Intel XDK "legacy" build system be sure to set the "Targeted Android Version" to 19 in the Android-Crosswalk build settings. The legacy build targeted Android 4.2.
If you want to, for example, change the theme only on Android*, you can add the following lines of code:
$.ui.autoLaunch = false; //Stop the App Framework* auto launch right after you load App Framework*
Detect the underlying platform using either navigator.userAgent or intel.xdk.device.platform or window.device.platform. If the platform detected is Android*, set $.ui.useOSThemes=false todisable custom themes and set <div id=”afui” class=”android light”>
Otherwise, set $.ui.useOSThemes=true;
When device ready and document ready have been detected, add $.ui.launch();
In App Framework the BODY is in the background and the page is in the foreground. If you set the background color on the body, you will see the page's background color. If you set the theme to default App Framework uses a native-like theme based on the device at runtime. Otherwise, it uses the App Framework Theme. This is normally done using the following:
Currently, you can only create App Designer projects by selecting the blank 'HTML5+Cordova' template with app designer (select the app designer check box at the bottom of the template box) and the blank 'Standard HTML5' template with app designer.
There were app designer versions of the layout and user interface templates that were removed in the Intel XDK 3088 version.
The jQuery 1 library appears to be incompatible with the latest versions of the cordova-android framework. To fix this issue you can either upgrade your jQuery library to jQuery 2 or use a technique similar to that shown in the following test code fragment to check your AJAX return codes. See this forum thread for more details.
The jQuery site only tests jQuery 2 against Cordova/PhoneGap apps (the Intel XDK builds Cordova apps). See the How to Use It section of this jQuery project blog > https://blog.jquery.com/2013/04/18/jquery-2-0-released/ for more information.
If you built your app using App Designer, it may still be using jQuery 1.x rather than jQuery 2.x, in which case you need to replace the version of jQuery in your project. Simply download and replace the existing copy of jQuery 1.x in your project with the equivalent copy of jQuery 2.x.
Note, in particular, the switch case that checks for zero and 200. This test fragment does not cover all possible AJAX return codes, but should help you if you wish to continue to use a jQuery 1 library as part of your Cordova application.
App Designer adds the data-uib and data-ver properties to many of the UI elements it creates. These property names only appear in the index.html file on various UI elements. There are other similar data properties, like data-sm, that only are required when you are using a service method.
The data-uib and data-ver properties are used only by App Designer. They are not needed by the UI frameworks supported by App Designer; they are used by App Designer to correctly display and apply widget properties when you are operating in the "design" view within App Designer. These properties are not critical to the functioning of your app; however, removing them will cause problems with the "design" view of App Designer.
The data-sm property is inserted by App Designer, and it may be used by data_support.js, along with other support libraries. The data-sm property is relevant to the proper functioning of your app.
The Intel® MPI Library is a high-performance interconnect-independent multi-fabric library implementation of the industry-standard Message Passing Interface, v3.0 (MPI-3.0) specification. This package is for MPI users who develop on and build for Intel® 64 architectures on Linux* and Windows*, as well as customers running on the Intel® Xeon Phi™ coprocessor on Linux*. You must have a valid license to download, install, and use this product.
Intel® System Studio for Microcontrollers Toolchain Only
Pre-built GNU* toolchain only (compiler, runtime libraries, and debugger) that is included in Intel® System Studio for Microcontrollers. Use the links below to download a package for Linux* or Windows* host environments:
Intel® Parallel Studio XE 2015 Update 7 Composer Edition for Windows* includes the latest update of the Intel Fortran and C/C++ 15.0 compilers for IA-32 and Intel® 64 architecture systems. This new product release includes: Intel® Visual Fortran Compiler XE Version 15.0.7, Intel® C++ Compiler XE Version 15.0.7, Intel® Math Kernel Library (Intel® MKL) Version 11.2 Update 4, Intel® Integrated Performance Primitives (Intel® IPP) Version 8.2 Update 3, Intel® Threading Building Blocks (Intel® TBB) Version 4.3 Update 7, Intel® Debugger Extension for Intel® Many Integrated Core Architecture (Intel® MIC Architecture) Version 7.7-8.0
New in this release:
Intel® C++ Compiler 15.0.7
Intel® Fortran Compiler 15.0.7
Corrections to reported problems in installation and IDE integration
Note: For more information on the changes listed above, please read the individual component release notes. See the previous releases's ReadMe to see what was new in that release.
File: w_compxe_2015.7.287.exe
Product for developing 32-bit and 64-bit applications (with Microsoft Visual Studio 2010 Shell & Libraries*, English version)
File: w_compxe_all_jp_2015.7.287.exe
Product for developing 32-bit and 64-bit applications (with Microsoft Visual Studio 2010 Shell & Libraries*, Japanese version)
File: w_ccompxe_redist_msi_2015.7.287.zip
C++ Redistributable Libraries for 32-bit and 64-bit msi files
File: w_fcompxe_redist_msi_2015.7.287.zip
Fortran Redistributable Libraries for 32-bit and 64-bit msi files
Intel® Parallel Studio XE 2015 Update 7 Composer Edition forC++ Windows* includes the latest update of the Intel C/C++ 15.0 compilers for IA-32 and Intel® 64 architecture systems. This new product release includes: Intel® C++ Compiler XE Version 15.0.7, Intel® Math Kernel Library (Intel® MKL) Version 11.2 Update 4, Intel® Integrated Performance Primitives (Intel® IPP) Version 8.2 Update 3, Intel® Threading Building Blocks (Intel® TBB) Version 4.3 Update 7, Intel® Debugger Extension for Intel® Many Integrated Core Architecture (Intel® MIC Architecture) Version 7.7-8.0
New in this release:
Intel® C++ Compiler 15.0.7
Corrections to reported problems in installation and IDE integration
Note: For more information on the changes listed above, please read the individual component release notes. See the previous releases's ReadMe to see what was new in that release.
Intel® Parallel Studio XE 2015 Update 7 Composer Edition for Fortran Windows* includes the latest update of the Intel Fortran 15.0 compilers for IA-32 and Intel® 64 architecture systems. This new product release includes: Intel® Visual Fortran Compiler XE Version 15.0.7, Intel® Math Kernel Library (Intel® MKL) Version 11.2 Update 4, Intel® Debugger Extension for Intel® Many Integrated Core Architecture (Intel® MIC Architecture) Version 7.7-8.0, Microsoft Visual Studio 2010 Shell and Libraries*
New in this release:
Intel® Fortran Compiler 15.0.7
Corrections to reported problems in installation and IDE integration
Note: For more information on the changes listed above, please read the individual component release notes. See the previous releases's ReadMe to see what was new in that release.
File: w_fcompxe_2015.7.287.exe
Product for developing 32-bit and 64-bit applications (with Microsoft Visual Studio 2010 Shell & Libraries*, English version)
File: w_fcompxe_all_jp_2015.7.287.exe
Product for developing 32-bit and 64-bit applications (with Microsoft Visual Studio 2010 Shell & Libraries*, Japanese version)
File: w_fcompxe_redist_msi_2015.7.287.zip
Redistributable Libraries for 32-bit and 64-bit msi files
Intel® Open Network Platform (Intel® ONP) is a reference architecture that provides engineering guidance and supports ecosystem enablement to encourage widespread adoption of SDN and NFV solutions in Telco, Enterprise, and Cloud Services.
Intel ONP is a free-to-use reference implementation that developers can set-up for research and development, proof-of-concepts, and performance analysis of some of the core software-defined network/network function virtualization (SDN/NFV) enabling technologies: Data Plane Development Kit (DPDK) for accelerated packet processing, Open vSwitch* (OVS) including support for OVS with DPDK, OpenDaylight* (ODL) controller, and OpenStack* orchestrator. To learn more about Intel ONP, see the References Section at the end of this article.
This article will detail how to quickly deploy and verify Intel ONP (for development, not production) using virtual machines (VM).
Introduction
Intel ONP builds on top of devstack* (an OpenStack installer), adding several customizations, using specific patch-sets, and providing automation. Just specify a few parameters, select several options, and Ansible* scripts will automatically build out the Intel ONP OpenStack environment. This article will provide a step by step, assuming no prior devstack experience.
A minimal, non-production configuration can be built using 2 VMs on just one physical node with at least 16 CPUs, 16G RAM, a 150G drive,, and at least 1 NIC for the external network. For any performance testing, add at least a second NIC and additional physical nodes connected through a Tenant/Private Switch.
Figure 1:Non Production Intel ONP setup with 1 NIC for development, or 2 NICs for performance testing
Section I: Prepare the Host and the VMs
On the host system, install Fedora* 23 x64 with the virtualization package and Ansible.
dnf update
dnf group install ‘Virtualization’
dnf install ansible1.9
Create 3 networks/bridges: virbr0 (NAT), br0 (Management), and br1 (Tenant/Private). a. By default, bridge virbr0 with NAT is created by libvirt and should be associated with the NIC that has internet access (eg: eth0). b. Create a vLAN for the management network using a macvlan interface associated with eth0, and IP# 192.168.11.5
ip link add link eth0 name macvlan0 type macvlan mode bridge
brctl addbr br0
brctl addif br0 macvlan0
ip a add 192.168.11.5/24 dev br0
ip l set dev macvlan0 up
ip l set dev br0 up
c. If using a second NIC and tenant private network, create the separate network
brctl addbr br1
brctl addif br1 eth1
ip l set dev br1 up
Now create the VMs using one of the easiest and quickest tools: virt-builder . Use the prebuilt OS template, Fedora-23 x64, that come with virtbuilder to create the VM images You can also use virt-builder wrappers like upvm to make VM creation/management even simpler.
Run this command twice to create identical compute and controller nodes:
There should be 4 interfaces in the VMs: ens3(NAT), ens4)management), ens5(external), and ens6(tenant)
Figure 2: Network Interfaces
7. Configure static IPs for ens4 using 192.168.11.12 for the controller node and 192.168.11.13 for the compute node. a. Download the Intel ONP scripts (make copies of the original config files before changing).
curl -0 <a data-cke-saved-href="https://download.01.org/packet-processing/ONPS2.1/onp_server_2_1_refresh2.tar.gz" href="https://download.01.org/packet-processing/ONPS2.1/onp_server_2_1_refresh2.tar.gz">https://download.01.org/packet-processing/ONPS2.1/onp_server_2_1_refresh2.tar.gz</a>
tar –xvzf onp_server_2_1_refresh2.tar.gz
cd onp_server_2_1/ansible
cp inventory.ini inventory.ini.orig
cp onps_config.yml onps_config.yml.orig
b. Modify at least the following parameters in the config scripts.
>In inventory.ini (ansible’s inventory file), specify the hostname and IP of each node
You can also refer to the reference architecture guide for more details.
Part III: Deploy Intel Open Network Platform
8. Deploy Intel ONP using the automated script, as follows.
ansible-playbook –I inventory.ini multimode.yml
Sample output is shown in Figure 3.
Figure 3: Sample Output from ansible
The deployment happens in 3 stages: system prep, devstack deployment, and a sanity check of the ONP deployment. These steps can be found in the file multinode.yml in the ansible directory and you can comment out any of them if you wish to rerun without repeating them.
Figure 4: Ansible/multimode.yml script
9. Verify the OpenStack hypervisor and network agents list (Figure 5) from the controller node.
At the same time prepare an OpenStack flavor with large memory page size to support Open vSwtich with DPDK
ssh 192.168.11.12
su stack
cd /home/stack/devstack
source openrc admin demo
nova flavor-create largepage-flavor 1002 1024 4 1
nova flavor-key 1002 set “hw:mem_page_size=large”
nova hypervisor-list
neutron agent-list
nova flavor-show 1002
Figure 5: output from Step 9
Part IV: Create Instances and Verify Network
We can now create instances on our Intel ONP deployment for developing/debugging VNFs, or for proof-of-concept & testing purposes. The following steps show you how to create an instance, and perform simple network access verification.
10. Ensure there is sufficient large page memory allocated on the compute node
11. Create an instance on the controller node using flavor with large memory page size.
ssh-keygen -q -f ~/ssh-key
nova keypair-add key-nova --pub-key ~/ssh-key.pub
nova boot vm1 --image cirros-0.3.4-x86_64-uec --flavor 1002 --key-name key-nova
12. Then verify network access
nova list
ping 10.0.0.5
ssh -i ~/ssh-key <a data-cke-saved-href="mailto:cirros@10.0.0.5" href="mailto:cirros@10.0.0.5">cirros@10.0.0.5</a>
Figure 6: Sample output of nova list
For performance and benchmarking, it is recommended that you use additional dedicated physical nodes and a second NIC.
Summary
In this article, we outlined a step-by-step configuration of a non-production Intel ONP setup, and the minimum instances for developing and testing SDN/NFV applications.
The Intel Open Network Platform (Intel ONP) captures best practices and guidelines for efficiently using some of the core SDN/NFV enabling technologies - DPDK for accelerated packet processing, Open vSwitch* (OVS) including support for OVS with DPDK, OpenDaylight* (ODL) controller, and OpenStack orchestrator.
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. Check with your system manufacturer or retailer or learn more at intel.com.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.
This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest forecast, schedule, specifications and roadmaps.
The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request.
Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting www.intel.com/design/literature.htm.
Asset tracking is a challenge that seems tailor-made for an Internet of Things solution. Imagine sensors connected to a tiny IoT processor that can be mounted on shipping crates, or on individual objects lining the shelves of a retail operation or private home. The sensors collect data–location, temperature, movement, sales or consumption details, for example–and pass it into the cloud where that data can be sliced, diced, and fed into a recommendation engine. Tapping into the engine then helps someone make an informed decision based on what’s trending, under what circumstances the product will be consumed, and what to expect when they try it for themselves.
Recognizing that a Portland, Oregon-based design company was focusing on the same opportunity, Intel reached out to Uncorked Studios. “We brought them to an invitation-only development day,” Intel IoT innovation manager Shashi Jain explained. “Our goal was very specific. We wanted to collaborate with them, to demonstrate how Intel IoT technology can be used to quickly take an idea from concept to prototype, and ultimately to market.”
For Uncorked Studios, that idea was a product called Sommely (from sommelier, or wine steward). With Sommely, the luxury wine market served as the vector for proving that a smart asset-tracking system for wine enthusiasts could scale from the domestic wine rack to restaurants, wineries, and beyond.
Uncorked Studios
The aptly named Uncorked Studios is a product design and development company, which, for the six years of its existence, has been focused on “the relationship between digital environments and the physical world.” The company’s team of 42 has created smart-home and wearable products in collaboration with LEGO*, Google*, adidas*, and Samsung*, among others. Working with Intel, Uncorked helped design the multi-camera array used in theIntel® RealSense™ launch.
Sommely is Uncorked Studios’ first foray into the wine and asset-tracking market.
The Sommely Experience
As a smart inventory-management system for wine collectors, Sommely uses several Intel IoT components to keep a running count of what’s in a particular wine collection. The system can also make smart recommendations by drawing on crowd-sourced data to suggest what to drink, when a bottle is ready to drink, and the food it pairs well with.
To accomplish that, a mobile-friendly website communicates with a gateway or a hub that’s connected to the Internet via WiFi. The hub also communicates with individual caps fitted to each of the bottles in a wine collection. The caps hold batteries, a radio that talks to the hub, sensors, and LED lights.
“Say it’s a Tuesday night, and you’ve just ordered pizza,” Marcelino Alvarez, the founder and CEO of Uncorked Studios, explained. “You don’t want to accidentally open a bottle that’s rare, or too expensive. You just want something that pairs well with your pepperoni and mushroom pizza, so you ask the app and the corresponding caps light up, letting you do a visual search through your inventory.”
Along similar lines, the Sommely app gives users the ability to choose wines for special occasions, based on criteria that includes the food the wine is being paired with, the characteristic elements you’re looking for (light and crisp, big and jammy, etc.), and whether a particular bottle is ready to be enjoyed now or if it needs more time in the cellar. The system will also warn when a bottle is past its prime.
The crowd-sourced component, like Sommely itself, is a work-in-progress. Alvarez’s goal is for their app to “play nice with other apps”. “We’re not competing with apps like Delectable Wines or Vivino, so we could partner with them.” He envisions getting data that includes a large sampling of what wine lovers are drinking at any given moment, along with data such as industry and consumer reviews and tasting notes. Sommely could aggregate and present that information in ways that encourage curiosity and exploration.
What does Sommely have that other systems don’t? Traditional, analog inventory systems that use things like spreadsheets and post-it notes, or tags that hang around the neck of each bottle, have drawbacks. “For example, they require a lot of individual attention,” Alvarez pointed out. “You need to write down drink-by dates, assuming you even have that information.” Another disadvantage is that manual systems don’t automatically update when you drink a bottle, making it easy to lose track of what’s in the collection.
“Even if you’re diligent about keeping track, you’re inevitably going to forget you drank something. A single misplaced bottle can send you back to square one. If you have 40, 50, or 100 bottles, that might only take you an hour,” Alvarez said. “But if you’ve got 500 bottles, or 1,000 bottles, there are other considerations. For example, sizable collections are more likely to include special bottles–gifts, rare and expensive vintages, and so on.”
How Sommely Works
A low-power, 32-bit Intel® Quark™ microcontroller D1000 resides in each Sommely bottle cap. Uncorked Studios’ engineers leaned heavily on the fine-grained power management features of the Intel Quark microcontroller D1000. Standby mode and fast wake-times helped maximize battery life, which was crucial for a ‘set it and forget it’ solution expected to function for long periods.
The gateway itself uses an Intel NUC and a full Ubuntu* Linux* distribution that enables remote system updates. Currently, the caps and gateway communicate using Bluetooth® Low Energy (BLE) technology. BLE is tailored for low-energy IoT devices. “We decided on BLE for a couple of reasons,” Alvarez said. “When prototyping Sommely, we piggybacked some of our engineering efforts with those of a software engineering team at Intel that was working on a BLE solution. That helped us get from concept to prototype much faster than expected.”
As convenient as BLE seemed, Alvarez doesn’t expect it to be part of the final product. Uncorked Studios is still working with Intel to define an active RF or RFID solution, because the initial Sommely prototype showed that scaling beyond 100 bottles to 500 or more could prove challenging. “With a larger collection, BLE interference could make it challenging to pair everything, so we’ll probably build a custom RF stack for Sommely.”
The gateway’s Intel NUC enables discovery of the BLE caps and maintains their connection state over time by periodically scanning and re-scanning, as well as taking Received Signal Strength Indication (RSSI) measurements. The browser-based system interface draws on a library of collection and search queries, and the design provides an upstream connection to WiFi. The Uncorked Studios team has been using Intel-powered Dell* Venue tablets to test-drive Sommely.
Frictionless User Interaction
A lot of technology has gone into Sommely, and, Alvarez says, “we’re looking at ways to create frictionless interaction with the system. We want to keep it simple.” According to Alvarez, the physical components, the context in which they’re being used, and even the BIOS all posed design challenges.
For starters, the gateway needed to blend in. After all, wine enthusiasts want the focus of attention to be on the bottles in their collection, not on a high-tech telecommunications device. As a result, the Intel Quark microcontroller D1000 and the battery are hidden within the Sommely bottle caps, and the gateway is housed in an Intel NUC.
In early trials, at runtime the Dell Venue tablet appears to interact directly with the bottle caps themselves. “That’s because we limited the perceptual distance from the transaction between the tablet, the caps, and the hub. The end user won’t know that we're running Linux, a full BLE stack, and a WiFi network stack with a node.js web server. It feels like you go to the system, press a button, and see LEDs light up.”
The Sommely bottle caps supply user feedback through a ring of three LEDs. That presented the UX team with another challenge: developing an intuitive user experience for a device that doesn’t have the traditional elements of a user interface–there’s no screen to display things on other than what’s available through the web app.
“One of the interesting things that emerged with IoT is the trend of having a mobile app that acts like an interface to a device that itself provides user feedback on a more intimate level,” Alvarez said. “That holds true for Sommely. Our web app is just a way for people to control an interface to wine bottles, where the bottles themselves become unique elements of that interface. The Sommely caps fit over the actual wine bottle caps, and respond to input and output from the web app. You can pick up a bottle, tap a button on the Sommely cap, and get feedback through them, as well as display relevant information on the app.”
UX design decisions were based on context. “Where the bottles would be, relative to the tablet; what happens when you’re out of sight,” Alvarez said. “How do you make the app for the interface something that gets out of the way rather than being in your face? You don't want to be scrolling through an infinite series of menus to just find one wine bottle.”
All of that translated to a solution in which the Intel Quark microcontroller D1000 embedded in each cap responds to user push-button inputs. “We implemented a custom ping-pong soft PWM based on the sample code provided with the Intel SDK to drive the LED ring,” Alvarez explained. “The BLE client state machine converts inbound BLE requests to color, brightness, and off/on. Responses to button pushes can be customized based on a variety of queries. If a user asks to see wines ranging from expensive to less expensive, the color palette spans green to yellow, but for a ‘is it ready to drink right now?’ query, the feedback is a more nuanced color palette.”
Batteries - Maximizing Performance
Battery life was crucial, so the system enters power-saving states whenever possible. “We exploited the halt and standby states in our firmware to put the SoC into power-saving mode whenever it's not needed. The MCU is idle during dead clocks in our PWM states, and whenever the LED ring is off. As a result, we've got the Intel Quark D1000 in standby almost all of the time, which translates to battery life approaching one year with some intermittent use, which is our current method.”
The web app notifies users when batteries need to be replaced, but Alvarez cautions against using Sommely caps to run DJ-style light shows. “There will be people who do that, but we don’t want to encourage it. We’d like to implement conductive charging or an RF harvest state. With enough harvesting, we might be able to extend battery life by a couple years. But those are v2 or v3 features.”
With a target audience that holds on to wine for anywhere from a year to three years, Alvarez knows how important extended battery life is. “Cost is the primary issue holding us back. We’re looking at ways to gracefully send new caps to customers as batteries near end-of-life.”
Some wine enthusiasts believe it’s important to annually rotate the bottles in their collections a quarter-turn. Alvarez says they considered using the accelerometer in their sensors and the light ring in the bottle caps to tell users when to turn bottles. “The three LEDs are 120 degrees apart, so we could have lit an LED to signal when it’s time to rotate a bottle, and then turned the LED off when the quarter turn was complete.”
Intel Inside the Software Stack
The Uncorked Studios engineers turned to a number of Intel software development tools when coding Sommely. The gateway runs a custom MEAN stack implementation and Intel® System Studio for Microcontrollers was used to code the Intel Quark microcontroller D1000 firmware.
“Having sample code for the Intel Quark D1000 firmware made a huge difference for us when it came to some of the trickier portions of the system, power management specifically,” Alvarez said.
As a result of the relationships established during the invitation-only developer day, Intel hardware and software engineers helped the Uncorked Studios team with the Intel Quark D1000 firmware. “We were able to get up and running on the Edison NUC very quickly,” Alvarez said. “With the Intel Quark D1000, Intel engineers were able to look at our code and give us input that helped us resolve issues. When we’ve had challenges or questions, they’ve been right there for us.”
More importantly, Alvarez said, “Intel’s Marc Alexander was an advocate. He saw the potential in Sommely from a broader perspective. He saw beyond the immediate implication of how many chips they might sell, and understood that Sommely was an exciting IoT use case with a lot of potential. If we didn't have believers within Intel, or access to domain experts within various aspects of IoT and the startup world, we wouldn't be where we are today.”
Next Steps
Sommely is a work-in-progress. At the time of writing, enhancements to its power management stack are top-of-mind for Alvarez. “If we could harvest energy and not have to replace batteries, that would be a leaps-and-bounds improvement. I think power management is a challenge all IoT devices are going to face at some point.”
Alvarez envisions solutions ranging from the utilitarian to the glamorous. “We have a few ideas for how we could recharge the caps using either existing induction charging technologies as well as some new approaches that we’re excited to prototype. We think it’s a space where we can continue to partner with Intel to solve a much larger industry challenge.”
In Summary
High-value inventory management—keeping track of valuable things—using IoT technology offers solutions to a lot of challenges. For example, tracking tools in a factory, or keeping tabs on a collection of Star Wars figures, Barbie dolls, antiques, and other rare collectibles being shipped across town or across borders, and monitoring the day-to-day life of a wine collection.
Uncorked Studios was in lean, startup mode with Sommely when they started working with Intel IoT technology. Intel hardware and software engineers helped the Uncorked team quickly prototype the smart asset-management solution. The lessons they’ve learned so far, and possible new use cases, hold great potential, especially when scaled to support larger inventories.
“We've looked at different contextual experiences that go beyond one-cap-one-bottle,” Alvarez said. “What could a restaurant or winery do with Sommely? Is there a SKU that just sits on top of a case that holds 12 individual units representing the 12 bottles within? Maybe those units detach and go on the bottles when you crack open the case? We also considered transferring ownership of a bottle and keeping that history in the cap itself. It’d be like an electronic manifest for the bottle. We have thought through a number of scenarios, but aren’t ready to implement them.”
Whatever the future holds for Sommely, it shows how Intel fosters innovation through collaboration with startups. By helping Uncorked Studios overcome technical hurdles and scale Sommely from one to many sensors/caps, Intel gained valuable insights. Those insights, in turn, helped the Intel team refine and enhance Intel’s IoT hardware and software solutions.
If you’ve got a burning desire to change the world with IoT technology, but you’re having technical difficulties, drop by the Intel Developer Zone. Our domain experts, and the developer community at large, might be able to lend a hand.
Based on Intel® Core™ microarchitecture (code-named Broadwell) and manufactured on 14-nanometer process technology, the Intel® Xeon® processor E7 v4 family has more cores and a larger cache size. It also has new features like Cache Allocation Technology, Memory Bandwidth Monitoring, and the new RDSEED instruction compared to the previous-generation Intel® Xeon® processor E7 v3 family.
For a more in-depth discussion of the key features and the architecture of the Intel® Xeon® processor E7 v4 family see the technical overview document.
Key supported features you should be aware of as a software developer:
Faster integer instructions. Faster ADCX and ADOX instructions improve the performance of large-integer applications.
New instruction supporting cryptography. The new RDSEED instruction provides high-quality seed values for software pseudorandom number generators. This article shows the difference between RDRAND and RDSEED.
Intel® Resource Director Technology (Intel® RDT). Intel RDT Introduces three new features called Cache Allocation Technology (CAT), Memory Bandwidth Monitoring (MBM), and Code and Data Prioritization (CDP). CAT allows the OS to specify how much cache space an application can utilize, while MBM monitors how much memory bandwidth is utilized and CDP limits how much cache space data can utilize to make room for code in the last-level cache. The following articles will describe more about these cache features as well as their enabling and software support.
Learn more about the Intel Xeon processor E7 v4 familyhere. Also, these software vendors are already developing applications that are highly optimized to run on the Intel Xeon processor E7 v4 family server platform.