텔레메트리 수집
LinkBoard는 MQTT(EMQX 5.x, MQTT 5.0) · HTTP · WebSocket 세 가지 경로로 장치 데이터를 수집합니다. CoAP/LwM2M/SNMP는 아직 지원하지 않습니다.
MQTT 토픽 구조
v1/devices/{device_token}/telemetry # 데이터 발행
v1/devices/{device_token}/attributes # Client-side 속성 업데이트
v1/devices/{device_token}/attributes/response # Shared Attribute 수신 (장치가 구독)
v1/devices/{device_token}/rpc/request # RPC 요청
텔레메트리 페이로드
// 단순 형식
{ "temperature": 25.3, "humidity": 60 }
// 타임스탬프 포함 형식
[
{ "ts": 1700000000000, "values": { "temperature": 25.3 } },
{ "ts": 1700000001000, "values": { "temperature": 25.5 } }
]
저장 구조
수집된 데이터는 PostgreSQL/TimescaleDB 하이퍼테이블에 타입별 컬럼 분리 방식으로 저장됩니다.
CREATE TABLE telemetry (
device_id UUID NOT NULL,
ts TIMESTAMPTZ NOT NULL,
key TEXT NOT NULL,
bool_v BOOLEAN,
str_v TEXT,
long_v BIGINT,
dbl_v DOUBLE PRECISION,
json_v JSONB,
PRIMARY KEY (device_id, ts, key)
);
SELECT create_hypertable('telemetry', 'ts', chunk_time_interval => INTERVAL '1 day');
실시간 조회
/ws/telemetry/{device_id} WebSocket 엔드포인트로 실시간 스트리밍을 구독할 수 있습니다. 대시보드
위젯은 이 경로로 실시간 데이터를 받고, 과거 구간은 REST API로 조회합니다.