Back to Picoclaw

📡 Canal MQTT

docs/channels/mqtt/README.fr.md

0.2.94.5 KB
Original Source

📡 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 :

json
{
  "channel_list": {
    "mqtt": {
      "enabled": true,
      "type": "mqtt",
      "settings": {
        "broker": "tcp://localhost:1883",
        "agent_id": "assistant"
      }
    }
  }
}

2. Démarrer la passerelle :

bash
picoclaw gateway

3. Envoyer un message depuis n'importe quel client MQTT :

bash
mosquitto_pub -t "/picoclaw/assistant/device1/request" \
  -m '{"text": "Quel est l'\''usage CPU ?"}'

4. S'abonner pour recevoir la réponse :

bash
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
SegmentDescription
prefixPréfixe de topic configuré côté serveur. Défaut : /picoclaw
agent_idIdentifiant de l'instance PicoClaw, défini dans le champ agent_id
client_idIdentifiant de session défini par le client — utiliser un ID stable par appareil pour maintenir le contexte

Payload du message (JSON)

json
{ "text": "votre message ici" }

⚙️ Configuration

config.json

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 :

yaml
channel_list:
  mqtt:
    settings:
      username: votre_utilisateur
      password: votre_mot_de_passe

Champs de configuration

ChampEmplacementRequisDéfautDescription
brokersettingsOui—URL du broker MQTT, ex. tcp://host:1883, ssl://host:8883
agent_idsettingsOui—Identifiant de l'agent, utilisé dans le chemin du topic
topic_prefixsettingsNon/picoclawPréfixe de l'espace de noms des topics
username.security.ymlNon—Nom d'utilisateur pour l'authentification au broker
password.security.ymlNon—Mot de passe pour l'authentification au broker
client_idsettingsNonauto-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_alivesettingsNon60Intervalle keepalive MQTT en secondes
qossettingsNon0Niveau QoS pour la publication et l'abonnement : 0, 1 ou 2

Variables d'environnement

VariableChamp
PICOCLAW_CHANNELS_MQTT_BROKERbroker
PICOCLAW_CHANNELS_MQTT_AGENT_IDagent_id
PICOCLAW_CHANNELS_MQTT_TOPIC_PREFIXtopic_prefix
PICOCLAW_CHANNELS_MQTT_USERNAMEusername
PICOCLAW_CHANNELS_MQTT_PASSWORDpassword
PICOCLAW_CHANNELS_MQTT_CLIENT_IDclient_id
PICOCLAW_CHANNELS_MQTT_KEEP_ALIVEkeep_alive
PICOCLAW_CHANNELS_MQTT_QOSqos

🔄 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_id dans 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_id sur le mĂŞme broker, dĂ©finir des client_id distincts pour Ă©viter les conflits.