Se rendre au contenu

← Calibrage des capteurs | Sommaire | Suivant : Intégration Home Assistant →

11. Guide d'intégration MQTT

Version: 1.2.0
Date: 2025-12-24

Guide complet pour la connectivité MQTT de l'ACRouter, incluant la structure des topics et l'intégration Home Assistant.




Table des matières




Vue d'ensemble

ACRouter prend en charge le protocole MQTT pour :

  • Surveillance en temps réel — Métriques de puissance, tension, courants, état du routeur
  • Contrôle à distance — Changement de mode, contrôle du variateur, arrêt d'urgence
  • Configuration — Ajustement des paramètres à distance
  • Intégration Home Assistant — Découverte automatique pour une intégration domotique transparente

The MQTT client is based on ESP-IDF's esp-mqtt library with automatic reconnection, Last Will & Testament (LWT), and QoS support.




Fonctionnalités

Fonctionnalité Description
Reconnexion automatique Se reconnecte automatiquement en cas de perte de connexion
LWT (Last Will) Publishes "offline" status when device disconnects
Messages retenus Les topics de statut et de configuration sont retenus
Niveaux QoS QoS 0 pour les métriques, QoS 1 pour les commandes
HA Discovery Création automatique des entités Home Assistant
Agrégation JSON Métriques combinées dans un seul message JSON
Persistance NVS Configuration sauvegardée entre les redémarrages



Démarrage rapide


1. Activer MQTT via la console série

bash
# Set broker URL (replace with your broker IP)
mqtt-broker mqtt://192.168.1.10:1883

# Enable MQTT
mqtt-enable

# Check status
mqtt-status


2. Vérifier la connexion

text
======================================================
  MQTT Status
======================================================
State:         Connected
Enabled:       Yes
Broker:        mqtt://192.168.1.10:1883
Device ID:     039C7C
Device Name:   (default)
HA Discovery:  Enabled
Pub Interval:  5000 ms
------------------------------------------------------
Uptime:        125 sec
Published:     250 messages
Received:      3 messages
======================================================


3. S'abonner aux topics

Utilisation des outils client Mosquitto à titre d'exemple :

bash
# Subscribe to all ACRouter topics
mosquitto_sub -h 192.168.1.10 -t "acrouter/#" -v



Structure des topics

Tous les topics suivent le schéma : acrouter/{device_id}/category/name

Le {device_id} est généré automatiquement à partir des 6 derniers caractères de l'adresse MAC (par ex. 039C7C) ou peut être défini manuellement.


Topics de statut (retenus)

Topic Description Valeur d'exemple
status/online Disponibilité de l'appareil (LWT) online / offline
status/mode Mode actuel du routeur auto, manual, boost...
status/state État du contrôleur idle, increasing, at_max...
status/dimmer Niveau du variateur 0 - 100 (%)
status/wifi_rssi Intensité du signal WiFi -65 (dBm)


Topics de métriques (non retenus)

Publication toutes les 5 secondes (configurable).

Topic Description Unité
metrics/voltage Tension AC RMS V
metrics/power_grid Puissance réseau (+ importation, - exportation) W
metrics/power_solar Puissance solaire/production W
metrics/power_load Consommation de la charge W
metrics/current_grid Courant réseau A
metrics/current_solar Courant solaire A
metrics/current_load Courant de la charge A
metrics/direction Direction du flux d'énergie consuming, supplying, balanced


Topics de configuration (retenus)

Topic Description Plage
config/control_gain Gain du régulateur P 10 - 1000
config/balance_threshold Zone morte de l'équilibrage 0 - 1000 W
config/manual_level Niveau manuel du variateur 0 - 100 %


Topics de commande (écriture seule)

Envoyez des commandes en publiant sur ces topics :

Topic Description Payload
command/mode Définir le mode du routeur off, auto, eco, offgrid, manual, boost
command/dimmer Régler le variateur (mode manuel) 0 - 100
command/emergency_stop Arrêt d'urgence n'importe quelle valeur
command/reboot Redémarrer l'appareil n'importe quelle valeur
command/refresh Forcer la publication de toutes les données n'importe quelle valeur


Topics système (retenus)

Topic Description Exemple
system/version Version du firmware 1.1.0
system/ip Adresse IP de l'appareil 192.168.1.100
system/mac Adresse MAC AA:BB:CC:DD:EE:FF
system/uptime Temps de fonctionnement en secondes 3600
system/free_heap Mémoire heap disponible 150000


Topics JSON agrégés

Pour plus d'efficacité, les métriques sont également publiées en JSON agrégé :

Topic : json/metrics

json
{
  "voltage": 230.5,
  "power_grid": -150.2,
  "power_solar": 1250.0,
  "power_load": 1100.0,
  "current_grid": 0.65,
  "current_solar": 5.43,
  "current_load": 4.78,
  "direction": "supplying"
}



Commandes console


Gestion de la connexion

Commande Description
mqtt-status Afficher le statut de connexion et les statistiques
mqtt-enable Activer le client MQTT
mqtt-disable Désactiver le client MQTT
mqtt-reconnect Forcer la reconnexion
mqtt-publish Forcer la publication immédiate de toutes les données


Configuration

Commande Description
mqtt-config Afficher toute la configuration MQTT
mqtt-broker Définir l'URL du broker (par ex. mqtt://192.168.1.10:1883)
mqtt-user Définir le nom d'utilisateur pour l'authentification
mqtt-pass Définir le mot de passe pour l'authentification
mqtt-device-id Définir un identifiant personnalisé pour les topics
mqtt-device-name Définir le nom de l'appareil (pour Home Assistant)
mqtt-interval Définir l'intervalle de publication (1000–60000 ms)
mqtt-ha-discovery <0\|1> Activer/désactiver la découverte Home Assistant


Exemples

bash
# Configure broker with authentication
mqtt-broker mqtt://192.168.1.10:1883
mqtt-user myuser
mqtt-pass mypassword
mqtt-enable

# Set custom device name for Home Assistant
mqtt-device-name "Solar Router Kitchen"

# Reduce publish frequency to 10 seconds
mqtt-interval 10000

# Disable Home Assistant auto-discovery
mqtt-ha-discovery 0



Configuration


Clés de stockage NVS

Tous les paramètres MQTT sont conservés dans le NVS (Non-Volatile Storage) :

Clé Description
mqtt_enabled Indicateur d'activation MQTT
mqtt_broker URL du broker
mqtt_user Nom d'utilisateur
mqtt_pass Mot de passe
mqtt_dev_id Identifiant de l'appareil
mqtt_dev_name Nom de l'appareil
mqtt_interval Intervalle de publication
mqtt_ha_disc Indicateur HA Discovery


Valeurs par défaut

Paramètre Valeur par défaut
Activé Non
Broker (vide)
Identifiant de l'appareil Généré automatiquement à partir de l'adresse MAC
Intervalle de publication 5000 ms
HA Discovery Activé



Test des topics

Vous pouvez utiliser n'importe quel client MQTT pour tester les topics. Les exemples ci-dessous utilisent les outils client Mosquitto (mosquitto_sub / mosquitto_pub).


S'abonner à tous les topics

bash
mosquitto_sub -h 192.168.1.10 -t "acrouter/#" -v


S'abonner à des topics spécifiques

bash
# Status only
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/status/#" -v

# Metrics only
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/metrics/#" -v

# JSON aggregated
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/json/#" -v


Envoyer des commandes

bash
# Change mode to AUTO
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/mode" -m "auto"

# Set dimmer to 50% (in MANUAL mode)
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/dimmer" -m "50"

# Emergency stop
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/emergency_stop" -m "1"

# Reboot device
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/reboot" -m "1"

# Force refresh all data
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/refresh" -m "1"


Mettre à jour la configuration via MQTT

bash
# Set control gain
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/config/control_gain/set" -m "200"

# Set balance threshold
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/config/balance_threshold/set" -m "25"



Dépannage


Problèmes de connexion

Symptôme : esp-tls: select() timeout

Solutions :

  1. Vérifiez que le broker est en cours d'exécution et accessible
  2. Vérifiez que le pare-feu autorise le port 1883
  3. Vérifiez le format de l'URL du broker : mqtt://IP:PORT
  4. Testez la connectivité du broker depuis un autre client


"Client has started" Error

Symptôme : Erreurs répétées mqtt_client: Client has started

Solution : Il s'agissait d'un bug dans les versions précédentes. Mettez à jour vers le dernier firmware où esp_mqtt_client_start() n'est appelé qu'une seule fois.


WiFi non connecté

Symptom: MQTT doesn't connect on boot

Explication : MQTT attend désormais la connexion WiFi avant de tenter de se connecter. Vérifiez d'abord le statut WiFi :

bash
wifi-status


Messages non reçus

Symptôme : Les commandes sont envoyées mais non traitées

Solutions :

  1. Vérifiez l'orthographe des topics (sensible à la casse)
  2. Vérifiez que l'identifiant de l'appareil correspond : mqtt-status
  3. Vérifiez que le message est reçu : le journal de l'appareil affiche MQTT: Command: mode = auto


Home Assistant ne détecte pas l'appareil

Symptom: Device doesn't appear in Home Assistant

Solutions :

  1. Vérifiez que HA Discovery est activé : mqtt-ha-discovery 1
  2. Vérifiez que l'intégration MQTT de HA est configurée
  3. Forcez la republication : mqtt-publish ou redémarrez l'appareil
  4. Consultez les journaux de HA pour les messages de découverte



Voir aussi


Dernière mise à jour : 2025-12-24

← Calibrage des capteurs | Sommaire | Suivant : Intégration Home Assistant →