실습 문제
조건에 맞도록 원격서버(svr_led.js)와 클라이언트(client_led.js)를 프로그래밍 하시오
조건1 : 서버는 3색 LED를 클라이언트의 요청에 따라서 해당컬러를 켜거나 끈다.
조건2 : 서버는 클라이언트에게 다음의 REST API를 제공한다.
하드웨어
LED
G - 물리 : 28 wpi - 21
R - 물리 : 31 wpi - 22
B - 물리 : 33 wpi - 23
소스 코드
svr_led.js
const express = require('express');
const gpio = require('node-wiring-pi');
const bodyParser = require('body-parser');
const app = express();
const GREEN = 21;
const RED = 22;
const BLUE = 23;
var mydata = {
actid:'LED3',
redcolor:'OFF',
greencolor:'OFF',
bluecolor:'OFF'
};
app.use(bodyParser.urlencoded({extended:false}));
app.put('/led',led3control);
app.get('/led',(req,res)=>{
console.log("Get method");
res.send("OK");});
app.listen(60001,()=>{
console.log('SVR_LED.js : 서버(60001)가동중...');
gpio.wiringPiSetup();
gpio.pinMode(GREEN,gpio.OUTPUT);
gpio.pinMode(BLUE,gpio.OUTPUT);
gpio.pinMode(RED,gpio.OUTPUT);
});
const led3control = (req,res)=>{
console.log("PUT method로 데이터 수신...");
if(req.body.actid == 'LED3'){
if(req.body.redcolor == 'ON'){
gpio.digitialWrite(RED,1);
gpio.digitialWrite(GREEN,0);
gpio.digitialWrite(BLUE,0);
console.log("빨강LED켰음");
}
if(req.body.greencolor == 'ON'){
gpio.digitialWrite(RED,0);
gpio.digitialWrite(GREEN,1);
gpio.digitialWrite(BLUE,0);
console.log("초록LED켰음");
}
if(req.body.bluecolor == 'ON'){
gpio.digitialWrite(RED,0);
gpio.digitialWrite(GREEN,0);
gpio.digitialWrite(BLUE,1);
console.log("파랑LED켰음");
}
res.send("OK");
}else res.send("FAIL");
}
client_led.js
const request = require('request');
var data = {
actid:'LED3',
redcolor:'ON',
greencolor:'OFF',
bluecolor:'OFF'
};
request.put{
{url:'http://IP주소:60001/led',
form:data,
headers:{"content-type":"apllication/x-www-form-urlencoded"}
},
function(error,response,body){
if(!error && response.statusCode == 200){
console.log(body);
}
}
};
'Coding > Raspberry pi - node.js' 카테고리의 다른 글
Raspberrypi에 MySQL연동하기 (1) | 2019.11.18 |
---|---|
로터리 엔코더(가변저항기)모듈 (3) | 2019.11.18 |
REST API 예제 (0) | 2019.11.17 |
실습 사운드센서, 광센서를 웹에 연결시키기 (0) | 2019.11.17 |
실습 socket.io를 활용하여 1색LED, Buzzer, 3색LED Control (0) | 2019.11.17 |
댓글