6주차 수업 실습 보고서 _ Maria DB (데이터베이스) - seungyongjee/raspi-report GitHub Wiki

1. MariaDB를 설치

라즈베리파이 터미널에 아래 코드 입력하여 MariaDB 설치

sudo apt-get install mariadb-server

아래 명령어로 MariaDB 실행

sudo service mysql start

root 계정에 접속

sudo mysql -u root -p

  • 비밀번호를 설정하지 않았기 떄문에 공란으로 두고 Enter

비밀번호 설정

set password for 'root'@'localhost'=password('(비밀번호)');

  • (비밀번호) 칸에 비밀번호 입력

DB 계정 생성

CREATE user 'rasp'@'localhost' IDENTIFIED BY 'seung'

  • **작성자 기준 **
  1. 계정이름 : rasp
  2. 비밀번호 : seung

새 데이터베이스 생성

아래 코드로 입력 CREATE DATABASE (DB 이름) CHARACTER SET utf8 collate utf8_general_ci;

작성자 코드 CREATE DATABASE raspdht11 CHARACTER SET utf8 collate utf8_general_ci;

  • (DB 이름 : raspdht11 )

해당 계정에 권한 부여

아래 코드로 입력 grant all privileges on <DB name>.* to <user name>;

작성자 코드 grant all privileges on raspdht11.* to 'rasp'@'localhost';

  • 아래 코드 활성화 flush privileges;

2. 생성한 계정에 접속해보기

  • 위 창에서 exit; 입력하여 접속 종료

  • 다시 새로 만든 계정에 접근하기 위해 아래 코드 입력 sudo mysql -u rasp -p

  • Enter 후에 비밀번호는 "Enter password:" 입력 (눈에 안 보이게 가려짐)

image

3. 테이블 만들기

show databases; 로 데이터베이스 검색

image

DB에 접속

use raspdht11;

image
  • Database changed 확인

테이블 생성

CREATE TABLE collect_data(sensor varchar(30) not null, collect_time datetime not null, temp_c float, temp_f float, humidity float);

DB에 새 테이블을 아래와 같이 생성

  • sensor
  • collect_time
  • temp_c
  • temp_f
  • himidity

Node-RED와 연결

  • Node-RED에 접속하여 mysql 노드 설치
image

아래처럼 노드 배치

image

inject - dht11 - function - mysql

노드 설정 변경

  • inject
image

지정된 시간간격 : 3초

  • dht11

(5주차와 동일)

  • function

아래 코드 입력

var sensor = "'" + msg.topic + "'"; var timezoneOffset = new Date().getTimezoneOffset() * 60000; var timezoneDate = new Date(Date.now() - timezoneOffset); var collect_time = timezoneDate.toISOString().slice(0, 19).replace('T', ' ');

var temp_c = msg.payload;

var temp_f = temp_c * (9/5) +32;

var humidity = msg.humidity;

msg.payload = [sensor, temp_c, temp_f, humidity, collect_time]

msg.topic="INSERT INTO collect_data (sensor,temp_c,temp_f,humidity,collect_time)"; msg.topic=msg.topic+"VALUES(?,?,?,?,?)";

return msg;

image
  • mysql

  • Database 옆의 image버튼을 눌러서

image
  • 아까 만든 계정정보를 입력
  • User : rasp
  • Paseword : seung
  • Database : raspdht11
image

4. DB에 데이터베이스 출력 확인

DB 다시 계정에 접근하여 아래 코드 입력후 실행 (Step.2,3 참고)

select * from collect_data

image image
  • 3초 간격으로 데이터를 출력합니다.
⚠️ **GitHub.com Fallback** ⚠️