Context
公司服務(wù)器 emqttd: mqtt代理服務(wù)器(負(fù)責(zé)接收并轉(zhuǎn)發(fā))
設(shè)備:發(fā)送mqtt數(shù)據(jù)包(topic+message)
接收程序
技術(shù)是nodejs腳本,借助mqtt和bitwise庫(kù)實(shí)現(xiàn)。
傳輸方式是websocket,所以host地址填的是ws://<IP>:8083/mqtt, 8083是emqttd開(kāi)放給websocket的端口。
var client = mqtt.connect(MQTT_ADDR, { clientId: 'BeCarefulexclusiveID', connectTimeout: 1000, debug: true }, (err) => {
if (err) {
console.log('Client established error');
} else {
console.log('Client established');
}
});
如果協(xié)議中數(shù)據(jù)是按位分配字段,需要了解bitwise的使用:
var array_l = bitwise.readByte(data[3]); //array_l is a Number(0/1) array, thus could be operated in bitwise layer
但是每一個(gè)Byte讀出的8位數(shù)組需要拆分:
var msgType = MV.slice(0, 4); // get 0 ~3 four bits
Array2String:
msgType = msgType.join("");
上面的代碼雙引號(hào)表示數(shù)組每個(gè)元素間沒(méi)有字符間隔 組成字符串
接著將字符串以2進(jìn)制的方式轉(zhuǎn)換為Int,如字符串”011“就是3
msgType = parseInt(msgType, 2);
實(shí)際情況 公司cai'y