> 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/es/guide/devices-and-settings/object-management/commands.md).

# Comandos

Defina comandos personalizados del dispositivo y del software para un dispositivo GPS en Navixy y envíelos a demanda desde el widget de Objeto.

El **Comandos** bloque le permite definir comandos personalizados para un dispositivo en Navixy y enviarlos a demanda desde el widget de Objeto del dispositivo [widget de Objeto](/docs/user/es/guide/tracking/objects-list/object-widget.md) o el [X-GPS Mobile](/docs/user/es/guide/x-gps-mobile-apps/x-gps-mobile.md) app. Úselo para enviar una instrucción a nivel de firmware directamente a un dispositivo, como enviar un comando CAN o activar una salida, o para llamar a cualquier sistema externo que acepte solicitudes HTTP, como un canal de Slack, un servicio de notificación, un CRM o un endpoint de API personalizado. Una vez configurados, los comandos pueden enviarse con un solo clic.

El bloque de Comandos admite dos tipos de comando:

* **Comando del dispositivo** envía una cadena de instrucción a nivel de protocolo directamente al dispositivo, por ejemplo para enviar un comando CAN o activar una salida.
* **Comando de software** envía una solicitud HTTP POST con un cuerpo JSON a cualquier URL, incluyendo opcionalmente datos actuales del dispositivo, como ubicación, velocidad o ID del dispositivo, en la carga útil.

Los comandos se guardan por dispositivo y permanecen disponibles para usarse repetidamente.

{% hint style="info" %}
**Cuándo usar Comandos frente a IoT Logic**

Comandos está diseñado para acciones manuales ad hoc dirigidas a un solo dispositivo. Úselo cuando necesite enviar un comando único sin configurar un flujo de automatización.

Para el envío automatizado de comandos basado en reglas, como activar una Acción del dispositivo o un Webhook cuando se supera un umbral de sensor, o enviar el mismo comando a varios dispositivos, use [IoT Logic](/docs/user/es/guide/account/iot-logic.md). La **Acción del dispositivo** y **Webhook** nodos en IoT Logic ofrecen las mismas capacidades subyacentes con automatización completa del flujo y capacidad de dirigirse a múltiples dispositivos.
{% endhint %}

## Configuración

Para configurar Comandos para un dispositivo, siga estos pasos:

1. Vaya a **Dispositivos** en la barra lateral izquierda.
2. Seleccione el dispositivo que desea configurar.
3. Ubique y expanda el **Comandos** bloque.

<figure><img src="https://1900701122-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>

Puede agregar varios comandos de cada tipo. Cada comando se guarda por separado.

### Comandos del dispositivo

Un **comando del dispositivo** envía una cadena de instrucción a nivel de protocolo directamente al dispositivo a través de su canal de comunicación.

<figure><img src="https://1900701122-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 agregar un comando del dispositivo, haga clic en **Agregar comando del dispositivo** en la parte inferior del bloque. Configure los siguientes campos:

1. **Nombre del comando**: una etiqueta para el comando tal como aparece en el widget de Objeto, por ejemplo `reinicio del dispositivo`. Elija un nombre que describa claramente lo que hace el comando.
2. **Cadena de comando**: la cadena de instrucción exacta que se envía al dispositivo, por ejemplo `cpureset`.

{% hint style="warning" %}
Las cadenas de comando válidas son específicas de cada dispositivo y las define el fabricante del dispositivo. Consulte siempre la documentación oficial de su modelo de dispositivo para encontrar las cadenas de comando correctas. Ingresar valores incorrectos puede tener efectos no deseados en el dispositivo.
{% endhint %}

Haga clic en **Guardar** para guardar el comando. Haga clic en **Eliminar** para quitarlo.

### Comandos de software

Un **comando de software** envía una solicitud HTTP POST con un cuerpo JSON a una URL que usted especifique. Puede ser un endpoint de un servicio externo, como Slack, un receptor de Webhook personalizado o cualquier API REST, o un endpoint de la API de Navixy.

El cuerpo de la solicitud es JSON y debe estructurarse según lo que espera el endpoint de destino. Puede incluir atributos de datos del dispositivo en el cuerpo usando la `{{attribute_name}}` sintaxis.

Los comandos de software se configuran en dos pestañas: **General** y **Cuerpo**.

Para agregar un comando de software, haga clic en **Agregar comando de software** en la parte inferior del bloque.

#### Pestaña General

{% columns %}
{% column width="58.333333333333336%" %}
Configure lo siguiente:

1. **Título**: una etiqueta para el comando tal como aparece en el widget de Objeto.
2. **URL**: la URL completa del endpoint al que se envía la solicitud POST, por ejemplo `https://hooks.slack.com/services/...` o `https://api.eu.navixy.com/v2/...`.
3. **Encabezados**: pares clave-valor enviados como encabezados de solicitud HTTP. Agregue encabezados según sea necesario para el endpoint de destino. Haga clic en **Agregar encabezado** para insertar una nueva fila.
   * Use el `Authorization` encabezado para autenticación basada en token, por ejemplo `Authorization` establezca en `Bearer your_token`.
   * También pueden usarse otros métodos de autenticación compatibles con el destino, como Llaves API pasadas como parámetros de consulta en la URL.
     {% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="https://1900701122-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 %}

#### Pestaña Cuerpo

{% columns %}
{% column width="58.333333333333336%" %}
El **Cuerpo** campo es donde se compone la carga útil JSON.

Para incluir datos en vivo del dispositivo en la carga útil, use la `{{attribute_name}}` sintaxis. Haga clic en el botón selector de atributos <img src="https://1900701122-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"> en la esquina superior derecha del campo del cuerpo para abrir una lista con búsqueda de los atributos disponibles para el dispositivo. Al seleccionar un atributo, se inserta el `{{attribute_name}}` marcador de posición correspondiente en el cuerpo en la posición del cursor.
{% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="https://1900701122-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" %}
Los atributos disponibles dependen del dispositivo específico y de los datos que transmite a la plataforma Navixy. Solo aparecen en la lista los atributos realmente enviados por el dispositivo. Use el selector para evitar errores tipográficos o nombres de atributos incorrectos.
{% endhint %}

Haga clic en **Guardar** para guardar el comando. Haga clic en **Eliminar** para quitarlo.

#### Ejemplo: envío de una notificación de Slack

Slack admite recibir mensajes de servicios externos mediante Webhooks entrantes. Una vez que haya configurado un Webhook en su espacio de trabajo de Slack y obtenido la URL del Webhook (consulte la [guía de Slack sobre Webhooks entrantes](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/)), cree un comando de software con la siguiente configuración.

**Pestaña General:**

* **Título**: `Notificar a Slack`
* **URL**: su URL de Slack Incoming Webhook, por ejemplo `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX`
* **Encabezados**: no se requieren encabezados

**Pestaña Cuerpo:**

{% code overflow="wrap" %}

```json
{
  "text": "Device {{device_id}}: speed {{speed}} km/h at {{latitude}}, {{longitude}}"
}
```

{% endcode %}

Slack espera un objeto JSON con un `text` campo. El `{{device_id}}`, `{{speed}}`, `{{latitude}}`, y `{{longitude}}` marcadores de posición se reemplazan por los valores actuales del dispositivo en el momento en que se envía el comando. Cuando se activa desde el widget de Objeto, el mensaje aparece en el canal de Slack configurado para su Webhook.

### Valores dinámicos del comando

Una cadena de comando o el cuerpo de un comando de software puede incluir un solo `<>` marcador de posición para solicitar un valor cada vez que envíe el comando, en lugar de codificar un valor fijo.

* En un comando del dispositivo, agregue `<>` dentro del **Cadena de comando** campo, por ejemplo `relay,<>` para enviar un estado de relé diferente en cada envío.
* En un comando de software, agregue `<>` dentro del **Cuerpo** campo, por ejemplo `{"value": "<>"}`.

Solo se permite un `<>` marcador de posición por comando. Guardar un comando con más de un marcador de posición devuelve el error "Only one value is allowed per command. Remove the extra < >."

Cuando envíe un comando que contiene `<>` desde el widget de Objeto, se abre un cuadro de diálogo que le solicita el valor antes del envío. Consulte [Envío de comandos desde el widget de Objeto](#sending-commands-from-the-object-widget) para ver el flujo completo.

{% hint style="info" %}
Haga clic en el icono de ayuda del bloque de Comandos para abrir **Cómo funcionan los valores de los comandos**, un resumen de los `<>` sintaxis.
{% endhint %}

## Envío de comandos desde el widget de Objeto

Una vez guardados, los comandos aparecen en el **Comandos** bloque del dispositivo [widget de Objeto](/docs/user/es/guide/tracking/objects-list/object-widget.md) en el módulo de Seguimiento.

<figure><img src="https://1900701122-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>

Haga clic en el **Enviar** botón junto al nombre de un comando para enviarlo. El bloque de Comandos muestra todos los comandos del dispositivo y los comandos de software configurados para ese dispositivo.

* Si el comando no contiene un [marcador de posición de valor dinámico](#dynamic-command-values), Navixy lo envía de inmediato. No hay un cuadro de diálogo de confirmación.
* Si el comando contiene `<>`, se abre un cuadro de diálogo que le pide que ingrese un valor. Ingrese un valor de hasta 500 caracteres y haga clic en **Enviar** para enviar el comando con el valor sustituido por `<>`. La **Enviar** el botón permanece deshabilitado hasta que ingrese un valor, y no se aceptan valores vacíos ni compuestos solo de espacios en blanco.

Después de que se ejecute el comando, Navixy muestra una notificación con el resultado:

* **Comandos del dispositivo** muestra solo si el comando se ejecutó correctamente, como `{ "success": true }` o `{ "success": false }`.
* **Comandos de software** muestra el nombre del comando y la respuesta sin procesar del endpoint de destino, como `{status, body}`. Las respuestas largas se desplazan dentro de la notificación.

Los comandos enviados también aparecen en el [Eventos recientes](/docs/user/es/guide/tracking/objects-list/object-widget.md#data-blocks) bloque del dispositivo [marcador de posición de valor dinámico](#dynamic-command-values), con su resultado disponible en una vista expandible. Si el comando incluía un `Actualizar estado <online>`.

<figure><img src="https://1900701122-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" %}
Los comandos son por dispositivo. Los comandos configurados para un dispositivo no aparecen en los widgets de Objeto de otros dispositivos. Para enviar comandos a múltiples dispositivos basados en reglas o condiciones, 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/es/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.
