mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
4.5 KiB
4.5 KiB
📡 Canal MQTT
PicoClaw prend en charge n'importe quel client MQTT comme canal de messagerie. Les appareils ou services publient des requêtes vers un broker ; PicoClaw s'abonne, les traite et publie les réponses en retour.
🚀 Démarrage rapide
1. Ajouter le canal dans ~/.picoclaw/config.json :
{
"channel_list": {
"mqtt": {
"enabled": true,
"type": "mqtt",
"settings": {
"broker": "tcp://localhost:1883",
"agent_id": "assistant"
}
}
}
}
2. Démarrer la passerelle :
picoclaw gateway
3. Envoyer un message depuis n'importe quel client MQTT :
mosquitto_pub -t "/picoclaw/assistant/device1/request" \
-m '{"text": "Quel est l'\''usage CPU ?"}'
4. S'abonner pour recevoir la réponse :
mosquitto_sub -t "/picoclaw/assistant/device1/response"
📨 Structure des topics
{prefix}/{agent_id}/{client_id}/request # Client → PicoClaw
{prefix}/{agent_id}/{client_id}/response # PicoClaw → Client
| Segment | Description |
|---|---|
prefix |
Préfixe de topic configuré côté serveur. Défaut : /picoclaw |
agent_id |
Identifiant de l'instance PicoClaw, défini dans le champ agent_id |
client_id |
Identifiant de session défini par le client — utiliser un ID stable par appareil pour maintenir le contexte |
Payload du message (JSON)
{ "text": "votre message ici" }
⚙️ Configuration
config.json
{
"channel_list": {
"mqtt": {
"enabled": true,
"type": "mqtt",
"settings": {
"broker": "ssl://votre-broker:8883",
"agent_id": "assistant",
"topic_prefix": "/picoclaw",
"client_id": "",
"keep_alive": 60,
"qos": 0
}
}
}
}
.security.yml (identifiants)
Le nom d'utilisateur et le mot de passe sont stockés dans ~/.picoclaw/.security.yml, pas dans config.json :
channel_list:
mqtt:
settings:
username: votre_utilisateur
password: votre_mot_de_passe
Champs de configuration
| Champ | Emplacement | Requis | Défaut | Description |
|---|---|---|---|---|
broker |
settings |
Oui | — | URL du broker MQTT, ex. tcp://host:1883, ssl://host:8883 |
agent_id |
settings |
Oui | — | Identifiant de l'agent, utilisé dans le chemin du topic |
topic_prefix |
settings |
Non | /picoclaw |
Préfixe de l'espace de noms des topics |
username |
.security.yml |
Non | — | Nom d'utilisateur pour l'authentification au broker |
password |
.security.yml |
Non | — | Mot de passe pour l'authentification au broker |
client_id |
settings |
Non | auto-généré | ID client paho envoyé au broker. Auto-généré sous la forme picoclaw-mqtt-{agent_id}-{8 hex} ; fixe pour la durée du processus, réutilisé à la reconnexion |
keep_alive |
settings |
Non | 60 |
Intervalle keepalive MQTT en secondes |
qos |
settings |
Non | 0 |
Niveau QoS pour la publication et l'abonnement : 0, 1 ou 2 |
Variables d'environnement
| Variable | Champ |
|---|---|
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 |
🔄 Reconnexion
PicoClaw se reconnecte automatiquement au broker en cas de perte de connexion, avec un intervalle de 5 secondes. L'abonnement est rétabli automatiquement. L'ID client côté broker reste identique à chaque reconnexion.
⚠️ Remarques
- TLS : SSL/TLS est supporté (URL broker en
ssl://). La vérification du certificat est désactivée par défaut. - Réponses en streaming : Les réponses en streaming envoient plusieurs messages vers le topic de réponse ; les concaténer dans l'ordre pour obtenir la réponse complète.
- client_id vs ID de session : Le
client_iddans le chemin du topic est défini par votre application cliente. Il est distinct de l'ID client paho utilisé par PicoClaw pour se connecter au broker. - Instances multiples : Si plusieurs instances PicoClaw utilisent le même
agent_idsur le même broker, définir desclient_iddistincts pour éviter les conflits.