iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
1
自我挑戰組

初學者也能實做的環控系統系列 第 11

DAY11 nodejs上使用MQTT發送資料

  • 分享至 

  • xImage
  •  

上次介紹了在本機上安裝MQTT和使用方法
今天要介紹在nodejs上使用mqtt以及把資料傳送至主機上的MQTT subsucriber
首先要先下載mqtt的套件

npm install mqtt

打開常用的編輯器,將套件引入
設定mqtt的ip位址

var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://127.0.0.1')

設定好之後在將訊息pub出去

client.on('connect', function () {
    client.publish('arduino_data', '1')
    client.end()
  })

其中要注意函式括號左邊的 connect 是event type 指說只要連接上了就執行裡面的內容
然後結合我們DAY8 Seiral接受資料的部份

var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://127.0.0.1')
const Readline = require('@serialport/parser-readline')
var SerialPort = require("serialport");
const parser = new Readline()
var arduinoCOMPort = "/dev/ttyACM0";
var arduinoport = new SerialPort(arduinoCOMPort, {baudRate: 9600}).setEncoding('utf8');

arduinoport.on("open", (err) => {  
  console.log('serial port open'); //成功連接時印出port open
  if(err){
      console.log("no serial device found")//失敗時印出 device not found
  }
},20);
arduinoport.pipe(parser)
parser.on('data', line =>{
console.log(line)
client.publish('arduino_data', line)
})
   
setInterval(function(){
  arduinoport.write('g')
},1000)

程式執行的結果

這樣就可以將arduino的資料利用MQTT發送出去
下次我們要介紹json格式


上一篇
DAY10 介紹MQTT通訊協定
下一篇
DAY12 json格式介紹
系列文
初學者也能實做的環控系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言