SmartFactory_NEOL/SOURCE/Agent,Kiosk/Docs/20260901_1_NILM MQTT PAYLOAD 통합 적용 완료 보고서_MariaDB용(사용안함).txt
2026-09-04 14:08:41 +09:00

43 lines
3.2 KiB
Plaintext

# NILM MQTT PAYLOAD 통합 적용 완료 보고서
`AgentNILM_MQTTClient(Delphi13 VCL)`의 최신 NILM MQTT 통신 규격 및 데이터 처리 알고리즘을 `NILM_Manager_D104` 프로젝트에 성공적으로 통합 적용하였습니다.
---
## 1. 주요 변경 내용
### 1.1 데이터 모델 및 구조체 확장 ([`Lib/MQTT.pas`](file:///c:/Users/MyName/Desktop/antigravity/NEOL/Lib/MQTT.pas))
- `TNILM_VALUE` 레코드에 최신 계측 항목 및 환경/상태 필드 추가:
- 3상 유효/무효/피상/역률 데이터 (기존 1, 2상 $\rightarrow$ **3상 완벽 지원**)
- Total 전력 필드: `Total_P`, `Total_Q`, `Total_S`, `Total_PF`
- 계측 메타데이터: 누적 전력량(`wh`), 주파수(`freq`), 통신 상태(`COMM`), 신호 강도(`rssi`), 결선 방식(`wire`), 시퀀스(`seq`)
- 환경 및 센서 필드: 외부 온도(`TempExt`), 진동(`Vibration`), 기울기 각도(`TiltAngle`)
### 1.2 MQTT 수신 파싱 엔진 전면 개편 ([`NILM_Manager_D104/uMain.pas`](file:///c:/Users/MyName/Desktop/antigravity/NEOL/NILM_Manager_D104/uMain.pas))
`procedure TfrmMain.MQTTParsing`을 고도화하여 다중 포맷을 자동으로 판별하고 처리하도록 구현:
1. **장비 식별(Device ID) 추출 고도화**:
- 1순위: JSON 페이로드의 `dev` 필드(예: `"NILM_001"`, `"NILM_032"`)에서 숫자 추출
- 2순위: MQTT Topic 경로(예: `.../001`)에서 ID 추출
2. **다양한 JSON 페이로드 포맷 완벽 대응**:
- **포맷 1 (최신 표준 규격)**: `ch` 배열(`ch[0..2]`), `total` 객체, `wh`, `freq`, `wire` 등 단일 패킷 파싱
- **포맷 2 (하위 호환 규격)**: `slave_data` 배열 기반 패킷 파싱
- **포맷 3 (구형 레거시 규격)**: 채널 분할 패킷(`"CH": "01"`, `"02"`, `"03"`) 지원 유지
3. **특수 토픽 분기 처리**:
- `/{NDID}/status` (노드 통신 상태), `/gateway` (게이트웨이 상태), `/{NDID}/event` (알람 이벤트) 파싱 및 로그 출력
4. **가상 전력 추정 계산 (1-CT 전류 전용 환경 대응)**:
- 전압 미연결 장비에서 전류만 인입될 경우, 공칭 전압(220V)과 가정 역률(0.90)을 기반으로 유효/무효/피상전력 자동 계산
5. **결선 방식별 Total 전력 보정**:
- 3상 3선식(3P3W)의 2전력계법(Total = Ch1 + Ch3) 및 3상 4선식(3P4W) Total 자동 합산 보정
### 1.3 UI 화면 및 cxGrid 연동 ([`NILM_Manager_D104/uMain.dfm`](file:///c:/Users/MyName/Desktop/antigravity/NEOL/NILM_Manager_D104/uMain.dfm))
- cxGrid에서 숨겨져 있던 3상 컬럼(`cxGrid_NILM_TvColumn13` ~ `18` : `pf_3`, `Vrms_3`, `Irms_3`, `Var_3`, `Va_3`, `Pwr_3`)을 활성화(`Visible = True`)하여 화면에서 3상 전력 데이터가 실시간 표시되도록 적용하였습니다.
- MPU 센서(가속도, 자이로, 온도) 및 수신 시각 컬럼과의 실시간 데이터 매핑을 최적화하였습니다.
---
## 2. 검증 완료 항목
- [x] `Lib/MQTT.pas` 구조체 컴파일 규격 일치 여부 확인
- [x] `uMain.pas` 내 `ClearIOTGW` 초기화 로직 및 `MQTTParsing` 파싱 흐름 검증
- [x] 최신 3P4W 단일 패킷, 3P3W 결선 패킷, 레거시 CH 패킷 처리 로직 일치 확인
- [x] cxGrid 컬럼(CH 1 ~ CH 3 및 센서) 매핑 일치 확인