> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/pt-br/guide/devices-and-settings/object-management/commands.md).

# Comandos

Defina comandos personalizados de dispositivo e software para um dispositivo GPS na Navixy e envie-os sob demanda pelo widget do objeto.

O **Comandos** bloco permite que você defina comandos personalizados para um dispositivo no Navixy e os envie sob demanda a partir do [widget Objeto](/docs/user/pt-br/guide/tracking/objects-list/object-widget.md) ou o [X-GPS Mobile](/docs/user/pt-br/guide/x-gps-mobile-apps/x-gps-mobile.md) aplicativo. Use-o para enviar uma instrução em nível de firmware diretamente para um dispositivo, como enviar um comando CAN ou ativar uma saída, ou para chamar qualquer sistema externo que aceite solicitações HTTP, como um canal do Slack, um serviço de notificações, um CRM ou um endpoint de API personalizado. Depois de configurados, os comandos podem ser enviados com um único clique.

O bloco Comandos oferece suporte a dois tipos de comando:

* **Comando do dispositivo** envia uma cadeia de instrução em nível de protocolo diretamente para o dispositivo, por exemplo, para enviar um comando CAN ou ativar uma saída.
* **Comando de software** envia uma solicitação HTTP POST com um corpo JSON para qualquer URL, incluindo opcionalmente dados atuais do dispositivo, como localização, velocidade ou ID do dispositivo, na carga útil.

Os comandos são salvos por dispositivo e permanecem disponíveis para uso repetido.

{% hint style="info" %}
**Quando usar Commands versus IoT Logic**

Comandos foi projetado para ações manuais ad hoc direcionadas a um único dispositivo. Use-o quando precisar enviar um comando único sem configurar um fluxo de automação.

Para envio automatizado de comandos com base em regras, como acionar uma Ação do dispositivo ou um webhook quando um limite de sensor for ultrapassado, ou enviar o mesmo comando para vários dispositivos, use [IoT Logic](/docs/user/pt-br/guide/account/iot-logic.md). Os nós  **Ação**  e  **Webhook**  no IoT Logic fornecem os mesmos recursos subjacentes com automação completa do fluxo e direcionamento para vários dispositivos.
{% endhint %}

## Configuração

Para configurar Comandos para um dispositivo, siga estas etapas:

1. Acesse **Dispositivos e configurações** na barra lateral esquerda.
2. Selecione o dispositivo que você deseja configurar.
3. Localize e expanda o **Comandos** bloco.

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-0b08686ab5211cfcdda8ed6f2edc4f90b87fdc6a%2Foutput-control-block.png?alt=media" alt="Commands block showing device and software command options"><figcaption></figcaption></figure>

Você pode adicionar vários comandos de cada tipo. Cada comando é salvo individualmente.

### Comandos do dispositivo

Um **comando do dispositivo** envia uma cadeia de instrução em nível de protocolo diretamente para o dispositivo por seu canal de comunicação.

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4fb41dda6033a61f1af4dbdae9e75b73ddf14353%2Foutput-control-device-vommand.png?alt=media" alt="Device command form with Command name and Command string fields"><figcaption></figcaption></figure>

Para adicionar um comando do dispositivo, clique em **Adicionar comando do dispositivo** na parte inferior do bloco. Configure os seguintes campos:

1. **Nome do comando**: um rótulo para o comando, conforme aparece no widget Objeto, por exemplo `reinicialização do dispositivo`. Escolha um nome que descreva claramente o que o comando faz.
2. **String do comando**: a cadeia exata de instrução enviada ao dispositivo, por exemplo `cpureset`.

{% hint style="warning" %}
As strings de comando válidas são específicas de cada dispositivo e definidas pelo fabricante do dispositivo. Consulte sempre a documentação oficial do seu modelo de dispositivo para encontrar as strings de comando corretas. Inserir valores incorretos pode ter efeitos indesejados no dispositivo.
{% endhint %}

Clique em **Salvar** para armazenar o comando. Clique em **Excluir** para removê-lo.

### Comandos de software

Um **comando de software** envia uma solicitação HTTP POST com um corpo JSON para uma URL que você especificar. Isso pode ser um endpoint de serviço externo, como Slack, um receptor de webhook personalizado, ou qualquer API REST, ou um endpoint de API da Navixy.

O corpo da solicitação é JSON e deve ser estruturado de acordo com o que o endpoint de destino espera. Você pode incluir atributos de dados do dispositivo no corpo usando a `{{attribute_name}}` sintaxe.

Os comandos de software são configurados em duas abas: **Geral**  e  **Corpo**.

Para adicionar um comando de software, clique em **Adicionar comando de software** na parte inferior do bloco.

#### Aba Geral

{% columns %}
{% column width="58.333333333333336%" %}
Configure o seguinte:

1. **Título**: um rótulo para o comando conforme aparece no widget Objeto.
2. **URL**: a URL completa do endpoint para onde a solicitação POST é enviada, por exemplo `https://hooks.slack.com/services/...` ou `https://api.eu.navixy.com/v2/...`.
3. **Cabeçalhos**: pares chave-valor enviados como cabeçalhos da solicitação HTTP. Adicione cabeçalhos conforme necessário para o endpoint de destino. Clique em **Adicionar cabeçalho** para inserir uma nova linha.
   * Use o `Authorization` cabeçalho para autenticação baseada em token, por exemplo `Authorization` definido como `Bearer your_token`.
   * Outros métodos de autenticação suportados pelo destino, como Chaves de API passadas como parâmetros de consulta na URL, também podem ser usados.
     {% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-38e4eab9ed360e81a51ad8247392a8b9104d5db4%2Foutput-control-software-command-general.png?alt=media" alt="Software command General tab with Title, URL, and Headers fields"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

#### Aba Corpo

{% columns %}
{% column width="58.333333333333336%" %}
O **Corpo** o campo é onde você compõe a carga útil JSON. Escreva JSON válido que corresponda ao formato esperado pelo endpoint de destino.

Para incluir dados ao vivo do dispositivo na carga útil, use a `{{attribute_name}}` sintaxe. Clique no botão do seletor de atributos <img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-1fa59f996fe69fa378ac659fa97f7e00c376f263%2Fimage.png?alt=media" alt="" data-size="line"> no canto superior direito do campo do corpo para abrir uma lista pesquisável de atributos disponíveis para o dispositivo. Selecionar um atributo insere o `{{attribute_name}}` marcador correspondente no corpo na posição do cursor.
{% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-82eaece7ab729a184238a6d1f3413b4fec7300ab%2Foutput-control-software-command-body.png?alt=media" alt="Software command Body tab with JSON body field and attribute picker"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Os atributos disponíveis dependem do dispositivo específico e dos dados que ele transmite à plataforma Navixy. Somente os atributos realmente enviados pelo dispositivo aparecem na lista. Use o seletor para evitar erros de digitação ou nomes de atributos incorretos.
{% endhint %}

Clique em **Salvar** para armazenar o comando. Clique em **Excluir** para removê-lo.

#### Exemplo: envio de uma notificação do Slack

O Slack oferece suporte ao recebimento de mensagens de serviços externos via Webhooks de entrada. Depois de configurar um webhook em seu workspace do Slack e obter a URL do webhook (consulte o [guia Webhooks de entrada do Slack](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/)), crie um comando de software com a seguinte configuração.

**Aba Geral:**

* **Título**: `Notificar Slack`
* **URL**: sua URL de Webhook de entrada do Slack, por exemplo `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX`
* **Cabeçalhos**: nenhum cabeçalho necessário

**Aba Corpo:**

{% code overflow="wrap" %}

```json
{
  "text": "Dispositivo {{device_id}}: velocidade {{speed}} km/h em {{latitude}}, {{longitude}}"
}
```

{% endcode %}

O Slack espera um objeto JSON com um `campo text` . Os `{{device_id}}`, `{{speed}}`, `{{latitude}}`, e `{{longitude}}` marcadores são substituídos pelos valores atuais do dispositivo no momento em que o comando é enviado. Quando acionado a partir do widget Objeto, a mensagem aparece no canal do Slack configurado para o seu webhook.

### Valores dinâmicos do comando

Uma string de comando ou o corpo de um comando de software pode incluir um único `<>` marcador para solicitar um valor toda vez que você enviar o comando, em vez de codificar um valor fixo.

* Em um comando do dispositivo, adicione `<>` dentro do **String do comando** campo, por exemplo `relay,<>` para enviar um estado de relé diferente a cada envio.
* Em um comando de software, adicione `<>` dentro do **Corpo** campo, por exemplo `{"value": "<>"}`.

Apenas um `<>` marcador é permitido por comando. Salvar um comando com mais de um marcador retorna o erro "Only one value is allowed per command. Remove the extra < >."

Quando você enviar um comando que contenha `<>` a partir do widget Objeto, uma caixa de diálogo solicita o valor antes do envio. Consulte [Enviando comandos a partir do widget Objeto](#sending-commands-from-the-object-widget) para ver o fluxo completo.

{% hint style="info" %}
Clique no ícone de ajuda no bloco Commands para abrir **Como os valores do comando funcionam**, um resumo de `<>` sintaxe.
{% endhint %}

## Enviando comandos a partir do widget Objeto

Depois que os comandos são salvos, eles aparecem no **Comandos** bloco do widget Objeto do dispositivo [widget Objeto](/docs/user/pt-br/guide/tracking/objects-list/object-widget.md) no módulo Monitor.

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-d3074f8879c2b2a0b719e8d54783c387e53a2794%2Fobject-widget-commands.png?alt=media" alt="Object widget Commands block showing two commands with send buttons"><figcaption></figcaption></figure>

Clique no **enviar** botão ao lado de um nome de comando para enviá-lo. O bloco Commands mostra todos os comandos do dispositivo e os comandos de software configurados para esse dispositivo.

* Se o comando não contiver um [marcador de valor dinâmico](#dynamic-command-values), a Navixy o envia imediatamente. Não há caixa de diálogo de confirmação.
* Se o comando contiver `<>`, uma caixa de diálogo será aberta solicitando que você informe um valor. Insira um valor de até 500 caracteres e clique em **Enviar** para enviar o comando com o valor substituído por `<>`. Os nós  **Enviar** o botão permanece desativado até que você informe um valor, e valores vazios ou contendo apenas espaços em branco não são aceitos.

Depois que o comando é executado, a Navixy exibe uma notificação com o resultado:

* **Comandos do dispositivo** mostrar apenas se o comando foi bem-sucedido, como `{ "success": true }` ou `{ "success": false }`.
* **Comandos de software** mostrar o nome do comando e a resposta bruta do endpoint de destino, como `{status, body}`. Respostas longas podem ser roladas dentro da notificação.

Os comandos enviados também aparecem no [Eventos recentes](/docs/user/pt-br/guide/tracking/objects-list/object-widget.md#data-blocks) bloco do widget Objeto, com o resultado disponível em uma visualização expansível. Se o comando incluir um [marcador de valor dinâmico](#dynamic-command-values), o título da entrada também mostra o valor enviado, por exemplo `Atualizar status <on-line>`.

<figure><img src="https://1308974401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-a0310f4425c07ba87b52177eb45073451f14a827%2Frecent-events-command-value.png?alt=media" alt="Recent events entry showing the sent value in the entry title next to the command name"><figcaption></figcaption></figure>

{% hint style="info" %}
Os comandos são por dispositivo. Os comandos configurados para um dispositivo não aparecem nos widgets Objeto de outros dispositivos. Para enviar comandos para vários dispositivos com base em regras ou condições, use IoT Logic.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/user/pt-br/guide/devices-and-settings/object-management/commands.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
