Aller au contenu principal
Nouveau
Plugin Matter

Plugin Matter

Market →

Intégrer et piloter vos appareils Matter directement depuis Jeedom via **Matter Server (JS)**.

Jeedom 4.4+stableos 11+php 7.4/8.xNode.js☕ Soutenir le développement

Le plugin Matter permet d'ajouter, de piloter et de superviser des appareils compatibles Matter directement depuis Jeedom.

Il s'appuie sur Matter Server (JS) (projet Home Assistant) pour communiquer avec les appareils Matter via le protocole Matter, et expose une interface que Jeedom utilise pour contrôler les équipements.


Après chaque mise à jour du plugin

Relancez toujours l'installation des dépendances après une mise à jour du plugin Matter.

👉 Plugins → Matter → Configuration → Installer les dépendances

Puis redémarrez le démon. Ne pas le faire peut provoquer des erreurs de démarrage ou des dysfonctionnements.


✨ Principe de fonctionnement

Le plugin repose sur trois composants :

  1. Matter Server (JS) — serveur Matter gérant les connexions avec les appareils
  2. Démon nodejs (matterd) — pont entre Jeedom et Matter Server (JS)
  3. Jeedom — interface utilisateur, gestion des équipements et des commandes

Le flux de données est le suivant :

  • Le démon interroge Matter Server (JS) en continu (polling + souscriptions WebSocket)
  • Chaque changement d'état est transmis à Jeedom via l'API REST du plugin
  • Les commandes Jeedom sont relayées au démon qui les exécute sur le serveur Matter

Le plugin prend en charge deux modes de serveur :

  • Embarqué : le plugin démarre et gère Matter Server (JS) automatiquement
  • Externe : le plugin se connecte à une instance Matter Server (JS) existante (ex. Home Assistant)

🔧 Prérequis

Avant d'installer le plugin et d'ajouter un appareil Matter, assurez-vous d'avoir :

🌐 1️⃣ Un réseau local stable

  • Jeedom doit être connecté au même réseau que vos appareils
  • Wi‑Fi fonctionnel et stable
  • Pas d'isolation réseau entre les équipements
  • IPv6 est requis pour la découverte mDNS des appareils Matter (vérifiable sur la page Santé)

📡 2️⃣ Un contrôleur Matter

Matter nécessite un contrôleur pour gérer les appareils.

Le plugin Matter peut jouer ce rôle et devenir votre contrôleur principal.

⚠️ Il est recommandé de ne pas utiliser plusieurs contrôleurs principaux en parallèle si vous débutez.

🧵 3️⃣ Un Border Router (si appareil Thread)

Certains appareils Matter utilisent la technologie Thread.

Dans ce cas, vous devez disposer d'un Thread Border Router.

Exemples compatibles :

⚠️ Les appareils Matter en Wi‑Fi ou Ethernet n'ont pas besoin de Border Router.

🍎🤖 4️⃣ Appareils déjà configurés dans Apple, Amazon ou Google

Si votre appareil est déjà ajouté dans :

  • Apple Home
  • Amazon Alexa
  • Google Home

Deux possibilités :

  • Soit Jeedom devient le contrôleur principal
  • Soit vous partagez l'appareil vers Jeedom (si supporté)

Il est conseillé d'éviter les configurations multiples si vous débutez.

🔵 5️⃣ Clé Bluetooth (pour le jumelage Wi‑Fi)

Le Bluetooth est utilisé uniquement lors du jumelage des appareils Matter Wi‑Fi pour leur transmettre les informations réseau. Il n'est pas nécessaire pour le fonctionnement quotidien ni pour les appareils Thread ou Ethernet.

Si votre Jeedom ne dispose pas de Bluetooth intégré, vous pouvez utiliser une clé USB Bluetooth (adaptateur BT 4.0 ou 5.0).

important

Sans Bluetooth disponible, cochez l'option Réseau uniquement lors du jumelage. Cela fonctionne si l'appareil est déjà accessible sur le réseau local (appareils Thread via Border Router, ou appareils Wi‑Fi déjà provisionnés).

Mode BLE Proxy (Bluetooth distant)

Si votre Jeedom n'a pas de Bluetooth mais qu'une autre machine sur votre réseau en dispose (PC Windows, Raspberry Pi, Home Assistant…), vous pouvez utiliser le mode BLE Proxy.

Dans ce mode, le serveur Matter expose un endpoint WebSocket ws://<ip-jeedom>:5580/ble sur lequel un client distant se connecte et proxy toutes les opérations Bluetooth (scan, connexion GATT, BTP).

Activation :

  1. Dans Plugins → Matter → Configuration, section Commissioning, cochez BLE Proxy (distant)
  2. Sauvegardez et redémarrez le démon
  3. Sur la machine distante, lancez un client BLE Proxy compatible, par exemple le script Python disponible ici : https://github.com/Zyg0m4t1k/ble-proxy-client
# Python (Windows / Linux / macOS) — nécessite : pip install websockets bleak
python ble_proxy_client.py ws://192.168.1.x:5580/ble
remarque

Le mode BLE Proxy et l'adaptateur Bluetooth local sont mutuellement exclusifs. Activez l'un ou l'autre.

🔑 6️⃣ Code Matter obligatoire

Pour l'inclusion, vous aurez besoin du code à 11 chiffres de votre appareil.


Récupérer le code depuis Apple Maison

  1. Ouvrez l'application Maison sur votre iPhone ou iPad
  2. Maintenez le doigt appuyé sur l'accessoire Matter à partager
  3. Appuyez sur Réglages de l'accessoire (icône d'engrenage en bas à droite)
  4. Faites défiler vers le bas et appuyez sur Activer le mode de jumelage
  5. L'application génère un code numérique à 11 chiffres (et parfois un QR code)
  6. Appuyez sur Copier le code

Récupérer le code depuis Google Home

  1. Ouvrez l'application Google Home
  2. Maintenez le doigt sur la tuile de votre appareil Matter
  3. Appuyez sur l'icône Paramètres (roue crantée) en haut à droite
  4. Appuyez sur Applications et services Matter associés
  5. Appuyez sur Associer des applications et des services
  6. Sélectionnez Utiliser un code d'association (ou "Partager avec un code QR")
  7. Un code numérique à 11 chiffres s'affiche

Récupérer le code depuis Amazon Alexa

  1. Ouvrez l'application Amazon Alexa
  2. Appuyez sur l'onglet Appareils en bas de l'écran
  3. Sélectionnez l'accessoire Matter à partager
  4. Appuyez sur l'icône Paramètres (roue crantée) en haut à droite
  5. Sélectionnez Autres assistants et applications
  6. Appuyez sur Ajouter un autre
  7. Un code numérique à 11 chiffres s'affiche

🚀 Installation

Étape 1 — Installer le plugin depuis le Market

  1. Allez dans Plugins → Gestion des plugins → Market
  2. Recherchez Matter
  3. Cliquez sur Installer
  4. Activez le plugin

Installation plugin

Étape 2 — Installer les dépendances

Les dépendances incluent Matter Server (JS) et les modules nécessaires au fonctionnement du démon.
L'installation peut prendre 2 à 5 minutes selon votre machine.

  1. Allez dans Plugins → Matter → Configuration
  2. Cliquez sur Installer les dépendances
  3. Attendez que le statut passe à OK avant de continuer

⚠️ Cette étape installe automatiquement :

  • Node.js (si nécessaire)
  • Les dépendances npm (matter-server, ws, etc.)

Dépendances

⚠️ Ne redémarrez pas la page pendant l'installation. Vous pouvez suivre la progression dans les logs

Étape 3 — Démarrer le démon

  1. Toujours dans la configuration, cliquez sur Démarrer (section Démon)
  2. Attendez que le statut passe au vert ✅

Démon

Quand les deux voyants Démon et Serveur Matter sont verts, le plugin est opérationnel.


⚙️ Configuration

Mode serveur

ModeDescription
Auto (défaut)Le plugin détecte si un serveur Matter est déjà actif. Sinon, il le démarre.
EmbarquéLe plugin démarre et gère Matter Server (JS) lui-même.
ExterneLe plugin se connecte à une instance existante (ex. Home Assistant).

Paramètres disponibles

ParamètreValeur par défautDescription
Mode serveurautoVoir tableau ci-dessus
Port serveur5580Port TCP du Matter Server (WebSocket)
URL serveur Matterhttp://127.0.0.1:5580/wsURL WebSocket (mode externe uniquement)
Token Matter(vide)Token d'authentification (si requis)
Port démon55123Port RPC HTTP du démon Jeedom (Node.js)
Adaptateur BluetoothautoSélection de l'adaptateur BT pour le jumelage

En mode externe, renseignez l'URL WebSocket de votre serveur Matter (ex. ws://192.168.1.50:5580/ws).

Niveau de log

La page de configuration affiche le niveau de log actif pour chaque composant sous forme de badges colorés :

BadgeComposant
JeedomNiveau de log configuré dans Jeedom (paramètre global)
WrapperNiveau actif dans le script rpc-wrapper.mjs
DaemonNiveau actif dans le processus daemon.js (Matter Server JS)
ServerNiveau de log du serveur Matter

Les boutons Debug / Info / Notice / Warning / Error permettent de changer le niveau à chaud, sans redémarrer le démon. Le changement est appliqué immédiatement et sauvegardé.

astuce

En production, utilisez Notice ou Warning pour réduire le volume de logs. Passez en Debug temporairement pour diagnostiquer un problème.


➕ Ajouter un appareil Matter

Étape 1 — Récupérer le code de jumelage

Si l'appareil est déjà appairé avec un autre écosystème, selon votre configuration :

  • Partagez-le depuis l'application d'origine (si la fonctionnalité est disponible)
  • Ou réinitialisez l'appareil en usine pour le réappaire depuis zéro

Étape 2 — Jumelage dans Jeedom

  1. Allez dans Plugins → Matter → Configuration
  2. Dans la section Commissioning, collez le code Matter (numérique ou MT:…)
  3. Cochez Réseau uniquement si vous ne voulez pas utiliser le Bluetooth
  4. Cliquez sur Commissionner
  5. L'opération peut prendre jusqu'à 3 minutes

Ajouter équipement

Le Bluetooth n'est nécessaire que pour les appareils Wi-Fi lors de la phase de provisioning réseau. Les appareils Thread ou déjà sur le réseau peuvent être appairés en mode réseau uniquement.

Étape 3 — Synchronisation automatique

Après un jumelage réussi, le plugin synchronise automatiquement le nœud Matter et crée l'équipement Jeedom correspondant.

Vous pouvez aussi déclencher une synchronisation manuelle via le bouton Synchroniser sur la page de configuration.


🖥️ Page Équipement

Chaque appareil Matter apparaît comme un équipement Jeedom avec deux onglets.

Onglet Équipement

Contient les informations générales et les métadonnées Matter (en lecture seule) :

  • Fabricant / Produit : informations récupérées depuis l'appareil
  • Types de device : types Matter détectés (ex. OnOff Light, Door Lock)
  • Clusters : liste des clusters Matter présents sur l'appareil

Fiche équipement

Section Debug

L'onglet Équipement contient une section Debug avec le bouton suivant :

BoutonDescription
Dump node brutRécupère et affiche la structure JSON complète du nœud Matter (clusters, attributs, endpoints)

Le dump s'affiche dans une fenêtre avec un bouton Copier pour coller le contenu dans un ticket de support ou pour analyser les attributs disponibles sur l'appareil.

Onglet Commandes

Liste des commandes créées automatiquement selon les clusters détectés.


📊 Commandes par type d'appareil

Les commandes sont créées automatiquement en fonction des clusters Matter présents sur l'appareil.

Ampoules et prises On/Off

CommandeTypeDescription
onActionAllumer
offActionÉteindre
stateInfoÉtat (0/1)

Ampoules dimmables

CommandeTypeDescription
on / offActionAllumer / Éteindre
stateInfoÉtat (0/1)
setLevelAction (slider)Niveau de luminosité (0–100 %)
levelInfoNiveau actuel

Ampoules couleur (Extended Color Light)

Toutes les commandes dimmables, plus :

CommandeTypeDescription
setColorActionDéfinir la couleur RGB
colorInfoCouleur actuelle (hex)
setColorTemperatureAction (slider)Température de couleur (en mireds)
colorTemperatureInfoTempérature actuelle
ct_coolActionPreset froid (~4000 K)
ct_neutralActionPreset neutre (~3000 K)
ct_warmActionPreset chaud (~2700 K)

Serrures connectées

CommandeTypeDescription
lockActionVerrouiller
unlockActionDéverrouiller
lock_stateInfoÉtat (Locked / Unlocked / Jammed)
set_lock_modeActionMode de la serrure

Modes disponibles pour set_lock_mode :

  • Normal — fonctionnement standard
  • Vacation — verrouillage renforcé
  • Privacy — ne pas déranger
  • NoRemoteLockUnlock — blocage des commandes distantes

Capteurs d'environnement

CapteurCommandeType
TempératuretemperatureInfo (°C)
HumiditéhumidityInfo (%)
LuminositéilluminanceInfo (lux)
Présence/OccupationoccupancyInfo (0/1)
Contact (porte/fenêtre)contactInfo (0/1)

Thermostats

CommandeTypeDescription
local_temperatureInfoTempérature mesurée
occupied_heating_setpointInfo/ActionConsigne chauffage
occupied_cooling_setpointInfo/ActionConsigne refroidissement
system_modeInfoMode actuel

Boutons et télécommandes

Les boutons génèrent des commandes événementielles selon les pressions détectées :

CommandeDescription
shortPressAppui court
longPressAppui long
doublePressDouble appui

Les boutons multi-touches créent des commandes par touche (ex. button1_shortPress, button2_longPress).

Volets et stores

CommandeTypeDescription
openActionOuvrir
closeActionFermer
stopActionArrêter
positionInfoPosition actuelle (%)

Capteurs d'énergie

CommandeDescription
activePowerPuissance active (W)
voltageTension (V)
currentCourant (A)
energyÉnergie consommée (kWh)

Batterie

CommandeDescription
batteryNiveau de batterie (%)
batteryVoltageTension batterie (V)

❤️ Page Santé

La page Santé (accessible via le bouton Santé sur la page du plugin) affiche un rapport de diagnostic complet.

Page santé

Vérifications effectuées

VérificationDescription
Node.jsVersion installée et compatible
npmGestionnaire de paquets Node.js disponible
Matter Server (JS)Installation du module matter-server
DémonStatut du processus matterd (Node.js)
RPC démonDisponibilité de l'API RPC locale
Connexion Matter serverConnectivité WebSocket vers le serveur
Répertoire de donnéesPrésence et accessibilité du stockage
BluetoothDisponibilité de l'adaptateur BT système
IPv6Configuration réseau IPv6 (requis pour mDNS)
Docker / OTBRStatut du conteneur et du réseau Thread (si activé)

Actions disponibles

  • Diagnostiquer : rafraîchit le rapport de santé
  • Réparation auto : tente de corriger automatiquement les problèmes détectés
  • Mode jumelage : active le mode commissioning Bluetooth

Diagnostic IPv6 / Thread

La page Santé intègre des contrôles avancés pour identifier les problèmes de commissionnement Thread, particulièrement utiles sur les VM et environnements virtualisés.

Vérifications IPv6 effectuées

VérificationDescription
ipv6_kernelIPv6 activé au niveau noyau (/proc/sys/.../all/disable_ipv6)
ipv6_ifaceIPv6 activé sur l'interface réseau Matter (route par défaut)
ipv6_linklocalPrésence d'une adresse fe80:: (minimum requis)
ipv6_globalPrésence d'une adresse globale/ULA — bloquant si absente (commissioning Thread impossible)
ipv6_forwardingForwarding IPv6 actif = warning (mode routeur non recommandé)
ipv6_accept_raWarning uniquement si accept_ra=0 ET aucune adresse globale/ULA
ipv6_nmcliNetworkManager présent et interface gérée (bloquant si absent)
ipv6_thread_routesRoutes ULA Thread (fdxx::/64) détectées via les Route Information Options

Détection des routes Thread

Le plugin vérifie la présence de routes Thread de la forme fdxx::/64 :

fd54:cc13:a99f::/64 via ...
fde3:c292:b227:1::/64 via ...

Leur présence confirme que les annonces du Border Router (HomePod, OTBR…) sont correctement prises en compte. L'absence de ces routes est souvent la cause réelle d'un commissionnement Thread impossible, même quand IPv6 semble actif.

Correction automatique

Si aucune route Thread n'est détectée, un bouton Corriger permet d'appliquer automatiquement :

net.ipv6.conf.<interface>.accept_ra_rt_info_max_plen=64

Ce paramètre autorise Linux à accepter les routes annoncées via les Route Information Options (RIO) des Border Routers Thread. Il est persistant (ajouté dans /etc/sysctl.d/).

Cas typique sur VM

Sur une VM avec IPv6 actif et HomePod/OTBR fonctionnel, le commissionnement Thread peut échouer silencieusement si :

accept_ra_rt_info_max_plen = 0  ← valeur par défaut Linux

Après correction via la page Santé :

Routes Thread fdxx:: détectées → commissionnement Thread fonctionnel

Bonnes pratiques VM / Docker

  • Utiliser un réseau bridge (éviter le NAT)
  • Vérifier IPv6 directement dans la VM (pas seulement sur l'hôte)
  • Appliquer les paramètres IPv6 dans la VM elle-même
  • Utiliser --network=host pour Docker si Matter Server est conteneurisé
  • Éviter les réflecteurs mDNS / Avahi qui peuvent interférer

Diagnostic rapide en CLI

# Vérifier les routes Thread
ip -6 route | grep "^fd"

Si aucune route fdxx::/64 n'apparaît alors que vous avez un Border Router actif, utilisez le bouton Corriger de la page Santé.


🔁 Synchronisation

Synchronisation complète

Lance une resynchronisation de tous les nœuds Matter connus. Utile après une mise à jour du firmware d'un appareil ou en cas de dérive des commandes.

Via la configuration :

  1. Allez dans Plugins → Matter → Configuration
  2. Cliquez sur Synchroniser

Synchronisation d'un nœud spécifique

Disponible directement sur la fiche équipement si un nœud doit être resynchronisé individuellement.


🛠️ Utilisation dans les scénarios

Les commandes Matter s'utilisent comme n'importe quelle commande Jeedom dans vos scénarios.

Exemples d'usage :

# Allumer une lampe
[Salon][Ampoule Matter][on]

# Régler à 50 % de luminosité
[Salon][Ampoule Matter][setLevel] = 50

# Vérifier si la porte est verrouillée
SI [Entrée][Serrure Matter][lock_state] = Locked ALORS ...

# Déclencher sur présence
SI [Couloir][Capteur Matter][occupancy] = 1 ALORS ...

🧩 Mode Serveur Externe (Home Assistant)

Si vous utilisez déjà Home Assistant avec Matter Server (JS) actif, vous pouvez partager la même instance :

  1. Dans la configuration, sélectionnez Mode : Externe
  2. Renseignez l'URL WebSocket : ws://<ip-home-assistant>:5580/ws
  3. Ajoutez le token si nécessaire
  4. Sauvegardez puis redémarrez le démon

⚠️ En mode externe, le fabric Matter est partagé.
Les appareils déjà appairés dans Home Assistant seront visibles dans Jeedom,
mais chaque contrôleur conserve ses propres commandes et états.



🔧 OTBR / Thread (mode avancé)

Cette section est destinée aux utilisateurs souhaitant utiliser Thread localement avec Jeedom via un dongle OTBR.

📡 Principe

Le plugin Matter peut fonctionner avec :

  • 🌐 Un serveur Matter externe (Home Assistant, etc.)
  • 🔌 Un réseau Thread local via OTBR (Docker + dongle)

👉 Dans ce mode, Jeedom devient autonome pour :

  • le commissioning Thread
  • la gestion du réseau Thread
  • la communication avec les devices

🧱 Prérequis OTBR

  • Docker installé et fonctionnel
  • Utilisateur www-data dans le groupe docker
  • Un dongle ou hub Thread compatible (voir ci-dessous)

🔌 Modes de connexion du dongle Thread

Le plugin supporte trois façons de connecter votre dongle Thread, selon votre matériel.

Mode OTBR

Choisissez d’abord comment OTBR fonctionne :

ModeQuand l’utiliser
Local (USB + Docker)Le dongle est branché directement sur le serveur Jeedom
DistantOTBR tourne sur un hub réseau séparé (ex : SLZB-06xU avec OTBR intégré)

1. USB — Dongle branché directement

C’est le cas le plus courant : votre clé Thread est branchée sur un port USB du serveur Jeedom.

  • Le plugin détecte automatiquement les dongles disponibles
  • Choisissez de préférence le chemin /dev/serial/by-id/... (stable, ne change pas au redémarrage)

Matériels compatibles : Sonoff Zigbee Dongle Plus (Thread), SkyConnect, Slaesh CC2652RB, tout stick Thread USB

Paramètres UART : la plupart des dongles fonctionnent sans configuration supplémentaire. Si votre clé ne se connecte pas, utilisez un préréglage :

PréréglageMatériel
Slaesh CC2652RBSlaesh CC2652RB
SLZB Thread RCP (EFR32)SLZB-06x en USB

2. TCP via socat — Clé Thread sur le réseau (recommandé pour SLZB)

Votre clé Thread est connectée à un appareil réseau qui expose son port série via TCP (Serial-over-IP). Le plugin crée automatiquement un pont local via socat.

  • Saisir l’adresse de votre appareil au format ip:port (port 6638 par défaut)
  • Exemple : 192.168.1.10:6638

Matériels compatibles : SLZB-06x, SLZB-MR4U et tout adaptateur Serial-over-IP

Mode à activer sur le dongle : Thread to remote OTBR

Paramètre UART recommandé pour ces appareils : utiliser le préréglage TCP via socat (EFR32/SLZB-MR4U)

astuce

Ce mode est plus fiable que le TCP direct pour les appareils SLZB car socat gère la conversion du protocole série.

remarque

En mode Thread to remote OTBR, l’API REST du dongle (port 8080) est désactivée sur le dongle lui-même. Un curl http://ip-du-dongle:8080 qui échoue est normal et attendu dans cette configuration. Seul le port série TCP (6638) est utilisé.

Configuration Jeedom (exemple SLZB sur 192.168.1.147) :

ParamètreValeur
Mode pluginLocal (USB + Docker)
Type connexion RCPTCP réseau via socat
Adresse TCP RCP192.168.1.147:6638
Docker OTBRActif sur Jeedom

Vérifications :

# Connexion TCP au dongle — doit répondre
nc -vz 192.168.1.147 6638

# État Thread dans le conteneur OTBR — doit afficher leader, router ou child
docker exec -it otbr ot-ctl state

3. TCP direct — Connexion réseau native (avancé)

Connexion directe en protocole spinel sur TCP, sans intermédiaire. Réservé aux appareils compatibles avec le protocole spinel+hdlc+uart+tcp://.

Deux sous-modes :

  • Auto : saisir ip:port, le plugin construit l’URL automatiquement
  • URL complète : saisir l’URL spinel complète (ex : spinel+hdlc+uart+tcp://192.168.1.10:6638)

4. Distant — OTBR sur un hub réseau (expérimental)

OTBR tourne sur un appareil externe (ex : SLZB-06xU avec "Thread + OTBR on device" activé). Jeedom se connecte à son API REST via l’adresse HTTP.

Mode à activer sur le dongle : Thread + OTBR running on device

  • Sélectionner le mode Distant dans la configuration
  • Saisir l’URL de l’API REST de votre hub : http://192.168.1.x:8080
  • Le plugin lit et écrit le dataset Thread directement sur le hub

Configuration Jeedom (exemple SLZB sur 192.168.1.147) :

ParamètreValeur
Mode pluginDistant
URL OTBRhttp://192.168.1.147:8080
Docker OTBRArrêté sur Jeedom

Vérification :

# L’API REST du dongle doit répondre
curl http://192.168.1.147:8080

Important en mode distant :

  • Le conteneur Docker local n’est pas utilisé
  • Le watchdog local ne tourne pas (inutile)
  • Les boutons Lancer/Arrêter/Redémarrer OTBR sont désactivés
  • La gestion du réseau Thread se fait depuis Jeedom, mais c’est le hub qui l’exécute

Tableau récapitulatif

ModeMode dongleDocker JeedomPort utiliséWatchdog
USBOui/dev/ttyUSB*Oui
TCP socatThread to remote OTBROuiTCP 6638Oui
TCP directThread to remote OTBROuiTCP 6638Oui
DistantThread + OTBR on deviceNonHTTP 8080Non

⚙️ Installation

Depuis la page Configuration → OTBR :

  1. Cliquer sur Installer le support Thread

  2. Attendre la fin de l’installation (quelques minutes)

  3. Vérifier l’état :

    • Docker : OK
    • www-data dans docker : OK
  4. Si Docker n’est pas accessible ou droits www-data incorrects : 👉 Cliquer sur Redémarrer Apache ⚠️ À faire une seule fois après installation

  5. Cliquer sur Lancer OTBR

Statut OTBR Thread


🌐 Configuration du réseau Thread

Deux cas de figure :

🆕 Nouveau réseau Thread

  • Cliquer sur Créer / Réinitialiser le réseau Thread
    👉 Le plugin initialise automatiquement un nouveau dataset

🔁 Réseau existant (recommandé)

  • Récupérer un dataset Thread existant :

    • Home Assistant
    • Sauvegarde d’une ancienne clé
  • Ouvrir la fenêtre Gestion Matter & Thread

  • Coller le dataset dans le champ prévu

  • Cliquer sur Injecter le dataset

Ajouter dataset

👉 Permet de :

  • conserver les appareils existants
  • éviter de devoir tout réappairer

🔗 Commissionnement, multi-admin et dataset

La fenêtre Gestion Matter & Thread regroupe trois fonctions principales :

Admin Thread


➕ Commissionnement Matter

Permet d’ajouter un nouvel équipement Matter à Jeedom.

  • Saisir le code Matter (recommandé en manuel)
    👉 Utiliser de préférence le code manuel (plus fiable que le QR code)

  • Option possible : forcer la configuration réseau (avancé)

  • Cliquer sur Commissionner

👉 Utilisé pour :

  • ajouter un nouvel appareil
  • connecter un device neuf ou réinitialisé

🔄 Partage multi-admin

Permet d’ajouter dans un autre contrôleur Matter un équipement déjà présent dans Jeedom
(ex : Apple Home, Home Assistant)

Étapes :

  1. Sélectionner l’équipement dans Jeedom
  2. Cliquer sur Générer un code
  3. Utiliser ce code dans l’autre écosystème

👉 Permet :

  • d’éviter un reset
  • de partager un appareil entre plusieurs systèmes

👉 Nécessite que les contrôleurs soient sur le même réseau Thread


🧠 Différence importante

  • Commissionnement → ajout initial d’un appareil
  • Multi-admin → partage d’un appareil existant

👉 Les deux méthodes sont complémentaires et peuvent être utilisées ensemble


📋 Dataset Thread

Le dataset contient :

  • les clés réseau
  • le nom du réseau
  • la configuration Thread

👉 Le dataset est l’élément central du réseau Thread : tous les contrôleurs doivent partager le même

Fonctions disponibles :

  • 📥 Récupérer le dataset actuel
  • 📋 Copier
  • 📤 Injecter un dataset

📡 Canal Thread

Le canal Thread est le canal radio utilisé par tous les appareils de votre réseau. Il est stocké dans le dataset actif et doit être identique sur tous les nœuds.

Usage avancé

Changer le canal affecte tous les appareils Thread du réseau. L’opération est réversible via la restauration du backup, mais peut temporairement déconnecter certains équipements.

Lire le canal actuel

Depuis Configuration → OTBR, cliquez sur l’icône 🔄 à côté du champ Canal Thread pour lire le canal actuellement actif.

Changer le canal

  1. Saisissez le nouveau canal (valeurs autorisées : 11 à 26)
  2. Cliquez sur Changer
  3. Confirmez l’avertissement

Le comportement dépend du rôle OTBR dans le réseau Thread :

Rôle OTBRMécanismeDélai
Leaderdataset commit pending — propagé directement~30 secondes
Routerdataset updater start — soumis au Leader du réseau~5 minutes
Rôle Router

Si un autre border router (HomePod, Apple TV 4K, Google Nest Hub…) est Leader de votre réseau Thread, OTBR est en mode Router. Le changement de canal est soumis au Leader via MGMT_PENDING_SET.req — le basculement prend ~5 minutes si le Leader l’accepte.

Sauvegarde et restauration

Avant toute modification, le plugin sauvegarde automatiquement le dataset actif en configuration Jeedom.

ActionDescription
Sauvegarder le datasetOuvre la fenêtre Gestion Matter & Thread pour copier le dataset manuellement
Restaurer le backupRéinjecte le dataset sauvegardé avant le dernier changement de canal
Bonne pratique

Utilisez le bouton Sauvegarder le dataset avant tout changement de canal. En cas de problème, Restaurer le backup permet de revenir à l’état précédent en quelques secondes.

remarque

Le changement de canal Thread depuis l'interface fonctionne maintenant que votre OTBR soit Leader ou Router. En mode Router, le basculement prend ~5 minutes (délai de propagation au réseau). Vérifiez le canal avec Lire le canal après ce délai.


💡 Conseil

👉 Privilégier l’utilisation d’un dataset existant si vous avez déjà un réseau Thread 👉 Cela garantit une continuité et évite toute perte d’équipements


🧠 Bonnes pratiques

  • Toujours utiliser un seul réseau Thread
  • Faire une sauvegarde du dataset
  • Réutiliser le dataset lors d’un changement de clé

⚠️ Important

  • Le Bluetooth est utilisé uniquement pour le commissioning
  • Une fois ajouté, le device communique en Thread (réseau IP)
  • Si le dongle est remplacé → réinjecter le dataset
  • Si le dataset est perdu → les appareils devront être réappairés

🔄 Synchronisation des équipements

  • Les devices sont automatiquement détectés après commissioning
  • Une synchronisation peut être lancée manuellement si nécessaire

🛡️ Surveillance automatique (Watchdog)

Le plugin inclut un système de surveillance qui tourne en arrière-plan dès qu'OTBR est démarré. Il vérifie toutes les 30 secondes que tout fonctionne correctement.

Ce qu'il surveille

Situation détectéeAction automatique
Le conteneur OTBR s'est arrêtéRedémarrage du conteneur (après 60s)
Le conteneur a disparu ou est irrécupérableRecréation complète du conteneur
Le réseau Thread est perdu (detached)Redémarrage de la couche Thread
Le réseau Thread est désactivéRelance du réseau Thread

Rôle du cron Jeedom

La tâche planifiée de Jeedom (exécutée chaque minute) vérifie uniquement que le watchdog lui-même tourne. Si le watchdog s'est arrêté pour une raison quelconque, Jeedom le relance automatiquement.

Jeedom (cron 1 min)
└─ Watchdog actif ? Non → relance le watchdog
└─ Watchdog (toutes les 30s)
└─ OTBR OK ? Non → redémarre OTBR

Après une recréation complète

Si le conteneur OTBR a dû être entièrement recréé (cas rare), le réseau Thread redémarre sans votre dataset. Vos appareils Thread risquent de ne pas se reconnecter.

Solution : Allez dans Gestion Matter & Thread → Injecter le dataset et collez votre dataset de sauvegarde.

Bonne pratique

Pensez à copier votre dataset Thread régulièrement depuis Gestion Matter & Thread → Récupérer le dataset actuel. C'est votre "clé" pour retrouver vos appareils Thread en cas de problème.


🐛 Dépannage

Le démon ne démarre pas

  1. Vérifiez que les dépendances sont bien installées (statut OK)
  2. Consultez les logs log/matterd pour identifier l'erreur
  3. Vérifiez que le port 55123 (démon RPC) n'est pas occupé
  4. Utilisez Réparation auto sur la page Santé

Le jumelage échoue

  • Vérifiez que le code Matter est correct (11 chiffres ou format MT:…)
  • Assurez-vous que l'appareil est en mode commissioning (LED clignotante)
  • Essayez avec l'option Réseau uniquement décochée (pour activer le Bluetooth)
  • Augmentez le délai si l'appareil est lent à répondre (timeout 180 s par défaut)
  • Vérifiez que IPv6 est actif sur votre réseau (page Santé)

L'appareil est créé mais ne répond pas

  1. Vérifiez que l'appareil est alimenté et sur le même réseau
  2. Lancez une Synchronisation manuelle
  3. Consultez les logs log/matter pour les erreurs RPC
  4. Vérifiez la connectivité avec le serveur Matter depuis la page Santé

Les commandes ne se créent pas

  • Vérifiez les clusters détectés dans l'onglet Équipement
  • Relancez une synchronisation complète
  • Si le problème persiste, supprimez l'équipement et re-synchronisez le nœud
Analyser les clusters d'un appareil

Utilisez le bouton Dump node brut (onglet Équipement → section Debug) pour inspecter la structure complète d'un nœud Matter. Utile si des commandes attendues ne sont pas créées après synchronisation.

OTBR ne démarre pas (dongle USB non détecté)

  1. Vérifiez que le dongle est bien branché : allez dans Configuration → OTBR et cliquez sur Rafraîchir les ports
  2. Préférez le chemin /dev/serial/by-id/... s'il est disponible (plus stable)
  3. Si le dongle ne répond pas, essayez un Préréglage UART (Slaesh CC2652RB ou SLZB Thread RCP)
  4. Consultez les logs matter_otbr pour voir l'erreur exacte

OTBR ne se connecte pas (mode TCP socat ou TCP direct)

  1. Vérifiez que l'adresse ip:port est correcte (port 6638 par défaut pour SLZB)
  2. Testez que l'appareil est joignable sur le réseau
  3. Pour les SLZB : vérifiez que le mode "Serial-over-IP" ou "Thread RCP" est activé dans l'interface de l'appareil
  4. En cas d'échec de connexion, essayez le préréglage UART TCP via socat (EFR32/SLZB-MR4U)
  5. Consultez les logs matter_otbr

Le hub distant (mode Distant) n'est pas joignable

  1. Vérifiez l'URL de l'API REST : http://ip-du-hub:8080
  2. Vérifiez que votre hub a bien le mode OTBR activé
  3. Testez l'URL dans un navigateur : vous devez voir une réponse JSON
  4. Vérifiez qu'il n'y a pas de pare-feu entre Jeedom et le hub

OTBR s'est arrêté et ne redémarre pas

Le watchdog gère normalement ce cas automatiquement. Si OTBR reste arrêté :

  1. Consultez les logs matter_otbr pour voir ce qui s'est passé
  2. Vérifiez que Docker fonctionne sur la machine
  3. Allez dans Configuration → OTBR et cliquez sur Lancer OTBR manuellement
  4. Si le watchdog lui-même est arrêté, attendez jusqu'à 1 minute que Jeedom le relance automatiquement

Les appareils Thread ne répondent plus après un redémarrage d'OTBR

Si OTBR a dû être recréé entièrement (cas rare), le dataset Thread a été perdu :

  1. Allez dans Gestion Matter & Thread → Injecter le dataset
  2. Collez votre dataset de sauvegarde
  3. Cliquez sur Injecter le dataset
  4. Attendez quelques secondes que les appareils se reconnectent

Après mise à jour des dépendances

Après chaque mise à jour majeure des dépendances :

  1. Arrêtez le démon
  2. Relancez l'installation des dépendances
  3. Redémarrez le démon
  4. Vérifiez la page Santé

📋 Appareils compatibles

Le plugin supporte tout appareil certifié Matter 1.x, notamment :

  • Ampoules et spots (on/off, variateur, couleur)
  • Prises connectées
  • Serrures connectées
  • Capteurs de température et d'humidité
  • Capteurs de luminosité
  • Détecteurs de présence / mouvement
  • Capteurs d'ouverture (porte, fenêtre)
  • Thermostats
  • Volets et stores
  • Boutons et télécommandes
  • Compteurs d'énergie

🎉 Conclusion

Le plugin Matter offre une intégration complète du protocole Matter dans Jeedom :

  • Découverte automatique des capacités de chaque appareil via les clusters
  • Commandes générées automatiquement selon les fonctionnalités détectées
  • Supervision intégrée avec la page Santé et les logs
  • Compatible avec les installations existantes (mode serveur externe)

Installation → Jumelage → Utilisation dans vos scénarios et votre dashboard Jeedom.