콘텐츠로 이동

7. 데이터·인터페이스 요구사항

노드는 짧은 고정 필드 패킷을 LoRa로 보내고, 게이트웨이가 이를 JSON으로 바꿔 서버 REST API에 올린다. 대시보드는 같은 서버의 조회 API만 사용한다.

7.1 LoRa 패킷 필드

필드 형식 설명
node_id 정수 노드 고유 번호
seq 정수 송신 순번 (유실 확인용)
type 문자 정기 송신 P / 이벤트 송신 E
rain 실수 강우량 또는 강우 여부
soil 실수 토양 수분 (%)
tilt 실수 기준 대비 기울기 변화 (°)
temp 실수 기온 (°C)
hum 실수 상대습도 (%)
smoke 정수 연기 센서값
co 정수 CO 센서값
batt 실수 배터리 전압 (V)
crc 정수 오류 검출용 체크섬

게이트웨이가 서버로 보내는 JSON 예시:

{
  "node_id": 1,
  "seq": 1024,
  "type": "P",
  "rain": 0.0,
  "soil": 31.5,
  "tilt": 0.4,
  "temp": 22.8,
  "hum": 48.0,
  "smoke": 120,
  "co": 35,
  "batt": 3.92,
  "rssi": -71
}

7.2 서버 API

메서드 경로 사용처 설명
POST /api/readings 게이트웨이 측정값 1건 등록 (API 키 필요)
GET /api/nodes 대시보드 노드 목록, 위치, 최신 위험 등급
GET /api/nodes/{id}/readings 대시보드 기간별 센서 이력
GET /api/alerts 대시보드 경보 목록
PATCH /api/alerts/{id} 대시보드 경보 확인 처리

7.3 데이터 모델

테이블 주요 컬럼
node node_id, 이름, 위도, 경도, 지역, 설치일, 기준 기울기
reading node_id, 수신 시각, seq, 센서값 7종, 배터리 전압, RSSI
risk node_id, 산출 시각, 산불 지수, 산사태 지수, 등급
alert alert_id, node_id, 종류(산불·산사태·화재 감지·통신 두절), 등급, 발생 시각, 확인 여부