<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fastbee</title>
    <description>The latest articles on DEV Community by Fastbee (@fastbee_f2f02dbd9fa604d19).</description>
    <link>https://dev.to/fastbee_f2f02dbd9fa604d19</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201509%2Ff24fef2f-9669-4246-ad6a-9f122cfbe0cb.png</url>
      <title>DEV Community: Fastbee</title>
      <link>https://dev.to/fastbee_f2f02dbd9fa604d19</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fastbee_f2f02dbd9fa604d19"/>
    <language>en</language>
    <item>
      <title>ESP32/ESP8266 MQTT Tutorial: Docker Deployment and Remote Device Control</title>
      <dc:creator>Fastbee</dc:creator>
      <pubDate>Wed, 28 Oct 2026 03:19:13 +0000</pubDate>
      <link>https://dev.to/fastbee_f2f02dbd9fa604d19/esp32esp8266-mqtt-tutorial-docker-deployment-and-remote-device-control-58km</link>
      <guid>https://dev.to/fastbee_f2f02dbd9fa604d19/esp32esp8266-mqtt-tutorial-docker-deployment-and-remote-device-control-58km</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A reproducible IoT development walkthrough: run FastBee Open Source Edition with Docker, configure an MQTT product and Thing Model, then publish telemetry and receive remote commands on an ESP32 or ESP8266.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Deploy FastBee Open Source Edition, create and publish an MQTT product with the properties your device will report, then connect the board using its product ID, device number, user ID, and MQTT credentials. Use FastBee-Arduino’s documented firmware path for supported ESP32 boards; an ESP8266 needs a custom MQTT client that follows FastBee’s documented topics and payload format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For:&lt;/strong&gt; Developers who know basic networking and Arduino development and are setting up an IoT platform for the first time.&lt;br&gt;
&lt;strong&gt;Outcome:&lt;/strong&gt; Move from Wi-Fi connectivity to a complete loop: the platform sees device data, sends a command, and receives the device’s reported state.&lt;br&gt;
&lt;strong&gt;Board support:&lt;/strong&gt; Official FastBee-Arduino zero-code firmware targets the ESP32 family. An ESP8266 can follow the MQTT protocol below with firmware you write and maintain; do not flash the ESP32 firmware onto an ESP8266.&lt;/p&gt;
&lt;h2&gt;
  
  
  What you will build
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A FastBee Open Source Edition test environment deployed with Docker Compose.&lt;/li&gt;
&lt;li&gt;An MQTT product with a temperature property and a writable switch property.&lt;/li&gt;
&lt;li&gt;An ESP32 or ESP8266 device that comes online, reports properties, and completes a remote-control round trip.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sensor/relay ↔ ESP32 or ESP8266 ↔ MQTT broker ↔ FastBee platform ↔ Web console
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A server or local VM. FastBee’s current Docker guide lists a minimum of 2 CPU cores and 4 GB RAM; this is a documented deployment minimum, not production capacity planning.&lt;/li&gt;
&lt;li&gt;Docker 20.10+ and Docker Compose 2.0+.&lt;/li&gt;
&lt;li&gt;An ESP32 development board. An ESP8266 is also suitable for the custom MQTT firmware path.&lt;/li&gt;
&lt;li&gt;A data-capable USB cable and Wi-Fi. Optional: a temperature sensor, low-voltage LED, or isolated relay module.&lt;/li&gt;
&lt;li&gt;A browser and, optionally, MQTTX to validate the broker and topics before debugging firmware.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The host, board, and browser must be able to reach one another. In this guide, &lt;code&gt;SERVER_IP&lt;/code&gt; is the FastBee host address. Replace &lt;code&gt;PRODUCT_ID&lt;/code&gt;, &lt;code&gt;DEVICE_NUM&lt;/code&gt;, and other placeholders with values from your own console. On the device, use a reachable server IP or hostname: &lt;code&gt;localhost&lt;/code&gt; refers to the device itself.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Deploy FastBee with Docker
&lt;/h2&gt;

&lt;p&gt;FastBee Open Source Edition includes a built-in MQTT Broker, so a first test does not require a separate EMQX deployment. FastBee’s current Docker guide lists Docker 20.10+, Docker Compose 2.0+, and a minimum of 2 CPU cores and 4 GB RAM. Treat those values as the documented deployment minimum; production sizing depends on workload and should be measured for the target deployment.&lt;/p&gt;

&lt;p&gt;Run the official installer on a Linux host and select the open-source edition when prompted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;wget &lt;span class="nt"&gt;-c&lt;/span&gt; https://hub.fastbee.cn/resource/install.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash ./install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that the containers are running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://SERVER_IP:80&lt;/code&gt; in a browser. The documented initial credentials are &lt;code&gt;admin / admin123&lt;/code&gt;; change the password after the first login. For a test setup, expose only the Web and MQTT TCP 1883 ports to the networks that need them. Do not expose internal database or Redis services directly to the public Internet.&lt;/p&gt;

&lt;p&gt;Official guide: &lt;a href="https://www.fastbee.cn/doc/en/open/v2/install/docker.html" rel="noopener noreferrer"&gt;FastBee Docker deployment&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Create an MQTT product and device
&lt;/h2&gt;

&lt;p&gt;In the console, create an MQTT product and add these Thing Model properties:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Identifier&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Access&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Numeric&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;td&gt;Show sensor readings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;switch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Boolean/switch&lt;/td&gt;
&lt;td&gt;Read and write&lt;/td&gt;
&lt;td&gt;Receive a command and report the actual switch state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Save and publish the product, then create a device. Record the &lt;strong&gt;product ID&lt;/strong&gt; from the product details (not the product number), device number, MQTT username and password, and the current user ID. Also record the device authorization code if it is enabled for the product.&lt;/p&gt;

&lt;p&gt;For a test connection, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host: mqtt://SERVER_IP
Port: 1883
Protocol: MQTT 3.1.1
Client ID: S&amp;amp;DEVICE_NUM&amp;amp;PRODUCT_ID&amp;amp;USER_ID
Username: MQTT username
Password: MQTT password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If device authorization is enabled, use &lt;code&gt;MQTT_PASSWORD&amp;amp;AUTH_CODE&lt;/code&gt; as the password. For production, follow the official encrypted-authentication instructions and never commit real credentials to a public repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Validate the data path with MQTTX
&lt;/h2&gt;

&lt;p&gt;Use MQTTX first to separate broker and topic issues from firmware and wiring issues. Create a connection with the parameters above, then subscribe to the platform-to-device topic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/{PRODUCT_ID}/{DEVICE_NUM}/function/get
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Publish this device information payload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rssi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-48&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"firmwareVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"userId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;USER_ID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next publish properties to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/{PRODUCT_ID}/{DEVICE_NUM}/property/post
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"temperature"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"23.6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"remark"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"bench test"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"switch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"remark"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"relay off"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirm that the device is online and both values appear in its detail page. Each &lt;code&gt;id&lt;/code&gt; must exactly match a Thing Model identifier. Values are strings; Boolean values use &lt;code&gt;"0"&lt;/code&gt; or &lt;code&gt;"1"&lt;/code&gt;. After connecting, publish &lt;code&gt;/info/post&lt;/code&gt; first, followed by properties or events.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Connect an ESP32 or ESP8266
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option A: FastBee-Arduino on ESP32
&lt;/h3&gt;

&lt;p&gt;For the fastest device-side start, follow the official quick-start guide to select a merged firmware for a supported ESP32 board and flash it with the online tool. Match the firmware to the board’s Flash and PSRAM configuration, then configure Wi-Fi, peripherals, and network settings.&lt;/p&gt;

&lt;p&gt;Set the platform address to an IP or hostname reachable from the board. Enter the device identity and MQTT credentials configured for the product. On a local network, the broker is typically &lt;code&gt;SERVER_IP:1883&lt;/code&gt;. Configure the temperature sensor and switch output, map them to &lt;code&gt;temperature&lt;/code&gt; and &lt;code&gt;switch&lt;/code&gt;, and check the device’s online state and property updates in the console.&lt;/p&gt;

&lt;p&gt;Official steps: &lt;a href="https://www.fastbee.cn/doc/en/device/v2/getting-started/quick-start.html" rel="noopener noreferrer"&gt;FastBee-Arduino quick start&lt;/a&gt; · &lt;a href="https://www.fastbee.cn/doc/en/device/v2/hardware-equipment.html" rel="noopener noreferrer"&gt;Hardware and environment&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Option B: A custom MQTT client on ESP8266
&lt;/h3&gt;

&lt;p&gt;An ESP8266 can connect as a standard MQTT device, but you must implement and maintain its Arduino firmware adapter. Connect to Wi-Fi and the MQTT 3.1.1 broker with the credentials above, publish device information and properties, and subscribe to &lt;code&gt;/function/get&lt;/code&gt;. FastBee-Arduino’s official zero-code firmware is not ESP8266 firmware.&lt;/p&gt;

&lt;p&gt;The firmware logic should look like this. Replace &lt;code&gt;mqttPublish&lt;/code&gt;, &lt;code&gt;mqttSubscribe&lt;/code&gt;, JSON parsing, and GPIO operations with the APIs from your chosen MQTT library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Connect to Wi-Fi
Connect to MQTT with clientId = "S&amp;amp;" + DEVICE_NUM + "&amp;amp;" + PRODUCT_ID + "&amp;amp;" + USER_ID
Subscribe to /{PRODUCT_ID}/{DEVICE_NUM}/function/get
Publish /{PRODUCT_ID}/{DEVICE_NUM}/info/post

Loop:
  Read temperature
  Publish /{PRODUCT_ID}/{DEVICE_NUM}/property/post
    [{"id":"temperature","value":"23.6","remark":"sample"},
     {"id":"switch","value":"0","remark":"actual state"}]
  On function/get, parse the id and value
  If id is switch: update the output using safe hardware logic, then read actual state
  Publish the actual switch state to property/post
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For ESP8266, check GPIO levels, boot-strapping pins, power, and relay-module compatibility. Do not copy pin numbers from a different board. See the official &lt;a href="https://www.fastbee.cn/doc/en/open/v2/quickstart/mqtt.html" rel="noopener noreferrer"&gt;MQTT access guide&lt;/a&gt; for the protocol format and topic list.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Send a remote command from the platform
&lt;/h2&gt;

&lt;p&gt;In the console’s device detail or control view, set the &lt;code&gt;switch&lt;/code&gt; property. The platform publishes a payload like this to the device subscription:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Topic: /{PRODUCT_ID}/{DEVICE_NUM}/function/get
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"switch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"remark"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"platform command"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The firmware should parse the identifier and value, drive the output, then report the &lt;strong&gt;actual&lt;/strong&gt; state on &lt;code&gt;/property/post&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"switch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"remark"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"output confirmed"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do not report the requested value as the device state without verifying execution. If the GPIO write fails, the relay does not move, or the read-back state differs, report the real result so it can be diagnosed. Test with an isolated low-voltage circuit; never connect a development board directly to mains. Relay modules can use different active levels, so confirm the module documentation and default-off behavior before powering it.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Acceptance checks and troubleshooting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Device is offline:&lt;/strong&gt; Check that Docker containers are running, TCP 1883 is reachable, and the device is not using &lt;code&gt;localhost&lt;/code&gt; as the server address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication fails:&lt;/strong&gt; Verify the device number, product ID, and user ID in &lt;code&gt;clientId&lt;/code&gt;; append the authorization code if the product requires it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Online but no data:&lt;/strong&gt; Publish the product, check the exact product ID and device number in the topic, send &lt;code&gt;/info/post&lt;/code&gt; first, and confirm the property IDs and JSON array format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command is not received:&lt;/strong&gt; The device must be online and subscribed to &lt;code&gt;/{PRODUCT_ID}/{DEVICE_NUM}/function/get&lt;/code&gt;. Check the console command log and the MQTT subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Console says on, hardware stays off:&lt;/strong&gt; Make the property writable, confirm the firmware handles that identifier, check GPIO and module active level, and report the state after execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The minimum successful round trip is: the device appears online, temperature updates, the platform sends &lt;code&gt;switch=1&lt;/code&gt;, the device changes its output, and the device reports the actual switch state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I use FastBee-Arduino zero-code firmware on an ESP8266?
&lt;/h3&gt;

&lt;p&gt;No. FastBee-Arduino’s documented zero-code firmware targets supported ESP32 boards. An ESP8266 can use FastBee’s MQTT protocol with a custom firmware client that implements the documented authentication, topics, and payloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does FastBee Open Source include an MQTT broker?
&lt;/h3&gt;

&lt;p&gt;Yes. FastBee’s official Open Source Edition documentation says it includes a Netty-based MQTT Broker. The MQTT guide documents TCP port 1883 and MQTT 3.1.1 for TCP connections.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does a successful ESP32-to-FastBee test verify?
&lt;/h3&gt;

&lt;p&gt;Verify that the device appears online, reports a Thing Model property, receives a platform command, performs the hardware action, and reports the resulting state. Message delivery alone does not prove that the hardware action succeeded.&lt;/p&gt;

&lt;h3&gt;
  
  
  What server resources does the FastBee Docker guide specify?
&lt;/h3&gt;

&lt;p&gt;The current official Docker guide lists Docker 20.10+, Docker Compose 2.0+, and a minimum of 2 CPU cores and 4 GB RAM. These are documented deployment prerequisites, not a production capacity guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official references
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/v2/install/docker.html" rel="noopener noreferrer"&gt;FastBee Docker deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/v2/quickstart/mqtt.html" rel="noopener noreferrer"&gt;FastBee MQTT access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/device/v2/getting-started/quick-start.html" rel="noopener noreferrer"&gt;FastBee-Arduino quick start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/device/v2/hardware-equipment.html" rel="noopener noreferrer"&gt;FastBee-Arduino hardware and environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/" rel="noopener noreferrer"&gt;FastBee open-source documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/sponsor/" rel="noopener noreferrer"&gt;License and authorization information&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Review the license before deployment or redistribution. FastBee’s official authorization page identifies AGPL-3.0 for the open-source edition and describes its usage boundaries.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>esp32</category>
      <category>mqtt</category>
      <category>opensource</category>
    </item>
    <item>
      <title>IoT for Beginners: From MQTT to Device Management, Platforms, and Edge Computing</title>
      <dc:creator>Fastbee</dc:creator>
      <pubDate>Tue, 27 Oct 2026 03:54:28 +0000</pubDate>
      <link>https://dev.to/fastbee_f2f02dbd9fa604d19/iot-for-beginners-from-mqtt-to-device-management-platforms-and-edge-computing-4dcb</link>
      <guid>https://dev.to/fastbee_f2f02dbd9fa604d19/iot-for-beginners-from-mqtt-to-device-management-platforms-and-edge-computing-4dcb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;IoT Basics · MQTT · Edge Computing | FastBee Technical Team | Published October 26, 2026 · Reviewed October 27, 2026&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The Internet of Things (IoT) is a system of connected devices, networks, and software that collects and processes data from the physical world so people or applications can monitor conditions and trigger actions.&lt;/strong&gt; A typical data path is device → network protocol → platform processing and storage → application or rule; commands travel back to devices, which should report the result. This guide uses a warehouse temperature-and-humidity sensor to explain MQTT, IoT platform components, device management, and edge computing. FastBee documentation provides a product example, with edition-specific capabilities called out separately.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; MQTT moves publish/subscribe messages; an IoT platform also organizes device identity, data models, rules, and applications. Add edge computing when local response, intermittent connectivity, or on-site data processing justifies the extra deployment and operations work. FastBee’s current open-source documentation lists an embedded MQTT broker and product/device/thing-model management; OTA firmware updates are a commercial-edition capability.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How does data move through an IoT system?
&lt;/h2&gt;

&lt;p&gt;Imagine a temperature-and-humidity sensor in a warehouse. At intervals, it takes a reading and connects over Wi-Fi or cellular service to a messaging service. The platform verifies which device sent the message, interprets it using a data model, stores it, and checks alarm rules. A dashboard shows the trend; if the temperature gets too high, the system notifies an operator.&lt;/p&gt;

&lt;p&gt;A simplified path is: &lt;strong&gt;sensor → network/gateway → message ingestion → device and data services → rules and storage → dashboard or business app&lt;/strong&gt;. Control flows the other way: an authorized user or application requests an action, the platform sends it to the right device, and the device reports what happened. A real deployment may combine these responsibilities in one service or split them across services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F004w10a7oz8ptjq1iuce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F004w10a7oz8ptjq1iuce.png" alt="IoT data flow: telemetry moves right and control commands return left" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MQTT?
&lt;/h2&gt;

&lt;p&gt;MQTT is a lightweight publish/subscribe messaging protocol. A device publishes a message to a topic; an application or service subscribes to topics it cares about. A message broker routes messages according to those subscriptions. Publishers and subscribers do not need to know each other directly, which makes the pattern useful for exchanging messages between devices and applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding a topic with sensor data
&lt;/h3&gt;

&lt;p&gt;A sensor might publish to &lt;code&gt;warehouse/zone-a/sensor-07/telemetry&lt;/code&gt;. A monitoring service subscribes to that topic and receives readings. A topic is a routing address, not an identity credential. Devices still need authentication, and their publish and subscribe permissions should be scoped narrowly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does QoS mean?
&lt;/h3&gt;

&lt;p&gt;MQTT QoS describes message delivery between a sender and receiver at the protocol layer: QoS 0 is at most once and can lose a message; QoS 1 is at least once and can produce duplicates; QoS 2 delivers a protocol message exactly once within the MQTT delivery flow. QoS 2 does not guarantee that a device action ran exactly once or succeeded. A delivered “open valve” command still needs an application-level result, and systems should use command identifiers or idempotent handling where duplicate business requests matter. These definitions follow section 4.3 of the OASIS MQTT 5.0 standard; verify behavior against the protocol version and components in use.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Plain-language meaning&lt;/th&gt;
&lt;th&gt;Remember&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Publish&lt;/td&gt;
&lt;td&gt;Send a message to a topic.&lt;/td&gt;
&lt;td&gt;Agree on topic names and payload format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscribe&lt;/td&gt;
&lt;td&gt;Ask to receive messages matching a topic filter.&lt;/td&gt;
&lt;td&gt;Keep the scope narrow and permission-controlled.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Broker&lt;/td&gt;
&lt;td&gt;The service that receives and forwards publish/subscribe messages.&lt;/td&gt;
&lt;td&gt;It is a communications hub; it may not provide device management or business rules.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QoS&lt;/td&gt;
&lt;td&gt;A protocol-level delivery level.&lt;/td&gt;
&lt;td&gt;Choose for data importance and network cost; handle duplicates and business acknowledgments in the application too.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;QoS level&lt;/th&gt;
&lt;th&gt;MQTT delivery meaning&lt;/th&gt;
&lt;th&gt;Practical limit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;At most once; no acknowledgment, and loss is possible.&lt;/td&gt;
&lt;td&gt;Use when occasional message loss is acceptable.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;At least once; duplicates are possible.&lt;/td&gt;
&lt;td&gt;Make application processing duplicate-aware or idempotent.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Exactly once within the MQTT protocol delivery flow.&lt;/td&gt;
&lt;td&gt;Does not guarantee exactly-once business execution.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;FastBee-specific note: the official open-source MQTT Broker documentation lists support for QoS 0 and QoS 1. Do not assume that FastBee’s broker supports QoS 2; check the &lt;a href="https://www.fastbee.cn/doc/en/open/v2/architecture/mqtt-broker.html" rel="noopener noreferrer"&gt;broker documentation&lt;/a&gt; for the target release. For a device-reporting and command example, see &lt;a href="https://www.fastbee.cn/doc/en/open/v2/quickstart/mqtt.html" rel="noopener noreferrer"&gt;FastBee MQTT Access&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes up an IoT platform?
&lt;/h2&gt;

&lt;p&gt;An IoT platform is more than an MQTT service. A common platform connects device ingestion, a device registry, data processing, rules, storage, permissions, and application interfaces.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;Responsibility&lt;/th&gt;
&lt;th&gt;Sensor example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Protocol ingestion&lt;/td&gt;
&lt;td&gt;Maintain connections, authenticate devices, and receive or route messages.&lt;/td&gt;
&lt;td&gt;Handle the sensor’s MQTT connection and telemetry.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Device and product registry&lt;/td&gt;
&lt;td&gt;Record identity, ownership, status, and capability definitions.&lt;/td&gt;
&lt;td&gt;Identify which warehouse and model sensor-07 belongs to.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rules and application services&lt;/td&gt;
&lt;td&gt;Transform data, evaluate conditions, and trigger notifications or actions.&lt;/td&gt;
&lt;td&gt;Create an alarm when temperature stays above a threshold.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data storage&lt;/td&gt;
&lt;td&gt;Store device configuration, business records, and historical observations.&lt;/td&gt;
&lt;td&gt;Query the last week of temperature and humidity readings.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Console and APIs&lt;/td&gt;
&lt;td&gt;Let operators and business systems view or act on platform data.&lt;/td&gt;
&lt;td&gt;Inspect online status, charts, and alarm history.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;FastBee’s &lt;a href="https://www.fastbee.cn/doc/en/open/v2/architecture/overview.html" rel="noopener noreferrer"&gt;open-source architecture overview&lt;/a&gt; describes access, business, service, data, and presentation layers and documents device reporting and command-dispatch flows. This is an example of one platform implementation, not a required architecture for every IoT project.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does a platform manage devices?
&lt;/h2&gt;

&lt;p&gt;“Online” is only one part of device management. A platform also needs to know who a device is, which product or customer it belongs to, what data it reports, which actions it may perform, and whether it is operating normally.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity and authentication:&lt;/strong&gt; Give each device a unique identity and credential, support credential rotation, and enforce least-privilege access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Products and thing models:&lt;/strong&gt; Describe the properties, events, and callable functions shared by a device model, so applications do not need to interpret every device’s fields separately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status and logs:&lt;/strong&gt; Track connection state, last report time, errors, and important actions to distinguish a network outage from a payload-format problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lifecycle:&lt;/strong&gt; Handle registration, configuration, firmware-version records or updates, retirement, and credential revocation. Firmware recording and OTA delivery are different capabilities; bulk operations need authorization and an audit trail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FastBee’s official documentation lists product management, device management, and thing models in the open-source edition. Its &lt;a href="https://www.fastbee.cn/doc/en/open/v2/" rel="noopener noreferrer"&gt;product-management documentation&lt;/a&gt; says the open-source edition records firmware versions, while OTA upgrades are supported by the commercial edition. Check the target release before deployment. Do not publish example accounts, device credentials, or unencrypted production secrets in a source repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk4noyjocgamo2s1mv2ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk4noyjocgamo2s1mv2ij.png" alt="Edge computing illustration: devices use MQTT through an edge node that syncs with the cloud platform" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What problems does edge computing solve?
&lt;/h2&gt;

&lt;p&gt;Edge computing places some processing on a gateway or local server near devices instead of sending every operation to a remote platform first. It can help when networks are unreliable, response time matters, local data volumes are high, or limited local logic must continue during an outage.&lt;/p&gt;

&lt;p&gt;For example, a gateway can convert Modbus readings into a common message format, buffer data during a temporary disconnection, or upload one-minute summaries instead of every raw sample. A central platform remains useful for cross-site device management, long-term storage, shared permissions, reporting, and global rules. Edge and central systems work together, so define local buffer limits, replay behavior, rule versions, time synchronization, and remote-update ownership.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Why process at the edge?&lt;/th&gt;
&lt;th&gt;What to design first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Collection or local logic must continue during an outage.&lt;/td&gt;
&lt;td&gt;Buffer capacity, data expiry, and replay order after reconnection.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The site needs a fast response.&lt;/td&gt;
&lt;td&gt;Do not make safety interlocks depend only on a remote network; define local failure behavior.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Many protocols or large data volumes require local conversion or filtering.&lt;/td&gt;
&lt;td&gt;Adapter versions, resource limits, dropped-data behavior, and diagnostic logs.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Edge computing does not automatically make a system safer or more reliable. It adds nodes that must be deployed, updated, and monitored. Add an edge layer when site latency, connectivity, or data cost calls for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can a beginner build a first project?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Choose one simple device and one measurement, such as temperature. Define its unit, sampling interval, and sensible range.&lt;/li&gt;
&lt;li&gt;Use an MQTT client or development board to publish a test message. Check the topic, authentication, and payload format.&lt;/li&gt;
&lt;li&gt;Define the product/device and property in a platform, then map the message to a readable field.&lt;/li&gt;
&lt;li&gt;Add one threshold rule and verify how an alarm starts, clears, and appears in operation history.&lt;/li&gt;
&lt;li&gt;Disconnect and reconnect the network. Observe reconnection, buffering, and duplicate handling before adding fleet management or edge nodes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Keep this mental model:&lt;/strong&gt; MQTT moves messages; an IoT platform organizes devices, data, and business rules; device management handles identity, status, and lifecycle; edge computing moves necessary processing closer to the site. First make one data loop observable and recoverable, then expand it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does MQTT QoS 2 guarantee that a device command runs only once?
&lt;/h3&gt;

&lt;p&gt;No. QoS 2 governs protocol-level message delivery, not whether a device executes a business action once or successfully. Devices should report execution results; applications can use command IDs, state checks, and idempotent handlers to manage retries or duplicate requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does FastBee Open Source support OTA firmware updates?
&lt;/h3&gt;

&lt;p&gt;FastBee’s current official edition comparison and product documentation list OTA firmware updates as a commercial-edition capability. The open-source edition can record firmware versions; version records are not the same as delivering an OTA update. Verify the documentation for the release you plan to use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is an MQTT broker the same as an IoT platform?
&lt;/h3&gt;

&lt;p&gt;No. A broker routes publish/subscribe messages. A device registry, identity and permissions, thing models, historical data, alarms, and operations console typically require additional platform capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does every IoT device need MQTT?
&lt;/h3&gt;

&lt;p&gt;No. Choose a protocol based on device capability, network conditions, interaction pattern, and existing systems. MQTT is a common option, not the only one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does a small project need edge computing?
&lt;/h3&gt;

&lt;p&gt;If devices can connect reliably, data volume is modest, and local outage response is unnecessary, a direct platform connection is often simpler to operate. Add edge nodes only when site needs justify them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official references
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/" rel="noopener noreferrer"&gt;FastBee open-source documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/v2/quickstart/mqtt.html" rel="noopener noreferrer"&gt;MQTT Access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/v2/architecture/mqtt-broker.html" rel="noopener noreferrer"&gt;MQTT Broker capabilities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/v2/architecture/overview.html" rel="noopener noreferrer"&gt;Architecture overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/en/open/v2/" rel="noopener noreferrer"&gt;Product Management and firmware version records&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastbee.cn/doc/open/v2/" rel="noopener noreferrer"&gt;FastBee Chinese open-source documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html" rel="noopener noreferrer"&gt;OASIS MQTT 5.0 standard, section 4.3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The warehouse sensor is an illustrative scenario, not a measured deployment or customer case. This article adds no performance or scale measurements. Check the MQTT version and component documentation for protocol behavior, and verify FastBee capabilities against the target edition and release.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>hardware</category>
      <category>iot</category>
      <category>devops</category>
    </item>
    <item>
      <title>A Smart Building IoT Platform Is More Than a Dashboard</title>
      <dc:creator>Fastbee</dc:creator>
      <pubDate>Fri, 23 Oct 2026 09:32:52 +0000</pubDate>
      <link>https://dev.to/fastbee_f2f02dbd9fa604d19/a-smart-building-iot-platform-is-more-than-a-dashboard-4394</link>
      <guid>https://dev.to/fastbee_f2f02dbd9fa604d19/a-smart-building-iot-platform-is-more-than-a-dashboard-4394</guid>
      <description>&lt;p&gt;A building dashboard can look finished while the operations workflow behind it is still broken.&lt;/p&gt;

&lt;p&gt;HVAC controllers, meters, pumps, environmental sensors, cameras, and access-control devices often come from different vendors and use different protocols. The real integration work is making their data consistent, routing alarms to the right people, and confirming that a remote command actually changed something in the field.&lt;/p&gt;

&lt;p&gt;This post uses a multi-zone office building as a &lt;strong&gt;reference scenario&lt;/strong&gt;, not as a claim about an undisclosed customer deployment. The goal is to show how to evaluate the complete device-to-operations path.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ar87wjumhwtogbed404.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ar87wjumhwtogbed404.png" alt="Smart building IoT operations loop from field devices through protocol integration, data modeling, alarms, and operator actions" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure: Device telemetry informs operations; acknowledged commands close the loop.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with one operational loop
&lt;/h2&gt;

&lt;p&gt;Imagine a pilot that includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Water level and pump state in a plant room&lt;/li&gt;
&lt;li&gt;Temperature and humidity sensors in shared areas&lt;/li&gt;
&lt;li&gt;Selected electrical measurements from distribution panels&lt;/li&gt;
&lt;li&gt;A low-risk controllable circuit, such as a fan or lighting relay&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first acceptance criterion should not be “the device is online.” It should be a complete loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;field device or gateway
        ↓
protocol adapter and device identity
        ↓
product + device + data model
        ↓
rules, alarms, notifications, and dashboards
        ↓
operator action or command
        ↓
device execution and reported result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An online indicator proves only that a connection or heartbeat is working. It does not prove that a property was parsed correctly, that its unit is meaningful, or that a command reached the hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Model signals as operational data
&lt;/h2&gt;

&lt;p&gt;A small building pilot can use a table like this to define acceptance criteria:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field signal&lt;/th&gt;
&lt;th&gt;Platform model&lt;/th&gt;
&lt;th&gt;What to verify&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;High water level and pump state&lt;/td&gt;
&lt;td&gt;Level property, running state, fault event&lt;/td&gt;
&lt;td&gt;Threshold alarm, duty-team notification, and recovery record&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Room temperature and humidity&lt;/td&gt;
&lt;td&gt;Temperature, humidity, sample time&lt;/td&gt;
&lt;td&gt;Trends by floor and an alert for sustained threshold violations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meter or power monitor&lt;/td&gt;
&lt;td&gt;Voltage, current, power&lt;/td&gt;
&lt;td&gt;Data is associated with the right area and can be queried consistently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fan or lighting relay&lt;/td&gt;
&lt;td&gt;Writable property or function&lt;/td&gt;
&lt;td&gt;Authorized command, physical action, and device-reported state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For each device type, compare the source payload with the platform value. Check identity mapping, units, timestamps, duplicate messages, reconnect behavior, and malformed input. Protocol support on a feature page is only a starting point; interoperability needs to be checked with the actual firmware, gateway, and payload.&lt;/p&gt;

&lt;p&gt;FastBee’s &lt;a href="https://www.fastbee.cn/doc/en/business/v2/link/#device-access" rel="noopener noreferrer"&gt;commercial device-access catalog&lt;/a&gt; lists MQTT, Modbus RTU/TCP, HTTP, TCP, CoAP, JT808, video, and gateway/sub-device paths. Use it as a documentation entry point, then validate the specific device combination in a PoC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alarms are workflows, not thresholds
&lt;/h2&gt;

&lt;p&gt;A threshold is only the trigger. A useful alarm workflow also needs an owner, notification channel, silence or deduplication policy, recovery condition, and an auditable record of what happened.&lt;/p&gt;

&lt;p&gt;For example, a pump-room high-water event might be tested in this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Send a value above the configured threshold.&lt;/li&gt;
&lt;li&gt;Confirm that the rule matches the correct device and property.&lt;/li&gt;
&lt;li&gt;Verify that an alarm record is created.&lt;/li&gt;
&lt;li&gt;Check that the intended on-call contact receives the notification.&lt;/li&gt;
&lt;li&gt;Send a normal value and confirm the recovery behavior.&lt;/li&gt;
&lt;li&gt;Review logs to see whether repeated messages caused duplicate notifications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;FastBee’s &lt;a href="https://www.fastbee.cn/doc/en/business/v2/manual/alert.html#_1-alert-configuration" rel="noopener noreferrer"&gt;alarm configuration guide&lt;/a&gt; documents alarm and notification configuration. The exact workflow and channels should still be verified against the edition and deployment being evaluated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote control needs an acknowledgement path
&lt;/h2&gt;

&lt;p&gt;A console button changing state is not proof that a field device acted. A complete control test should verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The user has permission to issue the command.&lt;/li&gt;
&lt;li&gt;The platform publishes to the correct device route.&lt;/li&gt;
&lt;li&gt;The device firmware receives and parses the command.&lt;/li&gt;
&lt;li&gt;The physical output changes.&lt;/li&gt;
&lt;li&gt;The device reports the resulting state.&lt;/li&gt;
&lt;li&gt;The operation is visible in logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with low-risk equipment. For life-safety systems or equipment governed by building controls, follow the site’s existing safety and authorization procedures; a general IoT platform should not bypass them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why hardware manufacturers build their own platforms
&lt;/h2&gt;

&lt;p&gt;A sensor, controller, or gateway manufacturer may want its own platform to provide device inventory, remote configuration, firmware updates, customer organizations, alarms, and after-sales workflows.&lt;/p&gt;

&lt;p&gt;That does not automatically mean every infrastructure component must be built from scratch. A manufacturer can retain its device protocol and customer application while evaluating a general IoT platform for product models, fleet management, permissions, rules, and dashboards. Before integrating, assign ownership for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device identity and credential rotation&lt;/li&gt;
&lt;li&gt;Source of truth for device state&lt;/li&gt;
&lt;li&gt;Tenant or customer data isolation&lt;/li&gt;
&lt;li&gt;Command timeouts, retries, and acknowledgement&lt;/li&gt;
&lt;li&gt;Existing mobile app and service-desk integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FastBee publishes a &lt;a href="https://www.fastbee.cn/doc/en/business/v2/intro/fastbee.html#_5-system-architecture" rel="noopener noreferrer"&gt;System Architecture&lt;/a&gt;Treat documentation as a compatibility hypothesis; test it with production-like hardware and messages before committing to an integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Private deployment is an operations commitment
&lt;/h2&gt;

&lt;p&gt;A private installation may be required by network boundaries, data governance, or site-specific integration. It also makes the project team responsible for more than starting containers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Port exposure and TLS certificates&lt;/li&gt;
&lt;li&gt;Persistent database and upload storage&lt;/li&gt;
&lt;li&gt;Backup and restore drills&lt;/li&gt;
&lt;li&gt;Upgrade and rollback procedures&lt;/li&gt;
&lt;li&gt;Log collection and health monitoring&lt;/li&gt;
&lt;li&gt;Capacity planning and incident ownership&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a deployment PoC, restart services, restore a backup, reconnect a device, trigger an alarm, and repeat a control action. Confirm that data and operational records survive the steps that matter to the customer.&lt;/p&gt;

&lt;p&gt;FastBee’s &lt;a href="https://www.fastbee.cn/doc/en/business/v2/architecture/deployment.html" rel="noopener noreferrer"&gt;deployment and operations architecture guide&lt;/a&gt; outlines common components and launch checks. The &lt;a href="https://www.fastbee.cn/doc/en/" rel="noopener noreferrer"&gt;documentation center&lt;/a&gt; provides the broader, version-specific platform material. Confirm which edition and support scope apply; do not infer production topology or capacity from a demo installation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What public case material can prove
&lt;/h2&gt;

&lt;p&gt;FastBee’s &lt;a href="https://www.fastbee.cn/doc/en/solutions/smart-agriculture/verified-cases.html" rel="noopener noreferrer"&gt;Smart Agriculture showcase&lt;/a&gt; illustrates how device management, thing models, scene automation, visualization, video, and traceability can be combined in an industry application.&lt;/p&gt;

&lt;p&gt;The public page does not provide a verifiable customer identity, fleet size, operating period, or benchmark results. It is a capability example, not evidence that a smart-building deployment has been validated at a particular scale. The office-building scenario in this post is also illustrative.&lt;/p&gt;

&lt;p&gt;For an actual deployment assessment, define a PoC with the target devices, protocols, message rates, alarms, private-network constraints, and acceptance criteria. Record the platform version, hardware, test duration, resource use, failures, and recovery behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical PoC checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Connect one representative device per protocol.&lt;/li&gt;
&lt;li&gt;Verify identity, telemetry mapping, units, and timestamps.&lt;/li&gt;
&lt;li&gt;Test disconnect and reconnect behavior.&lt;/li&gt;
&lt;li&gt;Trigger an alarm, send a notification, and confirm recovery.&lt;/li&gt;
&lt;li&gt;Send a remote command and verify physical execution plus reported state.&lt;/li&gt;
&lt;li&gt;Restart services and rehearse backup restoration.&lt;/li&gt;
&lt;li&gt;Record device count, message rate, properties per message, query patterns, resource use, and failure rate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The useful question is not “How many features does the platform list?” It is “Can this team operate the device, alarm, and command workflows in its own environment?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt; &lt;a href="https://www.fastbee.cn/" rel="noopener noreferrer"&gt;FastBee website&lt;/a&gt; · &lt;a href="https://www.fastbee.cn/doc/en/" rel="noopener noreferrer"&gt;English documentation home&lt;/a&gt; · &lt;a href="https://www.fastbee.cn/doc/en/business/v2/architecture/overview.html" rel="noopener noreferrer"&gt;Architecture overview&lt;/a&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>devops</category>
      <category>architecture</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
