Conectar via MQTT
Broker, autenticação, tópicos e payloads que o painel CurtoLab espera.
Configuração do broker
| Parâmetro | Valor |
|---|---|
| Host | lab.curtocircuito.com.br |
| Port (sem TLS) | 1883 |
| Port (TLS) | 8883 (em breve) |
| Username | <ACCESS_TOKEN do device> |
| Password | (deixe vazio) |
| Client ID | Único por device. Recomendado: o próprio Access Token ou curtolab-<seu-device-id> |
| Keepalive | 60s recomendado |
Tópicos principais
Telemetria (device → cloud)
Topic: v1/devices/me/telemetry
Payload: {"temperature": 23.5, "humidity": 60}
QoS: 0 ou 1Pode mandar quantas chaves quiser num único payload. Cada chave vira uma "telemetry key" indexada pelo TB, disponível pra widgets e regras.
Telemetria com timestamp customizado
Por default, o broker carimba a hora de chegada. Pra mandar histórico ou timestamp específico:
{
"ts": 1735689600000,
"values": {"temperature": 23.5, "humidity": 60}
}Atributos do device (estado, configuração)
Topic: v1/devices/me/attributes
Payload: {"firmwareVersion": "1.2.3", "interval": 30}Use atributos pra estado que muda raramente (versão FW, configuração). Telemetria pra valores que mudam o tempo todo (sensor, GPS).
RPC (cloud → device)
O device pode receber comandos do painel. Subscribe:
Topic: v1/devices/me/rpc/request/+
Quando alguém clica num botão no dashboard ou faz POST /api/v1/<deviceId>/rpc, chega:
Topic: v1/devices/me/rpc/request/123
Payload: {"method": "setLed", "params": {"state": "on"}}O device responde:
Topic: v1/devices/me/rpc/response/123
Payload: {"success": true}Sequência de conexão típica
- MQTT CONNECT com username = Access Token do device
- PUBLISH inicial em
v1/devices/me/attributescomfirmwareVersione config atual (útil pra debug) - SUBSCRIBE em
v1/devices/me/rpc/request/+pra receber comandos - Loop: PUBLISH em
v1/devices/me/telemetrya cada N segundos
Teste rápido (mosquitto_pub)
# Substitua YOUR_TOKEN pelo Access Token do device
mosquitto_pub \
-h lab.curtocircuito.com.br \
-p 1883 \
-u "YOUR_TOKEN" \
-t "v1/devices/me/telemetry" \
-m '{"temperature": 23.5}'No painel, abra o device → aba Última telemetria. Em ~1s o valor aparece.
Erros comuns
"Connection refused: not authorized"
Access Token errado ou device foi deletado. Confira em Dispositivos → seu device → Detalhes → Credenciais.
"Telemetria não aparece no painel"
- Tópico tem que ser exatamente
v1/devices/me/telemetry(com/me/, não o ID do device). - Payload tem que ser JSON válido.
{x: 1}sem aspas dá erro silencioso. - QoS 0 não confirma — se quer garantia, use QoS 1.
Rate limit
Plano Free: ~100 mensagens/segundo por tenant. Pra mais, faça upgrade ou contate suporte.
Próximos passos
- Exemplo ESP32 completo
- Dashboards — visualizar a telemetria que chegou
- Regras — agir em cima dos dados