Documentacao
MQTT
Como conectar clientes IoT ao broker do IoTsys com autenticacao, topicos por tenant e mensagens padronizadas.
Conexao
- Host
- mqtt.iotsys.com.br
- Porta
- 1883
- QoS recomendado
- 1
- Client ID
- iotsys-{tipo}-{chip_id}
Sessao resiliente
Configure client ID unico, Last Will e reconexao. Isso permite que o dashboard marque offline quando a placa perde energia, Wi-Fi ou broker.
String clientId = "iotsys-esp32-" + String((uint32_t)ESP.getEfuseMac(), HEX);
mqtt.connect(
clientId.c_str(),
MQTT_USERNAME,
MQTT_PASSWORD,
TOPIC_AVAILABILITY,
1,
true,
"offline"
);
mqtt.publish(TOPIC_AVAILABILITY, "online", true);
Topicos
Comando recebido pelo dispositivo
tenants/{tenant_id}/devices/{device_id}/command
Estado publicado pelo dispositivo
tenants/{tenant_id}/devices/{device_id}/state
Disponibilidade publicada pelo dispositivo
tenants/{tenant_id}/devices/{device_id}/availability
Teste com mosquitto
mosquitto_sub \
-h mqtt.iotsys.com.br \
-p 1883 \
-u "$MQTT_USERNAME" \
-P "$MQTT_PASSWORD" \
-t "tenants/{tenant_id}/devices/{device_id}/command" \
-q 1
mosquitto_pub \
-h mqtt.iotsys.com.br \
-p 1883 \
-u "$MQTT_USERNAME" \
-P "$MQTT_PASSWORD" \
-t "tenants/{tenant_id}/devices/{device_id}/state" \
-m '{"power_state":"ON"}' \
-q 1
Regras operacionais
- Assine apenas topicos de comando permitidos pela credencial.
- Publique estado apos executar o comando no hardware.
- Publique disponibilidade como mensagem retida para acelerar diagnostico.
- Reconecte com backoff simples quando Wi-Fi ou MQTT cairem.
- Nunca grave credenciais MQTT em logs, prints ou repositorios.
- Use payloads pequenos e previsiveis; eventos grandes devem ir por REST API ou WebSocket especifico.
- Para comandos criticos, inclua um identificador de comando e publique o estado final apos a acao fisica.