iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
1

上次我們教POSTMAN做POST,今天要教如何在node 裡做request的方法
首先我們要先下載套件 request 同樣是以前教過的

npm install Request-Promise

下載好呢 我們就可以直接使用該套件先引用套件 然後將資料填好 然後就能直接做request

const request = require('request-promise');
let push = async () => {
if(Sensor_key[0] == 'CO2'){
  Sensordata = {
      method: 'POST',
      uri: 'http://127.0.0.1:30001/insert' ,
      headers: {
          'Content-Type': 'application/json'
      },
      body: {
          mac : "3024324b3a84",
          "sensorData" : {
              "CO2" : Sensor_data[0],
              "TVOC" : Sensor_data[1],
          }
      },
          json: true        
  }
}
request(Sensordata).then(function (response) {
  console.log(response)
  console.log("post success")
}).catch(function (err) {
  console.error(err);
  });
      
}

可以看到我們request的方式是 POST URL是我們上次講的insert的網址
header要寫說我們傳送的是json 然後body是我們傳送的內容 有就是我們Sensor的data 和mac
而request很貼心 如果我們填 json:true 他會幫我們的資料自動轉成json格式
完整的程式碼如下

const request = require('request-promise');
const Readline = require('@serialport/parser-readline')
var SerialPort = require("serialport");
const parser = new Readline()
var arduinoCOMPort = "/dev/ttyUSB0";
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 =>{
  let udate = new Date();
  let nowtime = udate.toLocaleString('zh-hant', { timeZone: 'Asia/Taipei' })
  console.log(line)
  Arduno_data = JSON.parse(line);
  Sensor_data = Object.values(Arduno_data)
  Sensor_key = Object.keys(Arduno_data)
  client.publish('arduino_data', line)
  push()
  })
  let push = async () => {
if(Sensor_key[0] == 'CO2'){
  Sensordata = {
      method: 'POST',
      uri: 'http://127.0.0.1:30001/insert' ,
      headers: {
          'Content-Type': 'application/json'
      },
      body: {
          mac : "你的mac位址",
          "sensorData" : {
              "CO2" : Sensor_data[0],
              "TVOC" : Sensor_data[1],
          }
      },
          json: true        
  }
}
request(Sensordata).then(function (response) {
  console.log(response)
  console.log("post success")
}).catch(function (err) {
  console.error(err);
  });
      
}
   
setInterval(function(){
  arduinoport.write('g')
},5000)

執行成功後畫面會長這樣

這樣子就能做到將資料上傳上去了 可是到現在都只有一台裝置 如果我有兩台以上呢 這時候就勢必自己去註冊一個mac 所以我們下次要講node裡面如何尋找自己的mac和ip 然後在平台上做註冊


上一篇
DAY19 POSTMAN 教學
下一篇
DAY21 註冊ip與mac
系列文
初學者也能實做的環控系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言