{"id":1739,"date":"2026-08-21T14:17:28","date_gmt":"2026-08-21T14:17:28","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=1739"},"modified":"2026-08-21T14:21:35","modified_gmt":"2026-08-21T14:21:35","slug":"build-a-cloud-air-quality-dashboard","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/","title":{"rendered":"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Air quality and environmental monitoring are common IoT use cases where Bluetooth Low Energy sensors can provide useful real-time information without requiring complex infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this project, we will use <strong><a href=\"https:\/\/www.hibouair.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HibouAir<\/a><\/strong> as our air quality monitoring sensor, <strong><a href=\"https:\/\/www.bleuio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">BleuIO<\/a><\/strong> as the Bluetooth Low Energy interface, and a Python application to collect and decode the advertised sensor data. The decoded measurements will then be sent to <strong><a href=\"https:\/\/tago.io\/\" data-type=\"link\" data-id=\"https:\/\/tago.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">TagoIO<\/a><\/strong>, where we can store and visualize the data using an online dashboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The goal is to keep the project simple. There is no need to install an IoT server, MQTT broker, database, or dashboard software locally. BleuIO handles the BLE communication, the Python application processes the sensor data collected from HibouAir, and TagoIO handles the cloud side.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why TagoIO?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/tago.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">TagoIO is an IoT platform<\/a> that provides tools for connecting devices, storing sensor data, and creating dashboards for visualization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this project, one of the main reasons for choosing TagoIO is that it is easy to get started. It provides a <strong>free plan<\/strong>, which is suitable for experimenting with a small number of devices and building proof-of-concept IoT applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This makes it particularly useful for projects such as environmental monitoring where we simply want to send sensor measurements to the cloud and visualize them without setting up our own backend infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the project grows later, TagoIO also provides paid subscription options with additional resources and capabilities. This means we can start with the free option while developing and testing the project, and move to a larger plan later if necessary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another useful feature is its dashboard builder. Once our sensor variables reach TagoIO, we can create cards, displays, gauges, and time-series charts directly from the web interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For our HibouAir project, this allows us to visualize measurements such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Temperature<\/li>\n\n\n\n<li>Relative humidity<\/li>\n\n\n\n<li>CO2<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Project Requirements<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For this project, we need the following hardware and software.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Hardware<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">BleuIO<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.bleuio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">BleuIO is a USB Bluetooth Low Energy dongle<\/a> that allows us to control BLE communication using simple AT commands over a serial connection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this project, BleuIO scans for the BLE advertisements transmitted by HibouAir and passes the received advertisement data to our Python application.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">HibouAir<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/www.hibouair.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HibouAir<\/a><\/strong> is the environmental BLE sensor used in this example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this project, we are using a HibouAir device advertising with the board ID:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>220069\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Software Requirements<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Install Python 3 if it is not already available.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project uses the following Python packages:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pyserial\nrequests\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install them using:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 -m pip install pyserial requests\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You will also need a <a href=\"https:\/\/tago.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">free TagoIO account<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create an account and then create a new device in the TagoIO console.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Device Name: HibouAir Air Quality Sensor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After creating the device, TagoIO generates a <strong>Device Token<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Device Token is used by the Python application to authenticate when sending measurements to TagoIO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep this token private and do not publish it in a public GitHub repository.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How the Project Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The project consists of three main stages.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Collect BLE Advertisements from HibouAir<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">HibouAir continuously broadcasts environmental data using Bluetooth Low Energy advertisements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BleuIO is connected to the computer through USB and appears as a serial device.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On macOS, for example, the BleuIO dongle may appear as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/dev\/cu.usbmodemxxxxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The Python application opens this serial port and communicates with BleuIO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To locate our specific HibouAir device, the application asks BleuIO to search for advertisements containing the HibouAir board ID:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>220069\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Conceptually, the command looks like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AT+FINDSCANDATA=220069=3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">BleuIO scans for matching BLE advertisements and returns the advertisement data to the Python application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The data received from BleuIO contains the raw BLE advertisement in hexadecimal format.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Python application identifies the HibouAir environmental advertisement and extracts the relevant bytes from the payload.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The values are then decoded into useful environmental measurements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Temperature : 24.6 \u00b0C\nHumidity    : 48.2 %\nCO2         : 612 ppm\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Sending the Data to TagoIO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the HibouAir advertisement has been decoded, the Python application prepares the measurements in the format expected by TagoIO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  {\n    \"variable\": \"temperature\",\n    \"value\": 24.6,\n    \"unit\": \"\u00b0C\"\n  },\n  {\n    \"variable\": \"humidity\",\n    \"value\": 48.2,\n    \"unit\": \"%\"\n  },\n  {\n    \"variable\": \"co2\",\n    \"value\": 612,\n    \"unit\": \"ppm\"\n  }\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The application then sends the data to the TagoIO API using HTTPS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The TagoIO Device Token is included with the request so that TagoIO knows which device the measurements belong to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After the first successful upload, the variables automatically become available for the device in TagoIO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, the variables are:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>temperature\nhumidity\nco2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The application continues scanning for new HibouAir advertisements and periodically uploads new measurements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating the TagoIO Dashboard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the sensor data starts appearing in TagoIO, we can create a dashboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the TagoIO console, go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dashboards\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Create a new dashboard and give it a name such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HibouAir Air Quality Dashboard\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We can then add widgets using the variables sent by our Python application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, we can create current-value widgets for:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Temperature\nHumidity\nCO2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We can also add line charts to display how each measurement changes over time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because TagoIO stores timestamps with the measurements, the line-chart widgets can display the sensor data as a time series.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This gives us a simple cloud-based air-quality monitoring dashboard without having to maintain our own database or web application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Source Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The complete source code for this project is available on GitHub:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GitHub:<\/strong><br><a href=\"https:\/\/github.com\/smart-sensor-devices-ab\/BleuIO-hibouair-tagoio\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/smart-sensor-devices-ab\/BleuIO-hibouair-tagoio<\/a><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configure the Application<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before running the application, update the configuration with your BleuIO serial port and TagoIO Device Token.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BLEUIO_PORT = \"\/dev\/cu.usbmodem4048FDE52CF21\"\n\nHIBOUAIR_ID = \"220069\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You will also need your TagoIO Device Token.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For development, the token can be supplied through the application configuration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The TagoIO API endpoint also needs to match the region used by your TagoIO account.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running the Application<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.bleuio.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">BleuIO<\/a> is connected to the computer.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.hibouair.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">HibouAir<\/a> is powered on and advertising.<\/li>\n\n\n\n<li>Your computer has an Internet connection.<\/li>\n\n\n\n<li>Your TagoIO Device Token has been configured.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Then run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 script.py\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The application should first connect to BleuIO.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You should see output similar to:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"753\" height=\"1024\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-21-at-19.31.18-753x1024.png\" alt=\"\" class=\"wp-image-1741\" style=\"width:300px;height:auto\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-21-at-19.31.18-753x1024.png 753w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-21-at-19.31.18-221x300.png 221w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-21-at-19.31.18-768x1044.png 768w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/Screenshot-2026-08-21-at-19.31.18.png 772w\" sizes=\"auto, (max-width: 753px) 100vw, 753px\" \/><\/figure>\n<\/div>\n\n\n<pre class=\"wp-block-code\"><code>BleuIO + HibouAir + TagoIO\n==========================\n\nBleuIO port: \/dev\/cu.usbmodem4048FDE52CF21\nBleuIO responded OK\n\nLooking for HibouAir 220069\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When a valid HibouAir advertisement is received, the decoded sensor measurements will be displayed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>----------------------------------\nHibouAir detected\n----------------------------------\n\nTemperature   : 24.6 \u00b0C\nHumidity      : 48.2 %\nCO2           : 612 ppm\n\n----------------------------------\n\nTagoIO upload: OK\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The application will continue scanning and uploading new readings until it is stopped.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ctrl + C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">to stop the application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Output<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After the application has been running for a while, the sensor measurements will be available from the TagoIO device page and dashboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The dashboard can display the latest HibouAir measurements as well as their historical changes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"521\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/HibouAir-Air-Quality-Dashboard-Dashboards-TagoIO-08-21-2026_07_29_PM-1024x521.jpg\" alt=\"\" class=\"wp-image-1740\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/HibouAir-Air-Quality-Dashboard-Dashboards-TagoIO-08-21-2026_07_29_PM-1024x521.jpg 1024w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/HibouAir-Air-Quality-Dashboard-Dashboards-TagoIO-08-21-2026_07_29_PM-300x152.jpg 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/HibouAir-Air-Quality-Dashboard-Dashboards-TagoIO-08-21-2026_07_29_PM-767x390.jpg 767w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/HibouAir-Air-Quality-Dashboard-Dashboards-TagoIO-08-21-2026_07_29_PM-2048x1042-1.jpg 2048w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/HibouAir-Air-Quality-Dashboard-Dashboards-TagoIO-08-21-2026_07_29_PM-1536x781-1.jpg 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In this project, we created a simple cloud-connected environmental monitoring system using <strong>HibouAir, BleuIO, Python, and TagoIO<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This project should be considered a <strong>starting point rather than a finished monitoring product<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The code can be modified or expanded in many ways.  Feel free to modify, extend, or reuse the code in your own BLE and IoT applications as needed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Air quality and environmental monitoring are common IoT use cases where Bluetooth Low Energy sensors can provide useful real-time information without requiring complex infrastructure. In this project, we will use HibouAir as our air quality monitoring sensor, BleuIO as the Bluetooth Low Energy interface, and a Python application to collect and decode the advertised sensor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1745,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1739","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bleuio-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO - 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\/build-a-cloud-air-quality-dashboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"Air quality and environmental monitoring are common IoT use cases where Bluetooth Low Energy sensors can provide useful real-time information without requiring complex infrastructure. In this project, we will use HibouAir as our air quality monitoring sensor, BleuIO as the Bluetooth Low Energy interface, and a Python application to collect and decode the advertised sensor [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:17:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-21T14:21:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/bleuio-tago-io-dashboard.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"572\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\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\\\/build-a-cloud-air-quality-dashboard\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO\",\"datePublished\":\"2026-08-21T14:17:28+00:00\",\"dateModified\":\"2026-08-21T14:21:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/\"},\"wordCount\":1060,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/bleuio-tago-io-dashboard.webp\",\"articleSection\":[\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/\",\"name\":\"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/bleuio-tago-io-dashboard.webp\",\"datePublished\":\"2026-08-21T14:17:28+00:00\",\"dateModified\":\"2026-08-21T14:21:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/bleuio-tago-io-dashboard.webp\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/bleuio-tago-io-dashboard.webp\",\"width\":1024,\"height\":572,\"caption\":\"bleuio tago io dashboard\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/build-a-cloud-air-quality-dashboard\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO\"}]},{\"@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":"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO - 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\/build-a-cloud-air-quality-dashboard\/","og_locale":"en_US","og_type":"article","og_title":"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO - BleuIO - Create Bluetooth Low Energy application","og_description":"Air quality and environmental monitoring are common IoT use cases where Bluetooth Low Energy sensors can provide useful real-time information without requiring complex infrastructure. In this project, we will use HibouAir as our air quality monitoring sensor, BleuIO as the Bluetooth Low Energy interface, and a Python application to collect and decode the advertised sensor [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2026-08-21T14:17:28+00:00","article_modified_time":"2026-08-21T14:21:35+00:00","og_image":[{"width":1024,"height":572,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/bleuio-tago-io-dashboard.webp","type":"image\/webp"}],"author":"BleuIO","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO","datePublished":"2026-08-21T14:17:28+00:00","dateModified":"2026-08-21T14:21:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/"},"wordCount":1060,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/bleuio-tago-io-dashboard.webp","articleSection":["BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/","url":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/","name":"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/bleuio-tago-io-dashboard.webp","datePublished":"2026-08-21T14:17:28+00:00","dateModified":"2026-08-21T14:21:35+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/bleuio-tago-io-dashboard.webp","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2026\/08\/bleuio-tago-io-dashboard.webp","width":1024,"height":572,"caption":"bleuio tago io dashboard"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/build-a-cloud-air-quality-dashboard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Build a Cloud Air Quality Dashboard with HibouAir, BleuIO, and TagoIO"}]},{"@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\/1739","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=1739"}],"version-history":[{"count":5,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1739\/revisions"}],"predecessor-version":[{"id":1749,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/1739\/revisions\/1749"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/1745"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=1739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=1739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=1739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}