지난 시간에 node server에서 rpi-temp-module를 설치하여 사용하는 방법에 대해 알아 보았다.


이제 앞으로 좀 더 많은 살을 붙여 나가면서 더 많은 package를 설치하게 될텐데

이를 좀 더 효율적으로 관리하기 위해 npm에서 제공하는 기능을 통해 package를 관리하도록 해보자.


pi@raspberrypi ~/server/was $ npm init
 This utility will walk you through creating a package.json file.
 It only covers the most common items, and tries to guess sane defaults.

 See `npm help json` for definitive documentation on these fields
 and exactly what they do.

 Use `npm install <pkg> --save` afterwards to install a package and
 save it as a dependency in the package.json file.

 Press ^C at any time to quit.
 name: (was) rpi_was
 version: (1.0.0) 1.0.0
 description: fish box management system
 entry point: (index.js) index.js
 test command:
 git repository:
 keywords:
 author: szinlee
 license: (ISC)
 About to write to /home/pi/server/was/package.json:

 {
    "name": "rpi_was",
    "version": "1.0.0",
    "description": "fish box management system",
    "main": "index.js",
    "dependencies": {
      "rpi-temp-module": "^1.0.0"
    },
    "devDependencies": {},
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "szinlee",
    "license": "ISC"
  }


 Is this ok? (yes) yes


설정을 완료 하면 package.json 파일이 생성된 것을 확인할 수 있다.

해당 파일을 열어 보면 우리가 지난 시간에 추가했던 모듈이 dependencies안에 위치한 것을 확인할 수 있다.

설치 버전은 1.0.0이다.


앞으로는 이 파일에 모듈을 추가해 가면서 작업을 진행할 것이다.

저번 시간에 온도센서를 라즈베리파이에 연결하는 방법에 대해 알아 보았다.


오늘은 앞서 말했던 것과 같이 모듈을 하나 테스트 했으니 서버에 붙일 예정이다.


8일차에 진행했던 node server에 진행해 보도록 한다.


login as : pi
pi@192.168.0.10's password:
pi@raspberrypi ~ $ cd server/was


node server로 이동 하였다면 이제 index파일에 프로그래밍을 할 것이다.


사실 /sys/bus/w1/devices 밑에 잡힌 온도 센서 디바이스에서 w1_slave란 파일을 읽어서 필요한 부분만 짤라서 사용해도 어렵지 않게 코딩을 할 수 있다.


하지만 nodejs는 package를 통해 대부분의 필요한 library를 제공한다.

스스로 직접 코딩해 보는 것도 좋지만 깔끔한 프로그래밍을 위해서는 library를 잘 활용하는 것도 좋다.


nodejs에 package를 간편하게 설치 하기 위해서는 npm이라는 툴이 필요하다.


혹시 nodejs version이 v0.10.x 미만인 경우 v0.10 이상으로 설치하도록 하자.

버전 확인은 nodejs -v로 할 수 있고, 변경 방법은 8일차를 참고하도록 하자.


npm 툴은 아래와 같이 설치한다.


pi@raspberrypi ~/server/was $ sudo apt-get install npm
pi@raspberrypi ~/server/was $ npm -v
1.1.4


npm이 잘 설치 되었는지 확인 후 npm에서 제공하는 raspberry pi 온도 측정 package를 받아 보자.


pi@raspberrypi ~/server/was $ npm install rpi-temp-module


node_modules라는 폴더안에 설치한 rpi-temp-module이라는 package가 생성된 것을 볼 수 있다.


사용해 보도록 하자. 사용전 미리 /sys/bus/w1/devices 밑에 생긴 device 이름을 알아두자

필자는 28-0215529be4ff이다. (이 장치명은 다르므로 꼭 확인하고 맞게 작성해야 한다.)


pi@raspberrypi ~/server/was $ vi index.js



8일차에 작성했던 console.log('Hello World'); 는 이제 지워주고 아래와 같이 입력한다.


var rpiTemp = require('rpi-temp-module');

setInterval(function()
{
    rpiTemp.getTemperature('28-0215529be4ff', function(value)
    {
        console.log("Temperature: ", value);
    });

}, 1000);


저장하고 나온다.

이 코드는 rpi-temp-module를 사용하여 1초에 한번씩 온도를 체크해서 console에 찍어 주도록 하는 프로그램이다.

이제 잘 동작하는지 실행해 보자.



pi@raspberrypi ~/server/was $ node index.js


빠른 변화를 보기 위해서는 온도센서를 물에 담그거나 손으로 꽉 쥐면 된다.


Temperature: 21.5 
Temperature: 22.5 
Temperature: 23 
Temperature: 23.5 
Temperature: 24.5 
Temperature: 25 


잘 변경됨을 확인할 수 있다.

종료 방법은 Ctrl + C 이다.


이로서 nodejs로 간단한 온도 체크 프로그램을 만들어 보았다.


이제 어느 정도 세팅이 끝난 것 같으니 모듈을 하나하나 테스트 하며 라즈베리 파이에 붙여 보자.


그 전에! 

모듈을 테스트 하며 하나하나 구현 할지, 

아니면 서버를 먼저 구성 후 하나하나 살을 붙여 나갈지 고민에 고민을 거듭 하다가 서버를 먼저 구성해 놓고 모듈이 하나하나 완성되면 붙여 나가면서 진행하기로 결정했다.


1일차에 잠시 언급했던 대로 서버는 nodejs를 사용하도록 한다!

(머.. 중간에 한계점이 있다면 파이썬이나 C/C++로 변경 될 수 있으나, 그렇지 않길 바란다.)


라즈베리파이에 Node.js를 설치해 보자. 간단하다.


 login as : pi
 pi@192.168.0.10's password:
 pi@raspberrypi ~ $ sudo apt-get update
 pi@raspberrypi ~ $ sudo apt-get upgrade
 pi@raspberrypi ~ $ sudo apt-get install nodejs
 pi@raspberrypi ~ $ sudo apt-get install nodejs-legacy
 pi@raspberrypi ~ $ node -v
 v0.6.19


설치가 끝났다.아마 kernel 버전이 높으면 nodejs만 설치해도 될 것이다.(기억이 가물가물...)

필자의 kernel 버전은 3.18.5-v7+ 이며, uname -a 명령어를 통해 확인할 수 있다.


필자가 설치한 node 버전은 v0.6.19 !! (원하는 버전이 있으면 공식 홈페이지에서 직접 받아서 설치하여도 무방!)



---------------- 2015.11.27일 추가 내용 ----------------


10일차 작업 중에 nodejs package를 설치하는 과정에서 nodejs 버전이 너무 낮음에 일부 package를 설치할 수 없었다. 때문에 nodejs버전을 올리는 작업을 진행했다.

10일차에 다시 지우고 새로 설치하는 부분을 적으려 했지만 애초에 높은 버전으로 설치하는게 좋을 것 같아 이쪽 글을 수정하기로 하였다. (이미 설치했던 사람은 sudo apt-get purge nodejs npm후 진행하도록 하자)


아래와 같이 설치 한다.


 pi@raspberrypi ~ $ sudo apt-get update
 pi@raspberrypi ~ $ sudo apt-get upgrade
 pi@raspberrypi ~ $ curl -sL https://deb.nodesource.com/setup | sudo bash -
 pi@raspberrypi ~ $ sudo apt-get install nodejs
 pi@raspberrypi ~ $ node -v
 v0.10.40


0.6버전에서 0.10버전으로 올라갔다!!


-------------------------------------------------------



먼가 허무하지만 이제부터가 진짜다. 간단한 프로그래밍을 해보자.


pi@raspberrypi ~ $ mkdir -p server/was
pi@raspberrypi ~ $ cd server/was
pi@raspberrypi ~/server/was $ vi index.js


프로그래밍을 할 폴더를 만들고 index.js파일을 하나 만들어 아래와 같이 코딩한다.


console.log('Hello World!');


저장하고 나와서 실행해 보자.(vim, nano 등 본인이 편한 편집기를 사용하자, vi 사용법에 대한 자세한 내용은 생략한다.)


pi@raspberrypi ~ $ node index.js
 Hello World!


시작이 반이라고 했던가, Hello world를 찍었으니 반은 개발에 성공한 것이다!!



+ Recent posts