{"id":348,"date":"2022-06-22T14:22:17","date_gmt":"2022-06-22T14:22:17","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=348"},"modified":"2022-07-01T10:34:46","modified_gmt":"2022-07-01T10:34:46","slug":"get-company-identifier-information-from-bluetooth-advertising-packets-using-python","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/","title":{"rendered":"Get company identifier information from Bluetooth advertising packets using Python"},"content":{"rendered":"\n<p>Bluetooth Advertisements are crucial for any BLE device since they are utilized for all types of applications, whether that\u2019s a device that allows connections or one that simply advertises its presence and includes data for others to discover.<\/p>\n\n\n\n<p>The most important goal of advertising packets is to convey information to other BLE devices via the&nbsp;<strong>advertising packet type<\/strong>, and the&nbsp;<strong>advertising data types<\/strong>&nbsp;included in the packet.<\/p>\n\n\n\n<p>Bluetooth beacons are the most prominent devices that take full advantage of Bluetooth advertising packets. This is due to the reason that most beacons stay in the advertising state throughout their lifetime (do not allow connections), so they rely completely on advertising for relaying the relevant information to the scanning devices.<\/p>\n\n\n\n<p>I tried to create a simple python example script that scans for nearby Bluetooth devices and returns the manufacturer company information by reading the advertising packet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Requirments&nbsp;<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a target=\"_blank\" href=\"https:\/\/www.bleuio.com\/\" rel=\"noreferrer noopener\">Bluetooth Low Energy USB dongle BleuIO<\/a>&nbsp;(https:\/\/www.bleuio.com)<\/li><li><a target=\"_blank\" href=\"https:\/\/pypi.org\/project\/pyserial\/\" rel=\"noreferrer noopener\">Pyserial<\/a>.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Steps<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Get the script from GitHub at <a href=\"https:\/\/github.com\/smart-sensor-devices-ab\/python_bluetooth_device_info.git\">https:\/\/github.com\/smart-sensor-devices-ab\/python_bluetooth_device_info.git<\/a><\/li><li>Connect the BleuIO to your computer. The script uses pyserial to connect to the Bluetooth USB dongle BleuIO.<\/li><li>Update the script and write the correct COM port, where the dongle is connected. (main.py line 6)<\/li><li>After connecting to the dongle, we put the dongle into the central role so that it can scan for nearby Bluetooth devices.\u00a0<\/li><li>Then we do a simple Gap scan using AT+GAPSCAN=3 command to scan for nearby Bluetooth devices for 3 seconds.<\/li><li>After that, we read the output from the serial port and print out the list of devices with MAC addresses.<\/li><li>User selects a device to get manufacturer company information<\/li><li>We read the advertising packet for this specific device.\u00a0<\/li><li>Pass the response to a function which separates the manufacturer id.\u00a0<\/li><li>Then we try to find a match from an object which I have downloaded recently from https:\/\/www.bluetooth.com\/specifications\/assigned-numbers\/company-identifiers\/<\/li><li>The company name shows on the screen.<\/li><\/ul>\n\n\n\n<p>Here is the final script file.\u00a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import serial\nimport time\nfrom companydata import companyData\n       \n\nyour_com_port = \"COM18\"  # Change this to the com port your dongle is connected to.\nconnecting_to_dongle = True\n\nprint(\"Connecting to dongle...\")\n# Trying to connect to dongle until connected. Make sure the port and baudrate is the same as your dongle.\n# You can check in the device manager to see what port then right-click and choose properties then the Port Settings\n# tab to see the other settings\n\n# function to get company name from advertised id\ndef getCompany(adv):\n  # example advertised package would look like this \r\n  # 0201061BFF5B070504220118A3003127ED006901090100000000000001BD03\r\n  # explains here \r\n  # https:\/\/twitter.com\/josryke\/status\/763006284052463617\/photo\/1\n  indentifierReversed=''\n  # first part 02 is the length\n  length = int(adv&#91;0:2],16)  \n  pl =int(adv&#91;length*2+2:length*2+4 ], 16) \n  # this gives us 1B which is 27 in decimal. that is our length\n  startsFrom = length*2+4\n  # this gives us 8, from where it starts\n  # now get the packet\n  fd=adv&#91;startsFrom:pl]\n  # look for the position of flag FF\n  flagPosition = fd.find(\"FF\")\n  if flagPosition!=-1:    \n    identifier = fd&#91;flagPosition+2:flagPosition+6]\n    # get 5B07\n    indentifierReversed = identifier&#91;2]+identifier&#91;3]+identifier&#91;0]+identifier&#91;1]\n    # get 075B\n    # now look for the company name on the list\n    for attr in companyData:\n        if attr&#91;'Hexadecimal']=='0x'+indentifierReversed:\n            theName=attr&#91;'Company']\n  else:\n    indentifierReversed='-'\n    theName='Unknown'\n  \n  return theName\n\nwhile connecting_to_dongle:\n    try:\n        console = serial.Serial(\n            port=your_com_port,\n            baudrate=115200,\n            parity=\"N\",\n            stopbits=1,\n            bytesize=8,\n            timeout=0,\n        )\n        if console.is_open.__bool__():\n            connecting_to_dongle = False\n    except:\n        print(\"Dongle not connected. Please reconnect Dongle.\")\n        time.sleep(5)\n\nprint(\"Connected to Dongle.\")\n\n#put the dongle in dual role, so we can scan for nearby device\nconsole.write(str.encode(\"AT+CENTRAL\"))\nconsole.write(\"\\r\".encode())\nprint(\"Putting dongle in Central role.\")\ntime.sleep(0.1)\n# Scan for nearby devices for 3 seconds\nconsole.write(str.encode(\"AT+GAPSCAN=3\"))\nconsole.write(\"\\r\".encode())\ntime.sleep(0.1)\nprint(\"Looking for nearby Bluetooth devices ...\")\ndongle_output2 = console.read(console.in_waiting)\ntime.sleep(3)\nfiltered = &#91;]\n# Filter out unncecssary outputs and keep only the list of devices (also remove index)\nfor dev in dongle_output2.decode().splitlines():\n    if len(dev)>20:\n        filtered.append(dev)\n\n# Get unique device by device id and add distance to each raw        \nseen = set()\nout = &#91;]\nfor elem in filtered:\n    prefix = elem.split(' ')&#91;2]\n    if prefix not in seen:\n        seen.add(prefix)\n        out.append(elem) \n\n# sort list by closest device\n# out.sort(key=lambda x:int(x.split()&#91;3]),reverse=True)\nprint(\"Scan Completed! \"+ str(len(out)) +\" devices found.\")\n# print(out)\nfor i in range(0, len(out)):\n    print (out&#91;i]) \n\ngetInput = input(\"Select device from the list to get company identifier information (ex.1): \")\ndeviceToScan = out&#91;int(getInput)-1].split(\" \")&#91;2]\n# clear output\nconsole.flushInput()\nconsole.flushOutput()\ntime.sleep(0.1)\n# Scan for advertised data of the selected device for 4 seconds\nconsole.write(str.encode(\"AT+SCANTARGET=\"+deviceToScan+\"=4\"))\nconsole.write(\"\\r\".encode())\ntime.sleep(0.1)\nprint(\"Getting company identifier information ...\")\ndongle_output3 = console.read(console.in_waiting)\ntime.sleep(5)\nresp = dongle_output3.decode().splitlines()\n# get the adv data only \nfor d in resp:\n    if('&#91;ADV]' in d):\n        companyName=getCompany(d.split(\" \")&#91;-1])\n        break;\nprint(companyName)               \ntime.sleep(0.1)\nconsole.close()\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Output<\/h3>\n\n\n\n<p>After running the script, we see a total of 20 devices found nearby. The script prints out the manufacturer company information of the device [05] Device: [1]C1:BF:22:71:81:36<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"726\" height=\"584\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-5.png\" alt=\"\" class=\"wp-image-354\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-5.png 726w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-5-300x241.png 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Bluetooth Advertisements are crucial for any BLE device since they are utilized for all types of applications, whether that\u2019s a device that allows connections or one that simply advertises its presence and includes data for others to discover. The most important goal of advertising packets is to convey information to other BLE devices via the&nbsp;advertising [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":350,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,2],"tags":[],"class_list":["post-348","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bleuio","category-bleuio-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Get company identifier information from Bluetooth advertising packets using Python - BleuIO - Create Bluetooth Low Energy application<\/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:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Get company identifier information from Bluetooth advertising packets using Python - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"Bluetooth Advertisements are crucial for any BLE device since they are utilized for all types of applications, whether that\u2019s a device that allows connections or one that simply advertises its presence and includes data for others to discover. The most important goal of advertising packets is to convey information to other BLE devices via the&nbsp;advertising [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-22T14:22:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-01T10:34:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-company-indentifier-python.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"644\" \/>\n\t<meta property=\"og:image:height\" content=\"425\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"BleuIO\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Get company identifier information from Bluetooth advertising packets using Python\",\"datePublished\":\"2022-06-22T14:22:17+00:00\",\"dateModified\":\"2022-07-01T10:34:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/\"},\"wordCount\":376,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-company-indentifier-python.jpg\",\"articleSection\":[\"BleuIO\",\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/\",\"name\":\"Get company identifier information from Bluetooth advertising packets using Python - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-company-indentifier-python.jpg\",\"datePublished\":\"2022-06-22T14:22:17+00:00\",\"dateModified\":\"2022-07-01T10:34:46+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-company-indentifier-python.jpg\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-company-indentifier-python.jpg\",\"width\":644,\"height\":425,\"caption\":\"bluetooth company indentifier python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get company identifier information from Bluetooth advertising packets using Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\",\"name\":\"BleuIO - Create Bluetooth Low Energy application\",\"description\":\"Learn Bluetooth Low Energy programming and build Bluetooth Low Energy Application\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\",\"name\":\"BleuIO\",\"sameAs\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/author\\\/biadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Get company identifier information from Bluetooth advertising packets using Python - BleuIO - Create Bluetooth Low Energy application","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:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/","og_locale":"en_US","og_type":"article","og_title":"Get company identifier information from Bluetooth advertising packets using Python - BleuIO - Create Bluetooth Low Energy application","og_description":"Bluetooth Advertisements are crucial for any BLE device since they are utilized for all types of applications, whether that\u2019s a device that allows connections or one that simply advertises its presence and includes data for others to discover. The most important goal of advertising packets is to convey information to other BLE devices via the&nbsp;advertising [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2022-06-22T14:22:17+00:00","article_modified_time":"2022-07-01T10:34:46+00:00","og_image":[{"width":644,"height":425,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-company-indentifier-python.jpg","type":"image\/jpeg"}],"author":"BleuIO","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Get company identifier information from Bluetooth advertising packets using Python","datePublished":"2022-06-22T14:22:17+00:00","dateModified":"2022-07-01T10:34:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/"},"wordCount":376,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-company-indentifier-python.jpg","articleSection":["BleuIO","BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/","url":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/","name":"Get company identifier information from Bluetooth advertising packets using Python - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-company-indentifier-python.jpg","datePublished":"2022-06-22T14:22:17+00:00","dateModified":"2022-07-01T10:34:46+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-company-indentifier-python.jpg","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-company-indentifier-python.jpg","width":644,"height":425,"caption":"bluetooth company indentifier python"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/get-company-identifier-information-from-bluetooth-advertising-packets-using-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Get company identifier information from Bluetooth advertising packets using Python"}]},{"@type":"WebSite","@id":"https:\/\/www.bleuio.com\/blog\/#website","url":"https:\/\/www.bleuio.com\/blog\/","name":"BleuIO - Create Bluetooth Low Energy application","description":"Learn Bluetooth Low Energy programming and build Bluetooth Low Energy Application","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bleuio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80","name":"BleuIO","sameAs":["https:\/\/www.bleuio.com\/blog"],"url":"https:\/\/www.bleuio.com\/blog\/author\/biadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/comments?post=348"}],"version-history":[{"count":3,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":355,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/348\/revisions\/355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/350"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}