Matter
Matter 드라이버 참고 자료입니다. Bluetooth로 로컬 Fabric에 커미셔닝하기, 장치 페어링 흐름, 노드 신원, 그리고 클러스터 태그.
Matter 드라이버는 Matter over Thread 장비를 읽습니다. Matter 표준 인증을 받은 스마트 센서와 플러그와 조명과 비슷한 장치들입니다. Ganter Lab은 자기 로컬 Fabric을 가진 Matter 컨트롤러로 동작합니다. 이 컴퓨터에서 Bluetooth Low Energy로 장치를 한 번 커미셔닝하고, 이미 있는 Thread 네트워크의 자격 증명을 건네준 다음, 그때부터는 Thread Border Router를 거쳐 그 네트워크로 이야기합니다.
그래서 설정 순서가 보통과 뒤집힙니다. Matter 장치는 호스트와 포트에서 시작하지 않습니다. 페어링 절차에서 시작하고, 그 뒤에는 커미셔닝된 노드의 변하지 않는 신원만 저장됩니다.
페어링하기 전에 갖추어야 할 것은 이렇습니다.
- 이 컴퓨터에 켜져 있는 Bluetooth Low Energy 어댑터가 있고, Windows가 Ganter Lab에 그것을 쓰도록 허용하고 있어야 합니다.
- Border Router가 있는 기존 Thread 네트워크와, 그 완전한 활성 운영 데이터셋이 있어야 합니다. Ganter Lab은 장치를 사용자의 네트워크에 넣어 줄 뿐, 그 네트워크의 자격 증명을 만들어 낼 수는 없습니다.
- 장치나 그 포장에 인쇄된 장치의 설정 코드가 있어야 하고, 장치가 페어링 모드에 있어야 합니다.
장치 페어링 흐름
Matter 드라이버에서는 다른 드라이버가 장치 추가를 내놓는 자리에 명령 모음이 장치 페어링을 내놓습니다. 이 명령은 칸 셋을 가진 양식을 엽니다.
| 칸 | 무엇인가 | 형식 | 기본값 |
|---|---|---|---|
| 장치 이름 | 그 장치가 Connector에서 가지게 될, 고칠 수 있는 이름. | 자유 입력 | Matter 장치 |
| Matter 설정 코드 | 정식 수동 페어링 코드이거나 QR 페이로드 전체입니다. 가려진 채로 입력하며 드러내는 조작이 함께 있습니다. | 11자리나 21자리 수동 코드(붙임표와 공백은 무시하고 검사 숫자를 확인합니다), 또는 MT:로 시작하는 QR 페이로드 전체입니다. Bluetooth 커미셔닝을 광고하지 않는 QR 페이로드는 거부되며, 예약된 암호나 범위를 벗어난 암호도 마찬가지입니다. |
비어 있음 |
| Thread 운영 데이터셋 | 네트워크 관리자나 Border Router에서 받은, Thread 네트워크의 완전한 활성 데이터셋입니다. 가려진 채로 입력하며 드러내는 조작이 함께 있습니다. | 16진수 문구이며(공백과 hex: 앞머리는 눈감아 줍니다) 해독한 뒤 254바이트를 넘지 않아야 합니다. 완전한 데이터셋이어야 합니다. Active Timestamp, Channel, Channel Mask, Extended PAN ID, Mesh-Local Prefix, Network Key, Network Name, PAN ID, PSKc, Security Policy가 모두 있어야 하며, 일부만 있거나 형태가 깨진 데이터셋은 빠진 요소를 밝히며 거부됩니다. |
비어 있음 |
장치 페어링은 칸 셋이 모두 채워지기 전까지 쓸 수 없습니다. 페어링이 도는 동안 양식은 자기 단계를 알립니다. 검사(코드와 데이터셋을 확인합니다), 찾기(Bluetooth로 장치를 찾습니다), 페어링(설정 코드로 인증합니다), Thread 가입(네트워크 구성을 보내고 장치가 Thread 네트워크에 나타나기를 기다립니다), 저장(커미셔닝된 노드를 로컬 Fabric에 기록합니다)입니다.
취소는 실제 장치가 아직 바뀌지 않은 동안 쓸 수 있습니다. 커미셔닝이 장치를 바꾼 뒤로는 단추가 Ganter Lab이 안전하게 마무리하는 중이라고 알리고, 흐름은 반쯤 커미셔닝된 노드를 버리는 대신 기록을 끝냅니다. 페어링은 한 번에 하나만 돕니다. 하나가 도는 동안의 두 번째 시도는 거부됩니다.
비밀 값은 결코 저장되지 않습니다. 설정 코드와 Thread 데이터셋은 양식이 열려 있는 동안에만 그 안에 있습니다. 페어링이 끝나거나 실패하거나 취소되면 지워지고, 그 가운데 아무것도 구성에 적히지 않습니다. 저장되는 것은 노드의 신원뿐입니다.
페어링이 실패하면 메시지가 원인을 말합니다. 올바르지 않은 코드나 데이터셋, Bluetooth 없음이나 꺼짐, Windows가 Bluetooth 접근을 거부함, 맞는 장치를 찾지 못함, 장치가 설정 코드를 거부함, 또는 장치가 커미셔닝은 되었으나 Thread 네트워크에 끝내 나타나지 않음입니다. 설정 코드가 틀렸을 때는 그렇다고 밝히므로, 인쇄된 코드를 다시 읽고 장치를 다시 페어링 모드로 두는 것이 답입니다.
장비가 이미 커미셔닝된 뒤에 실패가 올 때는 메시지가 그렇게 말하고 노드 ID를 보여 줍니다. 그 노드는 Fabric에 남아 있으며, 네트워크에 닿기만 하면 나중에 장치 검색으로 추가할 수 있습니다. 그런 경우에는 장치를 초기화하지 마십시오. 아무것도 저장되지 않았다고 말하는 메시지만이 장비가 손대지지 않았다는 뜻입니다.
노드 신원
페어링된 장치는 장비의 변하지 않는 64비트 노드 ID에 묶이며, 그 값은 연결 카드에 16진수 열여섯 자리로 장치 상태 옆에 읽기 전용으로 나옵니다. 고칠 수 있는 표시 이름은 사용자의 것이지만 노드 ID는 그렇지 않습니다. 저장된 신원을 더 이상 읽을 수 없는 장치는 그 자리에 다시 페어링 필요를 보여 줍니다.
신원이 노드 ID이므로 Matter 장치들은 서로 독립된 연결 상태를 가집니다. 노드 하나를 끄거나 지우거나 잃어도 다른 노드가 쓸 수 없게 되지는 않고, 장치를 지우는 일은 그 장치가 쓰던 보안 세션만 놓아 줄 뿐 장비를 로컬 Fabric에서 없애지는 않습니다.
장치 검색
Matter 드라이버의 장치 검색은 이 애플리케이션의 로컬 Fabric에 이미 커미셔닝된 노드를 나열합니다. 그래서 장치를 지운 노드나 장치 없이 페어링이 끝난 노드를 새 절차 없이 되돌려 놓을 수 있습니다. 이미 설정된 노드 ID에는 그렇다는 표시가 붙고 열기가 있던 장치로 데려갑니다. 검색 후보는 노드 신원을 담고 있고 설정 비밀 값은 담고 있지 않습니다. 일반적인 장치 검색 흐름은 Connector 페이지에서 설명합니다.
태그
Matter 태그에는 자유 입력 주소 칸이 없습니다. 태그 이름이 곧 읽을 클러스터 이름입니다. 이름은 Matter 규격이 적는 그대로의 클러스터 이름과 맞아야 하며, 공백과 문장 부호까지 그대로이고 대소문자만 무시합니다. On/Off, Level Control, Temperature Measurement입니다. 이름이 곧 주소이므로 그 안에 쌍점이 들어갈 수 없습니다. 패널은 쌍점을 거부하고 그렇게 말합니다. 어떤 클러스터도 가지지 않은 이름은 알 수 없는 클러스터를 밝히는 오류로 읽힙니다. 값은 태그가 선언한 데이터 형식으로 바뀌며, 선언한 형식이 담아낼 수 없는 값도 대체 숫자가 아니라 오류로 읽힙니다.
숫자 칸 둘이 그 클러스터를 장치의 어디에서 읽을지 말합니다. 장치는 제어할 수 있는 출력마다 엔드포인트를 하나씩 내놓으며 1부터 번호가 매겨지므로, 2채널 조명이나 멀티탭은 태그마다 엔드포인트 하나씩 읽습니다. 엔드포인트 0은 노드 자신입니다. 특성은 클러스터의 어느 값을 읽을지이며, 0은 클러스터 자신의 값으로 거의 모든 태그가 원하는 것입니다.
| 칸 | 하는 일 | 값 | 기본값 |
|---|---|---|---|
| 태그 이름 | 태그의 이름이자, 노드에서 읽을 Matter 클러스터를 고르는 값입니다. 쌍점은 안 됩니다. | 적힌 그대로의 클러스터 이름이며 예를 들어 On/Off입니다 |
태그 1 |
| 출력 (엔드포인트) | 이 태그가 읽는, 장치의 어느 출력인지. | 0 이상이며 1이 첫 번째 제어 가능한 출력입니다 | 1 |
| 특성 | 이 태그가 읽는, 클러스터의 어느 특성인지. | 0 이상이며 0이 클러스터 자신의 값입니다 | 0 |
| 데이터 형식 | 값이 공개될 OPC UA 형식. | Boolean, Int32, UInt32, Float, Double, String | Float |
| 읽기 주기 | 그 특성을 얼마나 자주 읽을지이며 태그마다 정합니다. 태그가 정하지 않으면 장치 기본값(1000 ms)이 적용됩니다. | 밀리초 | 장치 기본값 |
Matter 태그는 읽기 전용입니다. 접근 칸은 쓸 수 있는 선택을 내놓지 않고, 특성 쓰기는 런타임이 거부합니다. Matter 장치를 바꾸는 일(예를 들어 켜는 일)은 Matter 명령이며, 태그 쓰기는 그것을 나타내지 않습니다.