YOGYUI

현대통신 월패드 RS-485 통신 프로토콜 - 난방(보일러) 본문

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

현대통신 월패드 RS-485 통신 프로토콜 - 난방(보일러)

요겨 2024. 11. 21. 13:11
반응형

 

※ 티스토리 오블완(오늘 블로그 완료) 챌린지용 포스팅
※ 프로토콜 공통 명세 참고 링크: 현대통신 월패드 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 18h 01h 46h 10h 00h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 이터 길이: 4
  • Device Type (Index 3): 0x18
  • Packet Type (Index 4): 0x01
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x46: 난방(보일러) 온도 상태
    • Data[1] (Index 6): 상위 4비트 = 장치 인덱스, 하위 4비트 = 공간(방) 인덱스
      • 장치/공간 인덱스 = one-based index
      • 장치 인덱스는 난방 제어기를 가리킴 (제어기가 하나밖에 없다면 값은 1로 고정)
        허니웰(Honeywell) 난방제어기 예시
      • 공간 인덱스 값이 0일 경우, 해당 난방 제어기에서 제어 가능한 최대 8개 공간의 개별 난방 상태값을 반환
        (반드시 공간 1개당 방 1개가 배정된다고 할 수는 없음.. 방이 넓은 경우 난방 장치 2개를 사용할지도?)
      • 공간 인덱스 값이 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 18h 02h ??h 1?h ??h 00h ??h EEh
  • 통신 방향: [월패드] → [개별 장치]
  • 패킷 길이: 11 (= 0x0B)
  • 데이터 길이: 4
  • Device Type (Index 3): 0x18
  • Packet Type (Index 4): 0x02
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x45: 설정(희망) 온도값 변경
      • 0x46: 난방 ON/OFF 변경
    • Data[1] (Index 6): 상위 4비트 = 장치 인덱스, 하위 4비트 = 공간(방) 인덱스
      • 장치/공간 인덱스 = one-based index
      • 장치 인덱스는 난방 제어기를 가리킴 (제어기가 하나밖에 없다면 값은 1로 고정)
      • 공간 인덱스는 난방 제어기가 제어할 수 있는 개별 공간을 가리킴 (첫번째 공간 = 1)
    • Data[2] (Index 7): 명령값
      • Data[0]가 0x45일 경우 희망온도 설정 변경
        • 온도값 단위는 섭씨(℃)이며, 1도 단위로 조절
        • 정수값을 그대로 바이트 단위로 입력 (예: 20도 = 0x14)
      • Data[0]가 0x46일 경우 ON/OFF 제어
        • 0x01: 난방 ON
        • 0x04: 난방 OFF
    • Data[3] (Index 8): 0x00 (이 외의 값은 발견하지 못함)
  • 예시
    • 4번째 방의 난방 ON: F7 0B 01 18 02 46 14 01 00 B4 EE
    • 4번째 방의 난방 희망 온도를 23도로 설정: F7 0B 01 18 02 45 14 17 00 A1 EE

3. 응답 패킷 (response)

3.1. 명령 응답

Index 0 1 2 3 4 5 6 7 8 9 10 11 12
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
Command On/Off T.C T.S Checksum Suffix
Value F7h 0Dh 01h 18h 04h ??h ??h ??h ??h ??h ??h ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
    • 명령 패킷 수신 후 상태를 변경한 뒤 이에 대한 응답 패킷을 곧바로 송신
    • 명령 타입에 상관없이 해당 난방 장치의 On/Off 상태, 현재 온도값, 설정 온도값을 반환
  • 패킷 길이: 13 (= 0x0D)
  • 데이터 길이: 6
  • Device Type (Index 3): 0x18
  • Packet Type (Index 4): 0x04
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x45: 설정(희망) 온도값 변경 명령에 대한 응답
      • 0x46: 난방 ON/OFF 변경 명령에 대한 응답
      • 카테고리에 상관없이 응답 데이터는 동일함
    • Data[1] (Index 6): 상위 4비트 = 장치 인덱스, 하위 4비트 = 공간(방) 인덱스
      • 장치/공간 인덱스 = one-based index
      • 치 인덱스는 난방 제어기를 가리킴 (제어기가 하나밖에 없다면 값은 1로 고정)
      • 공간 인덱스는 난방 제어기가 제어할 수 있는 개별 공간을 가리킴 (첫번째 공간 = 1)
    • Data[2] (Index 7): 명령값
      • Data[0]가 0x45일 경우 희망온도 설정 변경값
      • Data[0]가 0x46일 경우 ON/OFF 제어값
    • Data[3] (Index 8): 난방의 ON/OFF 상태
      • 0x01: 난방 ON된 상태
      • 0x04: 난방 OFF된 상태
    • Data[4] (Index 9): 공간(방)의 현재 온도값
      • 개별 공간의 써미스터 측정값을 반환
    • Data[5] (Index 10): 난방 희망 온도 설정
      • 온도값 단위는 섭씨(℃)이며, 정수(integer) 형태 (1도 단위)

3.2. 조회 응답

Index 0 1 2 3 4 5 6 7 [8:31] 32 33
Content Prefix Length - Dev
Type
Packet
Type
Category Dev / 
Room
- State Checksum Suffix
Value F7h 22h 01h 18h 04h 46h 10h 00h -- -- -- ??h EEh
  • 통신 방향: [개별 장치] → [월패드]
    • 난방 제어기가 월패드로부터 조회(쿼리) 패킷 수신 후, 최대 8개 공간의 난방 상태를 담은 응답 패킷을 송신
  • 패킷 길이: 34(=0x22)
  • 데이터 길이: 27
  • Device Type (Index 3): 0x18
  • Packet Type (Index 4): 0x04
  • Data
    • Data[0] (Index 5): 카테고리
      • 0x46: 난방(보일러) 온도 상태 쿼리에 대한 응답
    • Data[1] (Index 6): 상위 4비트 = 장치 인덱스, 하위 4비트 = 공간(방) 인덱스
      • 공간 인덱스 값이 0일 경우 난방 장치가 제어 가능한 최대 8개 공간의 난방 상태값을 반환
    • Data[2] (Index 7): 0x00 (이 외의 값은 발견하지 못함)
    • Data[3:26] (Index [8:31]): 24바이트로 구성
      • 8개 공간의 난방 상태값을 표현
      • 각 공간의 난방 상태값은 3바이트로 구성
      • K = 0, 1, 2, ... , 7: 공간 인덱스
      • Data[3 + K × 3]: 난방의 ON/OFF 상태
        • 0x01: 난방 ON된 상태
        • 0x04: 난방 OFF된 상태
        • 0x00: 해당 공간은 난방이 지원되지 않음
      • Data[3 + K × 3 + 1]: 공간의 현재 온도값
        • 0x00: 해당 공간은 난방이 지원되지 않음
      • Data[3 + K × 3 + 2]: 난방 설정(희망) 온도값
        • 0x00: 해당 공간은 난방이 지원되지 않음
  • 예시
    • F7 22 01 18 04 46 10 00 04 19 15 04 19 17 04 19 16 04 1A 12 00 00 00 00 00 00 00 00 00 00 00 00 9B EE
      • 난방기기 1번은 총 '4공간'의 난방 제어 가능
      • 1번 공간의 난방은 꺼져있으며(0x04), 현재 온도는 25도(0x19), 설정 온도는 21도(0x15)
      • 2번 공간의 난방은 꺼져있으며(0x04), 현재 온도는 25도(0x19), 설정 온도는 23도(0x17)
      • 3번 공간의 난방은 꺼져있으며(0x04), 현재 온도는 25도(0x19), 설정 온도는 22도(0x16)
      • 4번 공간의 난방은 꺼져있으며(0x04), 현재 온도는 26도(0x1A), 설정 온도는 18도(0x12)

 

반응형