Matter
Referência do driver Matter: as redes Wi-Fi e Thread em que os dispositivos entram, comissionamento por Bluetooth na Fabric local, o fluxo do Parear dispositivo, identidade do nó, as tags que vêm do dispositivo e o que escrever em cada uma faz.
O driver Matter lê equipamento Matter: sensores inteligentes, tomadas, luzes e dispositivos semelhantes certificados para o padrão Matter, entrem eles na rede por Wi-Fi ou por Thread. É um driver só para os dois. A rede é só o caminho de entrada: depois que o dispositivo está nela, o Ganter Lab o lê do mesmo jeito, pela rede local.
O Ganter Lab age como controlador Matter com Fabric local própria: ele comissiona cada dispositivo uma vez por Bluetooth Low Energy neste computador, entrega a ele as credenciais de uma rede cadastrada no cartão Redes do driver e, dali em diante, conversa com ele pela rede local: pelo seu roteador, no caso de um dispositivo Wi-Fi, e pelo seu Thread Border Router, no caso de um dispositivo Thread.
Você nunca diz ao Ganter Lab se um dispositivo é Wi-Fi ou Thread: o próprio dispositivo diz. Aberta a sessão pelo Bluetooth, o Ganter Lab lê do dispositivo em que tipo de rede ele entra, antes de escrever qualquer coisa nele, e para com uma mensagem própria quando a rede escolhida é do outro tipo.
Isso inverte a ordem usual de configuração. Um dispositivo Matter não começa por um host e uma porta: ele começa por uma cerimônia de pareamento, e só a identidade estável do nó comissionado é guardada depois.
O que você precisa ter antes de parear:
- Um adaptador Bluetooth Low Energy neste computador, ligado, com o Windows permitindo que o Ganter Lab o use.
- A rede em que o dispositivo vai entrar, cadastrada no cartão Redes: para um dispositivo Wi-Fi, o nome do Wi-Fi e a senha dele; para um dispositivo Thread, uma rede Thread existente com um Border Router, e o Active Operational Dataset completo dela. O Ganter Lab junta dispositivos à sua rede; ele não consegue inventar credenciais para ela.
- O código de configuração do dispositivo, impresso no dispositivo ou na embalagem, e o dispositivo em modo de pareamento.
Redes
O painel do driver Matter traz um cartão chamado Redes: as redes Wi-Fi e Thread em que os dispositivos entram, uma por linha. Uma rede é cadastrada uma vez, antes do primeiro dispositivo, e serve a todos os dispositivos pareados nela, então parear uma segunda lâmpada no mesmo Wi-Fi não pede nada de novo. O cartão só é desenhado para um papel que pode configurar o Connector, porque ele guarda os segredos das redes e não serve a nada além do pareamento.
A cabeça do cartão traz os comandos dele, nesta ordem:
| Comando | O que faz | O que não faz |
|---|---|---|
| Acrescentar rede Wi-Fi | Acrescenta uma rede Wi-Fi e a seleciona. Quando este computador está conectado a um Wi-Fi cujo nome ainda não está cadastrado, a rede nova recebe esse nome; senão, ela começa sem nome, para você escrever. O Windows entrega só o nome, e só quando deixa os aplicativos saberem a localização deste computador (o Windows 11 pede essa permissão); a senha é sempre você que digita. | Não lê a senha do Windows e não confere se a rede existe. |
| Acrescentar rede Thread | Acrescenta uma rede Thread e a seleciona, com um nome provisório (numerado quando já existe) até você dar o seu, e esperando o dataset. | Não conversa com o Border Router: o Ganter Lab só usa o dataset da rede que o Border Router criou. |
| Remover rede | Remove a rede selecionada, depois de uma confirmação que a nomeia e diz que os dispositivos já pareados não são afetados. Sem rede selecionada, ele continua desenhado e esmaecido, e a dica dele diz isso. | Não mexe nos dispositivos já pareados naquela rede: eles continuam funcionando e guardam o nome dela no campo Rede. |
A tabela mostra, de cada rede, o Nome, o Tipo de rede (Rede Wi-Fi ou Rede Thread) e o Estado: Pronta para parear, ou o que ainda falta à rede. Uma rede cujo nome ainda não foi escrito aparece como Rede sem nome.
Os campos da rede selecionada são editados ali mesmo, embaixo da tabela, e se salvam sozinhos. Um valor que as regras abaixo recusam não é gravado, e o campo diz por quê.
| Tipo | Campo | O que é | Formato |
|---|---|---|---|
| Wi-Fi | Nome do Wi-Fi | O nome (SSID) entregue ao dispositivo, exatamente como o roteador o anuncia: maiúsculas contam. Cada nome de Wi-Fi é cadastrado uma vez. | De 1 a 32 bytes de texto (UTF-8). |
| Wi-Fi | Senha | A senha do Wi-Fi entregue ao dispositivo. | Vazia para uma rede aberta; senão, de 8 a 63 caracteres ASCII imprimíveis (uma frase-senha WPA), ou exatamente 64 dígitos hexadecimais (a chave bruta). |
| Thread | Nome | O seu nome para a rede, para reconhecê-la no pareamento e em cada dispositivo. Cada nome de rede Thread é cadastrado uma vez. | Texto livre. |
| Thread | Conjunto de dados operacional Thread | O dataset ativo completo da sua rede Thread, obtido com o administrador da rede ou com o Border Router dela. O Home Assistant mostra; Alexa e Apple não. | Texto hexadecimal (espaços em branco e um prefixo hex: são tolerados), no máximo 254 bytes depois de decodificado. Ele precisa ser o dataset completo: Active Timestamp, Channel, Channel Mask, Extended PAN ID, Mesh-Local Prefix, Network Key, Network Name, PAN ID, PSKc e Security Policy precisam estar todos presentes, e um dataset parcial ou malformado é recusado com o elemento que falta nomeado. |
Duas coisas decidem se um dispositivo Wi-Fi pode ser pareado, e o cartão diz as duas ao lado dos campos:
- A maioria dos dispositivos só entra em redes de 2,4 GHz. Um roteador que anuncia o mesmo nome em 2,4 GHz e em 5 GHz serve; uma rede que só existe em 5 GHz não serve.
- Este computador e os dispositivos precisam estar na mesma rede local. Uma rede de visitantes, ou o isolamento de clientes ligado no roteador, impede o computador de achar os dispositivos depois que eles entram.
Uma rede só serve ao pareamento enquanto o segredo dela passa por essas regras: uma rede Wi-Fi com nome e senha válidos (vazia incluída), uma rede Thread com dataset válido.
Editar uma rede muda o que o próximo pareamento entrega, nunca o que um dispositivo já recebeu. Um dispositivo que precisa mudar de rede, ou cujo roteador ganhou senha nova, é resetado e pareado de novo.
O fluxo do Parear dispositivo
No driver Matter, a barra de ferramentas oferece Parear dispositivo onde os outros drivers oferecem Acrescentar dispositivo, e a entrada Matter do menu Novo… da coluna também. Enquanto nenhuma rede serve ao pareamento, ele continua desenhado e esmaecido, com a dica "Acrescente primeiro a rede em que o dispositivo vai entrar." Senão, ele abre um formulário:
| Campo | O que é | Formato | Padrão |
|---|---|---|---|
| Nome do dispositivo | O nome editável que o dispositivo vai carregar no Connector. | Texto livre | Dispositivo Matter |
| Código de configuração Matter | O código manual de pareamento oficial, ou o payload QR completo. Digitado mascarado, com um controle para revelar. | Um código manual de 11 ou 21 dígitos (traços e espaços são ignorados; o dígito verificador é conferido), ou o payload QR completo começando com MT:. Um payload QR que não anuncia comissionamento por Bluetooth é recusado, assim como senhas reservadas ou fora de faixa. |
vazio |
| Rede | A rede cadastrada em que o dispositivo vai entrar. Com uma só rede que serve, o formulário diz numa linha qual é a rede e o tipo dela, sem nada para escolher; com mais, é uma lista de escolha. | Uma das redes que servem no cartão Redes | a única, quando há uma só |
| Pasta de destino | Só quando o Novo dispositivo de uma pasta abriu o formulário: a pasta em que o dispositivo pareado é arquivado. Aberto pelo Parear dispositivo, não há essa linha e o dispositivo fica no nível do próprio driver. | Somente leitura | a pasta que abriu o formulário |
Uma pasta do driver Matter oferece Novo dispositivo (na tabela Dispositivos dela, no menu de contexto dela e em Novo… > Matter > <Pasta>). Ele abre este mesmo formulário, esmaecido do mesmo jeito enquanto nenhuma rede serve, e o dispositivo pareado é arquivado naquela pasta.
O Parear dispositivo do formulário fica desabilitado até o nome e o código de configuração estarem preenchidos e alguma rede servir. Enquanto o pareamento roda, o formulário relata o estágio dele: Validar (conferindo o código e o segredo da rede), Encontrar (procurando o dispositivo por Bluetooth), Parear (autenticando com o código de configuração e lendo em que tipo de rede o dispositivo entra), Entrar na rede (enviando a rede ao dispositivo e depois perguntando por ele na rede local até ele responder; a linha de status diz se essa rede é Wi-Fi ou Thread), Salvar (abrindo a sessão segura com o dispositivo na rede local, concluindo o comissionamento dele e registrando o nó na Fabric local).
O Cancelar fica disponível enquanto o dispositivo físico ainda não foi alterado; assim que o comissionamento alterou o dispositivo, o botão passa a dizer que o Ganter Lab está finalizando com segurança, e o fluxo completa o registro em vez de abandonar um nó comissionado pela metade. Um pareamento roda por vez; uma segunda tentativa enquanto um está em andamento é recusada.
O dispositivo novo registra o nome da rede em que entrou, mostrado no campo Rede dele. Parear o próximo dispositivo na mesma rede pede só o nome e o código de configuração.
Quando o pareamento falha
Se o pareamento falha, a mensagem declara a causa e o que fazer:
| Causa | O que significa | O equipamento | O que fazer |
|---|---|---|---|
| Código de configuração inválido | O código não é um código manual oficial de 11 ou 21 dígitos, nem um payload QR MT: completo. |
Intocado | Releia o código impresso. |
| Dataset Thread inválido | O dataset da rede Thread escolhida não está completo e bem formado. | Intocado | Copie de novo o dataset ativo completo para essa rede no cartão Redes. |
| Nome ou senha do Wi-Fi inválidos | O nome ou a senha da rede Wi-Fi escolhida quebra as regras do cartão Redes. | Intocado | Corrija no cartão. |
| Bluetooth ausente, desligado ou negado | Este computador não tem adaptador Bluetooth Low Energy utilizável, o Bluetooth está desligado, ou o Windows negou ao Ganter Lab o acesso a ele. | Intocado | Ligue o Bluetooth, ou permita no Windows que o Ganter Lab o use, e tente de novo. |
| Nenhum dispositivo correspondente encontrado | Nenhum dispositivo em modo de pareamento respondeu para este código de configuração. | Intocado | Coloque o dispositivo em modo de pareamento, mantenha-o perto deste computador e tente de novo. |
| Código de configuração rejeitado | O dispositivo recusou o código. | Intocado | Releia o código impresso e coloque o dispositivo de volta em modo de pareamento. |
| O dispositivo entra por Wi-Fi | A rede escolhida é Thread. | Intocado: ele foi lido, e nada foi escrito nele | Cadastre a rede Wi-Fi em que o dispositivo vai entrar e pareie de novo, escolhendo-a. |
| O dispositivo entra por Thread | A rede escolhida é Wi-Fi. | Intocado: ele foi lido, e nada foi escrito nele | Cadastre a rede Thread e pareie de novo, escolhendo-a. |
| O dispositivo é cabeado (Ethernet) | O pareamento por Bluetooth não serve a um dispositivo cabeado. | Intocado: ele foi lido, e nada foi escrito nele | O Ganter Lab não consegue parear este dispositivo. |
| O dispositivo não diz a rede dele | O dispositivo não informa Wi-Fi, nem Thread, nem Ethernet. | Intocado: ele foi lido, e nada foi escrito nele | O Ganter Lab não consegue parear este dispositivo. |
| Rede Wi-Fi não encontrada | O dispositivo respondeu que não achou nenhum Wi-Fi com esse nome: um erro de grafia ou de maiúsculas, uma rede só em 5 GHz, ou um dispositivo fora de alcance. | Não guarda nada: descarta o que recebeu e volta ao modo de pareamento. Sem Node ID. | Corrija o nome no cartão Redes, confira se o roteador o anuncia em 2,4 GHz e pareie de novo. |
| Senha do Wi-Fi recusada | O dispositivo respondeu que o Wi-Fi recusou a senha. | Não guarda nada: descarta o que recebeu e volta ao modo de pareamento. Sem Node ID. | Corrija a senha no cartão Redes e pareie de novo. |
| O dispositivo não conseguiu entrar na rede | O dispositivo respondeu que não conseguiu entrar na rede, por um motivo diferente dos dois acima (no Thread, toda recusa, inclusive uma rede que ele não achou). | Não guarda nada: descarta o que recebeu e volta ao modo de pareamento. Sem Node ID. | Confira a rede no cartão Redes (no Thread, copie de novo o dataset ativo atual e confira se o Border Router está ligado) e pareie de novo. |
| O dispositivo não apareceu na rede | O dispositivo não deu resposta sobre a rede, ou nunca apareceu na rede local depois. Alguns dispositivos saem do Bluetooth para entrar na rede e nem conseguem responder. | Comissionado: a mensagem mostra o Node ID | No Wi-Fi, confira se este computador e o dispositivo estão na mesma rede local, sem rede de visitantes nem isolamento de clientes entre eles; no Thread, se o Border Router está ligado e alcançável. Depois, recupere o nó com o Descobrir. |
| A sessão segura não abriu | O dispositivo entrou na rede e foi achado lá, mas a sessão segura com ele, ou a conclusão do pareamento por essa sessão, falhou. O diário diz o passo e o que o dispositivo respondeu. | Comissionado: a mensagem mostra o Node ID | Recupere o nó com o Descobrir. Se o Descobrir o achar sem valores com o dispositivo ligado, coloque o dispositivo de volta em modo de pareamento e pareie de novo. |
| Outro pareamento em andamento | Um pareamento roda por vez. | Intocado | Espere ele terminar e tente de novo. |
| A Fabric local não pôde ser salva | O Ganter Lab não conseguiu gravar a Fabric com segurança. | Intocado quando acontece antes de o pareamento começar; comissionado, com o Node ID, quando acontece depois | Resolva o problema de armazenamento antes de resetar qualquer coisa. |
Sempre que uma falha chega depois de o equipamento já ter sido comissionado, a mensagem diz isso e mostra o Node ID: o nó continua na Fabric e pode ser adicionado mais tarde com o Descobrir, assim que ele alcançar a rede. Não reinicie o dispositivo nesse caso; só uma mensagem que diz que nada foi salvo significa que o equipamento ficou intocado.
Um dispositivo que responde que não conseguiu entrar na rede é a exceção: ele não guarda nada que valha manter. O Ganter Lab encerra o pareamento no dispositivo, que descarta o que recebeu e volta na hora ao modo de pareamento, e tira o nó dele da Fabric, então a mensagem não traz Node ID e o Descobrir nunca lista um nó que não consegue responder. Corrija a rede e pareie de novo. Só um dispositivo que não deu resposta nenhuma mantém o nó, porque só se sabe se ele entrou quando ele aparece na rede local.
O que é guardado
| O quê | Onde fica | Como |
|---|---|---|
| O nome e o tipo de uma rede | A configuração da estação | Como foram escritos. |
| A senha do Wi-Fi e o Thread Operational Dataset | A configuração da estação | Protegidos para o usuário do Windows que os digitou, como as senhas de dispositivo: em outra conta do Windows eles leem vazios e precisam ser digitados de novo. Um backup os deixa para trás; a exportação para outra máquina os leva, lacrados com a senha dela. |
| O código de configuração | Em lugar nenhum | Existe só no formulário enquanto o pareamento roda, e é limpo quando o pareamento termina, falha ou é cancelado. |
| A rede em que um dispositivo entrou | A configuração do dispositivo | O nome dela, mostrado no campo Rede do dispositivo. |
| A identidade do dispositivo | A configuração do dispositivo e a Fabric local | O Node ID. |
A senha do Wi-Fi e o dataset nunca aparecem no diário, no endereço de um dispositivo nem na Thing Description dele. Redes e pareamento não são oferecidos a agentes pelo servidor MCP: o pareamento precisa de alguém junto do dispositivo, e as redes guardam segredos.
Identidade do nó
Um dispositivo pareado fica preso ao Node ID estável de 64 bits do equipamento, mostrado somente leitura no cartão Conexão dele como 16 dígitos hexadecimais, ao lado do estado do dispositivo. O nome de exibição editável é seu para mudar; o Node ID não é. Um dispositivo cuja identidade guardada não pode mais ser lida mostra Precisa de novo pareamento no lugar dele.
O painel do dispositivo também mostra um campo Rede somente leitura: o nome da rede em que o dispositivo entrou quando foi pareado. Um dispositivo pareado por uma versão que não o registrava diz que nada foi registrado. O campo é um registro, não uma configuração: editar ou remover essa rede no cartão Redes não muda nada no dispositivo.
Como a identidade é o Node ID, dispositivos Matter mantêm estado de conexão independente: desabilitar, excluir ou perder um nó não deixa outro indisponível, e excluir um dispositivo libera apenas o uso que ele fazia da sessão segura, e não remove o equipamento da Fabric local.
Descoberta
O Descobrir no driver Matter lista os nós já comissionados na Fabric local desta aplicação e lê, de cada um, os valores que ele publica. Para lê-los, abre uma sessão segura com cada nó, então um nó que está fora da rede continua listado, sem valores, depois que a sessão dele não consegue abrir. Os candidatos da descoberta carregam a identidade do nó e nenhum segredo de configuração. O fluxo geral de descoberta está descrito em Descoberta.
| O nó | O cartão dele | Os verbos dele |
|---|---|---|
| Não tem dispositivo aqui: o dispositivo foi excluído, ou o pareamento terminou sem um | Os valores que ele publica, cada um marcado | Acrescentar dispositivo cria o dispositivo com os valores marcados como tags, sem uma cerimônia nova. |
| É um dispositivo configurado, com valores que ainda não têm tag | Marcado como já configurado, com quantos valores ele publica que ainda não são tags, e esses valores marcados | Acrescentar tags acrescenta os valores marcados a esse dispositivo; Abrir abre o dispositivo. |
| É um dispositivo configurado com uma tag para cada valor | "Já configurado, com uma tag para cada valor que o dispositivo publica." | Abrir abre o dispositivo. |
| É um dispositivo configurado que não informou nenhum valor | "Já configurado. O dispositivo não informou nenhum valor: rode Descobrir de novo quando ele estiver online." | Abrir abre o dispositivo. |
Os valores de um dispositivo configurado são comparados com as tags dele pela saída, pelo cluster e pelo atributo, nunca pelo nome: uma tag que você renomeou continua contando, e um valor nunca é acrescentado duas vezes.
A própria página do dispositivo oferece o mesmo sem sair dela: Descobrir tags, no cabeçalho do cartão Tags dele, lê só aquele nó e lista, marcados, os valores para os quais ele ainda não tem tag, com Acrescentar tags (veja Descobrir as tags de um dispositivo).
Tags
As tags de um dispositivo Matter vêm do próprio dispositivo: ninguém digita cluster nem número de atributo para elas. Um pareamento que dá certo segue direto para elas. O feed mostra "Dispositivo Matter 'Luz da cozinha' pareado.", a página abre no driver Matter, com o dispositivo novo destacado na tabela Dispositivos dele, e uma varredura só desse dispositivo roda na hora. O dispositivo que o pareamento criou aparece em Dispositivos descobertos com os valores que publica, todos marcados, e a varredura termina com "Marque os valores de 'Luz da cozinha' que vão virar tags e clique em Acrescentar tags." Desmarque o que você não quer e clique em Acrescentar tags; o feed então mostra "5 tags acrescentadas a 'Luz da cozinha'." Um dispositivo que ainda não respondeu não informa nada: "'Luz da cozinha' ainda não informou nenhum valor. Rode Descobrir de novo quando ele estiver online." O mesmo cartão volta a cada Descobrir seguinte, com os valores que o dispositivo ainda não tem como tag.
O Acrescentar tags só é desenhado para um papel com Configurar Connector. Ele fica acinzentado, com o motivo na dica, enquanto roda uma varredura ou um pareamento, enquanto a estação recusa mudanças e enquanto nada está marcado ("Marque ao menos um valor para acrescentar."). Um valor cuja saída, cluster e atributo o dispositivo já lê nunca é acrescentado de novo; quando todo valor marcado já está lá, nada é salvo: "'Luz da cozinha' já tem uma tag para cada valor marcado, então nada foi acrescentado." Um nome que outra tag do dispositivo já usa ganha um número depois dele, como em Brilho (2).
A varredura lê o que o dispositivo publica, do jeito que a especificação Matter organiza:
| O quê | Onde o dispositivo diz |
|---|---|
| As saídas dele (endpoints) | O cluster Descriptor (0x001D) no endpoint 0, atributo PartsList |
| Os clusters de cada saída | O Descriptor dessa saída, atributo ServerList |
| Os valores de cada cluster | O atributo AttributeList (0xFFFB) do cluster |
| Os comandos que cada cluster aceita | O atributo AcceptedCommandList (0xFFF9) do cluster |
| Os recursos opcionais que cada cluster implementa | O atributo FeatureMap (0xFFFC) do cluster |
| A leitura atual de cada valor | O próprio valor, lido uma vez |
O que a varredura oferece, e com qual nome:
| Um valor | Oferecido como |
|---|---|
| Um que o driver conhece (a próxima seção) | O nome claro dele no idioma da estação e o tipo que a especificação dá a ele; gravável só quando o dispositivo aceita o jeito como a especificação o muda, senão somente leitura |
| Um que o driver conhece, de um recurso que o cluster não implementa: matiz e saturação sem o recurso Hue and Saturation, temperatura de cor sem o recurso Color Temperature | Não é oferecido |
| Um que o driver não conhece | Somente leitura, com o nome dele na especificação Matter (Level Control OnLevel), ou com o cluster e o número do atributo quando o driver não conhece o atributo (On/Off attribute 0x131B0001); o tipo é o da leitura que o dispositivo devolveu |
| O mesmo valor em mais de uma saída | O nome diz qual saída, como em Brilho (saída 2) |
| Um atributo global (0xFFF8 a 0xFFFD), ou um valor do próprio nó (endpoint 0) | Não é oferecido |
| Uma lista ou uma estrutura, um valor de um tipo que o driver não carrega, um valor para o qual o dispositivo não devolveu leitura | Deixado de fora e contado na linha que fecha a varredura |
Uma tag oferecida como gravável chega com o acesso Leitura e escrita; todas as outras chegam Somente leitura.
Os valores que o driver conhece
O driver carrega uma tabela, tirada da especificação Matter, dos valores que ele conhece pelo nome e de como cada um muda. Um valor muda de um de três jeitos: um comando que o driver envia, que o dispositivo precisa listar entre os comandos que aceita; uma escrita do próprio atributo, quando a especificação o torna gravável e o dispositivo o lista; ou de jeito nenhum, para um valor que o dispositivo só informa.
| Valor | Cluster e atributo | Tipo | O que escrever nele faz no dispositivo | Faixa que a especificação define |
|---|---|---|---|---|
| Ligada | On/Off (0x0006), OnOff (0x0000) |
Boolean | true envia o comando On (0x01), false envia Off (0x00); gravável só quando o dispositivo aceita os dois |
true ou false |
| Brilho | Level Control (0x0008), CurrentLevel (0x0000) |
UInt32 | Envia MoveToLevelWithOnOff (0x04) com o nível, tempo de transição 0 e nenhuma opção sobreposta: a saída liga com o nível e desliga no mínimo |
0 a 254 |
| Matiz | Color Control (0x0300), CurrentHue (0x0000) |
UInt32 | Envia MoveToHue (0x00) pelo caminho mais curto, com tempo de transição 0; só com o recurso Hue and Saturation |
0 a 254 |
| Saturação | Color Control (0x0300), CurrentSaturation (0x0001) |
UInt32 | Envia MoveToSaturation (0x03) com tempo de transição 0; só com o recurso Hue and Saturation |
0 a 254 |
| Temperatura de cor | Color Control (0x0300), ColorTemperatureMireds (0x0007) |
UInt32 | Envia MoveToColorTemperature (0x0A) com tempo de transição 0; só com o recurso Color Temperature. O dispositivo mantém o valor dentro dos próprios limites |
0 a 65279, em mireds |
| Posição da cortina | Window Covering (0x0102), CurrentPositionLiftPercent100ths (0x000E) |
UInt32 | Envia GoToLiftPercentage (0x05) |
0 (aberta) a 10000 (fechada), em centésimos de porcento |
| Temperatura ambiente | Thermostat (0x0201), LocalTemperature (0x0000) |
Float, em °C | Nada: somente leitura | -27315 a 32767, em centésimos de grau Celsius; lê de -273,15 a 327,67 °C |
| Setpoint de resfriamento | Thermostat (0x0201), OccupiedCoolingSetpoint (0x0011) |
Float, em °C | Escreve o atributo. O dispositivo recusa um setpoint fora dos próprios limites | -27315 a 32767, em centésimos de grau Celsius; lê de -273,15 a 327,67 °C |
| Setpoint de aquecimento | Thermostat (0x0201), OccupiedHeatingSetpoint (0x0012) |
Float, em °C | Escreve o atributo. O dispositivo recusa um setpoint fora dos próprios limites | -27315 a 32767, em centésimos de grau Celsius; lê de -273,15 a 327,67 °C |
| Modo do ventilador | Fan Control (0x0202), FanMode (0x0000) |
UInt32 | Escreve o atributo | 0 desligado, 1 baixo, 2 médio, 3 alto, 4 ligado, 5 automático, 6 inteligente |
| Ajuste da velocidade do ventilador | Fan Control (0x0202), PercentSetting (0x0002) |
UInt32 | Escreve o atributo | 0 a 100 porcento |
| Velocidade do ventilador | Fan Control (0x0202), PercentCurrent (0x0003) |
UInt32 | Nada: somente leitura | 0 a 100 porcento |
| Temperatura | Temperature Measurement (0x0402), MeasuredValue (0x0000) |
Float, em °C | Nada: somente leitura | -27315 a 32767, em centésimos de grau Celsius; lê de -273,15 a 327,67 °C |
| Umidade | Relative Humidity Measurement (0x0405), MeasuredValue (0x0000) |
Float, em % | Nada: somente leitura | 0 a 10000, em centésimos de porcento; lê de 0 a 100 % |
| Luminosidade | Illuminance Measurement (0x0400), MeasuredValue (0x0000) |
UInt32 | Nada: somente leitura | 0 a 65534, que é 10000 × log10(lux) + 1 |
| Pressão | Pressure Measurement (0x0403), MeasuredValue (0x0000) |
Float, em kPa | Nada: somente leitura | -32767 a 32767, em décimos de quilopascal; lê de -3276,7 a 3276,7 kPa |
| Ocupação | Occupancy Sensing (0x0406), Occupancy (0x0000) |
Boolean | Nada: somente leitura | true quando há alguém |
| Estado | Boolean State (0x0045), StateValue (0x0000) |
Boolean | Nada: somente leitura | true ou false |
A especificação envia temperaturas, umidade e pressão em unidades fixas: centésimos de grau Celsius, centésimos de por cento e décimos de quilopascal. A descoberta oferece esses valores já em °C, % e kPa: a tag chega com o fator no estágio Escala dela (0,01 para uma temperatura e uma umidade, 0,1 para uma pressão) e com a unidade, então um dispositivo que envia 2150 lê 21,5 °C. Uma escrita desfaz esse estágio antes de o valor sair, então um setpoint escrito como 21,5 chega ao dispositivo como 2150. A luminosidade é logarítmica (10000 × log10(lux) + 1), então nenhum fator a converte: ela lê o número que o dispositivo envia. Todo outro valor também lê como o dispositivo envia.
Fechaduras, cor por coordenadas X e Y, cenas, grupos e o comando Toggle não estão na tabela. Um
dispositivo Matter também não tem comandos próprios: toda mudança é uma escrita numa das tags dele.
Escrever um valor
Uma tag Matter com acesso Leitura e escrita muda o dispositivo quando é escrita: pelo cartão Valor ao vivo dela, por um controle de dashboard, pela Logic ou por um agente. A escrita entra na fila do dispositivo como a de qualquer driver, na vez dela junto com as leituras do dispositivo, e a resposta é a do próprio dispositivo. O driver escolhe o comando Matter ou a escrita do atributo a partir da tabela; ninguém escolhe comando. Só o SUCCESS do dispositivo conta como escrito. Todo o resto é recusado, com um motivo:
| O que acontece | Onde se decide | O motivo dado |
|---|---|---|
| O ponto não é um valor da tabela do driver | Antes de qualquer envio | O driver não sabe como o dispositivo muda esse valor, então a tag só o lê. |
| O ponto é um valor que a tabela marca como somente leitura | Antes de qualquer envio | O dispositivo informa esse valor e nada de fora o define. |
| O valor escrito não é true nem false (num valor Boolean), ou não é um número inteiro | Antes de qualquer envio | O que o valor aceita, e o que foi escrito. |
| O valor está fora da faixa que a especificação define | Antes de qualquer envio | A faixa, como a tabela acima a dá. |
| A tag não nomeia cluster | Antes de qualquer envio | Que um valor Matter é achado pela saída, pelo cluster e pelo atributo dele. |
| O dispositivo responde com qualquer status que não seja SUCCESS | Pelo dispositivo | O status como o dispositivo deu: o nome dele na especificação e o número dele, por exemplo CONSTRAINT_ERROR, 0x87 (o valor está fora do que o dispositivo aceita) ou UNSUPPORTED_COMMAND, 0x81 (o dispositivo não aceita o comando que muda esse valor). Um status que o cluster acrescenta vem depois (FAILURE, 0x01, cluster 0x02), e um status que a especificação não nomeia lê só com o número. |
| O dispositivo não responde a tempo | Pelo dispositivo | Sem resposta. |
Uma escrita recusada nunca é informada como escrita, nem como equipamento fora de alcance. Na página
da tag, a linha de status mostra "Escrita recusada pelo equipamento: CONSTRAINT_ERROR, 0x87."
quando o dispositivo recusou, com o motivo no lugar do status para uma recusa resolvida antes de
qualquer envio, e "Escrita não confirmada: o equipamento não respondeu a tempo." quando nenhuma
resposta veio; "A escrita falhou: não foi possível alcançar o equipamento." fica para um
dispositivo que não está conectado. O motivo também viaja com a escrita: a linha do diário da
escrita o nomeia, com o que o status quer dizer, e o tag_write de um agente o devolve.
Uma tag feita à mão
Para o valor raro que o dispositivo não publica de um jeito que a varredura ofereça, o Acrescentar
tag num dispositivo Matter cria uma tag para preencher à mão. O cartão Origem dela mostra três
campos numa linha, e a prévia do endereço embaixo deles os monta como
<endpoint>/<cluster>/<attribute>, em decimal (1/8/0 é o brilho da primeira saída). Enquanto
nenhum cluster é escolhido, a tag não é salva, e o painel diz: "Escolha o cluster que esta tag lê.
Sem ele, nada é pedido ao dispositivo."
| Campo | O que faz | Valores | Padrão |
|---|---|---|---|
| Saída (endpoint) | Qual saída do dispositivo a tag lê. | de 0 a 65535; 1 é a primeira saída controlável, 0 o próprio nó | 1 |
| Cluster Matter | Qual cluster dessa saída a tag lê. | Os clusters do catálogo Matter pelo nome na especificação com o número, como em Level Control (0x0008); um cluster que o catálogo não nomeia, achado por uma varredura, aparece primeiro pelo número |
nenhum |
| Atributo | Qual atributo do cluster a tag lê. | 0 ou mais; 0 é o valor do próprio cluster | 0 |
O nome da tag é livre: ele nomeia a tag e não seleciona nada no dispositivo. O tipo de dado é escolhido entre Boolean, Int32, UInt32, Float, Double e String; uma leitura que o tipo declarado não consegue representar lê como erro, e não como número de substituição. O valor chega como o dispositivo envia: uma temperatura, uma umidade ou uma pressão feita à mão lê em centésimos ou décimos até você dar a ela, no estágio Escala, o fator e a unidade da tabela acima.
O campo de acesso oferece escrita só onde a tabela do driver muda o valor; senão, oferece Somente leitura e diz embaixo por quê:
| O ponto | O campo de acesso oferece | O que ele diz |
|---|---|---|
| Um valor da tabela que um comando ou uma escrita do atributo muda | Somente leitura, Somente escrita e Leitura e escrita | Nada |
| Nenhum cluster escolhido ainda | Somente leitura | "Somente leitura até a tag indicar um valor do dispositivo: escolha o cluster dela." |
| Um valor que a tabela não conhece | Somente leitura | "Somente leitura: o driver não sabe como o dispositivo muda este valor." |
| Um valor que a tabela marca como somente leitura | Somente leitura | "Somente leitura: o dispositivo informa este valor, e nada de fora o define." |
Quando uma edição da saída, do cluster ou do atributo aponta a tag para um valor que o driver não consegue escrever, o acesso dela volta a Somente leitura. Uma tag que a descoberta ofereceu mantém o acesso que a descoberta deu, porque só a descoberta pergunta ao dispositivo quais comandos ele aceita: um valor que o dispositivo não listou continua Somente leitura, e o campo continua oferecendo escrita.
Tags salvas por versões anteriores
Uma versão anterior nomeava o cluster de uma tag Matter só pelo nome da tag, com o endereço
<endpoint>/<attribute>. Quando esta versão inicia pela primeira vez, toda tag de um dispositivo
Matter cujo nome é um cluster do catálogo Matter (a parte depois dos últimos dois-pontos, sem os
espaços em volta, maiúsculas ignoradas) recebe esse cluster, então continua lendo exatamente o valor
que lia. O nome dela fica como estava, e a prévia do endereço passa a mostrar
<endpoint>/<cluster>/<attribute>. Uma tag cujo nome não batia com nenhum cluster nunca leu nada:
ela fica sem cluster, as leituras dela são recusadas com um motivo que diz isso, e a página dela
pede o cluster. Uma tag convertida mantém o acesso que tinha, Somente leitura, o único que aquelas
versões ofereciam; para escrevê-la, escolha Leitura e escrita, que funciona para os valores da
tabela acima.