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