docs/channels/mqtt/README.pt-br.md
O PicoClaw suporta qualquer cliente MQTT como canal de mensagens. Dispositivos ou serviços publicam requisições para um broker; o PicoClaw assina, processa e publica as respostas de volta.
1. Adicione o canal ao ~/.picoclaw/config.json:
{
"channel_list": {
"mqtt": {
"enabled": true,
"type": "mqtt",
"settings": {
"broker": "tcp://localhost:1883",
"agent_id": "assistant"
}
}
}
}
2. Inicie o gateway:
picoclaw gateway
3. Envie uma mensagem de qualquer cliente MQTT:
mosquitto_pub -t "/picoclaw/assistant/device1/request" \
-m '{"text": "Qual é o uso de CPU?"}'
4. Assine para receber a resposta:
mosquitto_sub -t "/picoclaw/assistant/device1/response"
{prefix}/{agent_id}/{client_id}/request # Cliente → PicoClaw
{prefix}/{agent_id}/{client_id}/response # PicoClaw → Cliente
| Segmento | Descrição |
|---|---|
prefix | Prefixo do tópico configurado no servidor. Padrão: /picoclaw |
agent_id | Identificador da instância do PicoClaw, definido no campo agent_id |
client_id | Identificador de sessão definido pelo cliente — use um ID estável por dispositivo para manter o contexto da conversa |
{ "text": "sua mensagem aqui" }
{
"channel_list": {
"mqtt": {
"enabled": true,
"type": "mqtt",
"settings": {
"broker": "ssl://seu-broker:8883",
"agent_id": "assistant",
"topic_prefix": "/picoclaw",
"client_id": "",
"keep_alive": 60,
"qos": 0
}
}
}
}
O nome de usuário e a senha são armazenados em ~/.picoclaw/.security.yml, não no config.json:
channel_list:
mqtt:
settings:
username: seu_usuario
password: sua_senha
| Campo | Local | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
broker | settings | Sim | — | URL do broker MQTT, ex. tcp://host:1883, ssl://host:8883 |
agent_id | settings | Sim | — | Identificador do agente, usado como parte do caminho do tópico |
topic_prefix | settings | Não | /picoclaw | Prefixo do namespace dos tópicos |
username | .security.yml | Não | — | Nome de usuário para autenticação no broker |
password | .security.yml | Não | — | Senha para autenticação no broker |
client_id | settings | Não | gerado automaticamente | ID de cliente paho enviado ao broker. Gerado automaticamente como picoclaw-mqtt-{agent_id}-{8 hex} se não definido; fixo durante o tempo de vida do processo e reutilizado nas reconexões |
keep_alive | settings | Não | 60 | Intervalo de keepalive MQTT em segundos |
qos | settings | Não | 0 | Nível de QoS para publicação e assinatura: 0, 1 ou 2 |
| Variável | Campo |
|---|---|
PICOCLAW_CHANNELS_MQTT_BROKER | broker |
PICOCLAW_CHANNELS_MQTT_AGENT_ID | agent_id |
PICOCLAW_CHANNELS_MQTT_TOPIC_PREFIX | topic_prefix |
PICOCLAW_CHANNELS_MQTT_USERNAME | username |
PICOCLAW_CHANNELS_MQTT_PASSWORD | password |
PICOCLAW_CHANNELS_MQTT_CLIENT_ID | client_id |
PICOCLAW_CHANNELS_MQTT_KEEP_ALIVE | keep_alive |
PICOCLAW_CHANNELS_MQTT_QOS | qos |
O PicoClaw reconecta automaticamente ao broker se a conexão for perdida, com intervalo de 5 segundos. Após a reconexão, a assinatura é restabelecida automaticamente. O ID de cliente no broker permanece o mesmo nas reconexões, permitindo que o broker identifique corretamente a mesma sessão.
ssl://). A verificação de certificado é ignorada por padrão.client_id no caminho do tópico é definido pela sua aplicação cliente e identifica a sessão. É separado do ID de cliente paho usado pelo PicoClaw para se conectar ao broker.agent_id no mesmo broker, defina client_id distintos para evitar conflitos no nível do broker.