> 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 de dispositivo y de software para un dispositivo GPS en Navixy y envíelos a demanda desde el widget Objeto.

El **Comandos** bloque le permite definir comandos personalizados para un dispositivo en Navixy y enviarlos a demanda desde el [widget de Objeto](/docs/user/es/guide/tracking/objects-list/object-widget.md) o la aplicación [X-GPS Mobile](/docs/user/es/guide/x-gps-mobile-apps/x-gps-mobile.md) Use esta función para enviar una instrucción de 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 notificaciones, un CRM o un punto de conexión de API personalizado. Una vez configurados, los comandos se pueden enviar con un solo clic.

El bloque Comandos admite dos tipos de comandos:

* **Comando del dispositivo** envía una cadena de instrucciones de 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, e incluye 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 su uso repetido.

{% hint style="info" %}
**Cuándo usar Comandos en lugar de IoT Logic**

Comandos está diseñado para acciones manuales y ad hoc dirigidas a un único dispositivo. Úselo cuando necesite enviar un comando puntual 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). Los nodos **Acción del dispositivo** y **Webhook** en IoT Logic proporcionan las mismas capacidades subyacentes con automatización completa de flujos y selección de 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. Localice y expanda el bloque **Comandos** .

<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 añadir varios comandos de cada tipo. Cada comando se guarda por separado.

### Comandos del dispositivo

Un **comando del dispositivo** envía una cadena de instrucciones de 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 añadir un comando del dispositivo, haga clic en **Añadir 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 instrucciones exacta que se envía al dispositivo, por ejemplo, `cpureset`.

{% hint style="warning" %}
Las cadenas de comandos 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 comandos correctas. Introducir valores incorrectos puede tener efectos no deseados en el dispositivo.
{% endhint %}

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

### 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 punto de conexión de servicio externo, como Slack, un receptor de webhook personalizado o cualquier API REST, o un punto de conexión de API de Navixy.

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

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

Para añadir un comando de software, haga clic en **Añadir 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 punto de conexión 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. Añada encabezados según sea necesario para el punto de conexión de destino. Haga clic en **Añadir encabezado** para insertar una nueva fila.
   * Use el encabezado `Authorization` para la autenticación basada en tokens, por ejemplo, `Authorization` establecido en `Bearer your_token`.
   * También se pueden usar otros métodos de autenticación admitidos por 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** es donde compone la carga útil JSON. Escriba un JSON válido que coincida con el formato esperado por el punto de conexión de destino.

Para incluir datos del dispositivo en tiempo real en la carga útil, use la `{{attribute_name}}` sintaxis. Haga clic en el botón del 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 de cuerpo para abrir una lista con función de búsqueda de los atributos disponibles para el dispositivo. Al seleccionar un atributo se inserta el marcador de posición correspondiente `{{attribute_name}}` 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 que el dispositivo envía realmente. 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 eliminarlo.

#### Ejemplo: enviar una notificación de Slack

Slack admite la recepción de 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 webhooks entrantes de Slack](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 Webhook entrante de Slack, por ejemplo, `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX`
* **Encabezados**: no se requieren encabezados

**Pestaña Cuerpo:**

{% code overflow="wrap" %}

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

{% endcode %}

Slack espera un objeto JSON con un campo `text` . Los marcadores de posición `{{device_id}}`, `{{speed}}`, `{{latitude}}`, y `{{longitude}}` se sustituyen 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 de comandos

Una cadena de comando o el cuerpo de un comando de software pueden incluir un único `<>` 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, añada `<>` dentro del campo **Cadena de comando** , por ejemplo, `relay,<>` para enviar un estado de relé diferente en cada envío.
* En un comando de software, añada `<>` dentro del campo **Cuerpo** , por ejemplo, `{"value": "<>"}`.

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

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

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

## Enviar comandos desde el widget de Objeto

Una vez guardados los comandos, aparecen en el bloque **Comandos** del [widget de Objeto](/docs/user/es/guide/tracking/objects-list/object-widget.md) en el módulo 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 botón **enviar** situado junto al nombre de un comando para enviarlo. El bloque 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 cuadro de diálogo de confirmación.
* Si el comando contiene `<>`, se abre un cuadro de diálogo que le solicita introducir un valor. Introduzca un valor de hasta 500 caracteres y haga clic en **Enviar** para enviar el comando con el valor sustituido por `<>`. Los nodos **Enviar** El botón permanece deshabilitado hasta que introduzca un valor, y no se aceptan valores vacíos ni compuestos solo por espacios en blanco.

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

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

Los comandos enviados también aparecen en el bloque [Eventos recientes](/docs/user/es/guide/tracking/objects-list/object-widget.md#data-blocks) del widget de Objeto, con su resultado disponible en una vista expandible. Si el comando incluía un [marcador de posición de valor dinámico](#dynamic-command-values), el título de la entrada también muestra el valor que se envió, por ejemplo, `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 varios dispositivos según 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.
