YOGYUI

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

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

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

요겨 2024. 11. 10. 00:31
반응형

※ 티스토리 오블완(오늘 블로그 완료) 챌린지용 포스팅
※ 디밍 조명: LED의 ON/OFF 및 '밝기' 제어가 가능한 디바이스
※ 프로토콜 공통 명세 참고 링크: 현대통신 월패드 RS-485 통신 프로토콜 명세 - 공통 사양
※ '디밍 조명' 장치 타입은 개인적으로 직접 테스트해본 적은 없으며, 제보(?) 및 깃허브 PR을 통해 코드만 구현
※ 관련 글 링크
현대통신 월패드 '디밍조명' 제어 기능 추가 (깃허브, HA 애드온)
현대통신 월패드 '디밍조명' 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 1Ah 01h ??h ??h 00h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x1A
  • Packet Type (Index 4): 0x01
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태 조회
      • 0x42: 장치의 밝기 상태 조회
    • Data[1] (Index 6): 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 장치 인덱스
      • 공간/장치 인덱스 = one-based index
      • 장치 인덱스 값이 0인 경우, 공간 내에 설치된 모든 디밍 조명 장치들의 상태를 조회 (두 개 이상 설치된 케이스는 아직 발견하지 못함)
    • 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 1Ah 02h ??h ??h ??h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x1A
  • Packet Type (Index 4): 0x02
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태 제어
      • 0x42: 장치의 밝기 제어
    • Data[1] (Index 6): 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 장치 인덱스
      • 공간/장치 인덱스 = one-based index
      • 첫 번째 방의 첫 번째 조명의 경우 0x11, 네 번째 방의 첫 번째 조명의 경우 0x41
    • Data[2] (Index 7): 
      • Data[0]가 0x40일 경우 조명 ON/OFF 명령
        • 0x01: 조명 ON
        • 0x02: 조명 OFF
      • Data[0]가 0x42일 경우 조명 밝기 변경 명령
        • 현재까지 알려진 바로는 밝기의 최대값은 7 (=0x07), 따라서 값의 범위는 0 ~ 7 (0이면 꺼진 것과 동일한 지는 확인하지 못함)
        • 현대통신 월패드 내부에서 최대값 초과한 값에 대해서 자체적으로 truncation하여 패킷을 처리하는지 확인하지 못함

3. 응답 패킷 (response)

3.1. 조회 응답

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 0Dh 01h 1Ah 04h ??h ??h 00h -- -- -- ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
  • 공간의 조명 개수: M (≥1)
    • 장치 인덱스(Index 6의 하위 4비트) 값이 0이 아닐 경우 M=1로 고정
    • M이 1보다 큰 경우는 아직까지 발견하지 못함
  • 패킷 길이: 10 + M
  • 데이터 길이: 3 + M
  • Device Type (Index 3): 0x1A
  • Packet Type (Index 4): 0x04
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x40: 장치의 ON/OFF 상태
      • 0x42: 장치의 밝기 상태
    • Data[1] (Index 6): 상위 4비트 = 공간(방) 인덱스, 하위 4비트 = 장치 인덱스
      • 장치 인덱스 값이 0인 경우, 공간에 설치된 모든 디밍 조명들의 ON/OFF 혹은 밝기 상태값을 모두 데이터에 포함
    • Data[2] (Index 7): 0x00
      • 명령에 대한 응답일 경우 명령값
    • Data[3:2+M] (Index [8:7+M]): 각 조명의 현재 상태값
      • Data[0]가 0x40일 경우:
        • 0x01: 조명이 ON된 상태
        • 0x02: 조명이 OFF된 상태
      • Data[0]가 0x42일 경우: 조명의 밝기값
  • 예시
    • 첫 번째 공간의 첫 번째 디밍 조명이 켜져있음: F7 0B 01 1A 04 40 10 00 01 B2 EE
    • 첫 번째 공간의 첫 번째 디밍 조명의 밝기 레벨이 7로 설정되어 있음: F7 0B 01 1A 04 42 10 00 07 B6 EE

3.2. 명령 응답

명령 응답은 조회 응답과 유의미한 차이를 아직까지 발견하지 못함
※ 차이점: 장치 인덱스 값이 1 이상이다, Index 7 값이 명령값이 반영된다
 Index 8 값은 상태값이 반영되는 것은 동일
추후 새로운 유형의 프로토콜 발견 시 업데이트 예정
 

 

반응형