[라즈베리파이] 홈 오토메이션 서버 예제 실행을 위한 준비
본격적으로 홈 오토메이션 서버를 구축하기 위해 기본적인 설정을 해보겠습니다.
우선, 서버에서 사용할 데이터베이스를 생성해야 합니다.
라즈베리파이에서는 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