Como unificar as redes Threads do SmartThings e Home Assistant?

Infelizmente, mesmo fazendo parte do consórcio OpenThread, a Samsung tem se mostrado bastante restritiva ao utilizar sua rede Thread. Até então, não existe nenhuma UI ou forma simples de utilizar a rede Thread da Samsung para adicionar dispositivos em outras plataformas, obrigando o usuário a sempre utilizar o app SmartThings para efetuar o pareamento inicial.

Contudo, vasculhando algumas páginas do SmartThings, é possível obter certas credenciais, como a senha e o PAN ID do hub SmartThings, o que, por meio de um script Python, permite utilizar a rede com o Home Assistant.

Utilizando o aplicativo Home Assistant no iOS, também é possível exportar as credenciais do SmartThings com o iCloud Keychain, tornando viável adicionar dispositivos à rede Thread do SmartThings mesmo utilizando o processo de adição da Apple!

Vamos ao passo a passo:

Obtenha as credenciais

  1. Acesse a página de configurações do hub SmartThings e selecione o hub correspondente.
  2. Na página de configurações, role a tela até encontrar as informações da rede Thread do hub, que deverá conter o Network Key (semelhante à senha de sua rede Wi-Fi), Channel, o PAN ID e o Extended PAN ID (similar ao nome da sua rede Wi-Fi).
Informações da rede Thread criada pelo hub SmartThings. (Imagem: PontoByte/Vitor Gomes).

Como o código PAN ID fornecido pela Samsung está em decimal, precisamos o converter para hexadecimal. Para isso, podemos utilizar ferramentas online disponíveis no próprio Google.

    Converta nossas credenciais em um conjunto de dados TLV

    Em um computador com o Python instalado, crie um arquivo chamado tlv.py e cole o script abaixo para obter o código TLV. Talvez seja necessário instalar a biblioteca python_otbr_api com os comandos pip install python_otbr_api ou python3 -m pip install python_otbr_api.

    Lembre-se de substituir as informações como o canal do Thread, Channel, PAN ID, PAN ID Expandido e Network Key pelos valores que você obteve da página do Samsung SmartThings.

    import python_otbr_api
    from python_otbr_api import PENDING_DATASET_DELAY_TIMER, tlv_parser
    from python_otbr_api.pskc import compute_pskc
    from python_otbr_api.tlv_parser import MeshcopTLVType, MeshcopTLVItem
    
    CHANNEL = <Canal do Thread>
    PANID = "<Seu PAN ID em Hexadecimal>"
    EXTPANID = "<PAN ID estendido>"
    NETWORK_KEY = "<Network Key do SmartThings>"
    TIMESTAMP = b'\x00\x00\x00\x00\x00\x03\x00\x00'
    
    channel = MeshcopTLVItem(tag=0, data=CHANNEL.to_bytes(length=3, byteorder='big'))
    pan_id= MeshcopTLVItem(tag=1, data=bytes.fromhex(PANID))
    ext_pan_id = MeshcopTLVItem(tag=2, data=bytes.fromhex(EXTPANID))
    network_key = MeshcopTLVItem(tag=5, data=bytes.fromhex(NETWORK_KEY))
    timestamp = MeshcopTLVItem(tag=14, data=TIMESTAMP)
    
    tlv_new = {0: channel, 1: pan_id, 2:ext_pan_id, 4: network_key, 14: timestamp}
    tlv  = tlv_parser.encode_tlv(tlv_new)
    print(tlv)

    Script retirado do forum do Home Assistant.

    Agora, utilizando o terminal do seu computador, execute o script com os comandos python3 tlv.py ou pip tlv.py para obter o seu TLV.

    Exemplo do valor TLV obtido utilizando o script acima. (Imagem: PontoByte/Vitor Gomes).

    Adicione o TLV no Home Assistant

    1. Com posse do código TLV, acesse seu Home Assistant e vá em Configurações > Dispositivos e Serviços.
    2. Caso já tenha uma rede Thread configurada, você encontrará uma integração chamada Thread.
    3. Dentro da integração Thread, toque em Configurar e nos três pontos no canto superior direito.
    4. Na página, selecione a opção Adicionar conjunto de dados TLV e cole o código TLV gerado pelo script Python.
    Opção para adicionar o código TLV obtido na etapa anterior, por meio do script python. (Imagem: PontoByte/Vitor Gomes).

    Unifique as redes!

    Se o código TLV for aceito, você verá uma pequena chave ao lado da sua rede SmartThings e a opção Make Preferred Network disponível, na qual deverá tocar para tornar a rede SmartThings a preferida pelo Home Assistant.

    Rede Samsung SmartThings JÁ definida como a preferida, enquanto a rede ha-thread, oriunda do Home Assistant, se tornou uma secundária. (Imagem: PontoByte/Vitor Gomes).

    Por fim, Toque nos três pontos correspondentes ao seu dongle Thread no Home Assistant e selecionar Adicionar à rede preferida.

        Opção de adicionar dongle Thread do Home Assistant à rede SmartThings. (Imagem: PontoByte/Vitor Gomes).

        Feito isso, seu dongle Thread do Home Assistant se juntará à rede SmartThings, ajudando a expandir a cobertura e podendo atuar como um segundo Thread Border Router, caso o hub Thread do SmartThings pare de funcionar.

        Dongle Thread do Home Assistant (um Sonoff dongle-e) unificado com a rede Thread do SmartThings, auxiliando a expandir o sinal e atuar como failover. (Imagem: PontoByte/Vitor Gomes).

          E quanto ao Apple Home?

          Infelizmente, ainda não é possível forçar os HomePods e Apple TVs a se conectarem à rede Thread da Samsung ou a uma rede Thread existente do Home Assistant. O comportamento padrão é a criação de uma nova rede sempre, e isso só deverá mudar com a adoção do novo protocolo Thread 1.4, que priorizará a conexão a redes existentes.

          Todavia, segundo relatos, uma vez que as credenciais das redes estão salvas no Apple Keychain, os HomePods podem, eventualmente, se conectar a uma rede existente com o intuito de expandir a rede atual, ao invés de criar uma nova. No entanto, essa mudança ocorre de forma automática e aleatória, seguindo critérios desconhecidos.

          Com as chaves do SmartThings salvas no Home Assistant, é extremamente fácil exportá-las para o Apple Keychain no iOS. Basta seguir estes passos:

          1. Abra o aplicativo Home Assistant e vá para as configurações do Thread, onde estão listadas as redes disponíveis.
          2. Selecione um dispositivo para ser o roteador de credenciais tocando nos três pontos correspondentes ao hub SmartThings ou ao dongle Thread conectado ao Home Assistant.
          3. Toque na opção Send Credentials to Phone e pronto!
          Adicionando credenciais da rede Thread do SmartThings ao Apple Keychain. (Imagem: PontoByte/Vitor Gomes).

          Se tudo ocorreu bem, as credenciais da rede Thread do SmartThings estão salvas no iOS e agora podem ser usadas até para a adição de dispositivos Thread utilizando a rede ST- ao invés da rede padrão do Apple Home.

          É possível conferir as redes Threads salvas no Apple Keychain utilizando o aplicativo Home Assistant. Para isso, vá em Configurações e procure a opção de Aplicativo Móvel. Nessa tela, desça até Depuração e, por fim, toque em Thread.

          Todas as credenciais da rede Thread salvas no Apple Keychain. (Imagem: PontoByte/Vitor Gomes).

          Vitor Gomes, também conhecido como vctgomes, é bacharel em Engenharia Elétrica pela UniFG (Centro Universitário UniFG). Ele tem 25 anos e vive no interior da Bahia. Graças à sua habilidade em TI, conhecimento em informática e seus hobbies em casa inteligente, decidiu criar o PontoByte.com, onde expõe suas opiniões sobre vários produtos de casa inteligente.