{"id":318,"date":"2022-06-08T14:33:42","date_gmt":"2022-06-08T14:33:42","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=318"},"modified":"2022-07-01T10:24:54","modified_gmt":"2022-07-01T10:24:54","slug":"get-air-quality-bluetooth-le-sensor-data-from-multiple-devices","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/","title":{"rendered":"Get air quality Bluetooth LE sensor data from multiple devices"},"content":{"rendered":"\n<p>There are so many Bluetooth-enabled smart devices that it can be confusing how the technology connects the devices. Often we want to connect to multiple peripheral devices simultaneously to get advertised packets or do other operations. In this article, we will see how we can get advertised packets from two different Air quality monitoring sensor devices.&nbsp;<\/p>\n\n\n\n<p>For this project, we will use Chrome Web serial API to connect to a Bluetooth USB dongle. Using the serial port read\/write operation we will scan for specific device advertised data and filter out what we need. After that, we decode the advertised packet to meaningful air quality data using the device documentation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Requirments<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/www.bleuio.com\/\">BleuIO Bluetooth USB dongle<\/a> x1<\/li><li><a href=\"https:\/\/www.hibouair.com\/\">HibouAir Air quality monitor<\/a> x2<\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Steps<\/h3>\n\n\n\n<p>At first, we will get the bleuIO javascript library from NPM. This library will help us easily connect to the serial port,wtire AT commands and read responses in real-time.<\/p>\n\n\n\n<p>Type <code>npm i bleuio<\/code> on the command prompt of your project root folder.<\/p>\n\n\n\n<p>After that, we create two files. index.html and script.js<\/p>\n\n\n\n<p>Index.html will be responsible for the output and layouts of the project.&nbsp;<\/p>\n\n\n\n<p>Script.js will have the programming and logic to connect to the dongle and read\/write data.<\/p>\n\n\n\n<p>There will be two buttons&nbsp;<strong>connect&nbsp;<\/strong>and&nbsp;<strong>get data<\/strong>.<\/p>\n\n\n\n<p>The connect button will connect to the bleuIO dongle using the serial port.&nbsp;<\/p>\n\n\n\n<p>The get data button will do several tasks.<\/p>\n\n\n\n<p>At first, we put the dongle in a dual role (central mode) so that it can scan for peripheral devices. Then we will look for advertised data with their sensor ID one after another.&nbsp;<\/p>\n\n\n\n<p>Using the documentation from the air quality device, we decode the advertised data.<\/p>\n\n\n\n<p>Finally, we print it out on the screen.<\/p>\n\n\n\n<p>Here is the index.html file code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n  &lt;head&gt;\n    &lt;meta charset=\"utf-8\" \/&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/&gt;\n    &lt;title&gt;Bootstrap demo&lt;\/title&gt;\n    &lt;link\n      href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.2.0-beta1\/dist\/css\/bootstrap.min.css\"\n      rel=\"stylesheet\"\n      integrity=\"sha384-0evHe\/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor\"\n      crossorigin=\"anonymous\"\n    \/&gt;\n  &lt;\/head&gt;\n  &lt;body&gt;\n    &lt;div class=\"container mt-5\"&gt;\n      &lt;h1&gt;Get air quality Bluetooth LE sensor data from multiple devices&lt;\/h1&gt;\n      &lt;br \/&gt;&lt;br \/&gt;&lt;br \/&gt;&lt;button\n        id=\"connect\"\n        class=\"btn btn-success btn-lg me-5\"\n      &gt;\n        Connect\n      &lt;\/button&gt;\n      &lt;button id=\"getData\" class=\"btn btn-warning btn-lg ms-5\"&gt;Get Data&lt;\/button&gt;\n      &lt;br \/&gt;\n      &lt;br \/&gt;\n      &lt;div id=\"loading\" style=\"display: none\"&gt;Fetching Data ...&lt;\/div&gt;\n      &lt;br \/&gt;\n      &lt;div id=\"airData\"&gt;&lt;\/div&gt;\n    &lt;\/div&gt;\n\n    &lt;script src=\"script.js\"&gt;&lt;\/script&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p>Here is script.js file code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import * as my_dongle from 'bleuio'\ndocument.getElementById('connect').addEventListener('click', function(){\n  my_dongle.at_connect()\n  document.getElementById(\"connect\").classList.add('disabled');\n})\nlet dev1BoardID='45840D'\nlet dev2BoardID='60FDED'\ndocument.getElementById('getData').addEventListener('click', function(){\n    \n    \/\/show loading\n    document.getElementById(\"loading\").style.display = \"block\";\n    \/\/make the dongle in dual role , so it can scan for peripheral devices advertised data\n    my_dongle.at_dual().then(()=&gt;{\n        \/\/scan for a devices advertised data, a PM sensor\n        my_dongle.at_findscandata(dev1BoardID,8).then((x)=&gt;{\n            \/\/it returns an array of advertised data\n            \/\/from the array, we take the last one\n            \/\/it looks like this \"&#91;F9:0D:35:E7:72:65] Device Data &#91;ADV]: 0201061BFF5B07050345840DB1031527FB002A010402040004000400000001\"\n            \/\/then we split it by space\n            \/\/so we can get the advertised data only (the last part)\n            return x&#91;x.length-1].split(\" \").pop()\n        }).then((adv1)=&gt;{ \n            \/\/now lets decode the advertised data for this device using the device documentaion\n            let pmEnvData=advDataDecode(adv1)\n            \/\/we do the same process to get advertised data of another device\n            \/\/after waiting 1 seconds\n            setTimeout(()=&gt;{\n                my_dongle.at_findscandata(dev2BoardID,8).then((y)=&gt;{\n                    let adv2= y&#91;y.length-1].split(\" \").pop()\n                    \/\/again we decode the advertised data for this device using the device documentaion\n                    let co2EnvData=advDataDecode(adv2)\n                    \/\/now merge pm data to this array\n                    co2EnvData.pm1=pmEnvData.pm1\n                    co2EnvData.pm25=pmEnvData.pm25\n                    co2EnvData.pm10=pmEnvData.pm10\n                    document.getElementById('airData').innerHTML=`\n                    Air Quality data from PM and CO2 sensor devices&lt;br\/&gt;&lt;br\/&gt;\n                    CO2 : ${co2EnvData.co2} ppm&lt;br\/&gt;\n                    PM 1.0 : ${co2EnvData.pm1} \u00b5g\/m\u00b3&lt;br\/&gt;\n                    PM 2.5 : ${co2EnvData.pm25} \u00b5g\/m\u00b3&lt;br\/&gt;\n                    PM 10 : ${co2EnvData.pm10} \u00b5g\/m\u00b3&lt;br\/&gt;\n                    Temperature : ${co2EnvData.temp} \u00b0C&lt;br\/&gt;\n                    Humidity : ${co2EnvData.hum} %rH&lt;br\/&gt;\n                    Pressure : ${co2EnvData.pressure} mbar&lt;br\/&gt;\n                    Light : ${co2EnvData.light} Lux&lt;br\/&gt;\n\n                    `\n                    \/\/hide loading\n                    document.getElementById(\"loading\").style.display = \"none\"; \n                })\n            },1000)\n            \n        })\n    })\n    \n\n  })\n\n  const advDataDecode =((data)=&gt;{\n    let pos = data.indexOf(\"5B0705\")\n    let dt = new Date();\n    let currentTs = dt.getFullYear() \n    + '\/' \n    + (dt.getMonth() + 1).toString().padStart(2, \"0\") \n    + '\/' \n    + dt.getDate().toString().padStart(2, \"0\")\n    +' '\n    +\n    dt.getHours().toString().padStart(2, \"0\")\n    +\n    ':'\n    +\n    dt.getMinutes().toString().padStart(2, \"0\")\n    +\n    ':'\n    +dt.getSeconds().toString().padStart(2, \"0\")\n    let tempHex=parseInt('0x'+data.substr(pos+22,4).match(\/..\/g).reverse().join(''))\n    if(tempHex&gt;1000)\n        tempHex = (tempHex - (65535 + 1) )\/10\n    else\n        tempHex = tempHex\/10\n    return {\n      \"boardID\":data.substr(pos+8,6),\n      \"type\":data.substr(pos+6,2),\n      \"light\":parseInt('0x'+data.substr(pos+14,4).match(\/..\/g).reverse().join('')),\n      \"pressure\":parseInt('0x'+data.substr(pos+18,4).match(\/..\/g).reverse().join(''))\/10,\n      \"temp\":tempHex,\n      \"hum\":parseInt('0x'+data.substr(pos+26,4).match(\/..\/g).reverse().join(''))\/10,\n      \"pm1\":parseInt('0x'+data.substr(pos+34,4).match(\/..\/g).reverse().join(''))\/10,\n      \"pm25\":parseInt('0x'+data.substr(pos+38,4).match(\/..\/g).reverse().join(''))\/10,\n      \"pm10\":parseInt('0x'+data.substr(pos+42,4).match(\/..\/g).reverse().join(''))\/10,\n      \"co2\":parseInt('0x'+data.substr(pos+46,4)),\n      \"ts\":currentTs\n    }\n})<\/code><\/pre>\n\n\n\n<p>Source code also available on github <\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/shuhad\/bluetooth_mutiple_device_read\">https:\/\/github.com\/shuhad\/bluetooth_mutiple_device_read<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Run the script<\/h3>\n\n\n\n<p>You can either clone the script from github or follow the instructions and make a new project.  <\/p>\n\n\n\n<p>For this project to run we may need a web build tool. I prefer using parcel. <\/p>\n\n\n\n<p><a href=\"https:\/\/parceljs.org\/\">https:\/\/parceljs.org\/<\/a><\/p>\n\n\n\n<p>install parcel if you don&#8217;t have<\/p>\n\n\n\n<p><code>npm install --save-dev parcel<\/code><\/p>\n\n\n\n<p>Now run the script using <\/p>\n\n\n\n<p><code>parcel index.html<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Output<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"495\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-1024x495.png\" alt=\"\" class=\"wp-image-320\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-1024x495.png 1024w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-300x145.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image-768x371.png 768w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/image.png 1215w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The script can be modified to read more than two devices as required.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are so many Bluetooth-enabled smart devices that it can be confusing how the technology connects the devices. Often we want to connect to multiple peripheral devices simultaneously to get advertised packets or do other operations. In this article, we will see how we can get advertised packets from two different Air quality monitoring sensor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":319,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,2],"tags":[],"class_list":["post-318","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.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Get air quality Bluetooth LE sensor data from multiple devices - 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-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Get air quality Bluetooth LE sensor data from multiple devices - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"There are so many Bluetooth-enabled smart devices that it can be confusing how the technology connects the devices. Often we want to connect to multiple peripheral devices simultaneously to get advertised packets or do other operations. In this article, we will see how we can get advertised packets from two different Air quality monitoring sensor [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-08T14:33:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-01T10:24:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"399\" \/>\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-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Get air quality Bluetooth LE sensor data from multiple devices\",\"datePublished\":\"2022-06-08T14:33:42+00:00\",\"dateModified\":\"2022-07-01T10:24:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/\"},\"wordCount\":397,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg\",\"articleSection\":[\"BleuIO\",\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/\",\"name\":\"Get air quality Bluetooth LE sensor data from multiple devices - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg\",\"datePublished\":\"2022-06-08T14:33:42+00:00\",\"dateModified\":\"2022-07-01T10:24:54+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg\",\"width\":600,\"height\":399,\"caption\":\"bluetooth get data from multiple devices sensor air quality\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get air quality Bluetooth LE sensor data from multiple devices\"}]},{\"@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 air quality Bluetooth LE sensor data from multiple devices - 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-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/","og_locale":"en_US","og_type":"article","og_title":"Get air quality Bluetooth LE sensor data from multiple devices - BleuIO - Create Bluetooth Low Energy application","og_description":"There are so many Bluetooth-enabled smart devices that it can be confusing how the technology connects the devices. Often we want to connect to multiple peripheral devices simultaneously to get advertised packets or do other operations. In this article, we will see how we can get advertised packets from two different Air quality monitoring sensor [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2022-06-08T14:33:42+00:00","article_modified_time":"2022-07-01T10:24:54+00:00","og_image":[{"width":600,"height":399,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.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-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Get air quality Bluetooth LE sensor data from multiple devices","datePublished":"2022-06-08T14:33:42+00:00","dateModified":"2022-07-01T10:24:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/"},"wordCount":397,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg","articleSection":["BleuIO","BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/","url":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/","name":"Get air quality Bluetooth LE sensor data from multiple devices - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg","datePublished":"2022-06-08T14:33:42+00:00","dateModified":"2022-07-01T10:24:54+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/06\/bluetooth-get-data-from-multiple-devices-sensor-air-quality.jpg","width":600,"height":399,"caption":"bluetooth get data from multiple devices sensor air quality"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/get-air-quality-bluetooth-le-sensor-data-from-multiple-devices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Get air quality Bluetooth LE sensor data from multiple devices"}]},{"@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\/318","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=318"}],"version-history":[{"count":4,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/318\/revisions"}],"predecessor-version":[{"id":372,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/318\/revisions\/372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/319"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}