개요
LH 에너지통합플랫폼(이음)이 “○월 ○일 ○시~○시에 이 단지 이 세대들의 조명을 줄여라”는 DR(수요반응) 발령을 내리면, 플랫폼이 시간에 맞춰 세대 기기를 제어하는 기능임.
역할이 두 서버로 나뉨.
- APW: 발령을 받아 DB에 적어두기만 함
- SCW: 스케줄러가 시간이 되면 실제 제어를 실행함
발령 수신 (APW POST /api/em/autoDRControl)
auth헤더의 API Key를tb_cstt_m.EEP_TO_SMAH_API_KEY와 비교. 틀리면508- 대상 세대를 순회하며
smah.tb_dr_goo_l(DR 발령 내역)에 건별 저장.dr_id, 시작·종료 시각(yyyyMMddHHmmss),dr_type - 당해년도 DR 계약자가
smah.tb_dr_ctctr_m에 없으면 추가
응답: 200 성공 / 508 API Key 오류 / 599 저장 오류.
결과 조회 (APW POST /api/em/autoDRControlResult)
에너지플랫폼이 제어 결과를 물으면 smah.tb_dr_goo_l에서 돌려줌.
제어 실행 (SCW 스케줄러 SCW_SCHEDULER_CONTROL_AUTODR_DEVICE)
APW가 적어 둔 발령을 시간이 되면 실제 홈넷서버 제어 명령으로 보냄. 조명을 줄이는 것이 주 목적임. 스케줄러 구조는 공개노트/개발/모듈/SCW 스케줄러 서버.
지금 ~ 지금 + pod_hr분사이 제어 대상을 조회함- 건별로 APW에 홈넷서버 AccessToken을 요청함(
GET /api/smh/getHomenetServerAccessToken) - 홈넷서버
POST /api/um/devices/command로 제어함(타임아웃 20초) - 결과를
smah.tb_atdr_cont_l에 저장함. 에너지플랫폼이 이 결과를 조회해 감
“DR 시간인데 조명이 안 줄었다” 확인 순서
- APW가 살아 있는지 — 토큰을 못 받으면 제어 자체가 안 나감
- 홈넷서버 인증 정보(
cmn.tb_hnsvr_m)가 유효한지. 공개노트/기능/홈넷 서버 연동 cmn.tb_proc_run_h에서 해당 스케줄러의 마지막 실행 결과pod_hr이 cron 주기보다 작으면 그 차이만큼 예약이 누락됨smah.tb_atdr_cont_l에 실패 결과가 남았는지
SCW는 홈넷 호출 포트 8094를 하드코딩함. 홈넷사가 다른 포트를 쓰는 단지는 APW 경로는 되는데 AutoDR 제어만 실패함.
정산내역 조회 (SCW SCW_SCHEDULER_GET_AUTODR_EXA_DTLS)
매달 1회 에너지플랫폼에 지난달 DR 정산 결과를 물어 smah.tb_dr_exa_l에 적재함. DR 참여 세대 인센티브 정산의 근거임.
- 당해년도 DR 계약자(
smah.tb_dr_ctctr_m)를 순회하며 건별로 조회함 - 월 1회라 실패해도 다음 달까지 모름. 정산 데이터가 비면 입주민 인센티브가 안 나가므로 실행 이력 확인이 중요함
앱에서 보이는 것 (MAW)
입주민 앱의 AutoDR 메뉴는 설정과 조회만 함. 발령 처리도 제어도 앱 서버 소관이 아님.
| 앱 화면 | 내용 |
|---|---|
| 참여 정보 | 우리 세대의 DR 참여 여부 |
| 대상 기기 | 세대 기기 목록과 기기별 DR 대상 여부(켜기/끄기) |
| 월별 정산 | 감축전력, 성실이행 횟수, 참여 횟수, 총 인센티브 |
- 대상 기기는 세대 단말기에 붙은 기기 목록을 그대로 보여 줌
- 기기 대상 여부 수정은 내 세대 기기 중 일치하는 것만 반영됨. 다른 세대 기기는 바꿀 수 없음
”AutoDR 메뉴가 전부 오류예요” 확인 순서
앱 서버가 “데이터 없음”과 “장애”를 구분해 주지 않음. 셋 다 같은 오류 화면으로 보임.
- 참여 정보가 오류 → 그 세대의 DR 참여계약 행이 없음(미가입 세대). 정상 상태일 수 있음
- 대상 기기가 오류 → 세대 기기 목록이 비어 있음. 홈넷 세대 동기화부터 볼 것. 공개노트/기능/우리집제어
- 정산 내역만 오류 → 그 달 정산 행이 아직 안 만들어진 것임. 정산 적재가 월 1회라 이번 달 값은 원래 없음
참여 여부 수정에 세대 검증이 없음. 참여계약 번호만 있으면 다른 세대의 참여 여부도 바뀌는 구조임(2026-09-18 코드 확인). 공개노트/개발/모듈/MAW 앱 API 서버 “알려진 이슈”.
API 경로·테이블은 공개노트/개발/모듈/MAW 세대·헬스케어 API.
알아둘 점
- 저장에 실패한 DR은 실행되지 않음. 시각 포맷이
yyyyMMddHHmmss가 아니면 파싱 오류로 통째로 실패함. 로그 키워드AutoDR제어요청 내역을 DB에 저장중오류,API키 없음 - 앱 알림 토픽은
ENGCNS_ATDR_GOO, 이동 화면은 AUTO DR(UI-124-400). 공개노트/개발/push 알림 - 같은 이음(에너지플랫폼)이 앱 에너지 화면의 사용량·요금도 내려 줌 → 공개노트/기능/에너지와 이음 연동
관련
공개노트/개발/모듈/APW 연계 서버 공개노트/개발/모듈/SCW 스케줄러 서버 공개노트/개발/모듈/MAW 앱 API 서버 공개노트/개발/모듈/MAW 세대·헬스케어 API 공개노트/개발/시스템 구성 공개노트/기능/홈넷 서버 연동 공개노트/기능/에너지와 이음 연동 공개노트/개발/push 알림