[사물 인터넷 네트워크와 서비스 구축 강좌] #7-3 홈 오토메이션 – Node.js 서버 만들기

 

강좌 목차 보기

  • 현재 강좌 ==> [사물 인터넷 네트워크와 서비스 구축 강좌] #7-3 홈 오토메이션 – Node.js 서버 만들기

 

 

홈 오토메이션 서비스 기획 중 라즈베리파이 서버를 구현할 차례입니다.

 

이미 이전 실습들을 진행했다면 라즈베리파이에 MQTT 브로커는 설치되어 있을겁니다. 설치되지 않았다면 아래 내용을 참고하세요.

 

MQTT 설치가 되었으면 Node.js 서버를 설정해주면 됩니다.

 

 

라즈베리파이 홈 서버 설치과정

 

우선, 서버에서 사용할 데이터베이스를 생성해야 합니다.

라즈베리파이에서는 MySQL 호환 DBMS 인 MariaDB를 사용합니다. apt-get 을 통해 MariaDB를 설치합니다.

  • sudo apt-get install mariadb-server mariadb-client

 

설치 도중 root 비밀번호를 설정하는 팝업이 뜨는 경우, 비밀번호를 설정해 줍니다.

팝업이 뜨지 않는 경우, 설치 완료 후 다음과 같이 입력하여 root 비밀번호를 설정해 줍니다.

  • sudo mysql_secure_installation

root 패스워드 반드시 지정해주고, 나머지 다 Y 로 대답하면 됩니다.

 

데이터베이스 생성을 위해 MariaDB를 실행합니다.

  • sudo mariadb -u root -p

 

비밀번호를 입력하면 MariaDB가 실행됩니다.

홈 오토메이션 서버에서 사용하는 데이터베이스를 생성합니다.

  • CREATE DATABASE sensor_db;

 

다음, 방금 생성한 데이터베이스에 연결해 채널 테이블과 데이터 테이블을 생성합니다.

 

데이터베이스 생성이 완료되면 Node.js용 패키지 폴더를 생성해 패키지 초기화를 실행합니다. 홈 오토메이션용 Node.js 프로젝트를 시작하는 것입니다.

  • mkdir sensor_nodejs
  • cd sensor_nodejs
  • npm init

 

Node.js로 구현된 홈 오토메이션 예제를 다운 받으세요.

 

다운받은 파일들을 새로 생성한 패키지 폴더에 복사하고 다음의 모듈들을 설치해 줍니다.

  • npm install body-parser mysql mqtt express chart.js pug

 

다음의 모듈들은 홈 오토메이션 예제에서 사용되는 UI framework 인 부트스트랩-  CoreUI 를 사용하기 위해 설치하는 모듈들입니다. 이 모듈들은 CoreUI 모듈을 설치하기 전에 설치해야 정상설치가 됩니다.

  • npm install jquery perfect-scrollbar popper.js bootstrap chalk pace-progress

 

마지막으로 CoreUI 모듈을 설치합니다.

  • npm install @coreui/coreui @coreui/coreui-plugin-chartjs-custom-tooltips

 

package.json 파일을 열어 main 필드를 예제 파일의 app_sensor.js로 변경해 줍니다.

 

다음 app_sensor.js 파일을 열어 데이터베이스 연결과 관련된 설정을 변경해 줍니다.

앞서 database 이름을 sensor_db 로 했으니 여기서도 똑같이 맞춰줘야 합니다.

 

그리고 서버의 도메인 이름(또는 IP addr)을 설정해줘야 합니다. config.json 파일을 열어서 수정해줍니다.

  • server_addr : 도메인 이름 대신 내부 IP (192.168.x.x)를 사용해도 되지만, 그럼 공유기 외부에서 접속할 수가 없습니다.
  • mqtt_addr : Node.js 가 MQTT 접속하기 위해 쓰는 주소기 때문에 굳이 도메인 이름을 쓸 필요가 없습니다. 내부 IP 를 사용하면 됩니다. 포트도 1883 포트 그대로 쓰면 됩니다.

공유기에 설정된 도메인 주소가 있다면 server_addr 항목에 도메인 주소를 넣어주세요. 그리고 server_port 포트는 원하는대로 수정해주세요. 대신 공유기에 포트 포워딩 설정을 해주셔야 공유기 외부에서 접속이 가능합니다. 이 예제에서는 server_port = 3010 포트로 수정했습니다. 그리고 공유기 포트포워딩 설정을 해줬습니다.

  • 공유기 접속시 : 3010 포트로 접속할 경우
  • 포워딩 : 192.168.x.x 아이피, 3010 포트로 전달되도록 설정

 

Node.js에서 데이터베이스에 접근할 수 있게 하기 위해 MariaDB root 계정에 권한을 부여해야 합니다.

쉘에 다음과 같이 입력하여 MariaDB 접근에 대한 root 권한을 얻어옵니다.

  • sudo mysqld_safe –skip-grant-tables

 

그 후 MariaDB를 실행합니다.

  • sudo mariadb -u root -p

 

MariaDB에서 다음과 같이 입력하여 root 계정에 모든 권한을 부여합니다.

 

이것으로 홈 오토메이션 서버 구동 준비가 끝났습니다.

아래 명령어로 서버를 실행하세요.

  • sudo node app_sensor.js

 

아래 주소로 접속해서 채널 선택 화면이 뜨는지 확인해보세요.

  • http://RPi_IP_Address:3010/login

 

 

화면이 뜨면 Node.js 서버 구동이 성공한 것입니다!

 

 

팁!!

Node.js 서버는 백그라운드로 계속 돌고있어야 합니다. 아래 방법을 사용하면 Terminal 접속과 상관없이 서버가 계속 돌아가도록 만들 수 있습니다.

  • npm install -g forever
  • sudo forever app_sensor.js &

멈출 때는…

  • sudo forever stop 0

 

단, 라즈베리파이가 재구동 되면 다시 실행해줘야 합니다.

 

 

 

주의!!! [사물 인터넷 네트워크와 서비스 구축 강좌] 시리즈 관련 문서들은 무단으로 내용의 일부 또는 전체를 게시하여서는 안됩니다. 계속 내용이 업데이트 되는 문서이며, 문서에 인용된 자료의 경우 원작자의 라이센스 문제가 있을 수 있습니다.

 

강좌 목차 보기

  • 현재 강좌 ==> [사물 인터넷 네트워크와 서비스 구축 강좌] #7-3 홈 오토메이션 – Node.js 서버 만들기

 

 

Post Author: TORTUGA

TORTUGA
궁금하신 점은 새로 개편한 홈페이지의 QnA 게시판을 이용해주세요!!!!!!! http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=qna

댓글 남기기

이메일은 공개되지 않습니다.