色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用MQTT實現云平臺和邊緣終端之間的雙向通信

馬哥Linux運維 ? 來源:博客園 ? 2023-11-20 11:49 ? 次閱讀

一、項目背景

公司和第三方合作開發一個傳感器項目,想要通過電腦或者手機去控制項目現場的傳感器控制情況。現在的最大問題在于,現場的邊緣終端設備接入的公網方式是無線接入,無法獲取固定IP,所以常規的HTTP協議通信就沒法做,現在打算使用MQTT來實現云平臺和邊緣終端(傳感器)之間的雙向通信。

二、術語定義

2.1云平臺

主要是針對數據、設備等的管理。部署在云端的軟件應用系統,通過與邊緣終端,實現數據獲取或者指令下發。

2.2邊緣終端

位于網絡邊緣的計算機設備,通過網絡與云平臺連接,向下連接解析儀和各類傳感器。

2.3解析儀

數據接受裝置,通過有線/無線模式,連接邊緣終端或通過有線模式接收不同來源的傳感器數據。

2.4傳感器

通過有線/無線模式,連接邊緣終端,傳輸相應的參數或通過有線模式連接解析儀,傳輸相應的參數。

三、網絡結構

47f6c396-85e7-11ee-939d-92fbcf53809c.png

四、代碼實現

4.1 服務器實現

首先安裝nodejs和aedes,具體的操作和截圖網上有很多現成的。

新建一個“server.js”

const aedes = require('aedes')();
const aedesServer = require('net').createServer(aedes.handle);
const port = 1883;


aedesServer.listen(port, function () {
    console.log('服務啟動并開始監聽端口:', port)
})


//監聽MQTT服務器端口,當有客戶端連接上時,觸發該回調
aedes.on("client", (client) => {
    console.log("客戶端連接成功:", client.id);
})


//監聽MQTT服務器端口,當有客戶端主動斷開連接或者服務器600s內沒收到某個客戶端的心跳包就會觸發
aedes.on("clientDisconnect", (client) => {
    console.log("客戶端斷開連接:", client.id);
})


//監聽客戶端發布的主題
aedes.on("publish", function (packet, client) {
    //針對不同的客戶端寫不同的邏輯
    if (client) {
        //根據主題不同寫不同的邏輯,建議采用JSON格式傳輸
        console.log("監聽客戶端發過來的消息",packet.topic, packet.payload.toString());
    }
})


//服務器發出的消息
setInterval(() => {
    aedes.publish({
        topic: "serverMsg",
        payload: "服務器發消息",
        qos: 1,
        retain: false,
        dup: false,
        cmd: "publish"
    }, (err) => {
        if (err) {
            console.log("發布失敗");
        }
    });
}, 20000)

4.2客戶端實現

新建一個“client.js”

客戶端只需要使用“mqtt.connect”方法,就可以跟服務端建立長連接。

就目前實際使用的情況看,客戶端偶爾會自動與服務器斷開,并且自動連上,穩定性方面有待驗證。


var mqtt = require('mqtt');


var client = mqtt.connect('mqtt://192.168.70.220:1883',{
    clientId:'nodejs-mqtt-client'
})


client.on('connect',function (){
    console.log('連接上MQTT服務器')
    //需要訂閱服務器主題,不然無法接受消息
    client.subscribe('serverMsg',{
        qos:1
    })
})


//發布客戶端消息
setInterval(()=>{
    client.publish('topic1','hello mqtt client',{
        qos:1
    })
},20000)


client.on('message',function (topic,message){
    console.log('接受服務器消息:','主題:',topic,'消息:',message.toString())
})

4.3 效果呈現

通過兩個定時器,實現了雙向通信。

服務端

480cda78-85e7-11ee-939d-92fbcf53809c.png

客戶端

4820e9fa-85e7-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2550

    文章

    51035

    瀏覽量

    753077
  • 通信
    +關注

    關注

    18

    文章

    6024

    瀏覽量

    135950
  • 服務器
    +關注

    關注

    12

    文章

    9123

    瀏覽量

    85324
  • 云平臺
    +關注

    關注

    1

    文章

    1302

    瀏覽量

    38943
  • MQTT
    +關注

    關注

    5

    文章

    650

    瀏覽量

    22487

原文標題:四、代碼實現

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于RS485的多點雙向通信電路實現設計

    RS485可以采用二線和四線兩種方式,二線制可以實現真正的多點雙向通信
    發表于 08-21 17:25 ?4076次閱讀
    基于RS485的多點<b class='flag-5'>雙向通信</b>電路<b class='flag-5'>實現</b>設計

    STM32F207利用DMA功能能實現串口1與串口6之間雙向通信嗎?

    請問一下大家,STM32F207利用DMA功能能實現串口1與串口6之間雙向通信么?建立通信橋梁不需要CPU參與。
    發表于 04-29 08:53

    如何實現平臺之間通信

    自己買了個服務器,是Ubuntu的系統,,同時手里也有一塊探索者的板子,想要實現他們之間通信,傳輸數據,能實現嗎?還是說只能用arm的芯
    發表于 09-25 04:22

    NRF2401無線模塊的雙向通信怎么實現

    目前在做一個無線模塊的雙向通信,甲機發一次,乙機收一次,乙機發一次,甲機收一次,就不能雙向通信啦!怎么解決?的是原子哥的程序!
    發表于 05-18 04:19

    基于STM32F4開發板和阿里平臺MQTT通信開源項目

    【github項目】基于STM32F4開發板和阿里平臺MQTT通信開源項目摘要 當前網絡上MQTT的教程比較豐富,但實用的很少,有對
    發表于 08-03 08:04

    如何在設備上使用MQTT + TLS/SSL通道與阿里平臺建立雙向通信

    使用 pkgs —update 命令下載軟件包MQTT 示例該 MQTT 示例程序以 RGB-LED 為例,演示了如何在設備上使用 MQTT + TLS/SSL 通道與阿里
    發表于 08-11 11:00

    實現單片機雙向通信的實驗資料分享

    詳細介紹的是實現兩個單片機雙向通信的實驗資料合集包括了程序和仿真電路圖及工程文件
    發表于 09-25 06:43

    具有雙向通信功能的標準源

    本文介紹的具有雙向通信功能的標準源,是通過串行通信接口將PC機與標準源相連以實現雙向通信功能的系統。PC機的通信功能是利用Visual Ba
    發表于 02-25 11:25 ?15次下載

    基于8051的Proteus仿真-單片機之間雙向通信

    基于8051的Proteus仿真-單片機之間雙向通信
    發表于 09-01 23:33 ?17次下載

    單片機之間雙向通信的仿真電路圖免費下載

    本文檔的主要內容詳細介紹的是單片機之間雙向通信的仿真電路圖免費下載。
    發表于 01-07 15:44 ?8次下載
    單片機<b class='flag-5'>之間</b><b class='flag-5'>雙向通信</b>的仿真電路圖免費下載

    物聯網項目之在Particle Argons之間進行雙向通信

    電子發燒友網站提供《物聯網項目之在Particle Argons之間進行雙向通信.zip》資料免費下載
    發表于 12-07 14:54 ?0次下載
    物聯網項目之在Particle Argons<b class='flag-5'>之間</b>進行<b class='flag-5'>雙向通信</b>

    基于AT89C51單片機之間雙向通信仿真及代碼

    基于AT89C51單片機單片機之間雙向通信仿真及代碼
    發表于 05-05 10:29 ?17次下載

    保姆級操作示例!騰訊MQTT功能的連接與實現

    特點。它可以實現設備與云端之間的快速、可靠和實時的雙向通信。串口服務器與騰訊MQTT的結合,不僅可以
    的頭像 發表于 11-03 08:21 ?1648次閱讀
    保姆級操作示例!騰訊<b class='flag-5'>云</b><b class='flag-5'>MQTT</b>功能的連接與<b class='flag-5'>實現</b>

    邊緣計算網關實現MQTT對接到平臺

    實現計算資源的優化配置,也能更好發揮數據分析的能力。對此,物通博聯提供邊緣計算網關以MQTT協議與平臺實時
    的頭像 發表于 11-28 11:08 ?531次閱讀
    <b class='flag-5'>邊緣</b>計算網關<b class='flag-5'>實現</b><b class='flag-5'>MQTT</b>對接到<b class='flag-5'>云</b><b class='flag-5'>平臺</b>

    北斗短報文終端如何進行雙向通信

    北斗短報文終端雙向通信功能是基于中國北斗衛星導航系統(BDS)的衛星通信能力實現的。以下是北斗短報文終端進行
    的頭像 發表于 07-12 11:19 ?616次閱讀
    北斗短報文<b class='flag-5'>終端</b>如何進行<b class='flag-5'>雙向通信</b>?
    主站蜘蛛池模板: 美女张开腿让男人桶爽无弹窗| 日本在线免费播放| 日本免费无码A专区在线观看| 偷窥自拍性综合图区| 伊人久久综合| 少妇无套内谢久久久久| 亚洲字幕在线观看| 大乳牛奶女在线观看| 久草视频在线观看免费4| 让人爽到湿的小黄书| 亚洲午夜久久久精品影院| qvod在线观看| 国产av在线看的| 国产剧果冻传媒星空在线观看| 麻豆传煤网站网址入口在线下载| 四虎国产精品永久免费入口| 中文字幕一区二区三区在线观看| 国产成人a一在线观看| 蜜桃成人在线| 亚洲免费三区| 中国农村妇女真实BBWBBWBBW| 俄罗斯12x13x处| 国产亚洲精品久久久久久鸭绿欲| 国产人妻人伦精品59HHH| 男女做爽爽爽视频免费软件| 亚洲国产精品久久又爽黄A片| np高h肉文| 老奶奶50p| 亚洲蜜桃AV色情精品成人| 工口肉肉彩色不遮挡| 免费成人高清在线视频| 亚洲精品久久久久中文字幕二区 | 亚洲 欧美 国产 视频二区| 亚洲一区电影在线观看| 国产成人精品免费视频软件 | 久久精品亚洲AV无码三区观看| 美女脱衣服搞鸡| 亚洲毛片网| 国产伦精品一区二区三区免费 | 欧美黄色一级| 校花在公车上被内射好舒|