{"id":3510,"date":"2023-09-11T13:57:09","date_gmt":"2023-09-11T13:57:09","guid":{"rendered":"https:\/\/iot-ngin.eu\/?p=3510"},"modified":"2023-09-13T11:51:47","modified_gmt":"2023-09-13T11:51:47","slug":"atomd-an-android-application-for-d2d-measurements-in-real-conditions","status":"publish","type":"post","link":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/","title":{"rendered":"AtomD &#8211; An Android application for D2D measurements in real conditions"},"content":{"rendered":"\n<p>In IoT-NGIN, we have adopted <a href=\"https:\/\/developers.google.com\/nearby\/connections\">Google&#8217;s Nearby Connections <\/a> as the baseline framework to put in practice the project&#8217;s advances in regard to data traffic offloading. One of the problems that we faced when developing applications using this framework is that the performance we observed diverged significantly from the theoretical numbers we found in the documentation.<\/p>\n\n\n\n<p>That is why we decided to conduct a number of experiments and share our insights with the community. These experiments are detailed in a different <a href=\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/android-d2d-strategies-under-the-microscope\/\">blog post<\/a>. Here, we discuss what we did to make the experiments viable. We have developed an Android application called AtomD that performs operations and procedures to exploit and stress all the functionalities provided by the Nearby Connections API. AtomD is available on <a href=\"https:\/\/github.com\/tlagos1\/AtomD).\">Github<\/a>.<\/p>\n\n\n\n<p>In a nutshell, AtomD gathers several measures that are recorded in a database for further analysis. In terms of interface, it has two particular fragments for managing experiments. It is worth recalling that, in Android development, a fragment represents a modular portion of the user interface within an activity. The first fragment, called Dashboard, allows the user to define the roles (advertiser or discoverer) that a node can play in the D2D communication and allows the user to observe the status and progress of the connection. The second fragment, called Experiments, allows the user to set the different actions that the application can take during the D2D transfers.<\/p>\n\n\n\n<p>We detail the two fragments in the following.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-blue-color has-text-color has-anps-h-2-font-size\"><strong>Fragment 1 &#8211; Dashboard<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>We structure the Dashboard fragment in four layers, as shown in Figure 1. In the first layer, we find the connectivity states during the realization of the D2D communication link. If a device performs Network Discovery Protocol (NDP), it will change its Discovery state to reddish; otherwise, it keeps a gray color. Similarly, if a device maintains at least one D2D connection with another device, it changes its Connected status to reddish; otherwise, it remains gray. In the top left corner of the second layer is the device ID, which is used as a human readable name for other users who want to discover the device.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d.jpg\" alt=\"\" class=\"wp-image-3617\" width=\"256\" height=\"491\" srcset=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d.jpg 442w, https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-156x300.jpg 156w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><\/figure><\/div>\n\n\n\n<p style=\"fontSize:16px; color:#646667;\" class=\"has-text-align-center\"><strong>Figure 1.<\/strong> Nearby connections strategies: Features, usage, and empirical performance evaluation. Dashboard fragment where the user can perform and visualize the experimentation procedure. This layout is subdivided into four layers.<\/p>\n\n\n\n<div style=\"height:42px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Below the ID, there is a button that allows the user to configure the role of the device &#8211; Disc. to configure the device as a discoverer and Adv. to configure the device as an advertiser. Finally, on the right side of the second layer, there is a button to generate a D2D instance and a switch that allows tracking of the GPS coordinates of the device.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>In the third layer, there is a drop-down list of the three strategies provided by the Nearby Connections API on the left side. In contrast, on the right side, there are 2 bars representing the progress during a D2D transfer. The first one is used to represent a single transmission, while the second one shows the progress of the set of transmissions if transfers are done in batches.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Finally, the fourth layer shows a list of predefined processes to measure D2D performance, of which only one can be executed. We explain how a user can define a process in the next section.<\/p>\n\n\n\n<p style=\"background-color: rgb(244, 244, 244); padding: 10px; border-radius: 10px;\">\n    <span style=\"color: #FF0000;\">\u26a0\ufe0f<\/span>\n    It is important to note that the user must select at least the role and the strategy to be able to initiate a D2D instance.\n<\/p>\n\n\n\n<div style=\"height:24px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-blue-color has-text-color has-anps-h-2-font-size\"><strong>Fragment 2 &#8211; Experiment<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>To configure the behavior of the AtomD application and, consequently, of the D2D links, we have developed the Experiment fragment, illustrated in Figure 2.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/dash2.jpg\" alt=\"\" class=\"wp-image-3572\" width=\"221\" height=\"425\" srcset=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/dash2.jpg 442w, https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/dash2-156x300.jpg 156w\" sizes=\"(max-width: 221px) 100vw, 221px\" \/><\/figure><\/div>\n\n\n\n<p style=\"fontSize:16px; color:#646667;\" class=\"has-text-align-center\"><strong>Figure 2.<\/strong> Experiment fragment, where its layout allows the user to create, view and delete experiments allowed by the application.<\/p>\n\n\n\n<div style=\"height:42px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>The user can configure three different types of experiments (or processes), which we explain in the following.<\/p>\n\n\n\n<ul class=\"ul-custom\"><li><em>Chunk experiment<\/em> (see Algorithm 1). It sends a set of data chunks with a maximum of 1,047,552 B per chunk. Within the payload is set an instance ID of the experiment, the current GPS location of the device, and the counter tracking of the set of chunks that have been sent.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Algorithm 1: Chunk Experiment\n\nInput: \n\t\ud835\udc57\ud835\udc5d: Parameters to be sent, enclosed in a JSON object. \n\t\ud835\udc56\ud835\udc51: The ID of the device connected through D2D.\n\t\ud835\udc61\ud835\udc5f: Number of transmission repetitions.\nOutput: \n\tFalse in case the transfer was not successful. Otherwise, True. \n\nFunction SEND_CHUNK(\ud835\udc57 \ud835\udc5d, \ud835\udc56\ud835\udc51 , \ud835\udc61\ud835\udc5f)\n\t\ud835\udc43 \u2190 TO_PAYLOAD(\ud835\udc57\ud835\udc5d) \n\tfor \ud835\udc5f \u2190 1 To \ud835\udc61\ud835\udc5f do\n\t\tif SEND_PAYLOAD(\ud835\udc56\ud835\udc51, \ud835\udc43 ) \u2260 SUCCESS then \n\t\t\treturn False\n\t\tend if \n\tend for\n\treturn True \nend\n\n\/\/ For each successful reception, we record the reception time and the received \n\/\/ parameters. \ud835\udc43 is a variable containing a payload with the parameters to be sent.<\/code><\/pre>\n\n\n\n<ul class=\"ul-custom\"><li><em>File experiment <\/em>(see Algorithm 2). It consists in performing a set of transmissions of the same file of size \ud835\udc5b \u00d7 10^\ud835\udc5a B to one or more devices. Before sending the file, the transmitter sends a Chunk with tracking data to track the file to be sent. Within this chunk is set an ID of the experiment instance, the ID of the payload where the file is packed, the total number of repetitions that the file will be sent, and the metadata of the transmitter. During the transmission process, the transmitter and receiver will record in a database the information registered within the chunks, as well as the number of bytes expected and the bytes transferred for each sent file.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Algorithm 2: File Experiment\n\nInput: \n\t\ud835\udc57\ud835\udc5d: File parameters, enclosed in a JSON object. \n\t\ud835\udc53\ud835\udc59: File to be send.\n\t\ud835\udc56\ud835\udc51: The ID of the device connected through D2D.\n\t\ud835\udc61\ud835\udc5f: Number of transmission repetitions.\nOutput: \n\tFalse in case the transfer was not successful. Otherwise, True. \n\nFunction SEND_FILE(\ud835\udc57\ud835\udc5d, \ud835\udc53 \ud835\udc59, \ud835\udc56\ud835\udc51, \ud835\udc61\ud835\udc5f)\n\tP \u2190 TO_PAYLOAD(\ud835\udc53\ud835\udc59) \n\tfor \ud835\udc5f \u2190 1 To \ud835\udc61\ud835\udc5f do\n\t\tif SEND_CHUNK(\ud835\udc57\ud835\udc5d, \ud835\udc56\ud835\udc51, 1) = SUCCESS then\n\t\t\tif SEND_PAYLOAD(\ud835\udc56\ud835\udc51, P) \u2260 SUCCESS then\n\t\t\t\treturn False \n\t\t\tend if\n\t\t\telse\n\t\t\t\treturn False\n\t\tend if \n\tend for\n\treturn True \nend\n\n\/\/ During each file transfer, we log the number of bytes transferred, \n\/\/ the time of their reception, and the corresponding file metadata chunk.<\/code><\/pre>\n\n\n\n<ul class=\"ul-custom\"><li><em>Connectivity experiment <\/em>(see Algorithm 3). This experiment allows the devices to perform a set of NDP. Among the configurations, the user can set the device to use either Bluetooth classic or BLE for the discovery and connectivity request procedures. In the course of this experiment, AtomD records the times of radio initiation, device discovery, request sending, and request reception in nanoseconds. In addition, it also records the GPS location of each device.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Algorithm 3: Connectivity Experiment\n\nInput: \n\t\ud835\udc5f\ud835\udc5b: Readable name of the device connected through D2D. \n\t\ud835\udc50\ud835\udc5f: Number of connections repetitions.\nOutput: \n\tIn case it does not find an matching \ud835\udc5f\ud835\udc5b, then the device will keep listening to the channel. \n\nFunction CONNECTIVITY_REPETITIONS(\ud835\udc5f\ud835\udc5b, \ud835\udc50\ud835\udc5f)\n\tfor \ud835\udc5f \u2190 1 To \ud835\udc50\ud835\udc5f do\n\t\tDISCONNECT_FROM(\ud835\udc5f\ud835\udc5b) \n\t\tSTART_DISCOVERY()\n\t\tif GET_DISCOVERED_DEVICE() = \ud835\udc5f\ud835\udc5b then\n\t\t\tESTABLISH_CONNECTION_WITH(\ud835\udc5f\ud835\udc5b)\n\t\t\tSTOP_DISCOVERY()\n\t\tend if \n\tend for\nend\n\n\/\/ During each run of the NDP, we record when the discovery process was initiated, \n\/\/ when the target device was discovered, when the node emits the connection \n\/\/ request, and when the connection is established.<\/code><\/pre>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In IoT-NGIN, we have adopted Google&#8217;s Nearby Connections as the baseline framework to put in practice the project&#8217;s advances in regard to data traffic offloading. One of the problems that we faced when developing applications using this framework is that &hellip;<\/p>\n","protected":false},"author":3,"featured_media":3592,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[17],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AtomD - An Android application for D2D measurements in real conditions - IOT NGIN<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AtomD - An Android application for D2D measurements in real conditions - IOT NGIN\" \/>\n<meta property=\"og:description\" content=\"In IoT-NGIN, we have adopted Google&#8217;s Nearby Connections as the baseline framework to put in practice the project&#8217;s advances in regard to data traffic offloading. One of the problems that we faced when developing applications using this framework is that &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/\" \/>\n<meta property=\"og:site_name\" content=\"IOT NGIN\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-11T13:57:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-13T11:51:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"407\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Karadimos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/iot-ngin.eu\/#website\",\"url\":\"https:\/\/iot-ngin.eu\/\",\"name\":\"IOT NGIN\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/iot-ngin.eu\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-2.png\",\"contentUrl\":\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-2.png\",\"width\":2000,\"height\":407},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#webpage\",\"url\":\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/\",\"name\":\"AtomD - An Android application for D2D measurements in real conditions - IOT NGIN\",\"isPartOf\":{\"@id\":\"https:\/\/iot-ngin.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#primaryimage\"},\"datePublished\":\"2023-09-11T13:57:09+00:00\",\"dateModified\":\"2023-09-13T11:51:47+00:00\",\"author\":{\"@id\":\"https:\/\/iot-ngin.eu\/#\/schema\/person\/f83a0bc16da095b9011cb2b7032968f6\"},\"breadcrumb\":{\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/iot-ngin.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AtomD &#8211; An Android application for D2D measurements in real conditions\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/iot-ngin.eu\/#\/schema\/person\/f83a0bc16da095b9011cb2b7032968f6\",\"name\":\"Mike Karadimos\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/iot-ngin.eu\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fe4489547f8763a17eacf8f929db8662?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fe4489547f8763a17eacf8f929db8662?s=96&d=mm&r=g\",\"caption\":\"Mike Karadimos\"},\"url\":\"https:\/\/iot-ngin.eu\/index.php\/author\/karadimossynelixis-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AtomD - An Android application for D2D measurements in real conditions - IOT NGIN","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/","og_locale":"en_US","og_type":"article","og_title":"AtomD - An Android application for D2D measurements in real conditions - IOT NGIN","og_description":"In IoT-NGIN, we have adopted Google&#8217;s Nearby Connections as the baseline framework to put in practice the project&#8217;s advances in regard to data traffic offloading. One of the problems that we faced when developing applications using this framework is that &hellip;","og_url":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/","og_site_name":"IOT NGIN","article_published_time":"2023-09-11T13:57:09+00:00","article_modified_time":"2023-09-13T11:51:47+00:00","og_image":[{"width":2000,"height":407,"url":"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-2.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mike Karadimos","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/iot-ngin.eu\/#website","url":"https:\/\/iot-ngin.eu\/","name":"IOT NGIN","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/iot-ngin.eu\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#primaryimage","inLanguage":"en-US","url":"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-2.png","contentUrl":"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2023\/09\/d2d-2.png","width":2000,"height":407},{"@type":"WebPage","@id":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#webpage","url":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/","name":"AtomD - An Android application for D2D measurements in real conditions - IOT NGIN","isPartOf":{"@id":"https:\/\/iot-ngin.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#primaryimage"},"datePublished":"2023-09-11T13:57:09+00:00","dateModified":"2023-09-13T11:51:47+00:00","author":{"@id":"https:\/\/iot-ngin.eu\/#\/schema\/person\/f83a0bc16da095b9011cb2b7032968f6"},"breadcrumb":{"@id":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/iot-ngin.eu\/index.php\/2023\/09\/11\/atomd-an-android-application-for-d2d-measurements-in-real-conditions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/iot-ngin.eu\/"},{"@type":"ListItem","position":2,"name":"AtomD &#8211; An Android application for D2D measurements in real conditions"}]},{"@type":"Person","@id":"https:\/\/iot-ngin.eu\/#\/schema\/person\/f83a0bc16da095b9011cb2b7032968f6","name":"Mike Karadimos","image":{"@type":"ImageObject","@id":"https:\/\/iot-ngin.eu\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/fe4489547f8763a17eacf8f929db8662?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe4489547f8763a17eacf8f929db8662?s=96&d=mm&r=g","caption":"Mike Karadimos"},"url":"https:\/\/iot-ngin.eu\/index.php\/author\/karadimossynelixis-com\/"}]}},"cc_featured_image_caption":{"caption_text":"","source_text":"","source_url":""},"_links":{"self":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts\/3510"}],"collection":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/comments?post=3510"}],"version-history":[{"count":45,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts\/3510\/revisions"}],"predecessor-version":[{"id":3635,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts\/3510\/revisions\/3635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/media\/3592"}],"wp:attachment":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/media?parent=3510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/categories?post=3510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/tags?post=3510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}