Je teste le ZiWiFi32 Lite de chez LiXee en mode passerelle Zigbee/Wifi.

Mon cabanon piscine est situé trop loin de ma maison, ce qui le place hors de portée de mon réseau Zigbee principal. Plutôt que d’essayer d’étendre mon réseau existant, j’ai choisi de créer un **réseau Zigbee entièrement indépendant** dans le cabanon, puis de l’interconnecter avec mon système domotique principal via MQTT. Cette approche me permet de gérer localement les équipements dédiés à la piscine et à l’arrosage, tout en remontant les données vers Home Assistant.

Grâce au **ZiWiFi32 Lite** de LiXee, branché sur le port USB de mon routeur Synology MR2200ac (en mode point d’accès Wi-Fi), j’ai pu centraliser la gestion de ces équipements et assurer une communication fluide avec le reste de ma domotique.

Pourquoi un réseau Zigbee indépendant ?

J’ai opté pour la création d’un réseau dédié pour plusieurs raisons :

  • Stabilité : Un réseau Zigbee trop étendu peut souffrir de problèmes de latence ou de perte de paquets, surtout sur de longues distances.
  • Autonomie : En cas de panne du réseau principal, le cabanon reste fonctionnel et les équipements continuent de communiquer entre eux.
  • Flexibilité : Je peux gérer les équipements du cabanon de manière isolée, sans risquer d’impacter le reste de ma domotique.
  • Intégration simple : Comme pour mes équipements Sonoff ou ESP flashés, j’utilise MQTT pour interconnecter les deux réseaux, ce qui simplifie l’intégration avec Home Assistant.

Le ZiWiFi32 Lite est idéal pour ce projet : il agit comme un coordinateur Zigbee autonome et peut publier ses données sur un broker MQTT, assurant ainsi une intégration transparente avec Home Assistant.

ZiWiFi32 Lite de LiXee

Matériel utilisé

Pour réaliser ce projet, j’ai utilisé les éléments suivants :

  • 1 ZiWiFi32 Lite : pour créer le réseau Zigbee et faire la passerelle vers MQTT.
  • 1 routeur Synology MR2200ac : déjà en place en mode point d’accès Wi-Fi, avec un port USB libre pour alimenter le ZiWiFi32 Lite.
  • 1 rallonge USB : pour éloigner le ZiWiFi32 Lite du routeur et optimiser la couverture Zigbee dans le cabanon.
  • Mes équipements Zigbee : capteurs de température, électrovannes, et prises connectées pour la gestion de la piscine et de l’arrosage.
  • 1 broker MQTT : déjà installé sur ma Green Box Nabucasa avec Home Assistant.

Étape 1 : Branchement physique du ZiWiFi32 Lite

J’ai branché le ZiWiFi32 Lite sur le port USB du Synology MR2200ac, en utilisant une rallonge USB pour le positionner à un endroit stratégique dans le cabanon. Cela permet d’éviter les interférences avec le routeur tout en assurant une bonne couverture Zigbee. Dès le branchement, la LED du ZiWiFi32 Lite s’allume, indiquant qu’il est sous tension et prêt à être configuré.

Étape 2 : Configuration initiale via LiXee-Assist

J’ai utilisé l’application **LiXee-Assist** pour détecter le ZiWiFi32 Lite sur mon réseau Wi-Fi. L’application l’a trouvé automatiquement via mDNS. J’ai vérifié que le firmware était à jour, puis j’ai configuré le module pour qu’il se connecte automatiquement à mon réseau Wi-Fi au démarrage.

Détection du ZiWiFi32 Lite via LiXee-AssistNota : Pour la suite des opérations, on peut rester sur l’application LiXee ou basculer sur un navigateur. On peut utiliser l’adresse mDNS https://www.lixeebox-08e8.local/ ou directement l’IP : 192.168.xx.xx

Étape 3 : Création du réseau Zigbee indépendant

Dans LiXee-Assist, j’ai activé le mode **coordinateur Zigbee** et créé un nouveau réseau. J’ai choisi un canal différent de celui de ma maison (canal 25) pour éviter les interférences.

Activation du mode coordinateur Zigbee
Choix du canal Zigbee

Étape 4 : Configuration MQTT pour l’interconnexion avec Home Assistant

Pour interconnecter ce réseau Zigbee indépendant avec Home Assistant, j’ai configuré le ZiWiFi32 Lite pour qu’il publie ses données sur mon broker MQTT. Voici les paramètres que j’ai renseignés dans l’interface web du ZiWiFi32 Lite :

  • Adresse du broker MQTT : l’IP de mon serveur Home Assistant.
  • Port MQTT : 1883 (port standard).
  • Identifiant et mot de passe : ceux de mon utilisateur MQTT dédié.
  • Topic racine : homeassistant/sensor/ (se complète automatiquement quand on coche Home Assistant) pour organiser les messages.
  • MQTT Discovery : activé pour que Home Assistant détecte automatiquement les équipements.

Une fois la configuration sauvegardée, le ZiWiFi32 Lite se connecte au broker MQTT et commence à publier les données des équipements appairés.

Configuration MQTT du ZiWiFi32 Lite

Étape 5 : Appairage des équipements Zigbee

J’ai ensuite appairé un équipement Zigbee (capteur de température Sonoff SNZB-02). L’appairage se fait directement depuis l’interface web du ZiWiFi32 Lite. Il suffit de cliquer sur « Ajouter » dans le menu « Réseau / Zigbee », puis de suivre la procédure d’appairage propre à chaque équipement (consulter la documentation du fabricant).

Début de l'appairage
Mode appairage activé
Recherche de l'équipement
Détection de l'équipement
Nommer l'équipement
Appareil ajouté
Liste des appareils

J’ai relevé que cet équipement a un Device Id : 0302, ce qui correspond à 0x0302 en hexadécimal, soit 770 en décimal. Le fichier de configuration devra donc utiliser le modèle 770.json. Je vais dans Mesures/Appareils pour vérifier que les valeurs remontent.

Mesures des appareilsJe ne sais pas pourquoi 112% à la batterie, ce n’est pas stratégique.

Étape 6 : Lien entre l’équipement et Home Assistant

Pour que Home Assistant reconnaisse correctement les données, j’ai modifié le template de l’équipement pour spécifier les propriétés MQTT :

  • mqtt_device_class
  • mqtt_state_class
  • mqtt_icon

Pour cela, il faut avoir accès aux templates. Je vais dans Config / Général / cocher Mode développeur.

Activation du mode développeur
Menu Outils
Accès aux outils
Templates JSON

Dans la liste des templates, j’ai modifié le fichier 770.json avec la configuration suivante :

{
  "default": [
    {
      "status": [
        {
          "name": "Température",
          "cluster": "0402",
          "attribut": 0,
          "mqtt_device_class": "temperature",
          "mqtt_icon": "thermometer",
          "mqtt_state_class": "measurement",
          "type": "float",
          "coefficient": 0.01,
          "unit": "°C",
          "visible": 1,
          "jauge": "gauge",
          "min": -20,
          "max": 50
        },
        {
          "name": "Humidité",
          "cluster": "0405",
          "attribut": 0,
          "mqtt_device_class": "humidity",
          "mqtt_icon": "water-percent",
          "mqtt_state_class": "measurement",
          "type": "float",
          "coefficient": 0.01,
          "unit": "%",
          "visible": 1,
          "jauge": "gauge",
          "min": 0,
          "max": 100
        },
        {
          "name": "Voltage",
          "cluster": "0001",
          "attribut": 32,
          "mqtt_device_class": "voltage",
          "mqtt_icon": "flash",
          "mqtt_state_class": "measurement",
          "type": "float",
          "coefficient": 0.1,
          "unit": "V",
          "visible": 1
        },
        {
          "name": "Batterie",
          "cluster": "0001",
          "attribut": 33,
          "mqtt_device_class": "battery",
          "mqtt_icon": "battery-70",
          "mqtt_state_class": "measurement",
          "type": "numeric",
          "unit": "%",
          "visible": 1,
          "jauge": "battery",
          "min": 0,
          "max": 100
        }
      ],
      "bind": "1026;1029;1",
      "report": [
        {
          "cluster": "0405",
          "attribut": 0,
          "type": 33,
          "min": 60,
          "max": 61,
          "timeout": 0,
          "change": 0
        },
        {
          "cluster": "0402",
          "attribut": 0,
          "type": 33,
          "min": 60,
          "max": 61,
          "timeout": 0,
          "change": 0
        },
        {
          "cluster": "0001",
          "attribut": 32,
          "type": 33,
          "min": 60,
          "max": 61,
          "timeout": 0,
          "change": 0
        },
        {
          "cluster": "0001",
          "attribut": 33,
          "type": 33,
          "min": 60,
          "max": 61,
          "timeout": 0,
          "change": 0
        }
      ]
    }
  ]
}

Après avoir enregistré le fichier 770.json, j’ai redémarré le ZiWiFi32 Lite par sécurité. Ensuite, je suis retourné dans Réseau / Zigbee pour cliquer sur le bouton MQTT, ce qui ouvre le lien vers le serveur MQTT.

Lien vers MQTT

Enfin, dans Home Assistant, dans Outils de développement / États, j’ai recherché « lixee » et j’ai trouvé mes 4 équipements du TH01 :

Recherche des équipements dans Home Assistant
Valeurs apparues dans Home Assistant

Et voilà, c’est presque magique : les valeurs sont apparues dans Home Assistant !