{"id":2817,"date":"2018-12-01T19:45:11","date_gmt":"2018-12-01T14:15:11","guid":{"rendered":"http:\/\/navveenbalani.dev\/?p=2817"},"modified":"2019-12-18T21:37:18","modified_gmt":"2019-12-18T16:07:18","slug":"building-application-with-microsoft-iot-platform","status":"publish","type":"post","link":"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/","title":{"rendered":"Building application with Microsoft IoT platform"},"content":{"rendered":"\n<p>Microsoft provides a cloud computing\nplatform called Azure, which is a growing collection of integrated services\nlike analytics, database, mobile, networking, storage and web &#8211; for moving\nfaster, achieving more and saving money.<\/p>\n\n\n\n<p>Microsoft provides a set of IoT services\n(referred to as Microsoft Azure IoT services) over its Azure platform to help\nbuild IoT applications rapidly. Microsoft recently launched the Azure IoT suite\n(on Sept 29th, 2015) which offers pre-configured\nIoT solutions built on Microsoft\u2019s cloud platform and makes it easy to connect\ndevices securely and supports a broad set\nof protocols. We will discuss the Azure IoT Suite\nand its capabilities in detail during the course\nof the chapter<\/p>\n\n\n\n<p>In the <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/\">first article<\/a>, we had discussed about a generic Enterprise IoT stack. Following diagram shows how the how components in the Enterprise IoT stack is mapped with Microsoft Azure IoT services.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"715\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure-1024x715.jpg\" alt=\"\" class=\"wp-image-2819\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure-1024x715.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure-300x210.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure-768x537.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure.jpg 1692w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Azure\nIoT Device SDK<\/strong><\/p>\n\n\n\n<p>These are device SDK for different\nplatforms like Linux, Windows,\nand real-time operating systems, which make it easier to get started on any device and\nconnect to Azure IoT platform.&nbsp; These are\noptional, and a device manufacturer can\nuse the APIs to get started quickly or add its own\ndevice connectivity code for connecting to Azure platform e.g. using a JavaScript\ndevice API for Intel Edison device or an optimized C SDK for a Linux\ndevice.&nbsp; The Azure IoT device SDKs is\navailable on GitHub at\nhttps:\/\/github.com\/Azure\/azure-iot-sdks. The Azure IoT SDK connects devices to IoT\nHub. We will discuss IoT Hub in detail in the following section.<\/p>\n\n\n\n<p>The following shows a C code snippet which uses the C device SDKS to connect to Azure IoT Hub. The template code can also be generated from the following page: https:\/\/azure.microsoft.com\/en-us\/develop\/iot\/get-started\/<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static const char* connectionString =\"[device connection string]\";\nstatic char msgText[1024];\nvoid main(void){\n  IoTHUB_CLIENT_HANDLE iotHubClientHandle;\n  IoTHUB_MESSAGE_HANDLE message;\n\n\/* Create IoT Hub Client instance *\/\n  iotHubClientHandle = IoTHubClient_CreateFromConnectionString(connectionString, AMQP_Protocol);\n\n\/* Setting Message call back so that we can receive Commands. *\/\n  IoTHubClient_SetMessageCallback(iotHubClientHandle, ReceiveMessageCallback,&amp;receiveContext);\n\n\/* Now that we are ready to receive commands, let's send a message *\/\n  sprintf_s(msgText,sizeof(msgText),\"{\\\"deviceId\\\":\\\"myFirstDevice\\\",\\\"data\\\":%.2f}\", rand()%4+2);\n  message.messageHandle = IoTHubMessage_CreateFromByteArray((constunsignedchar*)msgText, strlen(msgText));\n\n  IoTHubClient_SendEventAsync(iotHubClientHandle, message, SendConfirmationCallback,&amp;message);\n\n\/* Add your code here ... *\/\n\n\/* When everything is done, and the app is closing, clean up resources *\/\n  IoTHubClient_Destroy(iotHubClientHandle);\n}\nstatic IoTHUBMESSAGE_DISPOSITION_RESULT ReceiveMessageCallback(IoTHUB_MESSAGE_HANDLE message,void* userContextCallback)\n{\nconst char* buffer;\n  size_t size;\n  IoTHubMessage_GetByteArray(message,(constunsignedchar**)&amp;buffer,&amp;size);\n(void)printf(\"Received Message with Data: &lt;&lt;&lt;%.*s>>>&amp; Size=%d\\r\\n\",(int)size, buffer,(int)size);\n\/* Some device specific action code goes here... *\/\nreturn IoTHUBMESSAGE_ACCEPTED;\n}\nstatic void SendConfirmationCallback(IoTHUB_CLIENT_CONFIRMATION_RESULT result,void* userContextCallback)\n{\n  IoTHUB_MESSAGE_HANDLE* message =(IoTHUB_MESSAGE_HANDLE*)userContextCallback;\n(void)printf(\"Confirmation received for message tracking id = %d with result = %s\\r\\n\", eventInstance->messageTrackingId, ENUM_TO_STRING(IoTHUB_CLIENT_CONFIRMATION_RESULT, result));\n\/* Some device specific action code goes here... *\/\n  IoTHubMessage_Destroy(*message);\n}\n<\/code><\/pre>\n\n\n\n<p><em>Tip &#8211; ConnectTheDots.io is another open source project created by Microsoft that allows devices to connect to Azure platform. It was developed before Azure device SDKs and does not use the SDK. Currently, it provides connectivity to Event Hubs only, which we would discuss later<\/em><\/p>\n\n\n\n<p><strong>Azure\nIoT Hub<\/strong><\/p>\n\n\n\n<p>Azure IoT Hub, a part of the recently released Azure IoT suite, is a fully managed bi-directional device to cloud connectivity bus, providing device management, device security and identity and MQTT protocol support apart from HTTP\/AMQP. <\/p>\n\n\n\n<p>Azure IoT Hub provides complete device\naccess through the use of its device identity\nregistry. It provides per device authentication and secures bi-direction connectivity between devices and IoT Hub. The\nIoT Hub can also integrate with your custom device registry through the use of\na token service to create a device-scoped token for secure communication with\nIoT Hub.<\/p>\n\n\n\n<p>Each Azure IoT Hub allows a certain number of devices which can be simultaneously connected along with the frequency of message that can be transmitted per day by the devices.&nbsp; Scaling Azure IoT Hub is a matter of adding\nadditional IoT Hub units. Azure IoT Hub is capable of handling millions of\nsimultaneously connected devices and millions of events per seconds. For\ndetails on IoT Hub units and pricing, kindly refer to this link &#8211;\nhttps:\/\/azure.microsoft.com\/en-us\/pricing\/details\/iot-hub\/.<\/p>\n\n\n\n<p>Azure IoT Hub classifies the bi-direction\nmessaging capability as device-to-cloud and cloud-to-device messaging. The IoT\nHub implements &#8216;at least once\u2019 delivery guarantees for both device-to-cloud and\ncloud-to-device messaging. It provides local storage of messages for up to 7 days for device-to-cloud messages\nand a dedicated device queue for each connected devices for storing\ncloud-to-device messages that are consumed by the devices securely. This eliminates the overhead of creating\nseparate queues for sending messages back to devices.<\/p>\n\n\n\n<p>Azure IoT Hub and rest of the Azure services parameters can be configured through the Azure Portal. <\/p>\n\n\n\n<p><strong>Event\nHubs<\/strong><\/p>\n\n\n\n<p>Event Hubs is a highly scalable\npublish-subscribe event processing service.&nbsp;\nEvent Hubs is a part of Azure Service Bus platform that is capable of\ncollecting millions of messages per second with low latency and high\nreliability, which can be stored for further analysis (historical analysis by\nmachine learning models, auditing, batch processing,\netc.) or acted upon directly by stream analytics services. Event Hubs support\nHTTP and AMQP protocol.&nbsp; Before the release of IoT Hub, Event Hubs was\nused primarily to support IoT applications. However, Event Hubs only support\nconnecting devices to cloud and does not\nsupport per device secure identity out of\nthe box, like the IoT Hub. The Azure device SDKs that we talked about earlier\nmakes it easier to connect to a variety\nof device platforms and supports\nconnectivity to IoT Hub only, while device connecting to Event Hubs needs to\nrely on AMQP and HTTP interfaces or use the open source project\nConnectTheDots.io. IoT Hub is specifically designed to handle IoT use cases,\ntaking into account device connectivity, identity and secure bi-direction\ncommunication between devices and IoT Hub. It is therefore recommended to use\nIoT Hub for IoT applications. In a typical enterprise IoT application, you would use IoT Hub and Event\nHubs in conjunction, where IoT Hub would handle secure device connectivity and handoff messages to Event Hubs for real-time\nprocessing. <\/p>\n\n\n\n<p><strong>Storage<\/strong><\/p>\n\n\n\n<p>The storage comprises of using various\noptions for storing the continuous streams of data. The storage options include SQL Database, DocumentDB (NoSQL) or\nhighly scalable, high-performance Blobs, Tables, and Queues. You also have a choice of\nusing HBase on HDInsight. HDInsight is an Apache Hadoop-based service on Azure cloud. As mentioned earlier, IoT Hub\nprovides the retention of messages for guaranteed delivery, but you would\ntypically use a dedicated storage option to store the messages for further\nanalysis and historical computations. Typically you would use DocumentDB, high-performance Blob or HBase based on volume\nof data that needs to be stored and analyzed<\/p>\n\n\n\n<p><strong>Azure\nData Factory<\/strong><\/p>\n\n\n\n<p>Azure Data Factory service lets you ingest\ndata from diverse sources (cloud as well as on-premise sources), transform the\ndata and make it consumable for your application.&nbsp; Not all applications may require the use of\nData Factory, but we would like to mention this specifically, as your\napplication might need to be integrated with a diverse\nset of data sources (and even on-premise databases) to correlate or to augment\ninformation provided by device data.<\/p>\n\n\n\n<p><strong>Azure\nStream Analytics<\/strong><\/p>\n\n\n\n<p>The Azure Stream Analytics provides real-time\nstream processing of millions of events per second, enabling you to compare and\ncorrelate multiple real-time streams, query data using familiar SQL language\nand create real-time dashboard and alerts. <\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><em>Note\n&#8211; The data from Event Hubs can be directly consumed and analyzed by Azure Stream Analytics, without actually storing the\ndata using the storage options.<\/em><em>\n\n\n\n<\/em><\/p>\n\n\n\n<p>Microsoft Azure also supports open source\nstreaming solutions like Apache Storm and Apace Spark Streaming as part of the\nHDInsight services. PaaS vendors should provide support for open source\nstreaming platform solutions and make it easier to implement custom streaming applications\nwithout the user worrying about its configuration, scalability or security. One\ncan also look at Azure Data Lake storage service that stores data of any size\nand allows performing all types of processing and analytics. More details about\nAzure Data Lake can be found at\nhttps:\/\/azure.microsoft.com\/en-us\/solutions\/data-lake\/.<\/p>\n\n\n\n<p><strong>Machine\nLearning<\/strong><\/p>\n\n\n\n<p>Azure Machine Learning provides a visual way\nto build machine learning model that supports R and Python custom packages,\npre-built algorithms and enables us to build a custom\nmodel by adding custom code based on the requirements. In future, we envision\nsupport for more machine language libraries and expect this to be a marketplace for machine learning models. These\nlearning models will be specifically targeted\ntowards IoT use cases like predictive maintenance for vehicles, refrigerators, etc.\nand you might have various such variants and pricing based on the optimization\nand accuracy levels of the machine learning models.<\/p>\n\n\n\n<p><strong>Events\nand Reporting<\/strong><\/p>\n\n\n\n<p>These services include sending\nnotifications, like an alert to mobile phones using push notification via the\nNotification Hubs service or invoking an action using Azure APIs, for instance calling\nthe on-premise application (like a custom workflow exposed as web services) through\nLogic Apps. Logic Apps lets you automate processes using visual tools and\nprovide connectors for easily integrating disparate data sources from cloud to\non-premises. You could also use PowerBI cloud service which allows visualizing\nand analyzing the data using powerful and flexible dashboards. The Azure Stream\nAnalytics can feed real-time data events into PowerBI,\nand you can design dashboards that use the data and can be updated at runtime.<\/p>\n\n\n\n<p>For the PowerBI and Azure Stream Analytics\nintegration, while creating the Azure stream job instance you need to select PowerBI\nas the output of the streaming job and provide the required settings. We would\ngo over the details in the implementation section. For the data to be made\navailable to PowerBI instance, you need\nto create a query in the Query Tab of the stream\njob instance, and output of the\nquery would be made available in PowerBI. You can then use the data to build\ndashboards. <\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><em>Note\n&#8211; You need to have a Microsoft Power BI account subscription to use it with\nAzure Stream Analytics.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>Custom\nSolutions<\/strong><\/p>\n\n\n\n<p>These are an end to end IoT solutions\ndeveloped using Azure services. Azure also\nprovides bunch of other services that can be used for building IoT solutions\napart from Azure IoT services like \u2013 the mobile push service to send an alert\nbased on the analysis, the Redis Cache for high throughput and low latency data\naccess or using the Azure APIs for building custom applications to consume the\ninformation from Azure Portal.&nbsp;\nYou can find all these services in the product menu option of Azure\nwebsite at https:\/\/azure.microsoft.com\/en-us\/. <\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><em>Note- Most of the cloud services mentioned were not specifically designed for handling IoT requirements, like Event Hubs and Azure Stream Analytics, which can be used for other requirements as well like real-time fraud detection, while products like IoT Hub are specially designed to address IoT requirements. We expect more such offerings in future tailored towards realizing IoT use cases.<\/em><\/p>\n\n\n\n<h3><a>Implementation Overview<\/a><\/h3>\n\n\n\n<p>Let\u2019s understand how to use these services,\nby taking the example of the connected car use case we discussed earlier. The\nconnected car device manufacturer ties it up with Microsoft Azure platform for\nusing its cloud services to realize the various use cases we discussed in\nconnected car section using the Azure platform. <\/p>\n\n\n\n<h4><a>Hardware and <\/a>Connectivity<\/h4>\n\n\n\n<p>The connected car device manufacturer takes\ncare of hardware devices and network provisioning (using GSM module or using\ninternet connectivity via Bluetooth or WI-FI from Smartphones). The device\nmanufacturer provides reliable connectivity and optimum network utilization\n(2G\/3G\/4G LTE). To communicate with the Azure\nplatform, the device comes pre-installed with the connectivity code to\nthe Azure platform using the Azure Device SDKs.<\/p>\n\n\n\n<p>The pre-shipped device comes up with the highest level of security, both on the hardware\nand software side and a set of unique\ncodes (device ids) with ensures only authorized devices can talk to Azure\nplatform. The device manufacturer has provisioned all the devices (as part of\nits device design and provision step) using Azure Device Management APIs, which are\nexposed as HTTP REST endpoints. The device manufacturer also implements\ncommands like pause, start, stop, diagnose device which can be controlled through the IoT Hub. The device\nsoftware uses the Azure Device SDK to transmit the data from the connected car\nsecurely to the Azure IoT platform using JSON format over AMQP protocol. The\ndevice also provides a display unit which is used to display usage information\nand communication from Azure IoT platform.<\/p>\n\n\n\n<p><a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/\">In the next article, we will look at how to implement the IoT solution using Azure IoT Stack.<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft provides a cloud computing platform called Azure, which is a growing collection of integrated services like analytics, database, mobile, networking, storage and web &#8211; for moving faster, achieving more and saving money. Microsoft provides a set of IoT services (referred to as Microsoft Azure IoT services) over its Azure platform to help build IoT [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2819,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,156],"tags":[287],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.0.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building application with Microsoft IoT platform - Current and Future Technology Trends by Navveen Balani<\/title>\n<meta name=\"description\" content=\"Building application with Microsoft IoT platform - Articles\" \/>\n<link rel=\"canonical\" href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building application with Microsoft IoT platform - Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"og:description\" content=\"Building application with Microsoft IoT platform - Articles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-01T14:15:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-18T16:07:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1692\" \/>\n\t<meta property=\"og:image:height\" content=\"1182\" \/>\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=\"11 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\/building-application-with-microsoft-iot-platform\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/iot-stack-azure.jpg\",\"width\":1692,\"height\":1182},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#webpage\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/\",\"name\":\"Building application with Microsoft IoT platform - Current and Future Technology Trends by Navveen Balani\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#primaryimage\"},\"datePublished\":\"2018-12-01T14:15:11+00:00\",\"dateModified\":\"2019-12-18T16:07:18+00:00\",\"description\":\"Building application with Microsoft IoT platform - Articles\",\"breadcrumb\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#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\/building-application-with-microsoft-iot-platform\/\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/\",\"name\":\"Building application with Microsoft IoT platform\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#webpage\"},\"author\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"headline\":\"Building application with Microsoft IoT platform\",\"datePublished\":\"2018-12-01T14:15:11+00:00\",\"dateModified\":\"2019-12-18T16:07:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"image\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/#primaryimage\"},\"keywords\":\"iot-guide\",\"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\/2817"}],"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=2817"}],"version-history":[{"count":2,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2817\/revisions"}],"predecessor-version":[{"id":2832,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2817\/revisions\/2832"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media\/2819"}],"wp:attachment":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media?parent=2817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/categories?post=2817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/tags?post=2817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}