Skip to content

Raspberry Pi 4 with Node‐RED & DHT11 to MariaDB

김선영 edited this page Nov 3, 2024 · 9 revisions

🌟 DHT11-라즈베리파이 4 기반 Node-RED & MariaDB 연동 실습


📋 실습 개요

  • DHT11 센서 데이터의 실시간 수집 및 저장
  • Node-RED 기반 데이터 처리 파이프라인 구축
  • MariaDB를 활용한 안정적인 데이터 관리 시스템 구현

🛠 구현 과정

1. 데이터베이스 환경 구축

1.1 MariaDB 서버 설정

# MariaDB 서버 설치
$ sudo apt-get install mariadb-server

1.2 서비스 활성화

9
# 서비스 시작 및 상태 확인
$ sudo service mysql start
$ sudo service mysql status

2. 데이터베이스 초기 설정

2.1 관리자 접속

10
$ sudo mysql -u root -p

2.2 데이터베이스 및 테이블 생성

-- 데이터베이스 생성
create database raspi_dht11 
character set utf8 collate utf8_general_ci;

-- 테이블 생성
create table collect_data_red2(
sensor varchar(30) not null,
collect_time datetime not null,
temp_c float,
temp_f float,
humidity float);
CREATE DATABASE raspi_dht11 
CHARACTER SET utf8 
COLLATE utf8_general_ci;

2.3 사용자 권한 관리

-- 사용자 생성 및 권한 설정
CREATE USER 'sun'@'localhost' IDENTIFIED BY 'sunyoung';
GRANT ALL PRIVILEGES ON raspi_dht11.* TO 'sun'@'localhost';
FLUSH PRIVILEGES;

3. Node-RED 통합

3.1 MySQL 노드 설치

3

3.2 데이터베이스 연결 구성

7

// 데이터베이스 연결 설정

  • "database": "raspi_dht11",
  • "user": "sun",
  • "password": "sunyoung"

3.3 데이터 처리 로직

// SQL 쿼리 구성
msg.topic = "INSERT INTO collect_data_red2 (sensor, collect_time, temp_c, temp_f, humidity) VALUES ('DHT11', NOW(), ?, ?, ?)";
msg.payload = [
    parseFloat(msg.payload),   // temp_c
    (parseFloat(msg.payload) * 9/5 + 32),   // temp_f
    parseFloat(msg.humidity)   // humidity
];
return msg;

📊 구현 결과

1. 데이터 저장 확인

$ sudo mysql -u sun -p
  • 생성했던 사용자 계정으로 로그인!
11
  • collect_data_red2에 센서데이터가 저장된것을 볼수있다.

2. 전체 구조도

12 - 복사본
  • Node-RED 플로우 정상 작동
  • MariaDB 연결 상태 양호 (녹색 표시)

🔧 시스템 구성도

DHT11 센서 → 라즈베리파이 4 → Node-RED → MariaDB

💡 읽어주셔서 감사합니다 :)

Clone this wiki locally