
rpa vs. api:差異與應用場景
MQTT 是一種廣泛應用于物聯網(IoT)領域的輕量級通信協議。它采用發布-訂閱模型,允許設備通過特定主題發布消息,其他設備通過訂閱相關主題接收消息。這種機制支持物聯網設備之間的實時數據交換,具有高效、可靠的特點。
REST(Representational State Transfer)是一種用于構建 Web 應用程序接口的架構風格。REST API 遵循一系列設計原則,旨在降低開發復雜性并提升系統的可擴展性。
REST API 使用 HTTP 協議進行通信,支持多種 HTTP 方法,例如:
這種設計使 REST API 能夠輕松與現有的 Web 技術集成。
REST API 以資源為中心,每個資源都有唯一的 URI。例如,用戶資源的 URI 可以是 /users/{userId}
,通過該 URI 可以執行獲取用戶信息、更新用戶信息等操作。
REST API 通常使用 JSON 或 XML 格式傳輸數據:
一個典型的 JSON 響應示例:
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
REST API 支持 HTTPS 數據傳輸,并提供多種身份驗證機制(如 OAuth、API Key),確保數據的安全性和完整性。
REST API 的設計靈活,能夠輕松添加新資源和操作,例如新增端點 /users/{userId}/posts
用于檢索用戶的帖子,而不會影響現有接口。
將 MQTT 和 REST API 集成,可以為數據交換和通信提供高效、靈活的解決方案,廣泛應用于工業自動化、智能家居等領域。以下是一些典型的集成場景:
現場設備通過 MQTT 發布實時數據,中心服務器通過 REST API 接收并處理這些數據,結合了 MQTT 的實時性與 REST API 的靈活性。
中心服務器通過 REST API 發送控制命令,現場設備通過 MQTT 接收并執行命令,充分利用了 REST API 的易用性和 MQTT 的高效性。
現場設備通過 MQTT 發布報警信息,中心服務器通過 REST API 將報警推送給用戶,結合了 MQTT 的實時性與 REST API 的兼容性。
現場設備通過 MQTT 發布實時數據,中心服務器通過 REST API 將數據同步到其他系統,支持跨平臺數據共享。
用戶通過 REST API 發送配置命令,現場設備通過 MQTT 接收并應用配置,實現遠程設備管理。
在智能家居系統中,溫濕度傳感器作為 MQTT 客戶端,實時采集環境數據并通過 MQTT 協議發送至 EMQX 消息代理。EMQX 通過規則引擎將數據提取并存儲到 MySQL 數據庫中。
用戶通過 Web 客戶端訪問 REST API 查詢最新的溫濕度數據,服務器從數據庫中檢索數據并返回 JSON 格式的響應,最終在用戶界面上以圖表或數字形式展示。
克隆項目代碼
使用以下命令將項目代碼克隆到本地:
git clone https://github.com/emqx/mqtt-api-to-mysql
cdmqtt-api-to-mysql
啟動服務
使用 Docker Compose 啟動 EMQX、MySQL 和 MQTTX:
docker-compose-fdocker-compose.ymlup
數據發布與存儲
MQTTX 模擬設備客戶端,定期發布溫濕度數據至主題 mqttx/simulate/temp-data/{device_id}
。EMQX 通過規則引擎將數據寫入 MySQL 數據庫。
數據查詢
用戶通過 REST API 查詢最新數據,服務器從數據庫中檢索數據并返回。
數據可視化
使用 Grafana 監控平臺展示實時溫濕度變化趨勢。
配置 REST API
在 Flask 應用中,通過 HTTP 請求調用 EMQX 的 REST API 發布消息。例如:
API_URL = 'http://127.0.0.1:18083/api/v5/publish'
USERNAME = 'your_username'
PASSWORD = 'your_password'
運行 Flask 應用
啟動 Flask 服務:
pythonrun.py
消息發布與接收
使用 test_pub.py
腳本通過 HTTP POST 請求向 Flask 應用發送數據,Flask 應用調用 EMQX 的 REST API 發布消息。使用 MQTT 客戶端訂閱主題 mqttx/simulate/temp-data/response/
,接收并處理消息。
通過將 MQTT 的高效發布/訂閱模型與 REST API 的靈活請求/響應模式相結合,開發人員可以構建適用于多種場景的高效解決方案。無論是智能家居、工業自動化還是遠程監控,MQTT 和 REST API 的協作都能顯著提升系統性能和用戶體驗。
原文鏈接: https://www.emqx.com/en/blog/connecting-mqtt-and-rest-api