API Base 만 선택. Supabase URL/anon 은 백엔드 /web-config 에서 자동.
🔑 인증
Supabase 가 confirmation 메일 보낼 수 있음 (대시보드 설정에 따름)
👤 로그인됨
API Base:
🏠 사육장 (enclosures)
id
이름
종
📷
📟
created
📟 디바이스 (devices) — ESP32-S3 센서/제어
device_id
이름
사육장
online
온도
습도
LED
last_seen
🎫 베타 기기·카메라 등록 (계정별 · nRF 불필요)
계정마다 로그인/로그아웃 없이 웹에서 바로 등록한다. [기기]/[카메라] 를 누르면
그 계정으로 pair 를 호출해 device_id + mqtt_token(카메라는 camera_id + camera_token)을 발급한다.
이 값을 기기 NVS 에 넣으면 그 계정 소유로 MQTT 에 붙는다. 메인 로그인 세션은 안 바뀐다.
⚠️ MQTT 브로커 계정 등록은 프로덕션 API(api.terra-server.uk)로 호출해야 실제로 붙는다(아래 참고).
선택 일괄제어:선택 0대초
계정
기기 이름
등록
결과 (device_id / token)
🔧 최근 명령 (Stage C)
디바이스 행의 명령 선택 → 발행 버튼. status: pending → sent (브리지 publish) → acked (디바이스 ack)
id
action
status
result
issued
acked
⏰ 예약 타이머 (Stage H-2)
예약 등록 → 브리지 러너가 시각 도달 시 commands 발행. 시각은 KST 기준.
디바이스
동작
반복
시각(KST)
다음 실행
마지막 실행
on
📜 예약 실행 내역
commands 중 source=schedule(발행) / guard(가드 스킵) 최근 30건. 선택 디바이스 기준.
실행시각(KST)
동작
출처
상태
결과/사유
ack
🎯 목표 환경 (device_settings)
목표 온/습도 조회·수정. 서버가 범위(-20~60℃, 0~100%)·min≤max 검증 후 저장 (REST GET/PATCH /devices/{id}/settings).
🖥 LCD 커스텀 텍스트 (Stage I)
디바이스 LCD 상단에 텍스트 표시(한글 가능). 서버가 비트맵 렌더 → NVS 저장(재부팅 유지). 권장: 한글 ~8자 / 영문 ~12자 (넘으면 자동 축소).
0
📊 실시간 텔레메트리 (Stage A)
Supabase Realtime 으로 telemetry INSERT 자동 수신. 디바이스별 최신값.
device_id
T1 °C
H1 %
T2 °C
H2 %
relay
fan
냉각팬
heater
업데이트
🚨 활성 알림 (Stage D)
resolved 안 된 활성 알림만. temp_high / temp_low / humid_low / sensor_fault / heater_latched / offline 등.
kind
severity
message
device
발생
📷 카메라 (cameras) — ESP32-P4 / RPi
camera_id
이름
model
사육장
online
회전 180°
클립
📜 최근 API 응답
🎥 라이브 —
대기
📈 온도 추이 —
30분 집계(telemetry_30m) · 파란 선 = 구간 평균, 옅은 띠 = 그 30분의 최저~최고,
초록 띠 = 목표 온도 범위. 선이 끊긴 곳은 데이터가 없는 구간(오프라인). 지금 값은 디바이스 표의 실시간 온도.