{"id":2821,"date":"2018-12-01T21:19:52","date_gmt":"2018-12-01T15:49:52","guid":{"rendered":"http:\/\/navveenbalani.dev\/?p=2821"},"modified":"2019-12-18T21:55:05","modified_gmt":"2019-12-18T16:25:05","slug":"connected-car-iot-solution-using-azure-iot-stack","status":"publish","type":"post","link":"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/","title":{"rendered":"Connected Car IoT Solution using Azure IoT stack"},"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<p>In <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-microsoft-iot-platform\/\">previous article<\/a>, we went through the Azure IoT stack. In this article, we will go over building the connected car solution.<\/p>\n\n\n\n<p>The solution strategy comprises of using\nthe Azure IoT services we described earlier to build the connected car IoT\napplication.<\/p>\n\n\n\n<p>In order to receive messages on Azure platform and eventually start processing\nthe same, there are a bunch of activities that needs to be done.&nbsp; Our solution uses\ntwo approaches to process the incoming\ndata \u2013 real-time and batch analysis. The real-time approach processes the continuous stream\nof data arriving at IoT Hub from devices that includes taking the required\naction at runtime (like raising an alert, sending data back to devices or\ninvoking a third party service for maintenance order), while batch analysis\nincludes storing the data for further analysis and running complex analytics\njobs or using existing Hadoop jobs for data analysis. The batch analysis\nwould also be used for developing and training the machine learning models\niteratively and then using these deployed models at runtime for real-time\nactions.<\/p>\n\n\n\n<p>The following image shows the Azure Management portal where a set of task needs to be executed.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"612\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-solution-1024x612.jpg\" alt=\"\" class=\"wp-image-2823\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-solution-1024x612.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-solution-300x179.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-solution-768x459.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-solution.jpg 1702w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The following are the high-level steps that need to be performed in Azure\nManagement Portal<\/p>\n\n\n\n<ol><li>Create Resource Group <\/li><li>Create an IoT Hub <\/li><li>Create Device Identity <\/li><li>Provision Hardware devices&nbsp; <\/li><li>Create Storage Service<\/li><li>Create Azure Stream Analytics\nJobs&nbsp; <\/li><li>Create Event Hubs<\/li><li>Create PowerBI dashboards<\/li><li>Create Notification Hubs<\/li><li>Create Machine Learning (ML) model<\/li><\/ol>\n\n\n\n<p>We had discussed all of the above capabilities in earlier article, except the Resource Group. A Resource Group basically is a container for all resources related to a specific application, which uses the same subscription information and is hosted in the same location. We create one resource group for the connected car, and all the resources would use this resource group. We would not go over the configuration steps in detail, but summarize one execution flow for the connected car use case which uses the above resources. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"719\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car-1024x719.jpg\" alt=\"\" class=\"wp-image-2825\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car-1024x719.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car-300x211.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car-768x539.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car.jpg 1670w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Real-time\nFlow<\/strong><\/p>\n\n\n\n<p>The IoT Hub receives the data from the connected car device over AMQP protocol. Once the data is received, the stream of data is consumed by Azure Stream Analytic jobs. As part of configuring the Azure Stream Analytics job, you specify the input source as IoT Hub and specify the input format (JSON) and encoding (UTF-8).&nbsp; This would stream all data from IoT Hub to this Azure Stream Analytics job. As part of output configuration, you specify where you want to store the output of the job, for instance, Blob Storage, Event Hubs, PowerBI, etc. The following image shows the list of output options:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"731\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-1-1024x731.jpg\" alt=\"\" class=\"wp-image-2827\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-1-1024x731.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-1-300x214.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-1-768x549.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-1.jpg 1442w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>The IoT Hub receives the data from the connected car device over AMQP protocol. Once the data is received, the stream of data is consumed by Azure Stream Analytic jobs. As part of configuring the Azure Stream Analytics job, you specify the input source as IoT Hub and specify the input format (JSON) and encoding (UTF-8).&nbsp; This would stream all data from IoT Hub to this Azure Stream Analytics job. As part of output configuration, you specify where you want to store the output of the job, for instance, Blob Storage, Event Hubs, PowerBI, etc. The following image shows the list of output options:<\/p>\n\n\n\n<p>In the Query Tab on the Azure Stream\nAnalytics job, you specify the query (SQL-like\nqueries), which works on the input data and produces the output. The output (in\nJSON format) is delivered to the output\nchannel.<\/p>\n\n\n\n<p>For our connected car scenario, we create two Azure Stream Analytics jobs. For the first job, we specify the input as IoT Hub. The query is to select all the incoming data. There are two output configuration specified; one output dumps the data into Azure Blob for further analysis and the other dumps the data into PowerBI for creating a dashboard. The following image shows the snippet of Query view:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"600\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-2-1024x600.jpg\" alt=\"\" class=\"wp-image-2828\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-2-1024x600.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-2-300x176.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-2-768x450.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/solution-2.jpg 1680w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>For the second Azure Stream Analytics Job,\nwe create two inputs; the first input is\nIoT Hub, and other is the Asset DB, which contains the asset metadata. For the\nquery, we create condition-based rules which trigger if conditions are not met (like speed &gt;100 km\/hour, low\nengine oil, low tire pressure). The Azure Stream Analytics rules correlates\nasset metadata and runtime data of the connected car to trigger conditions\nbased on asset specifications. The asset specification contains the asset\ndetails and ideal permissible limit of the asset \u2013 be it car engine, tire pressure, engine oil, etc. This is simple\ncondition based maintenance.&nbsp; The result\nfrom the rules is stored in output\nstorage. The output is stored in an Event\nHubs for further processing by various applications.<\/p>\n\n\n\n<p>A custom Event Handler is created which acts as a consumer and picks\nup the data from Event Hubs and uses the Notification Hubs APIs to push high\npriority events to mobiles. The handler also sends updates to web dashboards\nand sends the message back to the IoT Hub device queue for that device using\nthe device id. The connected car device receives the notification on the device\ndashboard.<\/p>\n\n\n\n<p><strong>Offline\nProcess<\/strong><\/p>\n\n\n\n<p>Now, let\u2019s discuss the offline process. The\noffline process is mainly used for batch\nprocessing, analyzing volumes of data, correlating data from multiple sources\nand complex data flows. The other scenario is developing machine learning\nmodels from these various data sets, training,\nand testing iteratively to build models which can predict or classify with\nreasonable accuracy.<\/p>\n\n\n\n<p><strong>Building\nMachine Learning Models<\/strong><\/p>\n\n\n\n<p>Building machine learning models is an iterative process, and it involves a bunch of tasks as depicted in the diagram below.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"554\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-model-solution3-1024x554.jpg\" alt=\"\" class=\"wp-image-2829\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-model-solution3-1024x554.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-model-solution3-300x162.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-model-solution3-768x415.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-model-solution3.jpg 1620w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>For the connected car solution, we would\nbuild two machine learning models \u2013 one for predictive maintenance and other\nfor driver behavior analysis.<\/p>\n\n\n\n<p>The following list shows high-level steps to build machine learning\nmodel using Azure ML. The steps listed below are generic and applicable to building any machine learning model.<\/p>\n\n\n\n<ul><li>Select the data sources that\nyou would need for building the model. In the connected car scenario, our data\nsources are Azure Blob (raw vehicle data), Azure Dynamo DB (Asset Meta Data) and\na second Azure Blob which contains historical records for vehicle maintenance\nand driver classification. In the absence\nof the historical records, it is still possible to build predictive models with\nunsupervised learning techniques and later correlating the outputs manually and\nderiving insights. The entire process tends to be very complex. Most of the\ntools don&#8217;t support this methodology and\nexpect you to provide labeled data (input\nand output)<strong>.<\/strong> In future, data\ngenerated from the connected product would be one key valuable asset, and you would see various data providers\nproviding such historical records (like trends) for analysis.<\/li><li>The Azure Data Factory is an optional\ndata service added to the design to transfer and analyze the raw data and\ncreate data process pipelines to make the data consumable.&nbsp; The Data Factory,\nin particular, is useful if you need to integrate with multiple systems\nand perform data processing to arrive at the desired output.<\/li><li>The third step is about\npreparing the data to be used by the model. This\ninvolves cleaning and filtering the data, normalizing the data, creating\nlabeled inputs for classification and\nmost importantly creating relevant feature sets based on the use case\nrequirements. Selecting a feature set and building the model is a complex\nexercise and requires thorough understanding and expertise on machine learning\nand it\u2019s outside the scope of this book. Preparation of data is the most\ncrucial and time-consuming step in\nbuilding the model. As part of this step,\nyou would also create train and test set. You would train the model using the\ntrain set and test your model iteratively using the test set. Azure ML provides\nvisual composition tools to enable prepare\nthe data. Azure ML is available over the web,\nand you can execute the entire end-to-end process without installing any\nadditional software.<\/li><li>Once the data is prepared, you start building the model using\nAzure ML by selecting the type of model (regression, classification, etc.) and algorithms associated with it and use the\ndata from the previous step. For instance, for the regression model, you could use neural network regression, decision\nforest algorithms, etc. You can evaluate\nall the models to understand which one performs better for your data set. As\nmentioned this is an iterative step. For the connected car solution, we will\nperform predictive maintenance using regression algorithms and for behavior analysis,\nwe use multi-class classification. The regression model output would be a\nconfidence score that indicates whether maintenance is required for the equipment or not. For behavior analysis, the model could be classified as aggressive, neutral, etc.<\/li><li>Next step is publishing the\nmachine learning model as the web service so\nthat it can be consumed by the application\nthrough an API call.<\/li><\/ul>\n\n\n\n<p>As mentioned earlier, the real challenge is building the machine learning model and training the model to predict a reasonable outcome. This requires a significant effort and training to get a reasonable prediction over a period of time. Azure Stream Analytics lets you combine data from multiple streams, so you could combine real-time and historical data and arrive at an outcome. For instance, you can also combine streams to detect an anomaly in real-time through machine learning models.<\/p>\n\n\n\n<p>Currently, there are no pre-built machine learning models available for industries, and hence an offline process is required to build the model iteratively. In future, we envision machine learning models would be available as services for each industry like predictive maintenance for vehicles or specific machinery types. All then you have to do is provide the data to the machine learning models for prediction. We had discussed this concept in the earlier chapter where we had talked about Solution Template in <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/\">first article.<\/a><\/p>\n\n\n\n<p><strong>Integrating\nMachine Learning Models with Real-time Flow<\/strong><\/p>\n\n\n\n<p>Once our machine learning model is ready, as the last step we integrate the machine learning model with the runtime flow as shown below.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"699\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-solution4-1024x699.jpg\" alt=\"\" class=\"wp-image-2830\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-solution4-1024x699.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-solution4-300x205.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-solution4-768x524.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/ml-solution4.jpg 1750w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We added one more event handler to the existing flow, which calls our predictive model Azure ML service through the API. Based on the response, if maintenance is required the event handler invokes an external request to maintenance workflow system to initiate a work order for repair. The integration of driver behavior analysis is pretty much the same and in this case, the output goes to mobile and the web instead of a maintenance request.<\/p>\n\n\n\n<p>This complete the Azure IoT implementation. Next, <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-ibm-iot-platform\/\">we look at building  IoT applications using IBM Cloud Stack<\/a><\/p>\n\n\n\n<p><\/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\/ In previous article, we went through the Azure IoT stack. In this article, we will go over building the connected car solution. The solution strategy comprises of using the Azure IoT services we described earlier to build the connected car IoT application. In order to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2825,"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>Connected Car IoT Solution using Azure IoT stack - Current and Future Technology Trends by Navveen Balani<\/title>\n<meta name=\"description\" content=\"Connected Car IoT Solution using Azure IoT stack - Articles\" \/>\n<link rel=\"canonical\" href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Connected Car IoT Solution using Azure IoT stack - Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"og:description\" content=\"Connected Car IoT Solution using Azure IoT stack - Articles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/\" \/>\n<meta property=\"og:site_name\" content=\"Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-01T15:49:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-18T16:25:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1670\" \/>\n\t<meta property=\"og:image:height\" content=\"1172\" \/>\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=\"9 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\/connected-car-iot-solution-using-azure-iot-stack\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/azure-iot-connected-car.jpg\",\"width\":1670,\"height\":1172},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#webpage\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/\",\"name\":\"Connected Car IoT Solution using Azure IoT stack - Current and Future Technology Trends by Navveen Balani\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#primaryimage\"},\"datePublished\":\"2018-12-01T15:49:52+00:00\",\"dateModified\":\"2019-12-18T16:25:05+00:00\",\"description\":\"Connected Car IoT Solution using Azure IoT stack - Articles\",\"breadcrumb\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#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\/connected-car-iot-solution-using-azure-iot-stack\/\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/\",\"name\":\"Connected Car IoT Solution using Azure IoT stack\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#webpage\"},\"author\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"headline\":\"Connected Car IoT Solution using Azure IoT stack\",\"datePublished\":\"2018-12-01T15:49:52+00:00\",\"dateModified\":\"2019-12-18T16:25:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"image\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-iot-solution-using-azure-iot-stack\/#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\/2821"}],"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=2821"}],"version-history":[{"count":2,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2821\/revisions"}],"predecessor-version":[{"id":2843,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2821\/revisions\/2843"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media\/2825"}],"wp:attachment":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media?parent=2821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/categories?post=2821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/tags?post=2821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}