<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ricardo Gomez-Ulmke</title>
    <description>The latest articles on DEV Community by Ricardo Gomez-Ulmke (@ricardojosegomezulmke).</description>
    <link>https://dev.to/ricardojosegomezulmke</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F194284%2Ff362ca89-aff6-4010-9f4a-2676f41df8e6.png</url>
      <title>DEV Community: Ricardo Gomez-Ulmke</title>
      <link>https://dev.to/ricardojosegomezulmke</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ricardojosegomezulmke"/>
    <language>en</language>
    <item>
      <title>Rapid IoT Prototyping with the Bosch XDK110 and an Event Mesh</title>
      <dc:creator>Ricardo Gomez-Ulmke</dc:creator>
      <pubDate>Mon, 05 Aug 2019 18:37:08 +0000</pubDate>
      <link>https://dev.to/solacedevs/rapid-iot-prototyping-with-the-bosch-xdk110-and-an-event-mesh-3688</link>
      <guid>https://dev.to/solacedevs/rapid-iot-prototyping-with-the-bosch-xdk110-and-an-event-mesh-3688</guid>
      <description>&lt;p&gt;Many IoT projects start with a prototype. We test different sensors, their connectivity within their target surroundings, and the data transmission from device to IT apps. We also use various cloud services and tools to visualize and analyze the collected data to eventually build our business case.&lt;/p&gt;

&lt;p&gt;Once we have understood our use cases and their business value, we are often faced with the problem of creating a robust and production-ready pilot version of the architecture and tooling, albeit small-scale initially. Assuming this pilot is successful, the next questions we will get is ”Can we now roll it out at scale?” or ”How long do you need to roll it out globally?”&lt;/p&gt;

&lt;p&gt;In this article, we will explain our journey of creating a foundation based on the Solace Hybrid IoT Event Mesh concept that allows you to go from a small-scale prototype to a full-blown global roll-out of your project to any size or geographic reach without re-architecting or re-developing any of your applications.&lt;/p&gt;

&lt;p&gt;The guiding principle of our project was to provide maximum agility and flexibility in these dimensions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Geographical deployment across US and Europe&lt;/li&gt;
&lt;li&gt;Various cloud and on-premise deployments such as AWS, Azure and edge gateways&lt;/li&gt;
&lt;li&gt;Evolution and extension of the use case&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We have joined forces with a number of leading technology providers such as Dell Boomi, Altair, and SL to show the agility to consume and produce events and messages wherever required. As the prototyping sensor kit we used the Bosch XDK110, a great “cross domain development kit” with sensors such as gyroscope, accelerometer, magnetometer, humidity, temperature, and light.&lt;/p&gt;

&lt;p&gt;Using the XDK110, we can target a number of different use cases, from monitoring vibrations of appliances and machines, monitoring transport of fresh food, medicines and vaccines, and fragile cargo as well as environmental conditions in production processes such as industrial painting and coating for optimal temperature and humidity. Yawn …&lt;br&gt;&lt;br&gt;
How about we use the same platform instead to monitor slot cars racing around a race track, fully connected and in real time? Count laps, detect crashes, …?&lt;/p&gt;

&lt;p&gt;Have a look at this video recorded by SL Corporation to see the race track in action:&lt;/p&gt;

&lt;p&gt;Note: Big shout-out to Heather. How does she manage to drive two cars at the same time without crashing them? We cannot do that!&lt;/p&gt;

&lt;p&gt;Let’s have a look at the system and its components.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solace Client Application for the Bosch XDK110
&lt;/h2&gt;

&lt;p&gt;As mentioned before, we use the Bosch XDK110 as the sensor device. It comes with an Eclipse-based IDE and tons of sample code to base your own project on.&lt;br&gt;&lt;br&gt;
Based on the libraries provided, we developed our own device application with the following interfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A JSON configuration file with initial connection parameters for WIFI, the Solace MQTT connection, etc.&lt;/li&gt;
&lt;li&gt;A telemetry publisher to send selected sensor data at a configured interval&lt;/li&gt;
&lt;li&gt;A number of subscribers to receive commands and configuration parameters and respond with status messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By taking advantage of a key feature in Solace, namely the literally unlimited number of topics that can be used, we have created a topic hierarchy to allow for very selective updates to the devices, using wildcards and the event mesh for routing messages from producers to all registered subscribers.&lt;/p&gt;

&lt;p&gt;For example, each device subscribes to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration messages just for itself using the following example topic string: &lt;code&gt;UPDATE/iot-control/BCW/solacebooth/racetrack/device/{myDeviceId}/configuration&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Configuration messages for all devices within the “BCW/solacebooth/racetrack” region:
&lt;code&gt;UPDATE/iot-control/BCW/solacebooth/racetrack/device/#/configuration&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Configuration messages for all devices within the “BCW/solacebooth” region:
&lt;code&gt;UPDATE/iot-control/BCW/solacebooth/#/device/#/configuration&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each device publishes sensor data under the following topic:&lt;br&gt;&lt;br&gt;
&lt;code&gt;CREATE/iot-event/BCW/solacebooth/racetrack/device/{deviceId}/metrics&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The topic pattern we use is as follows:&lt;br&gt;&lt;br&gt;
&lt;code&gt;{METHOD}/{base-topic}/{resource-categorization}/{resource}/{id}/{aspect}&lt;/code&gt;&lt;br&gt;&lt;br&gt;
with &lt;code&gt;{resource-categorization}&lt;/code&gt; split into: &lt;code&gt;{region}/{location}/{production-line}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So, we map the organizational deployment / ownership of the device directly into the topic hierarchy.&lt;/p&gt;

&lt;p&gt;By using this topic taxonomy in the event mesh, we have completely removed the requirement of parsing message contents to determine routes with the benefits of saving compute time, increasing throughput, reducing maintenance costs, and improving the agility of the platform. It also allows for fine-grained access control of who can access an API and eventually allows us to create a complete governance model of our events, messages, and routes.&lt;/p&gt;

&lt;p&gt;We also wanted to support the concept of re-purposing the same device for different use cases. Logic in the XDK application allows for it to be re-configured to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select which sensor data is sent – any combination of gyroscope, accelerometer, magnetometer, temperature, humidity, and light.&lt;/li&gt;
&lt;li&gt;Select the sampling rate for the sensor data – between 1 per second and 100 per second.&lt;/li&gt;
&lt;li&gt;Select the message stream rate – between 1 and 25 messages per second.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, in order to monitor our race track cars, we really only want the gyroscope data (x, y, z). But we need it at a higher sampling rate: 100 samples per second combined into 25 MQTT messages per second, so 4 samples in one message.&lt;/p&gt;

&lt;p&gt;To monitor fragile cargo, you would rather need the accelerometer at a very high sampling rate to detect “rough handling”. For monitoring food and medicine transports, you may only be interested in humidity, light, and temperature,but most likely at lower sampling intervals of one to several minutes.&lt;/p&gt;

&lt;p&gt;The following figure summarizes the XDK110 application interfaces:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_01-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Igu2v-kG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_01-1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Reference Platform powered by the Hybrid IoT Event Mesh
&lt;/h2&gt;

&lt;p&gt;Let’s have a closer look at the downstream systems and interactions that are part of the system. The following figure provides an overview:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_02-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8Ee3cYT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_02-1-1024x479.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The applications that need to consume the streaming sensor data here are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asset monitoring&lt;/li&gt;
&lt;li&gt;Visual analytics&lt;/li&gt;
&lt;li&gt;Streaming analytics&lt;/li&gt;
&lt;li&gt;AI/ML modules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are all the applications or services that subscribe to either selectively or all of the streaming sensor data sent by the devices. The devices themselves are also visible in the topic taxonomy, the tree structure that reflects the “resource categorization” hierarchy &lt;code&gt;{region}/{location}/{production-line}&lt;/code&gt;. Using this hierarchy, the user or administrator can select exactly which devices to ingest data from by using topic wildcards in the subscription and close subscriptions for device data that is currently not required.&lt;/p&gt;

&lt;p&gt;Now, in order to support the concept of re-purposing / re-configuring the devices “on-the-fly”, the following message sequence is executed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Command &amp;amp; Control service issues a configuration message to one or more XDK devices.&lt;/li&gt;
&lt;li&gt;Each device responds with a Status message, indicating the successful (or not) mode switching.&lt;/li&gt;
&lt;li&gt;The Asset Monitor and the Streaming Analytics service(s) both subscribe to the successful mode-switch status message and store this as the device’s context.&lt;/li&gt;
&lt;li&gt;Now the Streaming Analytics engine receives streaming sensor data from the devices, checks the context of the device and now knows what models / thresholds to apply to the streaming data.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The following figure shows this context switching and monitoring in more detail for the Streaming Analytics engine and what happens to its output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_03-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k642MFry--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_03-1-1024x510.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a “device mode change” (success) message is received by the Streaming Analytics engine, it now applies the correct monitoring model and algorithms for the different use cases such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detecting car crashes, counting laps, and determining the winner in the race track mode&lt;/li&gt;
&lt;li&gt;Detecting rough handling / dropped packages for the fragile goods transport mode&lt;/li&gt;
&lt;li&gt;Counting wash cycles and detecting a sub-optimal installation for a washing machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depending on the model, the streaming analytics engine then sends out alerts or notifications.&lt;/p&gt;

&lt;p&gt;Alerts are then forwarded to a CRM &amp;amp; Service module (such as Salesforce), creating a ticket for an agent to take action whereas Notifications &amp;amp; Alerts can be used in the Dashboards as well as for Sales &amp;amp; Marketing and therefore closing the gap from the connected machine to pro-active maintenance and assistance (e.g. “Your washing machine is unbalanced. We can send an engineer to help you prolong its life span.”) as well as sales &amp;amp; marketing (e.g. “You now have completed 10 wash cycles. Isn’t it time for a top-up of your favorite washing powder?”).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hybrid IoT Event Mesh
&lt;/h3&gt;

&lt;p&gt;In order to support these interactions across multiple deployment geographies, we set up an event mesh as shown in this picture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_04-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cMVV-eTa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_04-1-1024x541.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We needed to satisfy the following requirements connecting various XDKs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XDKs running in California, connecting to a broker in the US in AWS.&lt;/li&gt;
&lt;li&gt;XDKs running across Europe, connecting to a broker deployed in Ireland AWS.&lt;/li&gt;
&lt;li&gt;XDKs running in a single location with an unreliable connection to the internet. We therefore connected the XDKs to a local edge gateway broker deployed onto a Dell Edge Gateway which in turn is connected to the event mesh through the edge broker running in Ireland in AWS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The actual applications and services such as CRM, Visualization, Analytics etc. are running in various locations in Europe, so we deployed a broker in AWS in Frankfurt and a broker in Azure in Paris.&lt;/p&gt;

&lt;p&gt;The event mesh is created by configuring each of the bridges between brokers to forward subscriptions and data as per the interaction diagram discussed before. We now have a low- latency, seamless, and global data and event distribution platform that allows us to implement these pub/sub, streaming, and queuing interactions.&lt;/p&gt;

&lt;p&gt;The next step was to onboard our technology partners to provide the dashboards, integration, and user applications for the platform. The following figure shows the various technologies and functions they fulfill, completing the picture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_05-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SpPkSSFO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_05-1-1024x484.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next sections, we briefly go through each component.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualizing the Event Mesh with SL RTView
&lt;/h2&gt;

&lt;p&gt;In order to monitor the message flow and connections within the event mesh itself, SL Corporation deployed a cloud-based monitoring system as you can see in the following screenshot:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0mPLoT3U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_06-1-1024x633.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0mPLoT3U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_06-1-1024x633.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This monitoring system collects information and statistics from the brokers via the &lt;a href="https://docs.solace.com/SEMP/Using-SEMP.htm"&gt;Solace Element Management Protocol or SEMP&lt;/a&gt;. SEMP is a RESTful interface that allows remote configuration and monitoring of brokers. In order to monitor brokers behind a firewall, in our case the on-premise broker running on the Dell Edge Gateway, we installed a “collector” module on the gateway itself which opens a HTTP/S connection to the cloud system.&lt;br&gt;&lt;br&gt;
RTView visualizes the event mesh as a whole and provides drill down into a single instance of a broker to access details about message rates, connection statistics, and various other metrics.&lt;/p&gt;

&lt;p&gt;The following screenshots shows a monitoring pane for MQTT connections of devices across the edge brokers and the message rates:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_07-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ILwSZUj1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_07-1-1024x649.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-Time IoT Data Visualization with SL RTView
&lt;/h2&gt;

&lt;p&gt;SL RTView is a configurable and versatile tool for all kinds of data visualization. We used RTView to also implement a visualization of the real-time IoT event data published from the XDKs.&lt;/p&gt;

&lt;p&gt;A real-time snapshot of the various sensor data from the XDK:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_08.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e-wGrPQu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_08-1024x542.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A time-series view of the XDK sensor data:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_09.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hZDmkZJ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_09-1024x541.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Analytics with Altair Panopticon
&lt;/h2&gt;

&lt;p&gt;Altair Panopticon is a streaming and visual analytics toolset. It enables users to program sophisticated business logic and data functions using a fully visual interface and publish dashboards to the web in minutes.&lt;/p&gt;

&lt;p&gt;Panopticon can directly subscribe to Solace events and we created a set of visualization dashboards to monitor XDKs in various use cases.&lt;/p&gt;

&lt;p&gt;Here we can see the XDK110 mounted on “slot trucks”:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_10.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UU95cZ7G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_10-1024x575.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next graph we can see a truck doing “normal” laps around the track. The gyro X and Y values are fairly low whilst the gyro Z values are more interesting. They show quite clearly how the truck races around the track, turning left and right.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_11.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BDXbiY2f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_11-1024x562.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It gets interesting when we observe a truck crashing off the track. In this case, the gyro X and Y values spike, as we can see in the following screenshot:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_12.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O-cuRdAQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_12-1024x602.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dell Boomi Solution Architecture
&lt;/h2&gt;

&lt;p&gt;Dell Boomi provides unified iPaaS platform to create full-fledged business applications and integration solutions in a hybrid cloud environment. We have used the following modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dell Boomi Flow &amp;amp; Integration to realize the Profile Management application and the logic to remotely control the XDKs&lt;/li&gt;
&lt;li&gt;Dell Boomi Hub to manage the reference data for the XDKs – the device Ids and their respective categorization&lt;/li&gt;
&lt;li&gt;Dell Boomi Integration to propagate Alerts into Salesforce Service Cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following picture shows the Dell Boomi solution architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_13-1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aMenXyz5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_13-1-1024x473.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Integration with Salesforce was implemented using Dell Boomi Integration. The following picture shows the flow definition for this integration:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_14.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2HTDy4Fe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_14-1024x596.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And when the streaming analytics module detects a car crash, a service case is automatically created in Salesforce:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_15.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V-q11LjK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_15-1024x681.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Tooling
&lt;/h2&gt;

&lt;p&gt;In order to decouple the development between the various teams and for testing and simulation purposes, we needed a few basic tools: an interactive MQTT pub/sub tool and event recording and playback tool.&lt;/p&gt;

&lt;p&gt;There are many tools out there to send and receive MQTT messages. We have chosen &lt;a href="http://workswithweb.com/mqttbox.html"&gt;MQTT Box&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can configure one or many connections to a Solace broker directly in the tool. All you need is the host, port, username, and password:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_16.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LVNwwBIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_16-1024x443.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this, you can add publishers and subscribers. Here is a screenshot of a subscriber to the metrics as sent by the XDK:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_17.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0DsYTwT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://solace.com/wp-content/uploads/2019/08/iot-prototype-blog-post_17.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Equally, you can use a publisher to send commands and configuration messages through the event mesh to one or many XDK devices.&lt;/p&gt;

&lt;p&gt;In order to facilitate the development of analytics and dashboards, we have also developed a simple event recorder and player. This allowed us to provide our partners with recorded data sets that they can play back at their leisure to develop and test their applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The entire project was developed over a period of about two months. We started with the implementation of the XDK application and once we understood the data and interactions that we could implement there, we created the API specifications for our partners to start working on their parts.&lt;/p&gt;

&lt;p&gt;However, as the project evolved, so did the ideas and requirements. By having the flexibility of the event brokers as the basis for all communication and interfaces, we incrementally refined the topic structure and event payloads as required without disrupting the on-going integration and development work.&lt;/p&gt;

&lt;p&gt;Another area that evolved over time was the requirement of where various XDKs are located and need to connect. We started with a single broker “event mesh” and over the course of the project, we added the broker on the Dell Edge Gateway as well as multiple regional edge brokers such as Ireland and US. Towards the end of the project, we also needed to integrate a home-grown analytics application running in Azure in France. This was equally seamless; we installed a new broker in Azure and created the bridge between the central broker and the new broker to feed the selected event streams to the application.&lt;/p&gt;

&lt;p&gt;In our view, this is really the key learning from this project. In order to incrementally build business and interaction logic and add new services to the platform, the concept of an event mesh using publish/subscribe with a clear topic taxonomy was key to success.&lt;/p&gt;

&lt;p&gt;It is obviously important to address real-world business applications in every project. However, we also need to make it interesting and fun! That is why we chose the race track as the demo system, combining both.&lt;/p&gt;

&lt;p&gt;We would also like to thank our partners for their invaluable and timely contributions to make this project a success. And a special thanks also to the Bosch team for sponsoring and supporting this particular part of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;As you may have gathered, we completely put aside two crucial aspects of an IoT platform: Device Management and Access Control. We are currently busy working on a management interface for the event mesh that can be used by a device management platform. When provisioning new device types and individual devices, the event mesh will be automatically configured to create the authorization and access control for the new devices on their respective edge brokers as well as the bridges to connect the new data streams.&lt;/p&gt;

&lt;p&gt;In upcoming articles, we’ll describe the details of the various APIs and also make the XDK application available on GitHub.&lt;/p&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/rapid-iot-prototyping-bosch-xdk110-event-mesh/"&gt;Rapid IoT Prototyping with the Bosch XDK110 and an Event Mesh&lt;/a&gt; appeared first on &lt;a href="https://solace.com"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>boshxdk110</category>
      <category>eventmesh</category>
      <category>prototyping</category>
    </item>
    <item>
      <title>How to Ensure the Success of Connected Vehicle Initiatives</title>
      <dc:creator>Ricardo Gomez-Ulmke</dc:creator>
      <pubDate>Mon, 24 Jun 2019 19:53:04 +0000</pubDate>
      <link>https://dev.to/solacedevs/how-to-ensure-the-success-of-connected-vehicle-initiatives-26nb</link>
      <guid>https://dev.to/solacedevs/how-to-ensure-the-success-of-connected-vehicle-initiatives-26nb</guid>
      <description>&lt;p&gt;The impact of connected vehicle initiatives on the automotive industry can’t be overstated. A &lt;a href="https://home.kpmg/content/dam/kpmg/cl/pdf/2017-01-kpmg-chile-advisory-global-automotive-survey.pdf" rel="noopener noreferrer"&gt;KPMG survey&lt;/a&gt; of auto executives found that 85% of executives agreed that the digital ecosystem of connected vehicles will generate higher revenues than the hardware of the car itself. To establish a leadership position in this fundamentally new market, car makers and those who provide supporting services need to understand the opportunities that exist, the challenges they face, and how to overcome them.&lt;/p&gt;

&lt;p&gt;In this piece I’ll explain all three, starting with the fundamental building blocks, or steps along the path, on which custom value can be built.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three kinds of information connected vehicles create and consume
&lt;/h2&gt;

&lt;p&gt;Before looking at the ways to build connected vehicle value, let’s look at three kinds of information connected vehicles generate and consume.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Drive data&lt;/strong&gt;. Connected vehicle systems can generate helpful information about not only the location and speed of the vehicle, but also the position of the accelerator, brake pedal, steering wheel, and turn signals, along with streaming data about fuel consumption, for example.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagnostics data&lt;/strong&gt;. This includes periodic measurements taken to ascertain things like the battery charge status, fluid levels, and tire pressure, along with pressure and temperature readings from the engine, transmission and other systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instructional data&lt;/strong&gt;. This kind of information in connected vehicle scenarios flows the other way. The ability to send commands that affect the behavior of vehicles, such as remotely locking or unlocking the car, changing the color of LEDs, or displaying a vehicle-specific alert, offers tremendous value.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Building blocks of connected vehicle value
&lt;/h2&gt;

&lt;p&gt;Now let’s look at how you can leverage those three kinds of information to build value for drivers.&lt;/p&gt;

&lt;p&gt;The first building block of potential value in connected vehicle initiatives is offline, after-the-fact analytics and reporting. By that I mean collecting data from vehicles not in real-time from anywhere, but when they are parked at home, for example. The goal of such services is to look at everything that happened to the connected car, what was done about it, and what actions might have led to a better outcome.&lt;/p&gt;

&lt;p&gt;The next level of value is achieved when you can implement real-time monitoring and interactions. By that I mean getting a real-time view of what’s happening with a given vehicle, and having the ability to improve outcomes this time by remotely controlling some aspect of the vehicle’s operation and/or alerting a 3rd party of a situation, such as a flat tire, in which a driver may need assistance.&lt;/p&gt;

&lt;p&gt;The third step is to move beyond mere monitoring and into the realm of event-driven alerting and even the ability to predict problems before they occur. The power to predict and proactively address component degradation or failures before they affect the efficiency or operation of the vehicle gives vehicle makers a powerful way to keep customers happy. An example could be the prediction of a component failure within the next 100 miles, which triggers pro-active communication and assistance to replace/repair said component.&lt;/p&gt;

&lt;p&gt;The fourth building block of connected vehicle value lies in the ability to federate information and events across an ecosystem of companies that provide services in areas such as entertainment, navigation, maintenance, breakdown assistance, insurance and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the value framework
&lt;/h2&gt;

&lt;p&gt;As with any transformational and innovation project, connected vehicle initiatives demand that you create a strategic roadmap that defines what will be done by which department to what end. In this case, a roadmap for the requisite cooperation between the hardware and software engineering teams working on the vehicle itself, the digital services division, the IT divisions delivering the applications, and the production and post-sales divisions.&lt;/p&gt;

&lt;p&gt;This roadmap should clearly communicate the vision and strategy, the phases of the project, and the approach and goal of each phase. It’s equally important to understand where the value is generated in the journey of building a connected vehicle platform. The following figure shows such a value framework, combining value creation phases with business services and underlying IT building blocks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F06%2FConnected-vehicle-initiative-value-framework.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F06%2FConnected-vehicle-initiative-value-framework.png" alt="A diagram showing the connected vehicle initiative framework -- including"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This Connected Vehicle Initiative Value Framework example combines the four levels described earlier with increasing value delivered from left to right. Note also that as soon as the level &lt;strong&gt;Interactive&lt;/strong&gt; is reached, information flow must become real-time and the vehicle must always be connected.&lt;/p&gt;

&lt;p&gt;To augment our understanding of the various phases further, let me offer a set of simple questions each phase is trying to address:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reactive&lt;/strong&gt; : what happened and what can we do better next time?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive&lt;/strong&gt; : how can I remotely control the operations of a vehicle?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictive &amp;amp; Proactive&lt;/strong&gt; : what is happening right now and what may happen next?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Federated&lt;/strong&gt; : how can I federate data and events across the ecosystem to create the best possible outcomes for the vehicle owner/driver?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Overcoming infrastructure challenges
&lt;/h2&gt;

&lt;p&gt;Connected vehicle initiatives present considerable challenges. You’re dealing with massive numbers of complex machines being operated at high speed and in close quarters by drivers of varying skill levels, on roadways of varying quality, and in all kinds of weather conditions.&lt;/p&gt;

&lt;p&gt;Putting in place an infrastructure that can handle the efficient, event-driven, real-time data distribution it takes to add connected vehicle value to that chaos isn’t easy, but it is possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vehicle
&lt;/h2&gt;

&lt;p&gt;First, let’s look at the vehicle itself. The most obvious challenge is the number of cars you’ll want to connect, usually measured in the millions. The second challenge, then, is that many interactions with connected vehicles require low latency. If somebody tries to unlock their car door with the app on their phone, for example, their patience will be measured in seconds.&lt;/p&gt;

&lt;p&gt;Complicating the need to connect many vehicles with low latency is the fact that because cars are frequently on the move, they experience varying levels of connectivity – including periods of complete disconnection. Your job is twofold: manage connections in such a way that you can a) send and receive low-latency communications to and from vehicles whenever possible, and b) deal with slow connections and disconnectedness in a way that ensures the eventual delivery of critical data, alerts and instructions.&lt;/p&gt;

&lt;p&gt;The final challenge at the vehicle end of the equation is security. I’m not just talking about the security of the vehicle itself, but your ability to ensure the security and safety of drivers and passengers. This entails collecting and acting on important events in a timely manner, and making sure information about the location and operation of every vehicle is kept private. A fine-grained trust framework must be established for each type of information, and the owner of that data must have full control over the sharing of said data to ensure only authorized parties can see and process it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regional edge network
&lt;/h2&gt;

&lt;p&gt;I refer to the network of edge nodes that vehicles connect to as a regional edge network. These edge nodes are geographically distributed and are placed as close as possible to the actual vehicles to minimize latency and connectivity issues. Each node manages a certain number of connections and aggregates connections within a region. A region could be U.S. Northeast, southern Germany, etc. These nodes aggregate connections and messages from a subset of the global vehicle fleet and are responsible for routing events, data and instructions to and from the IT applications and individual vehicles.&lt;/p&gt;

&lt;p&gt;It’s essential that these nodes can handle millions of concurrent connections and the volume of messages that entails, and deal with the recurring connect and disconnect behavior caused by the mobile networks’ availability.&lt;/p&gt;

&lt;p&gt;Let’s imagine a tunnel – vehicles lose connectivity when they enter the tunnel, and must instantly reconnect when they emerge. When you think about all the vehicles entering and exiting each tunnel, and the number of tunnels, this alone generates a lot of disconnect/reconnect behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application platforms
&lt;/h2&gt;

&lt;p&gt;In a globally connected vehicle system, applications and services may be deployed within the edge network, datacenters and any number of public clouds. The regional edge nodes now need to be wired up to be able to distribute data and events to each of these applications, wherever they are deployed.&lt;/p&gt;

&lt;p&gt;In my experience, as the platform evolves and value is created through its phases, applications are added, removed, duplicated and re-deployed as and where the need for efficiency and latency requires it. Hence, these wirings from edge nodes to applications must be able to handle the aggregation of potentially all messages and events from all vehicles, and do so dynamically – i.e., automatically routing data to wherever there is a consumer without the need to re-wire the entire infrastructure.&lt;/p&gt;

&lt;p&gt;So the routing challenges move from individual vehicles to the ability to aggregate massive numbers of events and data, and route them globally to distributed applications deployed across hybrid cloud infrastructure that includes public cloud, private cloud and on-premises environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ecosystem edge network
&lt;/h2&gt;

&lt;p&gt;To achieve the highest level of value creation, the platform must also federate data and events across a network of service providers. This ecosystem is, by its nature, heterogeneous from a deployment model and technology perspective, which means it must support diverse APIs and protocols and integration with established SaaS providers. This introduces the need for edge nodes that are seamlessly interconnected to the application services regardless of deployment location.&lt;/p&gt;

&lt;p&gt;However, this is not the main challenge. Our goal is to create value for the owner and driver of the vehicles, and this can only be achieved by creating a trust framework that balances the need to a) share data with complete transparency and b) respect individual privacy. Without a verifiable and auditable data flow combined with a detailed consent framework, trust cannot be established.&lt;/p&gt;

&lt;p&gt;From a technology perspective, this requires the infrastructure to handle identities of not only vehicles, organizations, and individuals but also of data items. And access to each data item must be managed and controlled at scale – including granting of access as well as revoking of access, and reporting thereof. Of course, metering and billing records complement data federation to monetize external service provisions.&lt;/p&gt;

&lt;p&gt;A great example of the complexity of data sharing is the ‘delivery to the trunk’ scenario. Here, a consumer chooses their car as the delivery address for their purchases. This implies a very tight control &amp;amp; access framework across the entire value chain of the process: the e-commerce company shares the car information with the delivery company that, in turn, shares it with the delivery driver. However, the driver may only have access to open the trunk when a) they are close to the car, e.g., within a geo-fence of 10m, and b) within the specified delivery time range. Access control here is dynamic, where authorization by the owner of the car is given only under certain ‘situational’ conditions.&lt;/p&gt;

&lt;p&gt;The following figure summarizes the four swim lanes, the different requirements in each, and the need for end-to-end routing:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F06%2FConnected-vehicle-initiative-sequence-flow.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F06%2FConnected-vehicle-initiative-sequence-flow.jpg" alt="A diagram showing the sequence of events for a connected vehicle initiative: Vehicle, Regional Edge Network, Application Platforms, Eco-System Edge Network"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Developing valuable connected vehicle solutions
&lt;/h2&gt;

&lt;p&gt;There are two key elements to developing connected vehicle solutions. The first is bridging the gap between the world of applications and the world of automobiles, i.e., building bridges between the two environments so information and events can flow seamlessly between vehicles and the applications and cloud services they increasingly rely on for connected vehicles services.&lt;/p&gt;

&lt;p&gt;The second is putting in place the data distribution infrastructure that leverages that integration to efficiently route massive amounts of information to and from connected vehicles. Let’s take a closer look at each of these requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrating the application and automotive landscapes
&lt;/h2&gt;

&lt;p&gt;Connected vehicle programs need to integrate many components and layers ranging from the enterprise IT landscape to the IoT-based world of connected vehicles themselves. This includes the following kinds of systems, sensors and devices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Business applications&lt;/strong&gt; : maintenance, fleet management, insurance, maps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration&lt;/strong&gt; : APIs and protocols, streaming APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data infrastructure&lt;/strong&gt; : reference data, time series data, streaming analytics, machine learning, location services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Management infrastructure&lt;/strong&gt; : remote management, security and access, ID/entitlements, privacy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connected vehicles&lt;/strong&gt; : cars, buses, trucks, trains&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Meeting the data distribution needs of connected vehicle programs
&lt;/h2&gt;

&lt;p&gt;The data distribution infrastructure for large-scale connected vehicle deployments needs to meet the following four requirements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It must be a flexible, self-learning system that intelligently routes information along the network path to ensure prompt, reliable delivery to its destination.&lt;/li&gt;
&lt;li&gt;It must enable the easy integration of legacy and emerging technologies by supporting all kinds of communications protocols (e.g., AMQP, JMS, MQTT, REST and WebSocket) and link systems running in diverse cloud and on-premises computing environments.&lt;/li&gt;
&lt;li&gt;It must facilitate the centralized deployment and management of hundreds or thousands of nodes to support massive scale, and do so with enterprise-grade performance, robustness and scalability.&lt;/li&gt;
&lt;li&gt;The system must offer the required access and control of data flows to create the required trust as well as the auditing, metering and billing ‘hooks’ to monetize the offerings.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The only technology that meets these requirements is what I call a hybrid IoT event mesh – an infrastructure layer that enables a connected vehicle platform to evolve along the discussed value framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In this article I have defined a roadmap using a value framework to articulate how value, services, the ecosystem, and technology work hand-in-hand to create a successful connected vehicle initiative. I have broken it down into a set of infrastructure challenges within the four swim lanes: the vehicle, the regional edge network, the application platform, and the ecosystem edge network. I have offered an initial assessment of how a trust framework can be established to make people comfortable with the platform. Finally, I described how an &lt;a href="https://dev.to/what-is-an-event-mesh/"&gt;event mesh&lt;/a&gt; is the ideal foundation for a connected vehicle platform.&lt;/p&gt;

&lt;p&gt;When choosing the underlying technology for your connected vehicle initiative, consider the following questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Is it dynamic?&lt;/strong&gt; Does it support dynamic routing so it can easily scale up and down, and adapt to outages?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is it open?&lt;/strong&gt; Does it support open APIs, communications protocols and integration capabilities?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is it simple?&lt;/strong&gt; Can you easily manage, scale and secure an event mesh consisting of hundreds or thousands of nodes?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can answer all three questions with an emphatic &lt;strong&gt;Yes!&lt;/strong&gt; , you’re on the right path.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/connected-vehicle-initiatives/" rel="noopener noreferrer"&gt;How to Ensure the Success of Connected Vehicle Initiatives&lt;/a&gt; appeared first on &lt;a href="https://solace.com" rel="noopener noreferrer"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>solace</category>
      <category>iot</category>
      <category>connectedvehicle</category>
    </item>
  </channel>
</rss>
