在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用MQTT實(shí)現(xiàn)云平臺(tái)和邊緣終端之間的雙向通信

馬哥Linux運(yùn)維 ? 來(lái)源:博客園 ? 2023-11-20 11:49 ? 次閱讀

一、項(xiàng)目背景

公司和第三方合作開(kāi)發(fā)一個(gè)傳感器項(xiàng)目,想要通過(guò)電腦或者手機(jī)去控制項(xiàng)目現(xiàn)場(chǎng)的傳感器控制情況。現(xiàn)在的最大問(wèn)題在于,現(xiàn)場(chǎng)的邊緣終端設(shè)備接入的公網(wǎng)方式是無(wú)線接入,無(wú)法獲取固定IP,所以常規(guī)的HTTP協(xié)議通信就沒(méi)法做,現(xiàn)在打算使用MQTT來(lái)實(shí)現(xiàn)云平臺(tái)和邊緣終端(傳感器)之間的雙向通信。

二、術(shù)語(yǔ)定義

2.1云平臺(tái)

主要是針對(duì)數(shù)據(jù)、設(shè)備等的管理。部署在云端的軟件應(yīng)用系統(tǒng),通過(guò)與邊緣終端,實(shí)現(xiàn)數(shù)據(jù)獲取或者指令下發(fā)。

2.2邊緣終端

位于網(wǎng)絡(luò)邊緣的計(jì)算機(jī)設(shè)備,通過(guò)網(wǎng)絡(luò)與云平臺(tái)連接,向下連接解析儀和各類(lèi)傳感器。

2.3解析儀

數(shù)據(jù)接受裝置,通過(guò)有線/無(wú)線模式,連接邊緣終端或通過(guò)有線模式接收不同來(lái)源的傳感器數(shù)據(jù)。

2.4傳感器

通過(guò)有線/無(wú)線模式,連接邊緣終端,傳輸相應(yīng)的參數(shù)或通過(guò)有線模式連接解析儀,傳輸相應(yīng)的參數(shù)。

三、網(wǎng)絡(luò)結(jié)構(gòu)

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

四、代碼實(shí)現(xiàn)

4.1 服務(wù)器實(shí)現(xiàn)

首先安裝nodejs和aedes,具體的操作和截圖網(wǎng)上有很多現(xiàn)成的。

新建一個(gè)“server.js”

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


aedesServer.listen(port, function () {
    console.log('服務(wù)啟動(dòng)并開(kāi)始監(jiān)聽(tīng)端口:', port)
})


//監(jiān)聽(tīng)MQTT服務(wù)器端口,當(dāng)有客戶(hù)端連接上時(shí),觸發(fā)該回調(diào)
aedes.on("client", (client) => {
    console.log("客戶(hù)端連接成功:", client.id);
})


//監(jiān)聽(tīng)MQTT服務(wù)器端口,當(dāng)有客戶(hù)端主動(dòng)斷開(kāi)連接或者服務(wù)器600s內(nèi)沒(méi)收到某個(gè)客戶(hù)端的心跳包就會(huì)觸發(fā)
aedes.on("clientDisconnect", (client) => {
    console.log("客戶(hù)端斷開(kāi)連接:", client.id);
})


//監(jiān)聽(tīng)客戶(hù)端發(fā)布的主題
aedes.on("publish", function (packet, client) {
    //針對(duì)不同的客戶(hù)端寫(xiě)不同的邏輯
    if (client) {
        //根據(jù)主題不同寫(xiě)不同的邏輯,建議采用JSON格式傳輸
        console.log("監(jiān)聽(tīng)客戶(hù)端發(fā)過(guò)來(lái)的消息",packet.topic, packet.payload.toString());
    }
})


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

4.2客戶(hù)端實(shí)現(xiàn)

新建一個(gè)“client.js”

客戶(hù)端只需要使用“mqtt.connect”方法,就可以跟服務(wù)端建立長(zhǎng)連接。

就目前實(shí)際使用的情況看,客戶(hù)端偶爾會(huì)自動(dòng)與服務(wù)器斷開(kāi),并且自動(dòng)連上,穩(wěn)定性方面有待驗(yàn)證。


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服務(wù)器')
    //需要訂閱服務(wù)器主題,不然無(wú)法接受消息
    client.subscribe('serverMsg',{
        qos:1
    })
})


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


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

4.3 效果呈現(xiàn)

通過(guò)兩個(gè)定時(shí)器,實(shí)現(xiàn)了雙向通信。

服務(wù)端

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

客戶(hù)端

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2553

    文章

    51407

    瀏覽量

    756631
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6072

    瀏覽量

    136432
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9308

    瀏覽量

    86071
  • 云平臺(tái)
    +關(guān)注

    關(guān)注

    1

    文章

    1327

    瀏覽量

    39143
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    653

    瀏覽量

    22698

原文標(biāo)題:四、代碼實(shí)現(xiàn)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于RS485的多點(diǎn)雙向通信電路實(shí)現(xiàn)設(shè)計(jì)

    RS485可以采用二線和四線兩種方式,二線制可以實(shí)現(xiàn)真正的多點(diǎn)雙向通信
    發(fā)表于 08-21 17:25 ?4212次閱讀
    基于RS485的多點(diǎn)<b class='flag-5'>雙向通信</b>電路<b class='flag-5'>實(shí)現(xiàn)</b>設(shè)計(jì)

    STM32F207利用DMA功能能實(shí)現(xiàn)串口1與串口6之間雙向通信嗎?

    請(qǐng)問(wèn)一下大家,STM32F207利用DMA功能能實(shí)現(xiàn)串口1與串口6之間雙向通信么?建立通信橋梁不需要CPU參與。
    發(fā)表于 04-29 08:53

    如何實(shí)現(xiàn)平臺(tái)之間通信

    自己買(mǎi)了個(gè)服務(wù)器,是Ubuntu的系統(tǒng),,同時(shí)手里也有一塊探索者的板子,想要實(shí)現(xiàn)他們之間通信,傳輸數(shù)據(jù),能實(shí)現(xiàn)嗎?還是說(shuō)只能用arm的芯
    發(fā)表于 09-25 04:22

    NRF2401無(wú)線模塊的雙向通信怎么實(shí)現(xiàn)

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

    基于STM32F4開(kāi)發(fā)板和阿里平臺(tái)MQTT通信開(kāi)源項(xiàng)目

    【github項(xiàng)目】基于STM32F4開(kāi)發(fā)板和阿里平臺(tái)MQTT通信開(kāi)源項(xiàng)目摘要 當(dāng)前網(wǎng)絡(luò)上MQTT的教程比較豐富,但實(shí)用的很少,有對(duì)
    發(fā)表于 08-03 08:04

    如何在設(shè)備上使用MQTT + TLS/SSL通道與阿里平臺(tái)建立雙向通信

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

    實(shí)現(xiàn)單片機(jī)雙向通信的實(shí)驗(yàn)資料分享

    詳細(xì)介紹的是實(shí)現(xiàn)兩個(gè)單片機(jī)雙向通信的實(shí)驗(yàn)資料合集包括了程序和仿真電路圖及工程文件
    發(fā)表于 09-25 06:43

    具有雙向通信功能的標(biāo)準(zhǔn)源

    本文介紹的具有雙向通信功能的標(biāo)準(zhǔn)源,是通過(guò)串行通信接口將PC機(jī)與標(biāo)準(zhǔn)源相連以實(shí)現(xiàn)雙向通信功能的系統(tǒng)。PC機(jī)的通信功能是利用Visual Ba
    發(fā)表于 02-25 11:25 ?15次下載

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

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

    單片機(jī)之間雙向通信的仿真電路圖免費(fèi)下載

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

    物聯(lián)網(wǎng)項(xiàng)目之在Particle Argons之間進(jìn)行雙向通信

    電子發(fā)燒友網(wǎng)站提供《物聯(lián)網(wǎng)項(xiàng)目之在Particle Argons之間進(jìn)行雙向通信.zip》資料免費(fèi)下載
    發(fā)表于 12-07 14:54 ?0次下載
    物聯(lián)網(wǎng)項(xiàng)目之在Particle Argons<b class='flag-5'>之間</b>進(jìn)行<b class='flag-5'>雙向通信</b>

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

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

    保姆級(jí)操作示例!騰訊MQTT功能的連接與實(shí)現(xiàn)

    特點(diǎn)。它可以實(shí)現(xiàn)設(shè)備與云端之間的快速、可靠和實(shí)時(shí)的雙向通信。串口服務(wù)器與騰訊MQTT的結(jié)合,不僅可以實(shí)
    的頭像 發(fā)表于 11-03 08:21 ?1761次閱讀
    保姆級(jí)操作示例!騰訊<b class='flag-5'>云</b><b class='flag-5'>MQTT</b>功能的連接與<b class='flag-5'>實(shí)現(xiàn)</b>

    邊緣計(jì)算網(wǎng)關(guān)實(shí)現(xiàn)MQTT對(duì)接到平臺(tái)

    實(shí)現(xiàn)計(jì)算資源的優(yōu)化配置,也能更好發(fā)揮數(shù)據(jù)分析的能力。對(duì)此,物通博聯(lián)提供邊緣計(jì)算網(wǎng)關(guān)以MQTT協(xié)議與平臺(tái)實(shí)時(shí)
    的頭像 發(fā)表于 11-28 11:08 ?573次閱讀
    <b class='flag-5'>邊緣</b>計(jì)算網(wǎng)關(guān)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>MQTT</b>對(duì)接到<b class='flag-5'>云</b><b class='flag-5'>平臺(tái)</b>

    北斗短報(bào)文終端如何進(jìn)行雙向通信

    北斗短報(bào)文終端雙向通信功能是基于中國(guó)北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS)的衛(wèi)星通信能力實(shí)現(xiàn)的。以下是北斗短報(bào)文終端進(jìn)行
    的頭像 發(fā)表于 07-12 11:19 ?772次閱讀
    北斗短報(bào)文<b class='flag-5'>終端</b>如何進(jìn)行<b class='flag-5'>雙向通信</b>?
    主站蜘蛛池模板: 久久澡人人澡狠狠澡 | 可以免费看黄的网站 | 欧美色碰碰碰免费观看长视频 | 2021精品国产综合久久 | 视频免费黄色 | 欧美日韩国产一区 | 米奇影院777 | 色婷婷狠狠久久综合五月 | 国产一区二区三区毛片 | 视频福利网 | 天堂va| 天天爽夜夜| 调教双性学霸美人 | bt天堂新版中文在线地址 | 91插插视频 | 国产成人在线播放视频 | 推倒都市极品贵妇 | 流不尽奶水的大乳h | 午夜高清视频在线观看 | 九九re6精品视频在线观看 | 7777在线 | 福利视频一区二区牛牛 | 日本网络视频www色高清免费 | 成人免费观看一区二区 | 色播六月 | 天天摸夜夜添夜夜添国产 | a资源在线观看 | 国产精品久久久久久久免费大片 | 亚洲色图88 | 成人在线91 | 高清国产美女在线观看 | 欧美肥妇性| 欧美婷婷| 国产午夜爽爽窝窝在线观看 | 国产成人福利夜色影视 | 一级一片免费视频播放 | 久久亚洲综合中文字幕 | 美欧毛片 | 一级一黄在线观看视频免费 | 国产成人亚洲影视在线 | 午夜小福利|