> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-docs-pt/kilo-iot-server/devices/commands/smart-socket-example.md).

# Exemplo: Tomada Inteligente

Construa comandos de ligar e desligar para uma tomada inteligente de ponta a ponta — payload, codificador, verificação e execução a partir do separador Estados.

Este passo a passo cria dois comandos num único dispositivo e verifica se funcionaram. Usa uma tomada inteligente alimentada pela rede elétrica que indica se o seu relé está ligado ou desligado, mas a mesma sequência aplica-se a qualquer atuador: uma válvula, um luminário, um aquecedor.

Siga-o por ordem — cada secção produz algo de que a seguinte precisa.

## Antes de começar

* A tomada está registada e a transmitir. Classe C para LoRaWAN, ou um dispositivo MQTT.
* Pode ver as suas leituras na **Métricas** separador (**Mapeamento** para MQTT).

## 1. Descubra como o dispositivo reporta o seu estado

Abra o dispositivo e vá para o **Métricas** separador. Procure na tabela de chaves do conector o campo que transporta o estado do relé e note duas coisas: o nome do campo e o valor que está a mostrar agora mesmo.

Para esta tomada:

| Chave do conector | Valor atual |
| ----------------- | ----------- |
| `socket_status`   | `desligado` |

Esse valor é o que uma verificação de validação irá comparar mais tarde, por isso anote-o exatamente como aparece — `desligado`, não `DESLIGADO` ou `falso`.

Se o campo ainda não estiver mapeado para uma métrica, mapeie-o agora: o editor de comandos seleciona sensores pelo nome da métrica, por isso um campo não mapeado não pode ser usado para verificar nada. Consulte [Descodificação de payload e chaves do conector](/kilo-docs-pt/kilo-iot-server/devices/payload-decoding.md).

Neste exemplo `socket_status` está mapeado para uma métrica chamada **Estado da tomada**.

## 2. Crie o comando LIGAR

Abra **Comandos e Estados → Comandos** e clique em **Adicionar novo comando**.

<figure><img src="https://585438662-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtNQh1wBSHSaknslMdOXm%2Fuploads%2Fgit-blob-e5d148689cf5bd708377bbea23e9bbbc92f79a5c%2Fdevice-command-editor.jpg?alt=media" alt="The command editor with the identity, routing and payload sections of a device command"><figcaption></figcaption></figure>

**1. Identidade**

* **Nome do comando** — `Ligar`

**2. Encaminhamento**

* Para LoRaWAN: defina o **fPort** que o dispositivo espera, e ligue **Downlink confirmado** o.
* Para MQTT: introduza o tópico ao qual a tomada se subscreve para comandos.

**3. Payload**

Este comando não aceita parâmetros — envia sempre a mesma coisa — por isso não adicione nenhum, e defina a carga útil que o codificador deve construir. A tomada espera três bytes: canal `0x08`, tipo `0x70`, e o estado, `0x01` para ligado.

Use **Experimentar codificador** para verificar o resultado antes de guardar. Mostra a saída codificada em hex e base64, com o seu tamanho em bytes, para que possa confirmar que a carga útil é `08 70 01` antes de o comando alguma vez chegar ao dispositivo.

**4. Verificação**

Escolha **Aguarde pelo próximo uplink** — a tomada reporta o seu estado em cada mensagem de rotina, por isso não há necessidade de a consultar periodicamente.

Em **Estados esperados dos sensores**, clique **Adicionar estado**:

* **Métrica** — *Estado da tomada*
* **Valor esperado** — `ligado`

Escreva o valor tal como o dispositivo o reporta. Aqui, as maiúsculas/minúsculas não importam, por isso `ligado` também corresponde a um dispositivo que reporta `LIGADO` — mas texto e números não são intercambiáveis, por isso `1` não corresponderia. Consulte [Confirmar Comandos](/kilo-docs-pt/kilo-iot-server/devices/commands/verification.md#expected-value).

Clique em **Salvar**.

## 3. Crie o comando DESLIGAR

Repita os passos acima com três alterações:

* **Nome do comando** — `Desligar`
* **Carga útil** — os mesmos três bytes, com o byte de estado definido para `0x00`
* **Valor esperado** — `desligado`

Todo o resto permanece igual.

## 4. Execute-os e verifique o resultado

Vá para a **separador Estados** separador, encontre **Ligar** na lista de comandos disponíveis e clique em **Executar**.

Veja a entrada aparecer em **Execuções recentes**:

1. Começa como **Pendente** enquanto o downlink está a caminho.
2. Quando chegar a próxima mensagem da tomada a reportar `socket_status: on`, a execução torna-se **Confirmado** — a plataforma viu o dispositivo no estado que pediu.

Execute **Desligar** e o mesmo acontece ao contrário.

## Se a execução nunca confirmar

Uma execução que permanece por confirmar até a sua janela fechar é marcada como **Aviso suave** — entregue, mas não confirmada. Resolva-os por esta ordem:

1. **Verifique o valor.** Abra o separador Métricas e leia o que `socket_status` reporta agora. Se a tomada mudou, mas reporta `1` em vez de `ligado`, o valor esperado tem de corresponder a esse formato — e um literal escrito é sempre texto, por isso use uma `{{ parameterName }}` referência para um parâmetro Booleano ou Inteiro, em vez disso.
2. **Verifique a métrica.** Certifique-se de que a Métrica que selecionou é a alimentada por `socket_status`, e de que está mapeada e a receber leituras.
3. **Verifique a janela.** A janela predefinida é 1,5 × o intervalo de envio de dados do dispositivo. Se esse intervalo não estiver definido no dispositivo, defina-o — consulte [tempo limite de convergência](/kilo-docs-pt/kilo-iot-server/devices/commands/verification.md#convergence-timeout).
4. **Verifique a carga útil.** Execute **Experimentar codificador** novamente e compare os bytes com a documentação do fabricante.

## Seguinte

* Coloque os dois comandos num painel de controlo com um [Widget de controlo](/kilo-docs-pt/kilo-iot-server/dashboards/adding-widgets/control-widget.md) para que a equipa possa alternar a tomada sem abrir o dispositivo.
* Permita que uma regra opere a tomada automaticamente — consulte [Executar Comandos de Dispositivo](/kilo-docs-pt/kilo-iot-server/rules-engine/running-device-commands.md).


---

# 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://docs.kiloiot.io/kilo-docs-pt/kilo-iot-server/devices/commands/smart-socket-example.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.
