본격적으로 홈 오토메이션 서버를 구축하기 위해 기본적인 설정을 해보겠습니다.

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

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

sudo apt-get install mariadb-server mariadb-client

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

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

sudo mysql_secure_installation

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

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

sudo mariadb -u root -p

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

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

CREATE DATABASE sensor_db;

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

connect sensor_db

CREATE TABLE `channel_table` (
  `channel` int(11) NOT NULL AUTO_INCREMENT,
  `channel_info` varchar(20) DEFAULT NULL,
  `auth_code` char(6) DEFAULT NULL,
  `status` char(1) DEFAULT '1',
  PRIMARY KEY (`channel`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

CREATE TABLE `data_table` (
  `_id` int(11) NOT NULL AUTO_INCREMENT,
  `channel` int(11) DEFAULT '0',
  `data` int(11) DEFAULT '0',
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`_id`)
) ENGINE=InnoDB AUTO_INCREMENT=746 DEFAULT CHARSET=utf8;

데이터베이스 생성이 완료되면 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로 변경해 줍니다.

{
  "name": "sensor_nodejs",
  "version": "1.0.0",
  "description": "",
  "main": "app_sensor.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@coreui/coreui": "^2.0.4",
    "@coreui/coreui-plugin-chartjs-custom-tooltips": "^1.2.0",
    "@coreui/coreui-plugin-npm-postinstall": "^1.0.2",
    "body-parser": "^1.18.3",
    "bootstrap": "^4.1.3",
    "chalk": "^2.4.1",
    "chart.js": "^2.7.2",
    "express": "^4.16.3",
    "jquery": "^3.3.1",
    "mqtt": "^2.18.3",
    "mysql": "^2.16.0",
    "pace-progress": "^1.0.2",
    "perfect-scrollbar": "^1.4.0",
    "popper.js": "^1.14.4",
    "pug": "^2.0.3"
  }
}

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

const sqlConn = sql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '사용자 비밀번호',
  database: 'sensor_db',
})

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

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

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

sudo mysqld_safe --skip-grant-tables

그 후 MariaDB를 실행합니다.

sudo mariadb -u root -p

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

use mysql;
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '사용자비밀번호';
FLUSH PRIVILEGES;

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

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

  • sudo node app_sensor.js

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

  • http://RPi_IP_Address:3010/login