{"id":2789,"date":"2018-12-01T18:59:02","date_gmt":"2018-12-01T13:29:02","guid":{"rendered":"http:\/\/navveenbalani.dev\/?p=2789"},"modified":"2019-12-18T19:22:36","modified_gmt":"2019-12-18T13:52:36","slug":"internet-of-things-core-platform-layer","status":"publish","type":"post","link":"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/","title":{"rendered":"Internet of Things &#8211; Core Platform Layer"},"content":{"rendered":"\n<p>This article is part of IoT Architecture Series &#8211; <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/.\">https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/.<\/a><\/p>\n\n\n\n<h3><a>Core Platform Layer<\/a><\/h3>\n\n\n\n<p>The core\nplatform layer provides a set of capabilities to connect, collect,\nmonitor and control millions of devices. Let\u2019s look at each of the components\nof the core platform layer.<\/p>\n\n\n\n<h4><a>Protocol Gateway<\/a><\/h4>\n\n\n\n<p> An Enterprise IoT platform typically supports one protocol end to end like AMQP or MQTT as part of the overall stack.&nbsp; However in an IoT landscape, where there are no standardized protocols where all vendors can converge on, an Enterprise IoT stack needs to provide support for commonly used protocols, industry protocols, and support for evolving standards in future. <\/p>\n\n\n\n<p>One option is to use a device gateway that\nwe had discussed earlier to convert device proprietary protocols to the\nprotocol supported by the platform for communication, but that may not always\nbe possible as devices may connect directly or the device gateway may not\nsupport the protocol supported by the IoT stack. In order to support handling multiple protocols, a protocol gateway\nis used, which does the conversion of the protocol supported by your IoT stack.\nBuilding an abstraction like protocol gateway would make it easier to support\ndifferent protocols in future.<\/p>\n\n\n\n<p>The protocol\ngateway layer provides connectivity to the devices over protocols\nsupported by the IoT stack. Typically the communication is channelized to the\nmessaging platform or middleware like MQTT or AMQP. The protocol gateway layer can also act as a facade for supporting\ndifferent protocols, performing conversions across protocols and handing off\nthe implementation to corresponding IoT messaging platform.<\/p>\n\n\n\n<h4><a>IoT Messaging Middleware<\/a><\/h4>\n\n\n\n<p>Messaging middleware is a software or an\nappliance that allows senders (publishers) and receivers (consumer\u2019s consuming\nthe information) to distribute messages in a loosely coupled manner without\nphysically connected to each other. A message middleware allows multiple\nconsumers to receive messages from a single publisher,\nor a single consumer can send messages to multiple senders. <\/p>\n\n\n\n<p>Messaging middleware is not a new concept; it has been used as a backbone for message communication between enterprise systems, as an integration pattern with various distributed systems in a unified way or inbuilt as part of the application server. In the context of IoT, the messaging middleware becomes a key capability providing a highly scalable, high-performance middleware to accommodate a vast number of ever-growing connected devices. Gartner, Inc. forecasts that 4.9 billion connected things will be in use in 2015 and will reach 25 billion by 2020. <\/p>\n\n\n\n<p>The IoT messaging middleware platform needs\nto provide various device management aspects like registering the devices,\nenabling storage of device meta-model, secure connectivity for devices, storage\nof device data for specified interval and dashboards to view connected devices.\nThe storage requirements imposed by an IoT platform is quite different from a\ntraditional messaging platform as we are looking at terabytes of data from the\nconnected devices and at the same time ensuring high performance and fault\ntolerance guarantees. The IoT messaging middleware platform typically holds the device data for the specified\ninterval and in-turn a dedicated storage service is used to scale, compute and\nanalyze information. <\/p>\n\n\n\n<p>The device meta-model that we mentioned\nearlier is one of the key aspects for an\nEnterprise IoT application. A device meta-model can be visualized as a set of metadata about the device, parameters\n(input and output) and functions (send, receive) that a device may emit or\nconsume. By designing the device meta-model as part of the IoT solution, you\ncould create a generalized solution for each industry\/verticals which abstracts\nout the dependency between data send by the devices and data used by the IoT\nplatform and services that work on that\ndata. You can even work on a virtual device using the device model and build\nand test the entire application, without physically connected the device. We would\ntalk about the device meta-model in detail in the solution section.<\/p>\n\n\n\n<p>All the capabilities of the IoT stack,\nstarting from the messaging platform right up to the cognitive platform are\ntypically made available as services over the cloud platform, which can be\nreadily consumed to build IoT applications.<\/p>\n\n\n\n<p>We would revisit the topic in detail in\nChapter 3 when we talk about the IoT\ncapabilities offered by popular cloud vendors and using open source software.<\/p>\n\n\n\n<h4><a>Data Storage<\/a><\/h4>\n\n\n\n<p> The data storage component deals with storage of continuous stream of data from devices. As mentioned earlier we are looking at a highly scalable storage service which can storage\nterabytes of data and enable faster retrieval of data. The data needs to be\nreplicated across servers to ensure high availability and no single point of\nfailure.<\/p>\n\n\n\n<p>Typically a NoSQL database or high\nperformance optimized storage is used for storing data. The design of data\nmodel and schema becomes a key to enable faster retrieval, perform computations\nand makes it easier for down processing systems, which use the data for analysis. For\ninstance, if you are storing data from a connected car every minute, your data\ncan be broken down in ids and values, the id field would not change for a\nconnected car instance, but values would keep on changing \u2013 for instance like\nspeed =60 km\/hour, speed =65 km\/hour, etc. In that case instead of\nstoring key=value, you can store key=value1, value2 and key=timeint1, timeint2\nand so on. The data represents a sequence of values for a specific attribute\nover a period of time. This concept is referred to as time series, and database, which supports these requirements, is called as Time Series database. You could\nuse NoSQL databases like MongoDB or Cassandra and design your schema in a way\nthat it is optimized for storing time\nseries data and doing statistical computations.&nbsp;\nNot all use cases may require the use of time series database, but it is an important concept to\nkeep in mind while designing IoT applications.<\/p>\n\n\n\n<p>In the context of an enterprise IoT application, the data storage layer should also support storage and handling of unstructured and semi-structured information. The data from these sources (structured, unstructured and semi-structured) can be used to correlate and derive insights. For instance, information data from equipment manual (unstructured text of information) can be fed into the system, and sensor data from the connected equipment can be correlated with the equipment manuals for raising critical functional alerts and suggesting corrective measures. The IoT messaging middleware service usually provides a set of configurations to store the incoming data from the devices automatically into the specified storage service. <\/p>\n\n\n\n<p>In a future article , I would talk about various storage service options provided by cloud providers for storing a massive amount of data from connected devices.<\/p>\n\n\n\n<h4><a>Data aggregation and filter<\/a><\/h4>\n\n\n\n<p>The IoT core platform deals with raw data\ncoming from multiple devices, and not all\ndata needs to be consumed and treated equally by your application.&nbsp; We talked about device gateway pattern earlier which can filter data before sending\nit over to the cloud platform. Your device gateway may not have the luxury and\ncomputation power to store and filter out volumes of data or be able to filter\nout all scenarios. In some solutions, the devices can directly connect to the\nplatform without a device gateway. As part of your IoT application, you need to\ndesign this carefully as what data needs to be\nconsumed and what data might not be relevant in that context. The data\nfilter component could provide simple rules to complex conditions based on your\ndata dependency graph to filter out the incoming data. The data mapper\ncomponent is also used to convert raw data from the devices into an abstract\ndata model which is used by rest of the components.<\/p>\n\n\n\n<p>In some cases, you need to contextualize\nthe device data with more information, like aggregating the current data from\ndevices with existing asset management software to retrieve warranty\ninformation of physical devices or from a weather station for further analysis.\nThat\u2019s where the data\naggregation components come in which\nallows to aggregate and enrich the incoming data.&nbsp; The aggregation component can also be\npart of the messaging stream processing framework that we will discuss in the\nnext section, but instead of using complex flows for just aggregating information,\nthis requirement could be easily handled without much overhead using simplified\nflows and custom coding, without using a stream processing infrastructure. <\/p>\n\n\n\n<h3><a>Analytics Platform Layer<\/a><\/h3>\n\n\n\n<p>The Analytics Platform layer provides a set of key capabilities to analyze large volumes of information, derive insights and enable applications to take required action.<\/p>\n\n\n\n<h4><a>Stream Processing<\/a><\/h4>\n\n\n\n<p>Real-time stream processing is about processing streams of data from devices (or\nany source) in real-time, analyze the information, do computations and trigger\nevents for required actions.&nbsp; The stream\nprocessing infrastructure directly interacts with the IoT Messaging Middleware component\nby listening to specified topics. The stream processing infrastructure acts as\na subscriber, which consumes messages (data from devices) arriving continuously\nat the IoT Messaging Middleware layer. &nbsp;&nbsp;<\/p>\n\n\n\n<p>A typical requirement for stream processing\nsoftware includes high scalability, handling a large volume of continuous data,\nprovide fault tolerance and support for interactive queries in some form like\nusing SQL queries which can act on the stream of data and trigger alerts if\nconditions are not met.<\/p>\n\n\n\n<p>Most of the big data implementations\nstarted with Hadoop which supported only batch processing, but with the advent\nof various real-time streaming technologies and changing the requirement of\ndealing with massive amount of data in real-time, applications are now\nmigrating to stream based technology that can handle data processing in real-time.\nStream processing platform like Apache Spark Streaming enables you to write\nstream jobs to process streaming data using Spark API. It enables you to\ncombine streams with batch and interactive queries. Projects already using\nexisting Hadoop-based batch processing\nsystem can still take the benefit of real-time stream processing by combining\nthe batch processing queries with stream based interactive queries offered by\nSpark Streaming. <\/p>\n\n\n\n<p>The stream processing engine acts as a data processing backbone which can hand off streams of data to multiple other services simultaneously for parallel execution or to your own custom application to process the data. For instance, a stream processing instance can invoke a set of custom applications, one which can execute complex rules and other invoking a machine learning service.<\/p>\n\n\n\n<h4><a>Machine Learning<\/a><\/h4>\n\n\n\n<p>Following is the Wikipedia definition of\nMachine Learning \u2013<\/p>\n\n\n\n<p><em>\u201cMachine\nlearning explores the study and construction of algorithms that can learn from\nand make predictions on data.\u201d<\/em><\/p>\n\n\n\n<p>In simple terms, machine learning is how we\nmake computers learn from data using various algorithms without explicitly\nprogramming it so that it can provide the\nrequired outcome \u2013 like classifying an email as spam or not spam or predicting\na real estate price based on historical values and other environmental factors.<\/p>\n\n\n\n<p>Machine learning types are typically classified into three broad categories <\/p>\n\n\n\n<ul><li>Supervised learning \u2013 In this\nmethodology we provide labeled data (input and desired output) and train the\nsystem to learn from it and predict outcomes. A\nclassic example of supervised learning is your Facebook application\nautomatically recognizing your friend\u2019s photo based on your earlier tags or\nyour email application recognizing spam automatically.<\/li><li>Unsupervised learning \u2013 In this\nmethodology, we don\u2019t provide labeled data and leave it to algorithms to find\nhidden structure in unlabeled data. For\ninstance, clustering similar news in one bucket or market segmentation of users\nare examples of unsupervised learning.<\/li><li>Reinforcement learning \u2013\nReinforcement learning is about systems learning by interacting with the\nenvironment rather than being taught. For instance, a computer playing chess\nknows what it means to win or lose, but how to move forward in the game to win\nis learned over a period of time through\ninteractions with the user.<\/li><\/ul>\n\n\n\n<p> Machine learning process typically consists of 4 phases as shown in the figure below \u2013 understanding the problem definition and the expected  business outcome, data cleansing, and analysis, model creation, training and evaluation. This is an iterative process where models are continuously refined to improve its accuracy. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"241\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-1024x241.jpg\" alt=\"\" class=\"wp-image-2791\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-1024x241.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-300x71.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-768x181.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml.jpg 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>From an IoT perspective, machine learning models are developed based on different industry vertical use cases. Some can be common across the stack like anomaly detection and some use case specific, like condition based maintenance and predictive maintenance for manufacturing related use cases.<\/p>\n\n\n\n<h4><a>Actionable Insights (Events &amp; Reporting)<\/a><\/h4>\n\n\n\n<p>Actionable Insights, as part of Analytics\nPlatform layer, are set of services that make it easier for invoking the\nrequired action based on the analyzed data. The action can trigger events; call\nexternal services or update reports and dashboards in real-time.&nbsp; For example, invoking a third party service\nusing an HTTP\/REST connector for creating\na workflow order based on the outcome of\nthe condition based maintenance service or invoking a single API for mobile\npush notification across mobile devices to notify maintenance events.\nActionable insights can also be configured\nfrom real-time dashboards that enable you to create rules and actions that need\nto be triggered.<\/p>\n\n\n\n<p>The service should also allow your application custom code to be executed to carry out desired functionality. Your custom code can be uploaded to the cloud or built using the runtimes provided and integrate with rest of the stack through the platform APIs.<\/p>\n\n\n\n<h3><a>Cognitive Platform Layer<\/a><\/h3>\n\n\n\n<p>Let&#8217;s first understand what is cognitive\ncomputing. Cognitive computing are\nsystems that are designed to make computers think and learn like the human brain. Similar to an evolution of a human\nmind from a newborn to teenager to an\nadult, where new information is learned and existing information augmented, the\ncognitive system learns through the vast amount of information fed to it. Such a\nsystem is trained on a set of information or data\nso that it can understand the context and help in making informed decisions.<\/p>\n\n\n\n<p>For example, if you look at any learning\nmethodology, a human mind learns and understands the context. It can answer questions based on learnings and\nalso make informed judgments based on prior experiences. Similarly, cognitive systems are modeled to learn from past set of reference\ndata set (or learnings) and enable users to make informed decisions. Cognitive\nsystems can be thought of as non-programming\nsystems which learn through the set of information, training, interactions and\na reference data set.<\/p>\n\n\n\n<p>Cognitive\nsystems in the context of IoT would play a key role in future. Imagine ten years down the line where every piece of system is connected to the internet and\nprobably an integral part of everyday lives and information being shared\ncontinuously, how you would like to interact with these smart devices which\nsurround you. It would be virtually talking to smart devices and devices\nresponding to you based on your action and behavior.<\/p>\n\n\n\n<p>A good example can be a connected car. As soon as you enter the car, it should recognize you automatically, adjust your car seats, start the car and start reading your priority emails. This is not programmed but learned over time. The car over a period of time should also provide recommendations on how to improve the mileage based on your driving patterns. In future, you should be able to speak to devices through tweets, spoken words, gestures and devices would be able to understand the context and respond accordingly. For instance, a smart device as part of connected home would react differently as compared to devices in a connected car.<\/p>\n\n\n\n<p>For a connected\nhome, a cognitive IoT system can learn from you, set things up for you based on\nyour patterns and movements, be it waking you up at the right time, start your\ncoffee vending machines, sending you a WhatsApp message to start the washing\nmachine if you missed to start it based on your routine or take care of the\nhome lighting system based on your family preferences.\nImagine putting a smart controller and set of devices around your home, which\nobserves you over a period of time and\nstart making intelligent decisions on Day 10 and continuously learn from you\nand your family interactions.<\/p>\n\n\n\n<p>From an implementation perspective, at a\nvery high level, building a cognitive platform requires a combination of\nvarious technologies like machine learning, natural language processing,\nreinforcement learning, domain adoption through various techniques and\nalgorithms apart from the IoT stack capabilities that we have discussed\nearlier. The cognitive platform layer should enable us to analyze structured,\nsemi-structured and unstructured information, perform correlations, and derive\ninsights.<\/p>\n\n\n\n<p>This is one of the areas where we would see a lot of innovation and investment happening in future and would be a key differentiator for connected products and extension to one\u2019s digital lives.&nbsp; <\/p>\n\n\n\n<h3><a>Solutions Layer<\/a><\/h3>\n\n\n\n<p>This section will discuss industrial or consumer applications built on top of the IoT\nstack leveraging the various services (messaging, streaming, machine learning, etc.) offered by the IoT stack.<\/p>\n\n\n\n<p>Solutions can be broken down into two parts \u2013 Solution Templates and Applications. The following diagram shows the concept of Solution Templates and Applications.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-72.png\" alt=\"\" class=\"wp-image-2792\" width=\"450\" height=\"300\"\/><\/figure>\n\n\n\n<p>Solution Templates are a common set of services which are developed for specific or generalized use case that provides a head start to build IoT applications and is extended to build custom IoT applications. Building an IoT application requires a common set of tasks and services, configurations of components via dashboard or APIs and the entire process can be simplified and abstracted through the use of solution templates. The key component of a solution template is the abstract data model. The solution\u2019s abstract data model is a combination of device data model that we discussed earlier in IoT Messaging Middleware section plus your application data model specific to that domain\/industry\/vertical use case. The services from the solution template use the abstract data model for communication, instead of directly dealing with data from sensors. The abstract data model is different for different industries. A connected car abstract data model would be different from connected-home, but if the  abstract data model is properly envisioned\nand designed, it can provide the much-needed\nabstraction between devices and platforms. <\/p>\n\n\n\n<p>As an example, for a connected car\nsolution, the abstract data model could be a vehicle&#8217;s runtime data + GPS data\n+ asset data of the vehicle, which constitutes the device meta-model and the\napplication data model. The abstract data model then can be used for various\nother connected car use cases. It is more like creating a template that can be applied to\ndifferent connected solutions within the same domain or industry. For example,\na connected vehicle solution for sedan may be different for an SUV. But a\ncommon abstract data model, to some extent,\ngives the basic connected car functionality applicable to all connected cars\nirrespective of model or make. Some examples of solution templates could be\nremote monitoring, predictive maintenance or geospatial analysis.<\/p>\n\n\n\n<p>One can use solution templates to build an application based on customer requirements. Please note a predictive maintenance requirement would be different for each industry, the devices, and equipment across manufacturing plants that needs to be connected would be different, data from devices would be totally different, the historical data would be different and lot of effort would be required to just connect and integrate the manufacturing equipment to the platform. However, the steps required building a predictive maintenance system should be pretty much the same. For instance, it would require working with existing asset management solutions to identify master data for equipment, connect to multiple data sources to extract, cleanse normalize, aggregate the data (for instance the data from historical database) and convert it to a form which can be consumed by services (the abstract model) and develop machine learning models which uses the abstract model to predict outcomes. All these common steps and services can be abstracted into a solution template and application provider can use this template for providing implementations or integrations based on the requirements. <\/p>\n\n\n\n<p>Let\u2019s take another\nexample, a manufacturing company already knows what parameters are required for\nservicing an equipment, what information needs to be monitored, what is\nremaining lifecycle of the machinery (not on actual, but based on when it was\nbought) and what are the external factors (temperature, weather, etc.) which\ncan cause a machine to possibly fail. This information\ncan be easily turned into an abstract\ndata model. Machine learning models can be\ndeveloped and executed which uses this abstract data model to predict\nmachinery failures. The only task remaining would be to map the data from the\nsensors to the abstract model. The abstract data model provides a generic\nabstraction of the data dependency between devices and the IoT platform.<\/p>\n\n\n\n<p>However, existing platform and solutions in the market are far from the concept of building solutions templates, which build on the abstract data model due to multiple factors \u2013 heterogeneity of devices, domain expertise, and integration challenges. In future, not just the platform, but the solution templates and applications being offered would be a key differentiator between various IoT cloud offerings. An IoT cloud provider would enter into partnership with manufacturing unit and system integrators to build viable, generic and reusable solutions. <\/p>\n\n\n\n<h3><a>IoT Security and Management<\/a><\/h3>\n\n\n\n<p>Building and deploying an end-to-end enterprise IoT application is a complex process. There are multiple players involved (hardware providers, embedded device manufacturers, network providers, platform providers, solution providers, system integrators) which increase the complexity of integration, security, and management. To address the complexity holistically, an enterprise IoT stack needs to provide a set of capabilities which would ease the overall process and take care of end to end cross cutting concerns like security and performance. In this section, we will talk about key aspects at a minimum, which should be addressed by an enterprise IoT stack.<\/p>\n\n\n\n<p><strong>Device Management<\/strong><\/p>\n\n\n\n<p>Device management includes aspects like\ndevice registration, secure device provisioning and access from device to cloud platform and cloud platform to device, monitoring and administration,\ntroubleshooting and pushing firmware and software updates to devices including\ngateway devices. A device gateway might also include local data storage and\ndata filter component as discussed earlier, which needs to be updated in case of new versions or support\npatches.<\/p>\n\n\n\n<p>An enterprise IoT platform should provide\nadministration console and\/or APIs to\nallow devices to register on the platform securely. The device registration capability should allow fine-grained access and permissions on what operations the device\ncan carry out in the context of that application. Some devices may require only\none-way communication from cloud to device for handling firmware updates and some\nothers would need a bidirectional communication like gateways. Some devices may\nonly have read access while some device can post messages to the platform. The\nsecurity aspects should provide configuration related security as well as\nsecurity over the specified protocol. For instance, even if an intruder gets access to the devices, the intruder may\nnot be able to post the messages to the platform. Device SDKs should provide\nlibraries that are safer to access thereby ensuring that there is no\nvulnerability in the communication process.<\/p>\n\n\n\n<p><strong>Monitoring and administration<\/strong>  <\/p>\n\n\n\n<p>Monitoring and administration are about managing the lifecycle of the device. The lifecycle operations include register, start, pause, stop activities and the ability to trigger events\/commands to and from devices. A pause state could be a valid requirement in use cases like a health tracking devices as opposed to a connected car. The ability to add custom states based on the requirements should be a part of the monitoring and administration capabilities. Monitoring should also capture various parameters to help troubleshoot devices like device make, software installed, library installed, last connected date, last data sent, storage available, current status, etc. For instance, a device gateway may have stopped functioning due to it running out of storage space. This could  happen if the remote synchronization\nservice was not running to transfer out\nthe storage data from the device and clear the space.&nbsp; Monitoring can also identify suspicious\nactivity, and therefore needs a mechanism to address it.<\/p>\n\n\n\n<p>Lastly, the device management should provide capabilities to update the firmware, software and dependent libraries on\nthe devices securely through administrative commands or auto-update features. Deploying device updates across millions\nof devices still needs to be solved at large. In next section, we would talk\nabout various deployment options.<\/p>\n\n\n\n<p><strong>Deployment\n<\/strong><\/p>\n\n\n\n<p>Deployment of IoT applications needs to be looked at holistically, right from IoT devices, networks, and topology, cloud services and end solutions and taking care of end-to-end security. We are already seeing a lot of partnership in this space, where device manufacturers are partnering with cloud providers that enable devices to register with the cloud provider in a secured way. The deployment and management of devices is an area that needs a lot of attention and innovations and we feel the next investments would happen in this space. This would include providing an end to end set of tools and environment to design and simulate connected products, deployment, and management of millions of devices, using docker images for device updates, testing network topologies to services and solutions which build up the IoT application. <\/p>\n\n\n\n<p>This completes our architecture series.<a href=\"https:\/\/navveenbalani.dev\/index.php\/applications\/internet-of-things-application-of-iot-in-manufacturing\/\"> In the next article, we will look at Applications of IoT in various industries<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article is part of IoT Architecture Series &#8211; https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/. Core Platform Layer The core platform layer provides a set of capabilities to connect, collect, monitor and control millions of devices. Let\u2019s look at each of the components of the core platform layer. Protocol Gateway An Enterprise IoT platform typically supports one protocol end to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2792,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,156],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.0.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Internet of Things - Core Platform Layer - Current and Future Technology Trends by Navveen Balani<\/title>\n<meta name=\"description\" content=\"Internet of Things - Core Platform Layer - Articles\" \/>\n<link rel=\"canonical\" href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Internet of Things - Core Platform Layer - Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"og:description\" content=\"Internet of Things - Core Platform Layer - Articles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/\" \/>\n<meta property=\"og:site_name\" content=\"Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-01T13:29:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-18T13:52:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-72.png\" \/>\n\t<meta property=\"og:image:width\" content=\"333\" \/>\n\t<meta property=\"og:image:height\" content=\"259\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"21 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/navveenbalani.dev\/#website\",\"url\":\"https:\/\/navveenbalani.dev\/\",\"name\":\"Current and Future Technology Trends by Navveen Balani\",\"description\":\"Current and Future Technology Trends by Navveen Balani\",\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/navveenbalani.dev\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/image-72.png\",\"width\":333,\"height\":259},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#webpage\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/\",\"name\":\"Internet of Things - Core Platform Layer - Current and Future Technology Trends by Navveen Balani\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#primaryimage\"},\"datePublished\":\"2018-12-01T13:29:02+00:00\",\"dateModified\":\"2019-12-18T13:52:36+00:00\",\"description\":\"Internet of Things - Core Platform Layer - Articles\",\"breadcrumb\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/\",\"url\":\"https:\/\/navveenbalani.dev\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/\",\"name\":\"Internet of Things &#8211; Core Platform Layer\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#webpage\"},\"author\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"headline\":\"Internet of Things &#8211; Core Platform Layer\",\"datePublished\":\"2018-12-01T13:29:02+00:00\",\"dateModified\":\"2019-12-18T13:52:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"image\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-core-platform-layer\/#primaryimage\"},\"articleSection\":\"Articles,IOT\",\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\",\"name\":\"Navveen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/navveenbalani.dev\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/07\/navveen_balani.jpeg\",\"width\":200,\"height\":200,\"caption\":\"Navveen\"},\"logo\":{\"@id\":\"https:\/\/navveenbalani.dev\/#personlogo\"},\"sameAs\":[\"http:\/\/naveenbalani.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2789"}],"collection":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/comments?post=2789"}],"version-history":[{"count":2,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2789\/revisions"}],"predecessor-version":[{"id":2808,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2789\/revisions\/2808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media\/2792"}],"wp:attachment":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media?parent=2789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/categories?post=2789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/tags?post=2789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}