Gulp with Raspberry Pi

Gulp with Raspberry Pi



Gulp 알림에 Raspberry Pi L 치카를 사용하십시오

소개



Gulp로 통지를 내고 싶을 때는 gulp-notify등이 사용된다고 생각합니다만,
Raspberry Pi로 프런트 엔드 개발을 할 때 L치카로 대용할 수 없는가 하고 생각해 보기로 했습니다.

환경



Raspberry Pi 3
L 치카 키트 (LED, 저항, 듀폰 케이블, 브레드 보드)

다음은 Raspberry Pi에서 OS와 같은 설정이 끝났다고 가정합니다.

노드 설치



Gulp와 연계하기 위해, 우선은 node를 인스톨.
여기서는 LXTerminal에서 nvm을 사용합니다.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
nvm install node

gulp 설치



다음 gulp를 설치.
npm install --global gulp-cli
npm install --save-dev gulp

gulp-babel, gulp-plumber 설치



babel의 빌드 에러를 검지하는 가정으로 gulp-babel과 gulp-plumber를 인스톨.
npm install --save-dev gulp-babel babel-preset-env
npm install --save-dev gulp-plumber

여기까지는 다른 환경에서 하는 경우와 다르지 않다고 생각합니다.

gulpfile 준비



gulpfile.js
const gulp = require("gulp");
const babel = require("gulp-babel");
const plumber = require("gulp-plumber");

gulp.task("build", () => {
  let is_success = true;
  gulp.src("./scripts/*.js")
  .pipe(plumber({
    errorHandler: (err) => {
      console.log("err");
      is_success = false;
    }
  }))
  .on('end', () => {
    if (is_success) {
      console.log("success");
    }
  })
  .pipe(babel());
});

빌드의 성공 여부로 나눌 수 있도록 해 둡니다.

L치카 by node.js



L 치카하기 위해 node.js에서 GPIO에 액세스합니다.

여기서는
・빌드 에러시에는 GPIO#4에 접속한 적색의 LED
· 빌드 성공시 GPIO # 26에 연결된 청색 LED
을 각각 5초 동안 켭니다.

gulpfile.js
const gulp = require("gulp");
const babel = require("gulp-babel");
const plumber = require("gulp-plumber");

const fs = require("fs");
const path = require("path");

const dir = "/sys/class/gpio/";
const pin_error = 4;
const pin_success = 26;
const gpio_error = path.join(dir, `gpio${pin_error}`);
const gpio_success = path.join(dir, `gpio${pin_success}`);

fs.writeFileSync(path.join(dir, "export"), pin_error);
fs.writeFileSync(path.join(dir, "export"), pin_success);

gulp.task("build", () => {
  let is_success = true;
  gulp.src("./scripts/*.js")
  .pipe(plumber({
    errorHandler: (err) => {
      console.log("err");
      is_success = false;
      //console.log(err);
      fs.writeFileSync(path.join(gpio_error, "direction"), "out");
      fs.writeFileSync(path.join(gpio_error, "value"), 1);
      setTimeout(() => {
        fs.writeFileSync(path.join(gpio_error, "value"), 0);
        fs.writeFileSync(path.join(dir, "unexport"), pin_error);
        fs.writeFileSync(path.join(dir, "unexport"), pin_success);
      }, 5000);
    }
  }))
  .on('end', () => {
    if (is_success) {
      console.log("success");
      fs.writeFileSync(path.join(gpio_success, "direction"), "out");
      fs.writeFileSync(path.join(gpio_success, "value"), 1);
      setTimeout(() => {
        fs.writeFileSync(path.join(gpio_success, "value"), 0);
        fs.writeFileSync(path.join(dir, "unexport"), pin_error);
        fs.writeFileSync(path.join(dir, "unexport"), pin_success);
      }, 5000);
    }
  })
  .pipe(babel());
});

장황한 곳이 있을지도 모르지만, 알기 쉬움 우선으로 기술하고 있습니다.

회로





준비가 되었으므로 실제로 시도해 보겠습니다.

오류시



구문 오류가 있는 적절한 JS 파일을 준비합니다.

./scripts/sample.js
console.log("test";
gulp build



정지영상으로 죄송합니다만, 적색 LED가 빛나고 있습니다.

빌드 성공시



계속해서 에러를 해소해 실행해 보겠습니다.

./scripts/sample.js
console.log("test");
gulp build



무사히 빌드가 성공해 청색의 LED가 빛났습니다!

요약



L치카를 다른 것에 대용하는 것으로 여러가지 할 수 있을 것 같습니다.

삶은 때의 기분 전환에 사용할 수 있으면 좋을 것 같다고 생각했습니다.

좋은 웹페이지 즐겨찾기