{"id":963,"date":"2024-11-05T23:24:25","date_gmt":"2024-11-05T23:24:25","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=963"},"modified":"2024-11-08T09:34:56","modified_gmt":"2024-11-08T09:34:56","slug":"building-a-remote-ble-interface-access-bleuio-from-any-location","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/","title":{"rendered":"Building a Remote BLE Interface: Access BLE devices from Any Location"},"content":{"rendered":"\n<p>This article will discuss about accessing a Bluetooth Low Energy (BLE) device\u2014specifically the <strong>BleuIO BLE USB dongle<\/strong>\u2014from a cloud-based computer. This setup is invaluable for developers, researchers, and organizations that need to control or monitor BLE devices located in remote or hard-to-reach locations. We will explain how to set up both local and cloud servers, and how to establish a secure connection between them, allowing you to send commands and receive data from a remote BLE device with ease.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why Do We Need Remote Access to BLE Devices?<\/h3>\n\n\n\n<p>Remote access to BLE devices opens up new possibilities in IoT, distributed applications, and various remote monitoring and management scenarios. Here are a few key use cases where this approach can be especially beneficial:<\/p>\n\n\n\n<p><strong>Remote Device Monitoring<\/strong>: In scenarios where BLE devices like sensors or trackers are deployed in different physical locations\u2014such as environmental monitoring stations, healthcare devices in hospitals, or industrial sensors in manufacturing facilities\u2014remote access allows centralized monitoring and control. For example, an environmental monitoring company could deploy BLE sensors in different regions and access data from all devices from a single central hub.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"502\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/image-2-1024x502.png\" alt=\"\" class=\"wp-image-979\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/image-2-1024x502.png 1024w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/image-2-300x147.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/image-2-768x377.png 768w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/image-2.png 1429w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Distributed Development and Testing<\/strong>: Developers and QA engineers can use remote access for testing and debugging BLE applications from any location, without needing to be physically near the BLE devices. This is particularly useful for teams working on IoT applications who want to test BLE functionality across different device types or networks. For instance, a developer could work on BLE application features from home, while the test device is connected to a machine in the office.<\/p>\n\n\n\n<p><strong>Centralized Management of BLE Devices<\/strong>: Organizations that manage multiple BLE devices across various locations, such as in retail stores, hospitals, or warehouses, can benefit from a centralized server setup to communicate with and manage all devices remotely. A central server could send updates, retrieve data, or manage configurations for multiple BLE devices, providing an efficient and scalable solution for distributed IoT applications.<\/p>\n\n\n\n<p><strong>Remote Troubleshooting and Maintenance<\/strong>: For businesses that deploy BLE devices at customer sites or in field locations, remote access allows technical support teams to troubleshoot issues without requiring on-site visits. This can reduce downtime and improve customer satisfaction. For example, a support technician could diagnose issues with a BLE-enabled device at a remote client site, identifying and resolving problems directly from the company\u2019s central office.<\/p>\n\n\n\n<p>By using <strong>BleuIO<\/strong> with AT commands, we make BLE application development much simpler and more accessible. The BleuIO dongle is compatible with Windows, macOS, and Linux, allowing consistent development across platforms.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project Structure and Components<\/h3>\n\n\n\n<p>In this project, we\u2019ll use the following components to remotely access and control BLE devices:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Device with BleuIO Connected (Local Device)<\/strong>: This is the device with the BleuIO dongle physically attached, acting as the local interface for sending and receiving BLE commands. It will run a small server to manage communication with the BLE dongle over a serial connection.<\/li>\n\n\n\n<li><strong>Remote Access Server (Cloud Server)<\/strong>: This is the server that provides remote access to the local device. By connecting to the local server, it enables us to send commands and receive data from the BLE dongle remotely.<\/li>\n\n\n\n<li><strong>LocalTunnel<\/strong>: We\u2019ll use LocalTunnel to generate a secure public URL, allowing the cloud server to communicate with the local device without needing complex router configurations. This URL acts as a bridge, making the local device accessible from anywhere with internet access.<\/li>\n\n\n\n<li><strong>Node.js<\/strong>: Both the local device and the cloud server will use Node.js to run simple server scripts that facilitate communication between the cloud server and the BLE dongle.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step-by-Step Guide<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Setting Up the Local Server with BleuIO dongle connected to it<\/h3>\n\n\n\n<p><strong>Local device<\/strong> is where the <strong>BleuIO<\/strong> dongle is physically connected. We\u2019ll set up a Node.js server that communicates with the dongle through the serial port. This server will accept commands from the cloud server and send them to the BLE dongle, then return the response.<\/p>\n\n\n\n<p><strong>Install Node.js<\/strong> (if not already installed) on Local device.<\/p>\n\n\n\n<p><strong>Create a project folder<\/strong> and initialize a Node.js project:<br><code>mkdir local_serial_server <\/code><br><code>cd local_serial_server<\/code><br><code>npm init -y<\/code><\/p>\n\n\n\n<p><strong>Install Dependencies<\/strong>:<ul><li>Install <code>serialport<\/code> to handle serial communication with the BLE dongle.Install <code>socket.io<\/code> to manage WebSocket connections.<\/li><\/ul><code>npm install serialport socket.io<\/code><\/p>\n\n\n\n<p><strong>Create the Local Serial Server Script<\/strong>:<ul><li>Create a file named <code>local_serial_server.js<\/code>. This script will:<ul><li>Listen for WebSocket connections from the cloud server.Accept commands, pass them to the BleuIO dongle, and send back responses.<\/li><\/ul><\/li><\/ul><code> <\/code><br><code>const http = require('http');<br>const { SerialPort } = require('serialport');<br>const socketIo = require('socket.io');<br><br>const server = http.createServer();<br>const io = socketIo(server);<br><br>\/\/ Define the serial port path and baud rate<br>const portPath = 'COM592'; \/\/ Replace 'COM3' with your dongle's port<br>const serialPort = new SerialPort({ path: portPath, baudRate: 9600 });<br><br>\/\/ Listen for incoming connections from the cloud server<br>io.on('connection', (socket) => {<br>    console.log('Connected to cloud server');<br><br>    \/\/ Receive command from cloud and send to serial port<br>    socket.on('sendCommand', (command) => {<br>        const formattedCommand = `${command}\\r\\n`;<br>        console.log(`Sending command to serial port: ${formattedCommand}`);<br>        serialPort.write(formattedCommand);<br>    });<br><br>    \/\/ Send serial responses to cloud server<br>    serialPort.on('data', (data) => {<br>        console.log(`Data received from serial port: ${data}`);<br>        socket.emit('serialResponse', data.toString());<br>    });<br>});<br><br>\/\/ Start the server on a specified port<br>const LOCAL_PORT = 4000; \/\/ Choose any port, ensure firewall allows it<br>server.listen(LOCAL_PORT, () => {<br>    console.log(`Local Serial Server running on http:\/\/localhost:${LOCAL_PORT}`);<br>});<br><\/code><\/p>\n\n\n\n<p><strong>Find and Set the Serial Port Path<\/strong>:<\/p>\n\n\n\n<p>In your <code>local_serial_server.js<\/code>, specify the correct serial port path for your BLE dongle (e.g., <code>COM3<\/code> on Windows or <code>\/dev\/ttyUSB0<\/code> on Linux).<\/p>\n\n\n<p><strong>Run the Local Serial Server<\/strong>:<\/p>\n<ul>\n<li>Start the server by running: node local_serial_server.js<\/li>\n<\/ul>\n<p>At this point, the local server is ready, but it\u2019s only accessible to itself. Next, we\u2019ll use LocalTunnel to make it accessible to the cloud server.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Step 2: Exposing the Local Server to the Internet Using LocalTunnel<\/h3>\n\n\n\n<p>Since local device 1 and cloud device are on different networks, we\u2019ll need to create a public URL for the local server. There are several options to make a local server accessible publicly, including tools like <strong>ngrok<\/strong>, <strong>Pagekite<\/strong>, and <strong>LocalTunnel<\/strong>. For this tutorial, we\u2019ll be using <strong>LocalTunnel<\/strong> as it\u2019s free and easy to set up, but feel free to explore other solutions if they better meet your needs.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Install LocalTunnel<\/strong>:\n<ul class=\"wp-block-list\">\n<li>On local device, install LocalTunnel globally <code>npm install -g localtunnel<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Start LocalTunnel<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Open a new terminal window on local device and run <code>lt --port 4000<\/code><\/li>\n\n\n\n<li>LocalTunnel will generate a public URL (e.g., <code>https:\/\/five-sides-live.loca.lt<\/code>). This URL will allow cloud device to access the local server running on port <code>4000<\/code> of Local device.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Save the LocalTunnel URL<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Copy the URL provided by LocalTunnel. This URL will be used in the cloud server configuration on Cloud device.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Setting Up the Cloud Server on Cloud device<\/h3>\n\n\n\n<p>In this setup, <strong>Cloud device<\/strong> will act as the cloud server that connects to <strong>local device<\/strong>\u2019s LocalTunnel URL, allowing remote access to the BLE dongle. <strong>Cloud device<\/strong> can be any machine with Node.js installed\u2014located anywhere, such as a remote computer in New York. You could also deploy this server on a cloud platform like <strong>Heroku<\/strong>, <strong>Replit<\/strong>, or <strong>Vercel<\/strong> for persistent access.<\/p>\n\n\n\n<p>For simplicity, in this example, we\u2019ll demonstrate how to set up the cloud server on another computer running Node.js, not connected to the same network as local device.<\/p>\n\n\n\n<p><strong>Create a Project Folder<\/strong> on cloud device and Initialize Node.js:<\/p>\n\n\n\n<p>Open a terminal or command prompt on <strong>cloud device<\/strong> and create a folder for the cloud server <code>mkdir cloud_serial_server <\/code><br><code>cd cloud_serial_server <\/code><br><code>npm init -y<\/code><\/p>\n\n\n\n<p><strong>Install Dependencies<\/strong>:<\/p>\n\n\n\n<p>You\u2019ll need <code>express<\/code> to serve the front-end pages and <code>socket.io<\/code> to manage WebSocket communication.<\/p>\n\n\n\n<p>Install <code>socket.io-client<\/code> to allow the cloud server to connect to the LocalTunnel URL created on Local device<br><code>npm install express socket.io socket.io-client<\/code><\/p>\n\n\n\n<p><strong>Create the Cloud Server Script<\/strong>: In the <code>cloud_serial_server<\/code> folder, create a file named <code>cloud_server.js<\/code>. This script will Connect to the LocalTunnel URL (generated by <strong style=\"color: initial; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;\">Local device<\/strong><span style=\"color: initial; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;\">) and forward BLE commands to the local server.Serve the front-end pages (<\/span><code style=\"background-color: rgba(0, 0, 0, 0.2); color: initial; font-size: 18px;\">index.html<\/code><span style=\"color: initial; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;\"> and <\/span><code style=\"background-color: rgba(0, 0, 0, 0.2); color: initial; font-size: 18px;\">page2.html<\/code><span style=\"color: initial; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;\">) for interacting with the BLE device remotely.<\/span><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const express = require('express');\nconst http = require('http');\nconst socketIo = require('socket.io');\nconst ioClient = require('socket.io-client'); \/\/ Client for local serial server\n\nconst app = express();\nconst server = http.createServer(app);\nconst io = socketIo(server);\n\n\/\/ Connect to the local serial server via WebSocket\nconst LOCAL_SERVER_URL = 'https:\/\/real-poets-count.loca.lt';\nconst localSocket = ioClient(LOCAL_SERVER_URL);\n\n\/\/ Serve static files (frontend files for Page 1 and Page 2)\napp.use(express.static('public'));\n\n\/\/ Handle messages from Page 2 and forward to local serial server\nio.on('connection', (socket) =&gt; {\n  console.log('Client connected to cloud server');\n\n  \/\/ Receive command from Page 2 and forward to local serial server\n  socket.on('sendCommand', (command) =&gt; {\n    console.log(`Forwarding command to local server: ${command}`);\n    localSocket.emit('sendCommand', command); \/\/ Send to local serial server\n  });\n\n  socket.on('disconnect', () =&gt; {\n    console.log('Client disconnected from cloud server');\n  });\n});\n\n\/\/ Receive data from local serial server and forward to clients\nlocalSocket.on('serialResponse', (data) =&gt; {\n  console.log(`Received data from local serial server: ${data}`);\n  io.emit('serialResponse', data); \/\/ Broadcast to connected clients\n});\n\nconst PORT = process.env.PORT || 3000;\nserver.listen(PORT, () =&gt; {\n  console.log(`Cloud server is running on http:\/\/localhost:${PORT}`);\n});\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Update the LocalTunnel URL in Cloud Server<\/strong>:<\/p>\n\n\n\n<p>Replace the <code>LOCAL_SERVER_URL<\/code> in <code>cloud_server.js<\/code> with the LocalTunnel URL you generated on <strong>Local device<\/strong> (e.g., <code>https:\/\/five-sides-live.loca.lt<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Run the Cloud Server<\/strong>:<\/h3>\n\n\n\n<p>Start the cloud server by running:bashCopy code<code>node cloud_server.js<\/code><\/p>\n\n\n\n<p>This will start a server that listens for connections on <strong>Cloud device<\/strong>. You can open a web browser on Cloud device and go to <code>http:\/\/localhost:3000<\/code> to access the front-end pages.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Access the Front-End Pages<\/strong>:<\/h3>\n\n\n\n<p>Open a browser and navigate to <code>http:\/\/localhost:3000\/index.html<\/code> (for displaying BLE responses) and <code>http:\/\/localhost:3000\/page2.html<\/code> (for sending commands).<\/p>\n\n\n\n<p><strong>Note<\/strong>: If you decide to deploy this server to a cloud platform (e.g., Heroku, Replit, or Vercel), replace <code>localhost<\/code> with the appropriate URL provided by the platform.<\/p>\n\n\n\n<p>With this setup, <strong>Cloud device<\/strong> can be anywhere in the world, allowing you to control and receive data from the BLE dongle on <strong>Local device<\/strong> (in Stockholm) remotely.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Source code<\/strong><\/h3>\n\n\n\n<p>The source code is available here at<a href=\" https:\/\/github.com\/smart-sensor-devices-ab\/remote_bleuio.git\"> https:\/\/github.com\/smart-sensor-devices-ab\/remote_bleuio.git<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Output<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Access BLE devices remotely with Nodejs\" width=\"640\" height=\"480\" src=\"https:\/\/www.youtube.com\/embed\/jkmO_BIcIP8?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>This tutorial demonstrates the potential of combining Node.js, BLE technology, and tunneling services for remote BLE access. The <strong>BleuIO<\/strong> dongle\u2019s compatibility and simplicity make it an excellent choice for developers interested in building BLE applications across various operating systems.<br><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article will discuss about accessing a Bluetooth Low Energy (BLE) device\u2014specifically the BleuIO BLE USB dongle\u2014from a cloud-based computer. This setup is invaluable for developers, researchers, and organizations that need to control or monitor BLE devices located in remote or hard-to-reach locations. We will explain how to set up both local and cloud servers, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":964,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,2],"tags":[],"class_list":["post-963","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>Building a Remote BLE Interface: Access BLE devices from Any Location - 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\/building-a-remote-ble-interface-access-bleuio-from-any-location\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a Remote BLE Interface: Access BLE devices from Any Location - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"This article will discuss about accessing a Bluetooth Low Energy (BLE) device\u2014specifically the BleuIO BLE USB dongle\u2014from a cloud-based computer. This setup is invaluable for developers, researchers, and organizations that need to control or monitor BLE devices located in remote or hard-to-reach locations. We will explain how to set up both local and cloud servers, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-05T23:24:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-08T09:34:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/remote-ble-access.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"550\" \/>\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\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Building a Remote BLE Interface: Access BLE devices from Any Location\",\"datePublished\":\"2024-11-05T23:24:25+00:00\",\"dateModified\":\"2024-11-08T09:34:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/\"},\"wordCount\":1361,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/remote-ble-access.jpg\",\"articleSection\":[\"BleuIO\",\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/\",\"name\":\"Building a Remote BLE Interface: Access BLE devices from Any Location - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/remote-ble-access.jpg\",\"datePublished\":\"2024-11-05T23:24:25+00:00\",\"dateModified\":\"2024-11-08T09:34:56+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/remote-ble-access.jpg\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/remote-ble-access.jpg\",\"width\":800,\"height\":550,\"caption\":\"remote ble access\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/building-a-remote-ble-interface-access-bleuio-from-any-location\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building a Remote BLE Interface: Access BLE devices from Any Location\"}]},{\"@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":"Building a Remote BLE Interface: Access BLE devices from Any Location - 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\/building-a-remote-ble-interface-access-bleuio-from-any-location\/","og_locale":"en_US","og_type":"article","og_title":"Building a Remote BLE Interface: Access BLE devices from Any Location - BleuIO - Create Bluetooth Low Energy application","og_description":"This article will discuss about accessing a Bluetooth Low Energy (BLE) device\u2014specifically the BleuIO BLE USB dongle\u2014from a cloud-based computer. This setup is invaluable for developers, researchers, and organizations that need to control or monitor BLE devices located in remote or hard-to-reach locations. We will explain how to set up both local and cloud servers, [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2024-11-05T23:24:25+00:00","article_modified_time":"2024-11-08T09:34:56+00:00","og_image":[{"width":800,"height":550,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/remote-ble-access.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\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Building a Remote BLE Interface: Access BLE devices from Any Location","datePublished":"2024-11-05T23:24:25+00:00","dateModified":"2024-11-08T09:34:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/"},"wordCount":1361,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/remote-ble-access.jpg","articleSection":["BleuIO","BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/","url":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/","name":"Building a Remote BLE Interface: Access BLE devices from Any Location - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/remote-ble-access.jpg","datePublished":"2024-11-05T23:24:25+00:00","dateModified":"2024-11-08T09:34:56+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/remote-ble-access.jpg","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2024\/11\/remote-ble-access.jpg","width":800,"height":550,"caption":"remote ble access"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/building-a-remote-ble-interface-access-bleuio-from-any-location\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building a Remote BLE Interface: Access BLE devices from Any Location"}]},{"@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\/963","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=963"}],"version-history":[{"count":10,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/963\/revisions"}],"predecessor-version":[{"id":981,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/963\/revisions\/981"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/964"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}