YOGYUI

광교아이파크::난방 Apple 홈킷 연동 (1) 본문

홈네트워크(IoT)/광교아이파크

광교아이파크::난방 Apple 홈킷 연동 (1)

요겨 2021. 1. 2. 13:53
반응형

[1] Prepare

난방, 환기, 가스 관련 통신 케이블은 홈네트워크 게이트웨이 터미널의 "CTRL RS-485"에 연결되어 있다

혹시나싶어 조명 쪽 RS-485와 함께 묶어서 읽어보니 바이트스트림이 뒤섞여서 도저히 파싱할 수 없게 되었다

결국 RS485 to USB 컨버터를 하나 더 구매해서 라즈베리파이에 추가 연결!

컨버터 추가 구매 및 연결 ㅠ

바이트스트림을 제대로 후킹하는지 확인한 후, 조명 제어 때와 같이 거실의 중앙 월패드 이리저리 조작하면서 패킷 파싱

거실 중앙 월패드 - 난방 제어
각방별로 난방 관련 세부 제어가 가능하다

조명 개발 때와 마찬가지로 바이트스트림 패턴 분석 시도

02 28 15 A1 C3 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 E5
02 28 07 11 C4 02 F9
02 28 10 91 C4 02 02 17 00 D0 00 25 00 00 00 7B
02 31 00 C5 00 00 00 00 00 F6
02 31 80 C5 80 00 00 00 00 F6
02 61 00 C6 00 00 00 00 00 A9
02 61 80 C6 00 00 01 00 00 2A
02 28 06 21 C7 D8
02 28 15 A1 C7 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 E1
02 28 07 11 C8 03 F6
02 28 10 91 C8 03 02 54 00 C8 00 25 00 00 00 E1
02 31 00 C9 00 00 00 00 00 02
02 31 80 C9 80 00 00 00 00 02
02 61 00 CA 00 00 00 00 00 B5
02 61 80 CA 00 00 01 00 00 36
02 28 06 21 CB DC
02 28 15 A1 CB 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 9D
02 28 07 11 CC 01 F4
02 28 10 91 CC 01 02 17 00 CC 00 25 00 00 00 9C
02 31 00 CD 00 00 00 00 00 FE
02 31 80 CD 80 00 00 00 00 FE
02 61 00 CE 00 00 00 00 00 B1
02 61 80 CE 00 00 01 00 00 32
02 28 06 21 CF E0
02 28 15 A1 CF 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 F9
02 28 07 11 D0 02 ED
02 28 10 91 D0 02 02 17 00 D0 00 25 00 00 00 9F
02 31 00 D1 00 00 00 00 00 EA
02 31 80 D1 80 00 00 00 00 EA
02 61 00 D2 00 00 00 00 00 BD
02 61 80 D2 00 00 01 00 00 3E
02 28 06 21 D3 C4
02 28 15 A1 D3 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 F5
02 28 07 11 D4 03 EA
02 28 10 91 D4 03 02 54 00 C8 00 25 00 00 00 C5
02 31 00 D5 00 00 00 00 00 E6
02 31 80 D5 80 00 00 00 00 E6
02 61 00 D6 00 00 00 00 00 B9
02 61 80 D6 00 00 01 00 00 3A
02 28 06 21 D7 C8
02 28 15 A1 D7 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 F1
02 28 07 11 D8 01 E8
02 28 10 91 D8 01 02 17 00 CC 00 25 00 00 00 98
02 31 00 D9 00 00 00 00 00 F2
02 31 80 D9 80 00 00 00 00 F2
02 61 00 DA 00 00 00 00 00 C5
02 61 80 DA 00 00 01 00 00 46
02 28 06 21 DB CC
02 28 15 A1 DB 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 ED
02 28 07 11 DC 02 E1
02 28 10 91 DC 02 02 17 00 D0 00 25 00 00 00 A3
02 31 00 DD 00 00 00 00 00 EE
02 31 80 DD 80 00 00 00 00 EE
02 61 00 DE 00 00 00 00 00 C1
02 61 80 DE 00 00 01 00 00 42
02 28 06 21 DF D0
02 28 15 A1 DF 10 22 03 02 17 00 CC 02 17 00 D0 02 54 00 C8 89
02 28 07 11 E0 03 DE
02 28 10 91 E0 03 02 54 00 C8 00 25 00 00 00 F9
02 31 00 E1 00 00 00 00 00 DA
02 31 80 E1 80 00 00 00 00 DA
02 61 00 E2 00 00 00 00 00 8D
02 61 80 E2 00 00 01 00 00 0E
02 28 06 21 E3 F4

 

  • 0x02로 시작

  • 헤더 (두번째 바이트)는 0x28, 0x31, 0x61이 반복된다

  • 헤더가 0x31, 0x61일 때는 세번째 바이트가 패킷의 길이를 가리키지 않으며, 네번째 바이트가 timestamp
    0x28일 때는 세번째 바이트가 패킷의 길이를 가리키며 다섯번째 바이트가 timestamp
    헤더 0x28일때는 네번째 바이트가 0x21 - 0xA1, 0x11 - 0x91로 최상위비트가 토글된 쌍으로 보임

난방 On/Off 제어 시 패킷도 후킹, 월패드 레퍼런스 데이터가 있으므로 상호 비교가 가능하다

02 28 0E 12 E9 01 01 00 00 00 00 00 00 E3 # 거실 난방 켜기
02 28 10 92 E9 01 01 18 00 DA 00 25 00 00 00 9C # 응답
02 28 0E 12 F7 01 02 00 00 00 00 00 00 C8 # 거실 난방 끄기
02 28 10 92 F7 01 12 18 00 DA 00 25 00 00 00 AF # 응답

02 28 0E 12 48 01 00 14 00 00 00 00 00 9B # 거실 난방 20도 설정
02 28 0E 12 61 01 00 54 00 00 00 00 00 08 # 거실 난방 20.5도 설정
02 28 0E 12 76 01 00 15 00 00 00 00 00 58 # 거실 난방 21도 설정
02 28 0E 12 88 01 00 55 00 00 00 00 00 9A # 거실 난방 21.5도 설정
02 28 0E 12 9A 01 00 16 00 00 00 00 00 AB # 거실 난방 22도 설정
02 28 0E 12 AA 01 00 56 00 00 00 00 00 FB # 거실 난방 22.5도 설정
02 28 0E 12 B8 01 00 17 00 00 00 00 00 8C # 거실 난방 23도 설정
02 28 0E 12 D2 01 00 57 00 00 00 00 00 C2 # 거실 난방 23.5도 설정
02 28 0E 12 E3 01 00 18 00 00 00 00 00 C6 # 거실 난방 24도 설정

02 28 0E 12 D3 02 01 00 00 00 00 00 00 EE # 침실 난방 켜기
02 28 10 92 D3 02 01 17 00 D0 00 25 00 00 00 70 # 응답
02 28 0E 12 DD 02 02 00 00 00 00 00 00 F5 # 침실 난방 끄기
02 28 10 92 DD 02 12 17 00 D0 00 25 00 00 00 93 # 응답

02 28 0E 12 59 02 00 14 00 00 00 00 00 6B # 침실 난방 20도 설정
02 28 0E 12 6B 02 00 54 00 00 00 00 00 11 # 침실 난방 20.5도 설정
02 28 0E 12 78 02 00 15 00 00 00 00 00 61 # 침실 난방 21도 설정
02 28 0E 12 87 02 00 55 00 00 00 00 00 EC # 침실 난방 21.5도 설정
02 28 0E 12 94 02 00 16 00 00 00 00 00 BA # 침실 난방 22도 설정
02 28 0E 12 A1 02 00 56 00 00 00 00 00 D5 # 침실 난방 22.5도 설정

02 28 0E 12 7E 03 01 00 00 00 00 00 00 58 # 컴퓨터방 난방 켜기
02 28 10 92 7E 03 01 54 00 C9 00 25 00 00 00 6C # 응답
02 28 0E 12 87 03 02 00 00 00 00 00 00 BA # 컴퓨터방 난방 끄기
02 28 10 92 87 03 12 54 00 C9 00 25 00 00 00 A2 # 응답

02 28 0E 12 4F 03 00 14 00 00 00 00 00 74 # 컴퓨터방 난방 20도 설정
02 28 0E 12 5F 03 00 54 00 00 00 00 00 44 # 컴퓨터방 난방 20.5도 설정
02 28 0E 12 6A 03 00 15 00 00 00 00 00 76 # 컴퓨터방 난방 21도 설정
02 28 0E 12 78 03 00 55 00 00 00 00 00 20 # 컴퓨터방 난방 21.5도 설정
02 28 0E 12 85 03 00 16 00 00 00 00 00 A8 # 컴퓨터방 난방 22도 설정
02 28 0E 12 92 03 00 56 00 00 00 00 00 01 # 컴퓨터방 난방 22.5도 설정

명령 패킷 명세는 다음과 같이 정리할 수 있다

Index 0 1 2 3 4 5 6 7
켜기 0x02 0x28 0x0E 0x12 Timestamp Room Index 0x01 0x00
끄기 0x02 0x28 0x0E 0x12 Timestamp Room Index 0x02 0x00
온도설정 0x02 0x28 0x0E 0x12 Timestamp Room Index 0x00 온도값

온도설정시 온도 설정값은 다음 규칙을 따르는 것으로 보인다

설정값(℃) = (packet[7] & 0x3F) + (packet[7] & 0x40) * 0.5

월패드로 조정할 때 온도 설정값의 Step Interval이 0.5℃였는데, 명령 패킷에도 그대로 반영되어 있는듯 하다

(bit6가 1이면 하위6비트 값에 0.5도를 더한다)

** 월패드의 온도 설정 범위는 0.5 ~ 40.0

 

명령 패킷 파싱 결과를 토대로 다음과 같이 평상시 반복 쿼리 패킷의 0x28 헤더값을 가진 패킷과 이에 대한 응답 패킷도 명세화 가능하다

Index 0 1 2 3 4 5 6 7
쿼리 0x02 0x28 0x07 0x11 Timestamp Room Index ??  
응답 0x02 0x28 0x10 0x91 Timestamp Room Index 0x02
0x11
온도설정값

응답의 7번째 바이트가 0x02일 경우 난방이 꺼진 상태이며, 0x11일 경우 난방이 켜진 상태

뿐만 아니라, 응답의 10번째 바이트는 현재 온도값을 나타내는 것으로 추정할 수 있다

현재 온도값이 디스플레이되고 있다

현재 온도값이 20.6℃, 난방 설정값이 23℃일때 거실 응답

02 28 10 91 BD 01 02 17 00 CE 00 25 00 00 00 ED

>> 0xCE = 206 = 20.6℃ * 10

 

현재 온도값이 20.9, 난방 설정값이 23일때 침실 응답

02 28 10 91 16 02 02 17 00 D1 00 25 00 00 00 5C

>> 0xD1 = 209 = 20.9℃ * 10

 

현재 온도값이 20.2, 난방 설정값이 22.5일때 침실 응답

02 28 10 91 A7 03 02 56 00 CA 00 25 00 00 00 8C

>> 0xCA = 202 = 20.2℃ * 10

 

난방 제어 뿐만 아니라 온도 센서로도 활용 가능할 것으로 기대된다

  • 습도 측정도 같이 해주지 않는게 아쉽다
  • 레퍼런스값만 있으면 상호 비교가 되니 패킷 해석이 참 쉬운데...
    실시간 전력 사용량 같은건 레퍼런스가 없어서 너무 아쉽다

난방 켜기, 끄기, 온도 설정, 현재 온도값 측정 기능 관련 패킷 파싱 기능 준비 완료!

 

[시리즈 링크]

광교아이파크::난방 Apple 홈킷 연동 (1)

광교아이파크::난방 Apple 홈킷 연동 (2)

광교아이파크::난방 Apple 홈킷 연동 (3)

광교아이파크::난방 Apple 홈킷 연동 (4)

광교아이파크::난방 Apple 홈킷 연동 (5)

반응형