YOGYUI

현대통신 월패드 RS-485 통신 프로토콜 - 아울렛(콘센트) 본문

홈네트워크(IoT)/힐스테이트 광교산

현대통신 월패드 RS-485 통신 프로토콜 - 아울렛(콘센트)

요겨 2024. 11. 16. 09:17
반응형


※ 티스토리 오블완(오늘 블로그 완료) 챌린지용 포스팅
※ 프로토콜 공통 명세 참고 링크: 현대통신 월패드 RS-485 통신 프로토콜 명세 - 공통 사양

월패드 HDHN-2000에서의 대기전력(아울렛, 콘센트) 제어 예시

1. 현재 상태 조회 패킷 (query)

Index 0 1 2 3 4 5 6 7 8 9 10
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
- - Checksum Suffix
Value F7h 0Bh 01h 1Fh 01h 40h ?0h 00h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 이터 길이: 4
  • Device Type (Index 3): 0x1F
  • Packet Type (Index 4): 0x01
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태
    • Data[1] (Index 6): 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 0
      • 공간 인덱스 = one-based index
      • 첫 번째 방일 경우 값은 0x10, 세 번째 방일 경우 값은 0x30
      • 해당 공간에 설치되어 있는 모든 아울렛들의 상태 조회 요청
    • Data[2] (Index 7): 0x00 (이 외의 값은 발견하지 못함)
    • Data[3] (Index 8): 0x00 (이 외의 값은 발견하지 못함)

2. 상태 변경 명령 패킷 (command)

Index 0 1 2 3 4 5 6 7 8 9 10
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
Command - Checksum Suffix
Value F7h 0Bh 01h 1Fh 02h 40h ??h ??h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x1F
  • Packet Type (Index 4): 0x02
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태
    • Data[1] (Index 6): 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 장치 인덱스
      • 공간/장치 인덱스 = one-based index
      •  번째 방의 두 번째 아울렛의 경우 0x12, 네 번째 방의 첫 번째 아울렛의 경우 0x41
      • 특정 공간의 단일 콘센트를 타겟으로 On/Off 제어
    • Data[2] (Index 7): 명령값
      • 0x01: 아울렛 ON
      • 0x02: 아울렛 OFF
    • Data[3] (Index 8): 0x00 (이 외의 값은 발견하지 못함)  
  • 예시
    • 네 번째 공간(방)의 첫 번째 아울렛 켜기 명령: F7 0B 01 1F 02 40 41 01 00 E0 EE
    • 여섯 번째 공간(방)의 두 번째 아울렛 끄기 명령: F7 0B 01 1F 02 40 62 02 00 C0 EE

3. 응답 패킷 (response)

3.1. 명령 응답

Index 0 1 2 3 4 5 6 7 8 9 10
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
Command State Checksum Suffix
Value F7h 0Bh 01h 1Fh 04h 40h ??h ??h ??h ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
    • 개별 장치는 명령 패킷 수신 후 상태를 변경한 뒤 이에 대한 응답 패킷을 곧바로 송신한다
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x1F
  • Packet Type (Index 4): 0x04
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태
    • Data[1] (Index 6): 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 장치 인덱스
      • 명령을 받은 특정 공간의 단일 아울렛의 명령값 및 명령을 받은 후 바뀐 상태값을 데이터에 반영
    • Data[2] (Index 7): 명령값
      • 0x01: 아울렛 ON 명령
      • 0x02: 아울렛 OFF 명령
    • Data[3] (Index 8): 상태값
      • 0x01: 아울렛이 ON된 상태
      • 0x02: 아울렛이 OFF된 상태

3.2. 조회 응답

Index 0 1 2 3 4 5 6 7 [8:M×9+7] M×9+8 M×9+9
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
- Dev
State(s)
Checksum Suffix
Value F7h ??h 01h 1Fh 04h 40h ?0h 00h -- -- --  ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
    • 개별 장치가 월패드로부터 조회(쿼리) 패킷 수신 후, 현재 장치(들)의 상태를 담은 응답 패킷을 송신
    • 쿼리를 요청한 공간(방)에서 제어 가능한 모든 아울렛들의 상태값을 반환
  • 공간의 아울렛 개수: M (≥1)
  • 패킷 길이: 10 +M × 9
    • 아울렛인 한 개일 경우 0x13, 두 개일 경우 0x1C, ...
    • 아울렛 1개당 9바이트의 상태값 (이보다 적거나 많은 경우를 아직 발견하지 못함)
  • 데이터 길이: 3 + M × 9
  • Device Type (Index 3): 0x1F
  • Packet Type (Index 4): 0x04 
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태
    • Data[1] (Index 6):상위 4비트 = 공간(방) 인덱스,하위 4비트 = 0
      • 쿼리 패킷과 내용 동일
    • Data[2] (Index 7): 0x00 (다른 값 발견하지 못함)
    • Data[3:2+M×9] (Index [8:7+M×9]): 각 아울렛의 현재 상태값 (아울렛 1개당 9바이트로 구성)
      • K: 0 ~ M-1
      • Data[3+K×9]: 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 장치 인덱스
        • 공간/장치 인덱스 = one-based index
      • Data[4+K×9]: 아울렛의 ON/OFF 상태
        • 0x01: 아울렛 ON 상태
        • 0x02: 아울렛 OFF 상태
      • Data[5+K×9:6+K×9]: 2바이트, 현재 소비전력으로 추정됨
      • Data[7+K×9:8+K×9]: 2바이트, 알 수 없음
      • Data[9+K×9:10+K×9]: 2바이트, 알 수 없음
      • Data[11+K×9]: 대기전력 차단 설정 상태
        • 0x01: 자동 차단 설정 상태
        • 0x02: 수동 차단 설정 상태

-- 제보를 받습니다 !! --
대기전력 차단 아울렛(콘센트)의 쿼리 응답 패킷의 데이터 구조를 아시는 분께서는 lee2002w@gmail.com으로 정보 공유 부탁드립니다 ㅠ (ON/OFF 상태 및 대기전력 차단 설정 상태 뿐만 아니라 현재 소비전력 등에 대한 정보가 필요함)

 

반응형