{"id":1406,"date":"2025-08-29T12:32:43","date_gmt":"2025-08-29T12:32:43","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=1406"},"modified":"2025-09-01T08:45:47","modified_gmt":"2025-09-01T08:45:47","slug":"ambient-adaptive-co2-bar-with-bleuio-hibouair","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/","title":{"rendered":"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir"},"content":{"rendered":"\n<p>This tutorial walks you through a tiny, privacy-first web app that reads only the advertised CO2 level from a nearby <strong>HibouAir<\/strong> sensor using a <strong>BleuIO<\/strong> USB BLE dongle. There\u2019s no pairing, cloud, or backend\u2014just your browser, the dongle, and a page that decodes a numeric CO2 value broadcast in BLE advertisements and renders it as a color bar (default window <strong>400\u20132000 ppm<\/strong>) with a simple <strong>\u201cHigh CO2\u201d<\/strong> warning when your threshold is crossed.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>This project is a follow-up to the <strong><a href=\"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-noise-bar-with-bleuio-hibouair\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ambient-Adaptive Noise Bar with BleuIO &amp; HibouAir<\/a><\/strong>. We reused the same structure and UI, but swap the decoder to read CO2 instead of noise.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">What you\u2019ll build<\/h2>\n\n\n\n<p>A single HTML file that talks to BleuIO over the Web Serial API. The page puts BleuIO in the central role, periodically runs a targeted scan for your HibouAir Board ID, and parses the Manufacturer Specific Data (MSD) bytes in each advertisement to extract CO2 (ppm). The value drives a horizontal gradient bar; cross the threshold and a warning banner appears. Everything runs locally in the browser.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Code:<\/strong> <a href=\"https:\/\/github.com\/smart-sensor-devices-ab\/co2-bar-realtime-bleuio\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub repository<\/a><\/li>\n\n\n\n<li><strong>Try it now:<\/strong> <a href=\"https:\/\/smart-sensor-devices-ab.github.io\/co2-bar-realtime-bleuio\/\" target=\"_blank\" rel=\"noreferrer noopener\">Live demo on GitHub Pages<\/a> \u2014 plug in BleuIO, and press <strong>Connect<\/strong>. Make sure to pass correct HibouAir Board ID<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Why a CO2-only, browser-based monitor?<\/h2>\n\n\n\n<p>CO2 is a practical proxy for ventilation. Elevated levels are associated with stale air, drowsiness, and reduced productivity. Many spaces\u2014meeting rooms, classrooms, offices, homes\u2014benefit from quick visual feedback so people know when to air out the room. Reading only a single, device-computed number from BLE advertisements keeps the design simple, fast, and privacy-preserving.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware &amp; software<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/bleuio.com\/bluetooth-low-energy-usb-ssd025.php\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>BleuIO<\/strong> USB BLE dongle<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.hibouair.com\/specifications-air-quality-monitor-co2-sensor.php\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>HibouAir<\/strong> C02 monitor<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How it works (at a glance)<\/h2>\n\n\n\n<p>BLE devices periodically broadcast short advertisement packets with real-time CO2 values. We can read them without pairing.<\/p>\n\n\n\n<p>This page filters to a specific <strong>Board ID<\/strong>, captures the advertisement line, extracts the longest hex payload, and then decodes <strong>CO2<\/strong> from a fixed position inside the MSD. The result is mapped to a 0\u2013100% fill of the bar (for a display window of <strong>400\u20132000 ppm<\/strong>), and we show a banner when CO2 \u2265 threshold (default 1000 ppm).<\/p>\n\n\n\n<p>Below is the exact function used in this project:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function decodeCo2FromAdv(hex) {\n  \/\/ sanitize \u2192 bytes\n  hex = (hex || '').replace(\/&#91;^0-9A-F]\/gi, '');\n  if (hex.length % 2) hex = hex.slice(0, -1);\n  const b = new Uint8Array(hex.length \/ 2);\n  for (let i = 0; i &lt; b.length; i++) b&#91;i] = parseInt(hex.substr(i*2,2), 16);\n\n  \/\/ locate MSD anchor and read CO2 at fixed offset (big-endian)\n  for (let i = 0; i &lt;= b.length - 5; i++) {\n    if (b&#91;i] === 0x5B &amp;&amp; b&#91;i+1] === 0x07 &amp;&amp; b&#91;i+2] === 0x05) {\n      const idx = i + 23;                \/\/ CO2 MSB position in this layout\n      if (idx + 1 &lt; b.length) {\n        return (b&#91;idx] &lt;&lt; 8) | b&#91;idx+1]; \/\/ ppm\n      }\n    }\n  }\n  return null;\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">The BLE flow<\/h2>\n\n\n\n<p>When you click <strong>Connect<\/strong>, the page opens a serial session to BleuIO and sends:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>AT+CENTRAL<\/code> once, to enter scanning mode<\/li>\n\n\n\n<li><code>AT+FINDSCANDATA=&lt;BOARD_ID&gt;=3<\/code> every cycle to run a 3-second targeted scan<\/li>\n\n\n\n<li>The reader consumes lines until BleuIO prints <code>SCAN COMPLETE<\/code>, then waits and repeats<\/li>\n<\/ul>\n\n\n\n<p>Each time an advertisement arrives, the page extracts the hex payload, decodes CO2, updates the bar, and toggles the <strong>High CO<\/strong>2 banner if the threshold is exceeded.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Output<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"536\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/image-3-1024x536.png\" alt=\"\" class=\"wp-image-1412\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/image-3-1024x536.png 1024w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/image-3-300x157.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/image-3-768x402.png 768w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/image-3-1536x803.png 1536w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/image-3-2048x1071.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/D0d3QXcvTKQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>You\u2019ll see a horizontal color bar labeled with the current <strong>CO2 ppm<\/strong>. The bar fills from left to right as values rise within the 400\u20132000 ppm window. A bold  High CO2 banner appears when the reading crosses your threshold (default 1000 ppm), serving as a polite nudge to improve ventilation.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Use cases<\/h1>\n\n\n\n<p>This simple CO2 bar works well anywhere people gather and air can get stale. In meeting rooms and classrooms it provides a live cue to crack a window or switch on ventilation as occupancy rises. In open offices it nudges teams toward timely air exchanges, helping reduce stuffiness and afternoon dips in alertness. At home it\u2019s a lightweight way to keep bedrooms and living spaces fresh during gatherings or winter months with closed windows. Shared studios and makerspaces also benefit from quick, ambient feedback without the overhead of dashboards or wall displays.<\/p>\n\n\n\n<p>Because the app reads only a single numeric value that HibouAir already broadcasts, it avoids handling personal data and is easy to deploy in privacy-sensitive environments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Accuracy &amp; practical notes<\/h2>\n\n\n\n<p>This is a lightweight indicator, not a calibration tool. CO2 readings in advertisements update periodically and represent the sensor\u2019s current value. Placement matters: keep your HibouAir within a reasonable range of BleuIO to reduce missed packets. If your environment regularly exceeds the default window, you can adjust the display range and threshold in the code.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Extend the project<\/h1>\n\n\n\n<p>You can grow this prototype in several practical directions. Start by logging readings to CSV or IndexedDB for simple trend analysis over days or weeks. If you have multiple sensors, add a multi-device view that scans several Board IDs and presents compact tiles in one page. For automation, trigger a webhook or send a serial command to control a fan or relay whenever CO2 exceeds your threshold. You can also pair it with the earlier Noise Bar and show Noise + CO2 side-by-side for a fuller picture of comfort and productivity.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial walks you through a tiny, privacy-first web app that reads only the advertised CO2 level from a nearby HibouAir sensor using a BleuIO USB BLE dongle. There\u2019s no pairing, cloud, or backend\u2014just your browser, the dongle, and a page that decodes a numeric CO2 value broadcast in BLE advertisements and renders it as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,2],"tags":[],"class_list":["post-1406","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.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir - 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\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"This tutorial walks you through a tiny, privacy-first web app that reads only the advertised CO2 level from a nearby HibouAir sensor using a BleuIO USB BLE dongle. There\u2019s no pairing, cloud, or backend\u2014just your browser, the dongle, and a page that decodes a numeric CO2 value broadcast in BLE advertisements and renders it as [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-29T12:32:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-01T08:45:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/co2-monitor-realtime.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\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\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir\",\"datePublished\":\"2025-08-29T12:32:43+00:00\",\"dateModified\":\"2025-09-01T08:45:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/\"},\"wordCount\":763,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/co2-monitor-realtime.jpg\",\"articleSection\":[\"BleuIO\",\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/\",\"name\":\"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/co2-monitor-realtime.jpg\",\"datePublished\":\"2025-08-29T12:32:43+00:00\",\"dateModified\":\"2025-09-01T08:45:47+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/co2-monitor-realtime.jpg\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/co2-monitor-realtime.jpg\",\"width\":750,\"height\":450,\"caption\":\"co2 monitor realtime\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/ambient-adaptive-co2-bar-with-bleuio-hibouair\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir\"}]},{\"@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":"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir - 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\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/","og_locale":"en_US","og_type":"article","og_title":"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir - BleuIO - Create Bluetooth Low Energy application","og_description":"This tutorial walks you through a tiny, privacy-first web app that reads only the advertised CO2 level from a nearby HibouAir sensor using a BleuIO USB BLE dongle. There\u2019s no pairing, cloud, or backend\u2014just your browser, the dongle, and a page that decodes a numeric CO2 value broadcast in BLE advertisements and renders it as [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2025-08-29T12:32:43+00:00","article_modified_time":"2025-09-01T08:45:47+00:00","og_image":[{"width":750,"height":450,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/co2-monitor-realtime.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\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir","datePublished":"2025-08-29T12:32:43+00:00","dateModified":"2025-09-01T08:45:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/"},"wordCount":763,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/co2-monitor-realtime.jpg","articleSection":["BleuIO","BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/","url":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/","name":"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/co2-monitor-realtime.jpg","datePublished":"2025-08-29T12:32:43+00:00","dateModified":"2025-09-01T08:45:47+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/co2-monitor-realtime.jpg","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2025\/08\/co2-monitor-realtime.jpg","width":750,"height":450,"caption":"co2 monitor realtime"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/ambient-adaptive-co2-bar-with-bleuio-hibouair\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ambient-Adaptive CO2 Bar with BleuIO &amp; HibouAir"}]},{"@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\/1406","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=1406"}],"version-history":[{"count":3,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1406\/revisions"}],"predecessor-version":[{"id":1414,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1406\/revisions\/1414"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/1409"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=1406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=1406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=1406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}