mqtt · git:20260913.38a8ac8 · 2026-09-13 · sha256 3a31bb6267438ae0
mqtt git:20260913.38a8ac8A
Immutable. This exact content is served forever at /api/v1/blob/3a31bb6267438ae0.
---
name: mqtt
description: Adapter oficial MQTT — descoberta e pub/sub genéricos sobre o broker da casa, o transporte com o maior leque de dispositivos por linha de código.
kind: hardware-adapter
triggers:
- mqtt
- broker
- mosquitto
provides:
transport: mqtt
capabilities: [light, switch, sensor, button]
presets:
- entity: tomada_varanda
capability: power
synonyms: ["tomada da varanda", "balcony outlet"]
- entity: sensor_sala
capability: temperature
synonyms: ["temperatura da sala", "living room temperature"]
---
# MQTT
O primeiro transporte do epic, e o de maior alcance: qualquer dispositivo que
publique num broker (ESP32 caseiro, zigbee2mqtt, Tasmota, Shelly) entra sem
driver de fabricante.
## O que este skill declara
- `transport: mqtt` — o core (`garraia-hardware`, feature `mqtt`) fala TCP
com o broker via `rumqttc` e segue a convenção de tópicos
`garra/devices/<id>/…`;
- capabilities genéricas e dois presets de exemplo.
## Convenção de tópicos
| Tópico | Sentido |
|---|---|
| `garra/devices/<id>/manifest` | o dispositivo se anuncia (retained): id, capabilities e risco |
| `garra/devices/<id>/state` | estado atual, resposta de leitura |
| `garra/devices/<id>/get` | o Garra pede uma leitura |
| `garra/devices/<id>/set` | o Garra executa uma ação |
O id de registro sai namespaceado como `mqtt:<id>` (#1168) — um dispositivo
não alcança a chave de outro transporte.
## Risco
No MQTT, o risco chega no manifesto que o **dispositivo** publica, e o
adapter o aceita como piso — placa hostil não consegue se declarar mais
segura do que é, porque o catálogo de skills só aplica `max()` sobre ele.
Para uma tomada que na sua casa alimenta algo sério (o portão, uma bomba),
declare o risco maior num preset: subir sempre vale.
## Configuração
Endereço do broker, porta e credenciais são config do gateway, não deste
arquivo.