node - matheuswhite/bluebees GitHub Wiki

Módulo node

O módulo node é responsável pelo gerenciamento dos nós da rede mesh bluetooth. Este módulo possui os seguintes comandos:

Comando new

[CORE REQUIRED] Este comando provisiona um dispositivo. Isto é, adiciona um novo nó na rede apartir de um dispositivo que não está na rede. Existem 5 argumrntos possíveis que este comando pode receber:

  • nome: Este argumento é passado após a flag --name (ou -n). Seu valor definirá o nome do nó que será criado. Caso um nó com o mesmo nome já exista, então o comando retornará um erro. Este argumento é obrigatório (caso o argumento template não for especificado)
  • rede: Este argumento é passado após a flag --network (ou -w). Seu valor definirá o nome da rede, na qual o nó será cadastrado. Caso não exista uma rede com o nome especificado, então o comando retornará um erro. Este argumento é obrigatório (caso o argumento template não for especificado)
  • UUID: Este argumento é passado após a flag --uuid (ou -i). Seu valor definirá o UUID do dispositivo alvo do provisionamento. Este argumento é obrigatorio (caso o argumento template não for especificado). O UUID deve ser passado como uma hexstring, contendo no máximo 16 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. Se o valor do UUID possuir menos de 16 bytes, então a quatidade de bytes que falta para completar os 16 bytes serão preenchidos com 00h.
  • endereço: Este argumento é passado após a flag --address (ou -a). Seu valor definirá o endereço do nó que será criado. Este argumento é opcional. Se não for especificado, então um valor aleatório será disponibilizado para o endereço do nó que será criado. Esse argumento deve ser uma hexstring, contendo 2 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. O comando retornará um erro, se já existir um nó com o mesmo valor do endereço especificado.
  • template: Este argumento é passado após a flag --template (ou -t). O valor especificado deve ser um arquivo de template, para a criação do nó (veja isto para mais informações sobre arquivo de template). As palavras chave utilizada neste arquivo de template são: name (representando o nome do nó), network (representando o nome da rede, na qual o nó será cadrastrado), address (representando o endereço do nó) e uuid (representando o UUID do dispositivo alvo do provisionado). O comando retornará um erro, se:
    • Não existir a palavra-chave name no arquivo especificado;
    • Não existir a palavra-chave network no arquivo especificado;
    • Não existir a palavra-chave uuid no arquivo especificado;
    • Já existir um nó com o nome especificado no arquivo;
    • Não existir uma rede com o nome especificado no arquivo;
    • Já existir um nó com a chave especificada no arquivo.

Se a palavra chave address não for encontrada no arquivo especificado, então o endereço do nó será gerado aleatoriamente. A utilização deste argumento torna os argumentos nome e rede não obrigatórios.

O processo de provisionamento é composto por 11 etapas. Em cada etapa, várias tentativas são realizadas para garantir que o provisionamento seja concluído. Entretanto este processo pode falhar. Na presença de erros uma mensagem de erro será mostrada e o comando deverá ser reiniciado.

Alguns exemplos deste comando são mostrados abaixo:

(UNIX)
python3 bluebees.py node new --name no-test -w rede-test --uuid aabb
python3 bluebees.py node new --name no-test -w rede-test --uuid aabb --key 7aba
python3 bluebees.py node new --template no_template.yml
(Windows)
python bluebees.py node new --name no-test -w rede-test --uuid aabb
python bluebees.py node new --name no-test -w rede-test --uuid aabb --key 7aba
python bluebees.py node new --template no_template.yml

NOTA: Caso o número máximo de nós, que podem ser criadas, for alcançado, então o comando retornará um erro.


Comando list

Este comando lista o nome dos nós criados na ferramenta. Caso não exista nenhum nó criado na ferramenta, então uma mensagem será mostrada, informando que não existe nós criados. Este comando não recebe argumentos. Um exemplo do comando é mostrado abaixo:

(UNIX)
python3 bluebees.py node list
(Windows)
python bluebees.py node list

Comando info

Este comando apresenta as informações de um nó criado na ferramenta. O único argumento que este comando recebe é o nome do nó. O nome do nó é passado após a flag --name (ou -n). Se não existir nenhum nó com o nome especificado, então o comando retornará um erro. As informações apresentadas são:

  • Nome da nó;
  • Endereço do nó;
  • O device UUID do dispositivo;
  • Chave de dispositivo (DevKey);
  • Sequence number (SEQ number);
  • Nome da rede, na qual o nó está cadastrada;
  • Uma lista com o nome das aplicações que o nó está cadastrado.

Um exemplo do comando é mostrado abaixo:

(UNIX)
python3 bluebees.py node info -n no-test
(Windows)
python bluebees.py node info -n no-test

Comando send

[CORE REQUIRED] Este comando envia uma mensagem para um nó da rede mesh bluetooth. Este comando pode receber os seguintes argumentos e opções:

  • alvo: Este argumento é passado após a flag --target (ou -t). Seu valor definirá o nome do nó, cuja a mensagem será enviada. Caso não exista um nó com o nome especificado, então o comando retornará um erro. Este argumento é obrigatório.
  • opcode: Este argumento é passado após a flag --opcode (ou -o). Seu valor definirá o opcode da mensagem que será enviada. Esse argumento deve ser uma hexstring, contendo 1, 2 ou 3 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. Este argumento é obrigatório.
  • parametros: Este argumento é passado após a flag --parameters (ou -p). Seu valor definirá os parametros da mensagem que será enviada. Esse argumento deve ser uma hexstring, contendo no máximo 379 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. Este argumento é obrigatório.
  • aplicação: Este argumento é passado após a flag --app (ou -a). Seu valor definirá qual será a aplicação utilizada pela mensagem. Esse argumento não é obrigatório. Caso esse argumento não for especificado, então a ferramenta irá utilizar a primeira aplicação que o nó está cadastrado. O comando retornará um erro se o nó não estiver cadastrado em nenhuma aplicação e a opção --devkey não for habilitada.
  • devkey: Esta opção é habilitada pela flag --devkey. Quando habilitada, esta opção diz a ferramenta para utilizar o devkey ao invés de procurar uma aplicação (para usar a AppKey).

Alguns exemplos deste comando são mostrados abaixo:

(UNIX)
python3 bluebees.py node send --target no-test -o 8202 -p 01000000
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 --app app-test
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 --devkey
(Windows)
python3 bluebees.py node send --target no-test -o 8202 -p 01000000
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 --app app-test
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 --devkey

Comando req

[CORE REQUIRED] Este comando envia uma mensagem para um nó e espera uma resposta. Este comando pode receber os seguintes comandos e opções:

  • alvo: Este argumento é passado após a flag --target (ou -t). Seu valor definirá o nome do nó, cuja a mensagem será enviada e respondida. Caso não exista um nó com o nome especificado, então o comando retornará um erro. Este argumento é obrigatório.
  • opcode: Este argumento é passado após a flag --opcode (ou -o). Seu valor definirá o opcode da mensagem que será enviada. Esse argumento deve ser uma hexstring, contendo 1, 2 ou 3 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. Este argumento é obrigatório.
  • parametros: Este argumento é passado após a flag --parameters (ou -p). Seu valor definirá os parametros da mensagem que será enviada. Esse argumento deve ser uma hexstring, contendo no máximo 379 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. Este argumento é obrigatório.
  • r_opcode: Este argumento é passado após a flag --r_opcode (ou -r). Seu valor definirá o opcode esperado da mensagem resposta. Esse argumento deve ser uma hexstring, contendo 1, 2 ou 3 bytes. Uma hexstring é um valor hexadecimal no formato de string, sendo que cada par de caracteres representam um byte. Este argumento é obrigatório.
  • aplicação: Este argumento é passado após a flag --app (ou -a). Seu valor definirá qual será a aplicação utilizada pela mensagem. Esse argumento não é obrigatório. Caso esse argumento não for especificado, então a ferramenta irá utilizar a primeira aplicação que o nó está cadastrado. O comando retornará um erro se o nó não estiver cadastrado em nenhuma aplicação e a opção --devkey não for habilitada.
  • devkey: Esta opção é habilitada pela flag --devkey. Quando habilitada, esta opção diz a ferramenta para utilizar o devkey ao invés de procurar uma aplicação (para usar a AppKey).

Alguns exemplos deste comando são mostrados abaixo:

(UNIX)
python3 bluebees.py node req --target no-test -o 8202 -p 01000000 -r 8203
python3 bluebees.py node req --target no-test -o 8202 -p 01000000 -r 8203 --app app-test
python3 bluebees.py node req --target no-test -o 8202 -p 01000000 -r 8203 --devkey
(Windows)
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 -r 8203
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 -r 8203 --app app-test
python3 bluebees.py node send --target no-test -o 8202 -p 01000000 -r 8203 --devkey

Comando config

[CORE REQUIRED] Este comando configura um determinado nó, criado pela ferramenta. A configuração deste comando consiste em três partes:

  • Adição de chaves de aplicação (AppKey) a um nó;
  • Atribuição de endereços de publicação e inscrição a modelos;
  • Envio de comandos pós-configuração

Cada uma destas etapas correspondem à uma região do arquivo de configuração (veja esta seção para mais informações sobre arquivo de configuração). Os argumentos recebidos são:

  • nome: Este argumento é passado após a flag --name (ou -n). Seu valor definirá o nome do nó que será configurado. Caso não exista um nó o nome especificado, então o comando retornará um erro. Este argumento é obrigatório.
  • configuração: Este argumento é passado após a flag --config (ou -c). O valor especificado deve ser um arquivo de configuração, para a configurar o nó (veja esta seção para mais informações sobre arquivo de configuração). Caso o arquivo não exista, o comando retornará um erro.

O formato do comando é mostrado a seguir:

(UNIX)
python3 bluebees.py node config --name no-test -c node_config.yml
(Windows)
python3 bluebees.py node config --name no-test -c node_config.yml