在物聯網平臺中,規則引擎和身份驗證機制扮演著至關重要的角色。規則引擎根據預設條件觸發特定動作,實現自動化控制和資料處理。同時,身份驗證機制保障平臺安全,確保只有授權使用者才能存取系統資源。本文將深入探討如何使用 Node-RED 建構規則引擎,並整合基本身份驗證、API 金鑰和 OAuth 等多種身份驗證方法,最後以智慧捕鼠器案例,展示如何將這些技術應用於實際場景。透過 Node-RED 的流程圖設計,可以簡化規則引擎的開發和維護,並結合 MySQL 資料庫儲存和驗證使用者資訊。此外,文章也涵蓋瞭如何使用 Swagger 檔案化和測試 API,確保 API 的可用性和安全性。

覯貓的規則引擎和身份驗證

在本章中,我們將探討規則引擎和身份驗證的實現。規則引擎是一種可以根據預先定義的條件觸發特定動作的系統。身份驗證則是確認使用者身份的過程,確保只有授權的使用者才能存取系統的資源。

規則引擎的實現

規則引擎可以使用 Node-RED 進行實現。Node-RED 是一個根據 Node.js 的開源框架,允許使用者建立流程圖來定義規則引擎的行為。規則引擎可以連續監聽訊息流,並使用 switch 節點來匹配每個訊息與預先定義的條件。

以下是規則引擎的示例實現:

  flowchart TD
    A[訊息流] --> B[switch 節點]
    B --> C[條件 1]
    B --> D[條件 2]
    C --> E[動作 1]
    D --> F[動作 2]

在這個示例中,規則引擎監聽訊息流,並使用 switch 節點來匹配每個訊息與預先定義的條件。如果訊息匹配條件 1,則觸發動作 1;如果訊息匹配條件 2,則觸發動作 2。

身份驗證的實現

身份驗證是確認使用者身份的過程,確保只有授權的使用者才能存取系統的資源。有多種身份驗證方法,包括基本身份驗證、API 金鑰和 OAuth。

以下是基本身份驗證的示例實現:

GET /api/data HTTP/1.1
Authorization: Basic <username>:<password>

在這個示例中,使用者提交一個 GET 請求到 /api/data 端點,並在 Authorization 項中提供使用者名稱和密碼。系統則驗證使用者的身份,並授予存取資源的許可權。

API 金鑰的實現

API 金鑰是一種更安全的身份驗證方法。使用者提交一個 API 金鑰,系統則驗證金鑰的有效性,並授予存取資源的許可權。

以下是 API 金鑰的示例實現:

GET /api/data HTTP/1.1
Authorization: Bearer <api_key>

在這個示例中,使用者提交一個 GET 請求到 /api/data 端點,並在 Authorization 項中提供 API 金鑰。系統則驗證金鑰的有效性,並授予存取資源的許可權。

OAuth 的實現

OAuth 是一種更安全的身份驗證方法。使用者提交一個 OAuth 請求,系統則驗證使用者的身份,並授予存取資源的許可權。

以下是 OAuth 的示例實現:

GET /api/data HTTP/1.1
Authorization: OAuth <access_token>

在這個示例中,使用者提交一個 GET 請求到 /api/data 端點,並在 Authorization 項中提供 OAuth 存取令牌。系統則驗證令牌的有效性,並授予存取資源的許可權。

圖表翻譯:
  flowchart TD
    A[規則引擎] --> B[身份驗證]
    B --> C[基本身份驗證]
    B --> D[API 金鑰]
    B --> E[OAuth]
    C --> F[授權]
    D --> G[授權]
    E --> H[授權]

在這個圖表中,規則引擎和身份驗證之間的關係被展示出來。規則引擎可以使用不同的身份驗證方法,包括基本身份驗證、API 金鑰和 OAuth。每種方法都會授予存取資源的許可權。

Node-RED 身分驗證中介軟體實現

為了實現身分驗證邏輯,我們需要修改 Node-RED 的 settings.js 檔案。在這個過程中,我們需要使用另一個 Node.js 模組叫做 mysql。首先,讓我們透過命令列安裝這個模組:

npm i mysql -g
npm i -S mysql

安裝完成後,開啟 settings.js 檔案,找到 httpNodeMiddleware 區段。這個屬性可以用來新增自訂的中介軟體函式在所有 HTTP 節點之前。這允許自訂的身分驗證被應用到所有 HTTP 節點或其他型別的共同請求處理。

移除這個區段的註解,並更新它以以下的程式碼:

httpNodeMiddleware: function(req, res, next) {
  function getData(query, cbFunction) {
    var connection = require('mysql').createConnection({
      host: 'localhost',
      user: '<你的資料庫使用者名稱>',
      password: '<你的資料庫密碼>',
      database: 'tSeriesDB'
    });
    connection.query(query, function(err, rows, fields) {
      if (err) {
        cbFunction(false, err);
      } else {
        cbFunction(true, rows);
      }
    });
    connection.end();
  }

  // 從請求標頭中取得身分驗證詳細資料
  if (req.headers.authorization) {
    auth = Buffer.from(req.headers.authorization, 'ascii').toString();
    // 分割字串在空格字元
    // 典型的身分驗證標頭是像 Bearer <access-token>
    req.authType = auth.split(' ')[0];
    req.userToken = auth.split(' ')[1];
  } else {
    // 執行某些動作如果使用者未經授權或只提供基本存取
    req.authType = 'None';
    req.userToken = 'null';
  }

  getData('SELECT * FROM authTable WHERE token = \"' + req.userToken.toString() + '\" ORDER BY id;', function(code, data) {
    // 如果資料查詢成功
    if (code === true) {
      // 如果授權詳細資料不可用,即 data.length === 0
      if (data.length === 0) {
        // 設定 authFilter='0' 如果使用者授權資訊不可用
        req.auth = false;
        req.authFilter = 0;
      } else {
        // 使用透過存取字串
        req.auth = true;
        req.authFilter = data[0].access;
      }
      // 將控制權傳遞給 HTTP 節點
      next();
    }
  });
}

內容解密:

這個中介軟體函式的主要目的是為 Node-RED 的 HTTP 節點新增自訂的身分驗證機制。它使用 mysql 模組連線到資料庫,以驗證使用者的授權令牌。函式首先檢查請求標頭中是否包含授權詳細資料,如果有,它會分割字串並提取授權型別和使用者令牌。然後,它使用這些資料查詢資料庫,以驗證使用者的授權。如果查詢成功,它會設定 req.authreq.authFilter 屬性,以指示使用者的授權狀態。最後,它將控制權傳遞給 HTTP 節點。

圖表翻譯:

  flowchart TD
    A[開始] --> B[取得授權詳細資料]
    B --> C[分割字串]
    C --> D[查詢資料庫]
    D --> E[設定授權狀態]
    E --> F[傳遞控制權給 HTTP 節點]

這個流程圖顯示了中介軟體函式的主要步驟,從取得授權詳細資料到傳遞控制權給 HTTP 節點。它說明瞭函式如何處理使用者的授權請求,並如何驗證使用者的授權狀態。

實現IoT平臺核心功能

在上一章中,我們實現了IoT平臺的核心功能,包括訊息路由器、MQTT訊息代理、資料庫監聽器、規則引擎和REST API。這些功能使得我們的IoT平臺可以收集和處理來自各種裝置的資料,並提供了一個安全和可靠的平臺給使用者。

實現身份驗證和授權

為了確保IoT平臺的安全性,我們實現了身份驗證和授權功能。這個功能使用MySQL資料庫來儲存使用者的身份驗證資訊,並使用JWT令牌來進行授權。當使用者傳送請求時,系統會檢查請求中的Authorization標頭,如果標頭中包含有效的JWT令牌,系統會授予使用者訪問許可權。

測試身份驗證和授權

為了測試身份驗證和授權功能,我們使用cURL命令傳送請求。首先,我們發送了一個沒有Authorization標頭的請求,系統傳回了空資料。然後,我們發送了一個包含有效JWT令牌的請求,系統傳回了正確的資料。

建立IoT平臺核心

IoT平臺核心包括訊息路由器、MQTT訊息代理、資料庫監聽器、規則引擎和REST API。這些功能使得我們的IoT平臺可以收集和處理來自各種裝置的資料,並提供了一個安全和可靠的平臺給使用者。

未來發展

在未來,我們將繼續開發和完善IoT平臺的功能,包括裝置管理和使用者管理等。這些功能將使得IoT平臺更加強大和易用。

實現裝置管理和使用者管理

裝置管理和使用者管理是IoT平臺的重要功能。這些功能將使得使用者可以輕松地管理自己的裝置和使用者賬戶。

實現API文件和測試

API文件和測試是IoT平臺的重要組成部分。這些功能將使得開發人員可以輕松地瞭解和使用IoT平臺的API。

檔案與測試

良好的檔案可以加速開發和使用開發的資源。它也可以減少成本和時間,否則會花在回答支援電話上。檔案通常被視為整體使用者體驗的一部分。完整和準確的檔案是節省資源和提高API使用效率和有效性的關鍵。

一個很明顯的問題是如何有效地檔案化我們的IoT平臺的API。其中一種最常用的方法是使用免費或開源工具來檔案化API。有許多選擇,你可以在Swagger工具中找到。我們將使用Swagger工具來生成我們的API檔案。使用Swagger,可以輕鬆地建立互動式檔案,並在移動中維護它。更重要的是,你可以將介面(定義和沙盒)託管在Swagger Hub上,或將其作為獨立的雲例項進行整合。

在本章中,我們將:

  • 討論如何準備OpenAPI規範
  • 克隆和更新Swagger套件
  • 測試API檔案在現場環境中

準備有效的OpenAPI規範檔案

建立有用的檔案的第一步是建立API描述檔案,以有效的格式。由於Swagger使用OpenAPI規範,可以使用YAML格式進行檔案化,因此我們將在一開始就建立它。

YAML(YAML Ain’t Markup Language)是一種人類可讀的資料序列化語言。它通常用於配置檔案,但可以在許多應用中使用,例如除錯輸出或檔案標頭。

如果你對學習更多關於OpenAPI格式和規範感興趣,有很多線上教程可供參考。一些教程可以在Swagger網站上找到。

Swagger線上編輯器是一個開源和免費的工具,可以驗證我們正在準備的規範檔案;或者,我們可以從頭開始建立一個。

平臺API規範檔案解釋

現在讓我們參考我們的平臺API檔案內容,詳細瞭解檔案結構:

swagger: '2.0'
info:
  title: in24hrs.the.book
  description: This page provides documentation and also serves as a test sandbox for **in24hrs** platform.
version: "1.0.1"
schemes:
  - https
basePath: /

第一行指出API規範版本,為2.0。接下來的行提供檔案描述,將在使用者介面上顯示。我們指定了API呼叫方案,固定為HTTPS。定義了主機和基礎路徑,指定了API的基礎URL。

請注意,檔案中的任何註解都以#字元開頭,因此整行被視為註解。

securityDefinitions:
  Bearer:
    type: apiKey
    name: authorization
    in: header

接下來的行定義了API的安全/驗證方案。在前一章中,我們添加了Bearer驗證到API中。我們建立了一個方案,需要在授權標頭中傳遞。這些行定義了這個方案,以便當我們使用這個互動式API UI時,可以提供驗證詳情。

paths:
  #--------------------------------------------------------------
  # 1 Data publishing API
  #--------------------------------------------------------------
  /pub/{topic}/{payload}:
    post:
      description: 'create a new data {payload} for a {topic}'
      security:
        - Bearer: []
      tags:
        - '1 Data publishing API'
      parameters:

這些行定義了API的路徑和方法。例如,/pub/{topic}/{payload}路徑使用POST方法建立新的資料 {payload},適用於 {topic}

內容解密:

Swagger是一種強大的工具,用於建立API檔案和測試API。透過使用Swagger,我們可以輕鬆地建立互動式API檔案,並在移動中維護它。Swagger提供了一個簡單的方式來定義API的結構和行為,使得開發人員可以輕鬆地使用API。

Swagger的優點包括:

  • 互動式API檔案:Swagger允許開發人員建立互動式API檔案,從而使得開發人員可以輕鬆地測試和使用API。
  • 自動化測試:Swagger提供了一種自動化測試API的方式,從而減少了手動測試的需要。
  • API安全性:Swagger提供了一種方式來定義API的安全性,從而使得開發人員可以輕鬆地保護API。

Swagger的缺點包括:

  • 學習曲線:Swagger有一定的學習曲線,尤其是對於沒有API開發經驗的開發人員。
  • 配置複雜:Swagger的配置可能很複雜,尤其是對於大型API。

圖表翻譯:

  graph LR
    A[API] -->|定義|> B[Swagger]
    B -->|檔案化|> C[API 檔案]
    C -->|測試|> D[API 測試]
    D -->|結果|> E[API 結果]

這個圖表顯示了API、Swagger、API檔案、API測試和API結果之間的關係。它展示瞭如何使用Swagger建立API檔案和測試API。

API 檔案和測試

API 檔案是對 API 的描述,包括其功能、引數、傳回值等資訊。Swagger 是一種常用的 API 檔案工具,使用 YAML 或 JSON 格式描述 API。

Swagger UI

Swagger UI 是一種根據 Web 的 API 檔案工具,允許使用者瀏覽和測試 API。它支援多種 API 協議,包括 HTTP、HTTPS、WebSocket 等。

API 檔案編寫

API 檔案編寫需要遵循一定的規範和格式。Swagger UI 支援 YAML 和 JSON 兩種格式,以下是 YAML 格式的例子:

- name: topic
  in: path
  description: 'Topic to publish data for'
  type: string
  required: true
- name: payload
  in: path
  description: 'Message payload for a given topic, could be plain text, binary, json, or any other format.'
  type: string
  required: true

API 檔案上傳和測試

API 檔案上傳到伺服器後,可以使用 Swagger UI 來測試 API。Swagger UI 提供了一個介面,允許使用者輸入引數和測試 API。

授權和測試

API 授權是用於保護 API 的安全。Swagger UI 支援多種授權方式,包括 Bearer Token 等。以下是授權的例子:

Bearer <token>

Swagger UI 配置

Swagger UI 提供了多種配置引數,允許使用者自定義介面和功能。以下是配置的例子:

const ui = SwaggerUIBundle({
  dom_id: '#swagger-ui',
  url: "api.yml",
});

連線您的硬體

在本章中,我們將討論如何連線您的硬體到IoT平臺。首先,我們需要了解什麼是IoT硬體和它的基本要求。IoT硬體是指可以連線到網際網路的裝置,例如感測器、執行器和其他智慧裝置。這些裝置需要具備感測能力、計算和處理能力以及傳輸和接收能力。

硬體選擇

有兩種主要的硬體選擇:現成硬體和自製硬體。現成硬體是指可以直接購買和使用的硬體,例如Arduino板、Raspberry Pi和BeagleBone。自製硬體是指根據特定的需求和應用而設計和製造的硬體。

現成硬體

現成硬體的優點是可以快速和容易地購買和使用。然而,它們可能不完全符合特定的需求和應用。一些常見的現成硬體選擇包括:

  • Arduino板
  • Raspberry Pi
  • BeagleBone
  • 單板計算機模組

自製硬體

自製硬體的優點是可以根據特定的需求和應用而設計和製造。這可以提供更好的效能、更低的成本和更好的可靠性。然而,自製硬體需要更多的設計和製造時間和成本。

連線硬體

連線硬體到IoT平臺需要考慮以下幾個因素:

  • 感測能力:硬體需要具備感測能力,以收集和傳輸資料。
  • 計算和處理能力:硬體需要具備計算和處理能力,以處理和分析資料。
  • 傳輸和接收能力:硬體需要具備傳輸和接收能力,以傳輸和接收資料。

連線選擇

有多種連線選擇,包括:

  • Wi-Fi
  • GSM
  • RF
  • LoRaWAN
  • Bluetooth

每種連線選擇都有其優點和缺點,需要根據特定的需求和應用而選擇。

閘道器

閘道器是指可以連線多個裝置到IoT平臺的裝置。閘道器可以提供額外的功能,例如資料處理、加密和解密、資料儲存和釋出等。

圖表翻譯:
  graph LR
    A[硬體選擇] --> B[現成硬體]
    A --> C[自製硬體]
    B --> D[Arduino板]
    B --> E[Raspberry Pi]
    B --> F[BeagleBone]
    C --> G[自製硬體設計]
    G --> H[感測能力]
    G --> I[計算和處理能力]
    G --> J[傳輸和接收能力]
    H --> K[資料收集]
    I --> L[資料處理]
    J --> M[資料傳輸]
    K --> N[IoT平臺]
    L --> N
    M --> N

內容解密:

本章討論瞭如何連線硬體到IoT平臺。首先,我們需要了解什麼是IoT硬體和它的基本要求。然後,我們討論了硬體選擇,包括現成硬體和自製硬體。接下來,我們討論了連線選擇,包括Wi-Fi、GSM、RF、LoRaWAN和Bluetooth。最後,我們討論了閘道器和它的功能。根據特定的需求和應用而選擇合適的硬體和連線選擇,可以提供更好的效能、更低的成本和更好的可靠性。

連線您的硬體

在設計IoT系統時,連線硬體是非常重要的一步。這不僅涉及選擇合適的通訊協定,也包括考慮系統的拓撲和安排。在本章中,我們將探討連線硬體的各個方面,包括選擇合適的通訊協定、拓撲和安排,以及如何設計一個強健、可擴充套件、功能性、靈活和可靠的IoT系統。

拓撲和安排

拓撲和安排是IoT系統設計中非常重要的兩個方面。拓撲是指網路和網路元素的安排,而安排是指裝置和系統的物理佈局。在IoT系統中,拓撲和安排可以大大影響系統的效能和可靠性。

有一些常見的拓撲和安排,包括:

  • 裝置-中心-雲:這是最常見的拓撲,多個裝置連線到一個中心,然後中心連線到雲平臺。
  • 裝置-雲:這種拓撲直接連線裝置到雲平臺,減少了中心的複雜性。
  • 裝置-多個中心-雲:這種拓撲使用多個中心來增加系統的可靠性和可用性。
  • 裝置-多個雲:這種拓撲使用多個雲平臺來增加系統的可靠性和可用性。

通訊協定

通訊協定是IoT系統中非常重要的一個方面。有兩種主要的通訊協定:REST API和MQTT。

  • REST API:REST API是一種請求和響應機制,使用HTTP(S)協定進行通訊。這種協定適合於裝置不需要連續傳送資料的情況。
  • MQTT:MQTT是一種連續傳送資料的協定,使用TCP/IP協定進行通訊。這種協定適合於裝置需要連續傳送資料的情況。

設計考量

在設計IoT系統時,需要考慮以下幾個方面:

  • 連線性:裝置如何連線到雲平臺或中心。
  • 拓撲:系統的拓撲和安排如何影響系統的效能和可靠性。
  • 通訊協定:選擇合適的通訊協定以滿足系統的需求。
  • 硬體和韌體設計:如何設計硬體和韌體以滿足系統的需求。

連線硬體到IoT平臺

連線硬體到IoT平臺是一個關鍵步驟,需要考慮硬體選擇、連線安排、通訊協定選擇等因素。MQTT是一種常用的通訊協定,尤其適合於需要即時通訊和低功耗的應用。

硬體選擇和連線安排

硬體選擇和連線安排對於IoT平臺的設計和程式設計有著重要影響。例如,使用HTTP或MQTT通訊協定會影響硬體的功耗和設計複雜度。

通訊協定選擇

通訊協定選擇是另一個重要因素。MQTT是一種輕量級的通訊協定,適合於需要即時通訊和低功耗的應用。然而,MQTT也需要考慮硬體的功耗和設計複雜度。

建立更好的捕鼠器

建立更好的捕鼠器是一個實際的案例,展示瞭如何使用IoT平臺建立一個智慧捕鼠器。這個案例涉及硬體安排、通訊協定選擇和應用層的設計。

實現智慧捕鼠器

實現智慧捕鼠器需要考慮多個因素,包括硬體選擇、連線安排、通訊協定選擇和應用層的設計。透過使用IoT平臺和合適的通訊協定,可以建立一個智慧捕鼠器,實現即時通訊和低功耗。

程式碼範例

import paho.mqtt.client as mqtt

# 定義MQTT客戶端
client = mqtt.Client()

# 連線MQTT伺服器
client.connect("localhost", 1883)

# 傳送訊息
client.publish("topic", "message")

# 關閉MQTT客戶端
client.disconnect()

圖表翻譯

  flowchart TD
    A[開始] --> B[連線MQTT伺服器]
    B --> C[傳送訊息]
    C --> D[關閉MQTT客戶端]
    D --> E[結束]

建立更好的捕鼠器

在開始設計、編碼或其他工作之前,我們需要了解什麼是「更好」的意思,對於客戶和終端使用者來說。

客戶需求

對於終端使用者來說,他們希望能夠快速地捕捉到老鼠,並且能夠長期地解決害蟲問題。此外,他們還希望能夠簡化檔案和文書工作,以便於合規性。因此,如果客戶能夠做到這些,他們就會很滿意。

客戶目標

客戶希望能夠有效地、快速地和經濟地完成這些任務。因此,這對於他們的盈利能力、效率和最終的業務增長至關重要。此外,具有技術上使能的解決方案是他們服務的獨特賣點。

方法

為了了解客戶的業務流程,我們與客戶進行了討論。這對於我們來說很重要,因為我們需要知道他們如何在沒有IoT的情況下完成任務。然後,我們可以複製這些功能,以便於過渡。

系統架構

我們設計了一個兩級的裝置集群系統,透過一個現場的中心樞紐連線到IoT平臺。這種架構是為了滿足捕鼠器的特殊情況而設計的。

硬體選擇

我們選擇了自定義的板卡,因為現有的硬體設計不符合我們的需求。捕鼠器的設計需要考慮到形式因素和成本。此外,我們需要提供多種連線選項,根據情況而定。

關鍵元件

我們使用了以下硬體元件:

  • 根據NRF51822晶片的BLE模組
  • 根據ESP8266晶片的SmartWIFI模組
  • 根據ATmega324p的QuickConnect自定義模組
  • MultiTech的mDot LoRaWAN模組
  • Vishay的紅外距離測量感測器模組

連線選擇

我們選擇了LoRaWAN和BLE作為連線選項,雖然客戶最初希望使用Wi-Fi。這是因為客戶的30%客戶是工業使用者,他們的工廠通常沒有良好的GSM網路連線性。因此,我們需要新增不同的連線選項,以滿足不同的情況。

前端應用

與硬體不同,前端應用需要考慮使用者體驗和美觀。因此,我們需要在設計應用程式的功能和特性時更加小心和使用者中心。技術最佳化並不夠,我們需要考慮美觀和其他可用性需求。

  flowchart TD
    A[客戶需求] --> B[終端使用者需求]
    B --> C[客戶目標]
    C --> D[方法]
    D --> E[系統架構]
    E --> F[硬體選擇]
    F --> G[關鍵元件]
    G --> H[連線選擇]
    H --> I[前端應用]

圖表翻譯:

此圖表展示了建立更好的捕鼠器的過程。從客戶需求開始,到終端使用者需求,然後到客戶目標。接下來是方法、系統架構、硬體選擇、關鍵元件、連線選擇和前端應用。每一步都與下一步相關,形成了一個完整的過程。

# 示例程式碼
import numpy as np

# 定義一個函式,計算距離
def calculate_distance(x1, y1, x2, y2):
    return np.sqrt((x2 - x1)**2 + (y2 - y1)**2)

# 定義一個函式,模擬捕鼠器的工作
def simulate_mouse_trap(x, y):
    # 模擬捕鼠器的位置
    trap_x, trap_y = 0, 0
    
    # 計算距離
    distance = calculate_distance(x, y, trap_x, trap_y)
    
    # 如果距離小於一定值,則捕捉到老鼠
    if distance < 10:
        return True
    else:
        return False

# 測試函式
print(simulate_mouse_trap(5, 5))

內容解密:

此程式碼定義了兩個函式,calculate_distancesimulate_mouse_trapcalculate_distance函式計算兩點之間的距離,simulate_mouse_trap函式模擬捕鼠器的工作。如果老鼠的位置距離捕鼠器的位置小於一定值,則捕捉到老鼠。程式碼使用numpy庫計算距離。

物聯網應用開發:打造更好的捕鼠器

在開發捕鼠器應用時,我們需要滿足至少三類不同的使用者需求。第一類是終端使用者,即害蟲控制公司的客戶。第二類是公司的運營人員,負責日常運營。第三類是後端或支援人員,包括IT和分析團隊。雖然並非所有人需要前端介面,但他們都有許多需求和期望,我們透過多次研討會來瞭解這些需求。

對於IT和分析人員,API是主要關注點。首先,API是應用的基礎,很容易從核心IoT平臺或應用伺服器中暴露出來。操作要求與終端使用者需求有很大重疊,但是操作要求是超集,這意味著當我們交付操作要求時,終端使用者需求也會被滿足。除了典型的存取控制和報告機制,操作團隊還需要實時檢視所有客戶的資產,包括樓層檢視,並需要與這些裝置進行互動,以便於安裝和維護。

為了滿足這些需求,我們開發了桌面和移動版本的前端。移動應用程式的線框圖如圖13-2和13-3所示。

從使用者體驗視角來看,打造「更好的捕鼠器」並非僅僅提升捕鼠效率,更需考量不同使用者群體的需求。深入剖析此專案,我們可以發現,終端使用者、運營人員和後端團隊的需求各有側重,這也對應用開發提出了多層次挑戰。技術團隊需要兼顧終端使用者的易用性、操作人員的實時監控和互動需求,以及後端團隊對API的依賴。專案選擇 LoRaWAN 和 BLE 連線方式,而非客戶最初要求的 Wi-Fi,正是根據對工業使用者場景的深入理解,展現了務實的解決方案思維。考量成本、功耗等因素的硬體選型,以及兼顧功能和美觀的前端應用設計,都體現了團隊以使用者為中心的開發理念。展望未來,預計捕鼠器應用將整合更多資料分析功能,例如預測鼠患趨勢、最佳化捕鼠策略等,進一步提升產品價值。玄貓認為,此專案成功地將物聯網技術應用於傳統領域,展現了技術賦能產業升級的巨大潛力。對於想要開發類似應用的團隊,建議深入研究目標使用者需求,並選擇合適的連線技術和硬體平臺,才能打造真正符合市場需求的產品。