MMCL/SOURCE/docs/NILM Agent UI 구성 및 라이브러리 연동 계획 (V5)_implementation_plan.md
2026-09-04 11:27:31 +09:00

2.7 KiB

NILM Agent UI 구성 및 라이브러리 연동 계획 (V5)

사용자께서 추가해주신 NILM 라이브러리 파일(UMQTTClient.pas 등)을 활용하여, 이전에 작성된 콘솔 기반의 에이전트를 UI가 있는 VCL 폼 애플리케이션으로 전면 재구축합니다.

User Review Required

Important

추가해주신 파일 중 uNILMManager.pas는 PostgreSQL 문법(SERIAL, JSONB)과 독자적인 테이블(nilm_device, nilm_data 등)을 생성하도록 되어 있습니다. 반면, 고객님께서 **"설계서에 있는 내용을 진행해줘"**라고 하셨으므로, 데이터베이스는 기존에 합의된 **MMCL 7개 테이블(MariaDB - dev_info, sensor_info, sensor_history_log)**을 유지하겠습니다. 즉, 통신은 올려주신 UMQTTClient.pas와 타입(uNILMTypes.pas)을 일부 활용하되, DB 저장 로직은 마스터 설계서의 테이블(MariaDB)에 맞게 커스텀 적용하려고 합니다. 이 방향이 맞는지 승인해 주시면 개발을 진행하겠습니다.

Proposed Changes

1. VCL UI 구성 (uMain.pasuMain.dfm 재작성)

[MODIFY] agents/delphi_nilm_agent/uMain.pas

[MODIFY] agents/delphi_nilm_agent/uMain.dfm

  • 화면에 MQTT 연결 상태를 제어할 Start / Stop 버튼 배치.
  • 수신되는 센서 데이터(CH1, CH2, CH3 전력/전압 등) 및 DB 처리 결과를 실시간으로 모니터링할 수 있는 Log Memo 컨트롤 추가.
  • UI 스레드가 멈추지 않도록 MQTT 콜백 시 TThread.Queue 또는 Synchronize를 통한 로그 출력 구현.

2. MQTT 통신 및 JSON 파싱 다중 채널 적용

[MODIFY] agents/delphi_nilm_agent/uMain.pas 내 수신 로직

  • 추가해주신 UMQTTClient.pas (또는 내장 JSON 파서 System.JSON)를 활용하여 센서 장비에서 들어오는 페이로드를 파싱.
  • 기존 단일 채널(CH1)만 처리하던 로직을 확장하여 CH1, CH2, CH3의 전력(W), 전류(A), 전압(V) 값을 모두 추출.

3. 설계서 기반 DB 동기화

[MODIFY] DB Insert/Update 로직

  • 추출된 다중 채널 데이터를 마스터 설계서의 sensor_info (현재 상태) 테이블과 sensor_history_log (시계열 이력) 테이블의 각 컬럼(value_ch1_pwr, value_ch2_pwr 등)에 매핑하여 Insert/Update 하는 FireDAC 로직 구현.

Verification Plan

  1. uMain.dfm이 유효한 텍스트 폼 형식으로 작성되어 RAD Studio에서 즉시 폼 디자인 모드로 열리는지 검증.
  2. MQTT 수신 이벤트에서 System.JSON을 통해 3개 채널의 데이터가 파싱되는지 확인.
  3. 파싱된 3개 채널 데이터가 설계서에 명시된 MariaDB 테이블 구조에 정확하게 UPDATEINSERT 되는 SQL문이 작성되었는지 확인.