YOGYUI

현대통신 월패드 RS-485 통신 프로토콜 명세 - 일반 조명 본문

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

현대통신 월패드 RS-485 통신 프로토콜 명세 - 일반 조명

요겨 2024. 11. 8. 15:44
반응형

※ 티스토리 오블완(오늘 블로그 완료) 챌린지용 포스팅

※ 프로토콜 공통 명세 참고 링크: 현대통신 월패드 RS-485 통신 프로토콜 명세 - 공통 사양

조명/콘센트 제어 모듈 예시

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 19h 01h 40h ?0h 00h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x19
  • 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 19h 02h 40h ??h ??h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x19
  • 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 19 02 40 11 01 00 B6 EE
    • 여섯 번째 방의 두 번째 조명 끄기 명령: F7 0B 01 19 02 40 62 02 00 C6 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 19h 04h 40h ??h ??h ??h ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
    • 개별 장치는 명령 패킷 수신 후 장치의 상태를 변경한 뒤 이에 대한 응답 패킷을 곧바로 송신한다
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x19
  • 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+7] M+8 M+9
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
- Dev
State(s)
Checksum Suffix
Value F7h ??h 01h 19h 04h 40h ?0h 00h -- -- --  ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
    • 개별 장치가 월패드로부터 조회(쿼리) 패킷 수신 후, 현재 장치(들)의 상태를 담은 응답 패킷을 송신
    • 쿼리를 요청한 공간(방)에서 제어 가능한 모든 일반 조명의 상태값을 반환
  • 공간의 조명 개수: M (≥1)
  • 패킷 길이: 10 + M
    • 조명 1개일 경우 0x0B, 2개일 경우 0x0C, ...
  • 데이터 길이: 3 + M
  • Device Type (Index 3): 0x19
  • 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] (Index [8:7+M]): 각 조명의 현재 상태값
      • 0x01: 조명이 ON된 상태
      • 0x02: 조명이 OFF된 상태
  • 예시
    • 첫 번째 공간에 설치된 3개의 조명이 모두 꺼져있을 경우: F7 0D 01 19 04 40 10 00 02 02 02 B4 EE
    • 첫 번째 공간의 1,3번 조명은 ON, 2번 조명은 OFF일 경우: F7 0D 01 19 04 40 10 00 01 02 01 B4 EE
    • 여섯 번째 공간에 설치된 2개의 조명이 모두 켜져있을 경우: F7 0C 01 19 04 40 60 00 01 01 C7 EE

 

반응형