在物聯網平臺中,規則引擎和身份驗證機制扮演著至關重要的角色。規則引擎根據預設條件觸發特定動作,實現自動化控制和資料處理。同時,身份驗證機制保障平臺安全,確保只有授權使用者才能存取系統資源。本文將深入探討如何使用 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.auth
和 req.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_distance
和simulate_mouse_trap
。calculate_distance
函式計算兩點之間的距離,simulate_mouse_trap
函式模擬捕鼠器的工作。如果老鼠的位置距離捕鼠器的位置小於一定值,則捕捉到老鼠。程式碼使用numpy庫計算距離。
物聯網應用開發:打造更好的捕鼠器
在開發捕鼠器應用時,我們需要滿足至少三類不同的使用者需求。第一類是終端使用者,即害蟲控制公司的客戶。第二類是公司的運營人員,負責日常運營。第三類是後端或支援人員,包括IT和分析團隊。雖然並非所有人需要前端介面,但他們都有許多需求和期望,我們透過多次研討會來瞭解這些需求。
對於IT和分析人員,API是主要關注點。首先,API是應用的基礎,很容易從核心IoT平臺或應用伺服器中暴露出來。操作要求與終端使用者需求有很大重疊,但是操作要求是超集,這意味著當我們交付操作要求時,終端使用者需求也會被滿足。除了典型的存取控制和報告機制,操作團隊還需要實時檢視所有客戶的資產,包括樓層檢視,並需要與這些裝置進行互動,以便於安裝和維護。
為了滿足這些需求,我們開發了桌面和移動版本的前端。移動應用程式的線框圖如圖13-2和13-3所示。
從使用者體驗視角來看,打造「更好的捕鼠器」並非僅僅提升捕鼠效率,更需考量不同使用者群體的需求。深入剖析此專案,我們可以發現,終端使用者、運營人員和後端團隊的需求各有側重,這也對應用開發提出了多層次挑戰。技術團隊需要兼顧終端使用者的易用性、操作人員的實時監控和互動需求,以及後端團隊對API的依賴。專案選擇 LoRaWAN 和 BLE 連線方式,而非客戶最初要求的 Wi-Fi,正是根據對工業使用者場景的深入理解,展現了務實的解決方案思維。考量成本、功耗等因素的硬體選型,以及兼顧功能和美觀的前端應用設計,都體現了團隊以使用者為中心的開發理念。展望未來,預計捕鼠器應用將整合更多資料分析功能,例如預測鼠患趨勢、最佳化捕鼠策略等,進一步提升產品價值。玄貓認為,此專案成功地將物聯網技術應用於傳統領域,展現了技術賦能產業升級的巨大潛力。對於想要開發類似應用的團隊,建議深入研究目標使用者需求,並選擇合適的連線技術和硬體平臺,才能打造真正符合市場需求的產品。