29 lines
2.3 KiB
Plaintext
29 lines
2.3 KiB
Plaintext
# NILM Agent 다중 토픽 DB 연동 지원
|
|
|
|
델파이 NILM Agent(전력 모니터링 에이전트)가 이제 데이터베이스와 완벽하게 연동되어, 하드코딩 없이 동적으로 여러 대의 센서 데이터를 동시에 수집할 수 있게 되었습니다!
|
|
|
|
## 주요 변경 사항 요약
|
|
|
|
1. **DB 기반 동적 구독 (`uMain.pas` / `btnStartClick`)**:
|
|
과거처럼 에이전트 소스코드에 `101번` 센서라고 못을 박아두지 않습니다.
|
|
에이전트 시작(Start) 시점에 DB(`sensor_info`)를 스캔하여 NILM 장비(`sensor_typeid=1`)들의 `mqtt_topic`을 모조리 가져온 다음, **존재하는 모든 토픽을 자동으로 일괄 구독(Subscribe)** 하도록 수정했습니다.
|
|
|
|
2. **메시지 매핑 및 자동 분류 (`OnMqttMessageReceived`)**:
|
|
메시지가 쏟아져 들어와도 델파이 내부에 구축된 맵핑 사전(`TDictionary`)을 통해 **"이 토픽은 101번 장비꺼, 저 토픽은 102번 장비꺼"** 라고 0.001초만에 찾아내어 각각 알맞은 `sensor_no`로 DB에 저장(INSERT/UPDATE)합니다.
|
|
|
|
3. **안전한 메모리 관리 (`btnStopClick`)**:
|
|
에이전트를 중지(Stop)할 때 단순히 소켓만 끊는 것이 아니라, MQTT 객체를 완전히 메모리에서 제거하여 프로그램이 오래 켜져 있어도 버그나 램 누수가 없도록 클린업 로직을 추가했습니다.
|
|
|
|
## 확인 및 테스트 방법
|
|
|
|
> [!TIP]
|
|
> 델파이 소스코드가 변경되었으므로, **반드시 델파이 IDE에서 `NilmMQTT_Agent.dpr` 프로젝트를 재빌드(Compile) 후 다시 실행**해 주셔야 합니다.
|
|
|
|
1. **DB 사전 작업**:
|
|
사용하시는 DB 툴(HeidiSQL 등)에서 `sensor_info` 테이블을 열어 `mqtt_topic` 컬럼에 `test/nilm/101` 같은 토픽을 입력해 줍니다.
|
|
2. **에이전트 실행**: 델파이에서 새 코드로 에이전트를 실행하고 **[Start Agent]** 버튼을 누릅니다.
|
|
- 로그창에 "DB에서 X개의 토픽 매핑 정보를 로드했습니다."와 "구독 토픽 추가: test/nilm/101" 메시지가 뜨는지 확인합니다.
|
|
3. **데이터 수신 테스트**:
|
|
- 외부 MQTT 테스트 툴(MQTT.fx 또는 mqtt-spy)을 이용해 해당 토픽으로 JSON 데이터를 발송해 봅니다.
|
|
- 에이전트가 정상적으로 수신하여 MariaDB에 값을 채워넣는지 확인합니다!
|