LiXee-Box est une passerelle multi-protocole pour appareils Zigbee, conçue pour être un hub central de gestion de l'énergie et de domotique. Cette application transforme votre LiXee-ZiWifi32 en une passerelle complète capable de gérer vos appareils Zigbee, votre Linky, compteur de production, gaz, eau, et d'intégrer le tout dans votre système domotique.
Pour avoir plus d'informations (moins techniques==) vous pouvez parcourir (https://lixee-box.fr)
Cette application fonctionne avec :
- LiXee-ZiWifi32 Lite (WiFi uniquement)
- Basé sur ESP32-S3-WROOM-N16R8 (PSRAM : 8MB Flash : 16MB)
- Équipé d'un module JN5189 exécutant le firmware ZiGate v2
Note : Vous pouvez également utiliser ce code avec d'autres cartes ESP32S3, selon les connexions de broches de votre carte.
![]() |
|
- Relais longue distance : Linky (ZLinky) ↔ Zigbee ↔ LiXee-Box ↔ WiFi ↔ MQTT ↔ Home-Assistant/Jeedom/Domoticz
- Accès distant : Accédez à votre LiXee-Box depuis Internet via un tunnel sécurisé, sans ouverture de ports
- Passerelle cloud : Relayer les données des appareils Zigbee vers des services web via API
- Gestion énergétique avancée : Surveillance, délestage de charge, routage énergétique
- 🏠 LiXee-Box : Mesurer, analyser, économiser … pour une bonne gestion énergétique
- ⚡️ Optimiser la recharge de son véhicule électrique avec la LiXee-Box
- 📡 Augmenter la portée du ZLinky_TIC v2
La fonctionnalité principale est de relayer les données des appareils Zigbee vers un site web ou un service MQTT
L'appareil peut être configuré via un site web local
- Création et gestion d'objets Zigbee
- Modèles personnalisables pour différents types d'appareils
- Gestion des états et actions
- Historique des données pour les appareils de puissance et d'énergie
- Mises à jour OTA (Over-The-Air) automatiques et manuelles
- Tableau de bord énergétique avec jauges et graphiques
- Surveillance de la consommation en temps réel
- Graphiques de tendance et historiques
- Données Linky intégrées
- MQTT : Serveur/port/utilisateur/mot de passe personnalisables
- MQTT Discovery compatible avec Home Assistant
- WebPush API : URL/utilisateur/mot de passe
- Tunnel d'accès distant : Accès sécurisé à la LiXee-Box depuis Internet sans ouverture de ports (reverse proxy WebSocket)
- Règles automatisées pour le délestage de charge et le routage énergétique
- Seuils configurables avec actions automatiques
- Gestion de la production et distribution d'énergie
- Gestion tarifaire pour l'énergie, la production, le gaz et l'eau
- Gestion avancée chauffage / froid (en cours)
- Authentification par sessions (token 32 caractères, durée 24h, max 4 sessions simultanées)
- Page de connexion dédiée avec redirection automatique
- Compatibilité Basic Auth pour les clients API
- Masquage des mots de passe et tokens dans l'interface
- Protection contre le path traversal
- Sauvegarde/restauration de configuration
- Mode développeur pour le débogage
avec LiXee-Assist https://github.com/fairecasoimeme/LiXee-Assist
Veuillez télécharger l'application pour procéder
|
|
Scannez simplement l'appareil (avec BLE) et complétez l'appairage avec vos identifiants WiFi locaux
Avec un navigateur web
- Alimentation : Branchez l'appareil sur une alimentation USB
- WiFi : Scannez les réseaux WiFi disponibles avec votre mobile/ordinateur
- Connexion : Connectez-vous au SSID
LIXEEGW-XXXX(XXXX = partie de l'adresse MAC) - Authentification : Mot de passe par défaut
adminXXXX(XXXX = suffixe du SSID) - Configuration : Ouvrez
http://lixee-gwdans votre navigateur - WiFi Principal : Configurez votre réseau WiFi principal
- Redémarrage : L'appareil redémarre et se connecte à votre réseau
Pour repasser la LiXee-Box en mode bluetooth pour association avec LiXee-Assist :
- Brancher la LiXee-Box
- Attendre 3 secondes
- Débrancher la LiXee-Box
Répéter l'opération 3 fois et la LiXee-Box sera réinitialisée
Cliquer sur "A propos" puis "Mise à jour"
L'interface de mise à jour vous permet de maintenir votre LiXee-Box à jour avec les dernières fonctionnalités.
- Tout d'abord il faut sortir la carte électronique du boitier. Dévisser les 2 vis.
- Télécharger l'utilitaire de flash : https://docs.espressif.com/projects/esp-test-tools/en/latest/esp32s3/production_stage/tools/flash_download_tool.html
- Décompresser et lancer l'exéctutable : flash_download_tool_x.x.x.exe
- Suivez les mêmes paramètres que les captures d'écran (
⚠️ ne pas cliquer sur le bouton ERASE)
Voici les fichiers à sélectionner avec les adresses correspondantes :
- firmware.bin @ 0x10000
- boot_app0.bin @ 0xe000
- bootloader.bin @ 0x0
- partitions.bin @ 0x8000
Il ne reste plus qu'à sélectionner le bon port COM puis de cliquer sur START
-
Ouvrir une console ou powershell et se placer dans le répertoire ou se trouve le fichier firmware.bin
-
Taper la commande suivante :
esptool.exe --chip esp32s3 --port "COMXX" --baud 921600 write_flash -z --flash_mode dio --flash_freq 40m --flash_size 16MB 0x0 bootloader.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 firmware.bin
à partir de l'interface, aller dans le menu : Réseau --> Zigbee puis Appuyer sur le bouton "Ajouter"
Le processus d'appairage est simplifié avec un assistant pas à pas pour connecter vos appareils Zigbee.
Interface complète pour configurer et surveiller tous vos appareils Zigbee connectés.
Tableau de bord complet avec visualisation en temps réel de votre consommation énergétique, graphiques historiques et interface mobile responsive.
Selon votre abonnement, vous verrez apparaître en première ligne le tarif en cours de votre abonnement mais aussi la couleur du jour ou la couleur du lendemain si vous avez un abonnement Tempo

Les sous-compteurs permettent de suivre en détail la consommation énergétique de vos équipements spécifiques au sein de votre habitat. En associant une prise ou un module connecté Zigbee disposant de la fonction de mesure de consommation (cluster 0x0702), vous pouvez isoler et analyser la consommation de certains postes de dépense énergétique.
- Véhicule électrique : Suivez précisément la consommation liée à la recharge de votre véhicule et calculez le coût réel de vos trajets.
- Électroménager énergivore : Identifiez la consommation de votre sèche-linge, lave-linge, four ou réfrigérateur.
- Chauffage d'appoint : Mesurez l'impact d'un radiateur électrique ou d'une pompe à chaleur sur votre facture.
- Bureau / Informatique : Évaluez la consommation de votre poste de travail, serveur NAS ou équipement réseau.
- Piscine / Spa : Suivez la consommation de la pompe de filtration ou du chauffage.
Les sous-compteurs héritent automatiquement de la période tarifaire en cours (HP/HC, Tempo Bleu/Blanc/Rouge, EJP...) détectée par le ZLinky. Ainsi, la consommation est ventilée selon les mêmes index tarifaires que votre compteur principal, permettant un calcul précis du coût réel.
Donut de répartition : Les sous-compteurs apparaissent dans le graphique de répartition énergétique avec leur couleur personnalisée, aux côtés des index tarifaires du ZLinky.
Graphique d'usage : Les barres de consommation des sous-compteurs sont affichées et automatiquement soustraites des index tarifaires correspondants pour éviter le double comptage.
Légende détaillée : Chaque sous-compteur affiche sa consommation en kWh et son équivalent en euros.
Chaque sous-compteur peut avoir un coefficient de conversion personnalisé (défini dans le template du device). Cela permet d'adapter l'affichage selon l'unité de mesure du capteur (ex: conversion Wh vers kWh, ou ajustement d'un facteur de calibration).
- Accédez à la page Config --> Énergie
- Dans la section Sous-compteurs, cliquez sur Ajouter
- Sélectionnez le device Zigbee disposant de la mesure de consommation
- Définissez un alias (nom) pour identifier facilement le sous-compteur
- Choisissez une couleur pour la visualisation dans les graphiques
- Activez le sous-compteur
Les données des sous-compteurs sont stockées avec le même niveau de granularité que le ZLinky :
- Horaire : Consommation heure par heure
- Journalier : Consommation jour par jour sur 30 jours glissants
- Mensuel : Consommation mois par mois sur 12 mois
- Annuel : Historique sur plusieurs années
Les données sont persistées et restaurées automatiquement après un redémarrage.
Tout device Zigbee reportant le cluster Simple Metering (0x0702) avec l'attribut Current Summation Delivered (0x0000) est compatible.
La gestion de présence permet de corréler votre consommation énergétique avec les périodes d'occupation de votre habitat. En intégrant des capteurs de présence, vous pouvez visualiser l'impact de votre présence sur votre consommation et identifier des anomalies (consommation excessive en votre absence, par exemple).
- Analyse comportementale : Comprenez comment votre présence influence votre consommation énergétique et identifiez des pistes d'économies.
- Détection d'anomalies : Repérez une consommation anormale pendant vos absences (appareil resté allumé, fuite, dysfonctionnement).
- Optimisation du chauffage : Corréllez la consommation de chauffage avec les périodes d'occupation pour ajuster vos programmations.
- Suivi des habitudes : Visualisez vos routines quotidiennes et leur impact énergétique.
- Maison secondaire : Surveillez la consommation en votre absence et détectez toute activité inattendue.
Les périodes de présence sont affichées sous forme de zones colorées superposées aux graphiques de consommation énergétique. D'un coup d'œil, vous pouvez identifier :
- Les périodes où le logement est occupé (zone colorée)
- Les périodes d'absence (zone transparente)
L'historique de présence est conservé avec la même granularité que les données énergétiques :
- Horaire : État de présence heure par heure
- Journalier : Taux d'occupation par jour
- Mensuel : Statistiques d'occupation mensuelles
- Accédez à la page Config --> Énergie
- Dans l'onglet Présence,
- Sélectionnez le capteur Zigbee à utiliser pour la détection
- Activez la fonctionnalité
Les zones de présence sont affichées en transparence sur le graphique de consommation :

Tout device Zigbee reportant le cluster Occupancy (0x0406) avec l'attribut 0x0000 est compatible.
La LiXee-Box permet de récupérer la production d'énergie.
Au travers du ZLinky, il est possible de récupérer les données d'injection et l'index de production dans les cas suivant :
- Le Linky est en mode standard
- vous avez un contrat avec EDF OA Ces conditions sont nécessaires pour que votre Linky soit en mode Producteur
Il suffit donc de paramétrer dans Config --> Energie puis sélectionner dans l'onglet Production le ZLinky qui est mode production.
PS : Dans certaines configurations, il y a 2x Linky dont 1x Linky dédié à la production. Il faudra alors brancher et jumeler un autre ZLinky que celui dédié à la consommation
Si vous possédez des panneaux photovoltaïques sans contrat, le Linky ne pourra pas être paramétrer en mode Producteur par votre fournisseur d'énergie.
Cependant, il sera possible de détecter une sur production lorsque votre production sera supérieure à votre consommation. Dans ce cas, la LiXee-Box pourra déterminer la puissance d'injection sur le réseau et agir en conséquence.
En effet, cette information vous permettra de lancer des machines, enclencher votre chauffe-eau ou encore recharger votre véhicule électrique.
Voici les conditions permettant de détecter une surproduction sur votre Linky
- une puissance apparente à 0 VA
- une intensité > 0 A
Si ce cas arrive, vous aurez sur le graphique de puissance les données d'injection.
Le tunnel permet d'accéder à votre LiXee-Box depuis Internet, sans avoir besoin d'ouvrir de ports sur votre box Internet. La connexion passe par un reverse proxy WebSocket sécurisé.
La LiXee-Box établit une connexion WebSocket sortante vers le serveur remote.lixee-box.fr. Ce serveur relaye les requêtes HTTP entrantes vers votre LiXee-Box, qui les traite localement et renvoie les réponses. Votre box Internet n'a besoin d'aucune configuration particulière (pas de NAT, pas de port forwarding).
- Accédez à la page Config → Tunnel
- Entrez le code d'activation à 6 chiffres fourni par LiXee
- Cliquez sur Activer
- Lorsque le statut passe à Connecté, l'URL d'accès distant s'affiche automatiquement
Une section Configuration avancée repliable permet également une connexion manuelle avec vos propres identifiants (subdomain, token).
- Jusqu'à 6 requêtes HTTP simultanées grâce à une architecture non-bloquante à machine d'état
- Heartbeat automatique pour maintenir la connexion active
- Hot-reload : le tunnel redémarre automatiquement après modification de la configuration
- L'URL d'accès distant est de la forme
https://<votre-id>.lixee-box.fr - La désactivation du tunnel est protégée lorsqu'on y accède depuis l'accès distant (pour éviter de se couper l'accès)
Pour accéder à toutes les règles, il faut suivre Config --> Règles
La page permet de suivre la liste des règles avec leur état et la date de dernière exécution.
Vous pourrez créer, modifier ou supprimer une règle.
-
Les règles sont stockées dans un fichier JSON.
-
Une règle peut être déclenchée :
- toutes les 60 secondes
- dès que le couple cluster/attribut choisi est mis à jour
-
Une règle peut contenir une ou plusieurs conditions.
-
Une règle peut contenir une ou plusieurs actions si les conditions sont réunis.
-
Une règle peut contenir une ou plusieurs actions si les conditions ne sont pas réunis
-
Une règle peut intégrer une plage horaire (Optionnel)
Voici la structure :
├── Rule
│ ├── name
| ├── TimeRanges
│ │ ├── startTime
│ │ ├── endTime
│ │ ├── days[...] //1,2,3,4,5,6,7
| ├── trigger
│ │ ├── mode
│ │ ├── IEEE
│ │ ├── cluster
│ │ ├── attribut
│ ├── conditions
│ │ ├── type
│ │ ├── IEEE
│ │ ├── cluster
│ │ ├── attribut
│ │ ├── operator
│ │ ├── value
│ │ ├── logic
│ ├── actions
│ │ ├── type
│ │ ├── IEEE
│ │ ├── endpoint
│ │ ├── value
par défaut mode = timer
| Paramètre | Obligatoire | Type | Valeur | Commentaire |
|---|---|---|---|---|
mode |
✓ | String | "event" ou "timer" | |
IEEE |
✓ | String | Adresse MAC sans ':' ou '-' | |
cluster |
✓ | Decimal | ID du cluster en décimal | |
attribut |
✓ | Decimal | Numéro d'attribut |
| Paramètre | Obligatoire | Type | Valeur | Commentaire |
|---|---|---|---|---|
type |
✓ | String | "device" / "time" / "time_range" / "weekday" / "date" / "day" / "month" | |
IEEE |
si type == 'device' --> String sinon 0 | Adresse MAC sans ':' ou '-' | ||
cluster |
si type == 'device' --> Decimal sinon 0 | ID du cluster en décimal | ||
attribut |
si type == 'device' --> Decimal sinon 0 | Numéro d'attribut | ||
operator |
✓ | String | "<", ">", "==", "!=", ">=", "<=", "in", "not_in" | |
value |
✓ | Decimal/String | Valeur de comparaison | Peut être un String sur les opérateurs == ou != uniquement |
logic |
String | "AND", "OR" | Uniquement pour conditions multiples |
| Paramètre | Obligatoire | Type | Valeur | Commentaire |
|---|---|---|---|---|
type |
✓ | String | "device" / "onoff (à disparaitre)" / "notification" | |
IEEE |
✓ | String | Adresse MAC sans ':' ou '-' | |
actionName |
✓ | String | Nom de l'action | |
command |
✓ | Decimal | -1 = utilisation du template sinon override | |
endpoint |
✓ | Decimal | ID du point de terminaison | |
value |
✓ | String | Valeur de l'action | |
title |
✓ | String | pour type "notification" | |
message |
✓ | String | pour type "notification" |
| Paramètre | Obligatoire | Type | Valeur | Commentaire |
|---|---|---|---|---|
startTime |
✓ | String | "HH:mm" | |
endTime |
✓ | String | "HH:mm" | |
days |
✓ | Array | [1,2,3,4,5,6,7] | Chaque chiffre correspond au numéro du jour |
Par exemple :
{
"rules":[
{
"name":"rule_1",
"conditions" : [
{
"type" : "device",
"IEEE" : "00158d0006204fcf",
"cluster" : 2820,
"attribute" : 1295,
"operator" : "<",
"value" : 1000,
"logic" : "AND"
}
],
"actions" : [
{
"type" : "onoff",
"IEEE" : "a4c138bb23185d2c",
"endpoint":1,
"value": "1"
}
]
}, {
"name":"rule_2",
"conditions" : [
{
"type" : "device",
"IEEE" : "00158d0006204fcf",
"cluster" : 2820,
"attribute" : 1295,
"operator" : ">",
"value" : 1000,
"logic" : "AND"
}
],
"actions" : [
{
"type":"notification",
"IEEE":"",
"endpoint":0,
"value":"",
"title":"🚨⚡puissance > 1000",
"message":"🚨⚡puissance > 1000"
}
]
}
]
}Les notifications permettent d'être informé ou alerté des évènements de votre habitat selon vos besoins
La LiXee-Box est compatible avec un large éventail d'appareils Zigbee grâce à sa prise en charge des clusters standards. Voici la liste détaillée du matériel compatible.
| Cluster | Nom | Description |
|---|---|---|
| 0x0000 | Basic | Informations de base de l'appareil |
| 0x0001 | Power Configuration | Gestion batterie |
| 0x0006 | On/Off | Commandes marche/arrêt |
| 0x0102 | Window Covering | Contrôle volets/stores |
| 0x0402 | Temperature Measurement | Mesure de température |
| 0x0405 | Relative Humidity | Mesure d'humidité |
| 0x0406 | Occupancy Sensing | Détection de présence |
| 0x0702 | Simple Metering | Comptage d'énergie |
| 0x0B04 | Electrical Measurement | Mesures électriques |
| 0xFF66 | LiXee | Cluster propriétaire LiXee |
| Appareil | Device Type | Description | Testé |
|---|---|---|---|
| ZLinky_TIC | 0x0061 | Téléinformation Linky | ✅ |
| ZiPulses | 0x0107 | Compteur d'impulsions (eau, gaz) | ✅ |
Device Type : 0x0107, 0x0101, 0x0061
| Marque | Modèles | Mesure énergie | Notes | Testé |
|---|---|---|---|---|
| Aqara | SP-EUC01, ZNCZ12LM | ✅ | 10A max, capteur température intégré | ✅ |
| Sonoff | S31 Lite ZB, S40 Lite | ✅ | 15-16A, bon rapport qualité/prix | |
| IKEA | TRÅDFRI, Grillplats | ❌ | Répéteur Zigbee | |
| Tuya/Moes | Diverses prises Smart Life | ✅ | 16A, économique | |
| Neo Coolcam | Plug-007SPB2 | ✅ | Basé Tuya | |
| Nous | Smart Zigbee Socket A1Z | ✅ | Version EU | ✅ |
| Lidl | SilverCrest Smart Plug | ✅ | Basé Tuya | ✅ |
| BlitzWolf | BW-SHP13 | ✅ | 16A, bon routeur Zigbee | |
| Innr | SP 120, SP 220, SP 222 | ✅ | Compatible Hue | |
| Osram | Smart+ | ✅ | ✅ | |
| Philips | LOM001 | ✅ | ✅ |
Tout appareil Zigbee avec Device Type 0x0107, 0x0101 ou 0x0061 utilisant les clusters On/Off (0x0006) et Electrical Measurement (0x0B04) devrait fonctionner.
Device Type : 0x0202
| Marque | Modèles | Notes | Testé |
|---|---|---|---|
| NodOn | SIN-4-RS-20 | Module encastrable, auto-calibration | |
| Tuya/Moes | Curtain Switch, Roller Shutter Module | Nombreux modèles disponibles | ✅ |
| LoraTap | SC500ZB, divers modèles | Compatible Zigbee2MQTT | |
| Legrand | Céliane/Mosaic Zigbee | Volet roulant connecté | |
| Aqara | Curtain Driver E1 | Moteur pour rideaux | |
| Zemismart | Roller Shade Motor | Moteur tubulaire |
Tout appareil avec Device Type 0x0202 utilisant le cluster Window Covering (0x0102) avec les commandes Up/Down/Stop.
Device Type : 0x0302
| Marque | Modèles | Pression | Écran | Notes | Testé |
|---|---|---|---|---|---|
| Aqara | WSDCGQ11LM, T1 (TH-S02D) | ✅ | ❌ | Capteur Sensirion, très précis | |
| Sonoff | SNZB-02, SNZB-02D, SNZB-02P | ❌ | ✅ (02D) | Économique, écran LCD sur 02D | ✅ |
| IKEA | VINDSTYRKA, Timmerflotte | ❌ | ✅ | Qualité de l'air sur VINDSTYRKA | |
| iHorn | 113D | ❌ | ✅ | ✅ | |
| Tuya/Moes | ZSS-ZK-THL, TS0201, divers | Variable | Variable | Large choix de modèles | |
| Nous | E5 | ❌ | ❌ | Compact | |
| OWON | THS317-ET | ❌ | ❌ | Sonde externe sur câble | |
| Xiaomi/Mijia | WSDCGQ01LM | ❌ | ❌ |
Tout appareil avec Device Type 0x0302 utilisant les clusters Temperature Measurement (0x0402) et Relative Humidity (0x0405).
Device Type : 0x0107
| Marque | Modèles | Luminosité | Type | Notes | Testé |
|---|---|---|---|---|---|
| Aqara | RTCGQ11LM, P1 | ✅ | PIR | Délai 60-90s | |
| Aqara | FP1, FP2 | ✅ | mmWave | Détection présence statique, zones | |
| Sonoff | SNZB-03 | ❌ | PIR | Délai 60s | |
| Sonoff | SNZB-06P | ✅ | Radar 5.8GHz | Présence statique | ✅ |
| Philips Hue | Indoor/Outdoor Motion | ✅ | PIR | Température intégrée | |
| IKEA | TRÅDFRI E1745, Myggspray | ❌ | PIR | IP44 (extérieur) | |
| Tuya/Moes | ZY-M100, MTG075-ZB | Variable | mmWave | Présence statique |
Tout appareil avec Device Type 0x0107 utilisant le cluster Occupancy Sensing (0x0406).
Compatibilité via clusters standards
| Marque | Modèles | Notes | Testé |
|---|---|---|---|
| Moes/Tuya | BRT-100, TV01, TRV601 | Programmable, détection fenêtre ouverte | ✅ |
| Danfoss | Ally | Haute qualité | |
| Eurotronic | Spirit Zigbee | ||
| Popp | POPZ701721 |
⚠️ Note : Les TRV utilisent souvent des clusters propriétaires Tuya (TS0601). La compatibilité peut varier selon les modèles.
Compatibilité partielle via cluster On/Off
| Marque | Notes | Testé |
|---|---|---|
| IKEA | TRÅDFRI / Kajplats - On/Off et dimming | |
| Philips Hue | Compatible clusters standards | |
| Innr | Compatible Hue et Zigbee standards | |
| Tuya/Moes | Nombreux modèles |
ℹ️ La LiXee-Box supporte le cluster On/Off (0x0006). Le contrôle des couleurs (cluster 0x0300) n'est pas ecnore implémenté.
Pour vérifier si un appareil Zigbee est compatible :
- Identifiez le Device Type de votre appareil (disponible dans la documentation)
- Vérifiez les clusters utilisés par l'appareil
- Un appareil est compatible si :
- Son Device Type correspond à ceux listés ci-dessus
- Il utilise les clusters standards supportés
Si votre appareil n'est pas reconnu automatiquement, vous pouvez créer un template personnalisé.
Un fichier modèle est une structure JSON qui définit les états et actions d'un type d'appareil. Le nom du fichier modèle correspond à l'identification de l'appareil (en décimal). Lorsqu'un appareil Zigbee rejoint le réseau, LiXee-Box crée un objet suivant le modèle correspondant avec les états et actions, effectue les liaisons et configure les rapports si nécessaire.
Voici la structure :
├── Modèle d'appareil ou 'default'
│ ├── status
│ │ ├── name
│ │ ├── cluster
│ │ ├── attribut
│ │ ├── type
│ │ ├── unit
│ │ ├── coefficient
│ │ ├── visible
│ │ ├── jauge
│ │ ├── min
│ │ ├── max
│ │ ├── poll
│ │ ├── mqtt_device_class
│ │ ├── mqtt_state_class
│ │ ├── mqtt_icon
│ ├── action
│ │ ├── name
│ │ ├── command
│ │ ├── endpoint
│ │ ├── value
│ │ ├── visible
│ ├── bind
│ ├── report
│ │ ├── cluster
│ │ ├── attribut
│ │ ├── type
│ │ ├── min
│ │ ├── max
│ │ ├── timeout
│ │ ├── change
Vous pouvez trouver des exemples de modèles dans le répertoire data/tp
Exemple de fichier 24321.json pour l'appareil id (5F01 Hex) :
{
"lumi.sensor_switch.aq2" : [
{
"status" : [
{
"name" : "Clic",
"cluster" : "0006",
"attribut" : 0
},
{
"name" : "MultiClic",
"cluster" : "0000",
"attribut" : 32768
}
]
}
],
"default" : [
{
"status" : [
{
"name" : "Clic",
"cluster" : "0012",
"attribut" : 85
},
{
"name" : "MultiClic",
"cluster" : "0012",
"attribut" : 1293
}
]
}
]
}| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
name |
✓ | String | Nom d'affichage |
cluster |
✓ | String | ID du cluster (hex) |
attribut |
✓ | Decimal | Numéro d'attribut |
type |
String | "numeric", "float" | |
unit |
String | Unité de mesure | |
coefficient |
Float | Coefficient multiplicateur | |
jauge |
String | "Gauge", "Battery", "text" | |
visible |
Decimal | 1 (visible) ou 0 (masqué) | |
poll |
Decimal | Intervalle d'interrogation (sec) | |
mqtt_device_class |
String | Classe de périphérique MQTT pour HA | |
mqtt_state_class |
String | Classe d'état MQTT pour HA | |
mqtt_icon |
String | Icône MQTT pour HA |
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
name |
✓ | String | Nom de l'action |
command |
✓ | Decimal | ID de commande |
endpoint |
✓ | Decimal | Numéro de point de terminaison |
value |
✓ | Decimal | Valeur à envoyer |
visible |
Decimal | 1 (visible) ou 0 (masqué) |
Liste des clusters (en numérique) qui seront liés
exemple : bind : "1026;1029;1794"
| Commande | Obligatoire | Type | Valeur | Commentaire |
|---|---|---|---|---|
cluster |
✓ | String | ID du cluster en hexadécimal | |
attribut |
✓ | Decimal | Numéro d'attribut en décimal | |
type |
✓ | Decimal | Correspond au type numérique de l'attribut | |
min |
✓ | Decimal | Temps minimum (en secondes) pour envoyer un rapport | |
max |
✓ | Decimal | Temps maximum (en secondes) pour envoyer un rapport | |
timeout |
Decimal | En millisecondes | ||
change |
Decimal | Valeur de changement pour envoyer un rapport |
Pour accéder aux commandes de l'API, allez sur http:///
curl -X GET 'https://<HOST>/getSystem'\
-u <username>:<password> \
-H 'Content-Type: application/json' \{
"network": {
"wifi": {
"enable": 1,
"connected": 1,
"mode": 0,
"ip": "192.168.0.144",
"netmask": "255.255.255.0",
"gateway": "192.168.0.254"
}
},
"system": {
"mqtt": {
"enable": 1,
"connected": 1,
"url": "192.168.0.21",
"port": 1883
},
"webpush": {
"enable": 0,
"auth": 0,
"url": ""
},
"marstek": {
"enable": 1,
"connected": 0,
"ip": ""
},
"infos": {
"t": 48.1
}
}
}curl -X GET 'https://<HOST>/getDevices'\
-u <username>:<password> \
-H 'Content-Type: application/json' \{
"00158d0006203a63": {
"1": {
"IN": "0,1,3,1026,1794",
"OUT": "4,3,1794"
},
"INFO": {
"shortAddr": "38694",
"LQI": "66",
"device_id": "263",
"lastSeen": "2025-03-14 14:40",
"Status": "00",
"manufacturer": "LiXee",
"model": "ZiPulses",
"software_version": "4000-0008"
},
"0702": {
"0": "000000000036"
},
"0402": {
"0": "09F8"
},
"0001": {
"32": "23",
"33": "C8"
}
}
}curl -X GET 'https://<HOST>/getDevice?id=04cf8cdf3c79ce2b'\
-u <username>:<password> \
-H 'Content-Type: application/json' \{
"04cf8cdf3c79ce2b": {
"1": {
"IN": "0,2,3,4,5,6,9,1794,2820",
"OUT": "10,25"
},
"242": {
"IN": "",
"OUT": "33"
},
"INFO": {
"shortAddr": "5561",
"LQI": "5C",
"device_id": "97",
"lastSeen": "2025-03-13 19:30",
"Status": "00",
"manufacturer": "LUMI",
"model": "lumi.plug.maeu01",
"software_version": "22"
}
}
}curl -X GET 'https://<HOST>/getLinky'\
-u <username>:<password> \
-H 'Content-Type: application/json' \{
"65382_768": 0,
"1794_0": 28870881,
"1794_256": 28870881,
"1794_258": 0,
"1794_260": 0,
"1794_262": 0,
"1794_264": 0,
"1794_266": 0,
"2820_1295": 1560,
"2820_1293": 0,
"1794_32": "TH..",
"1794_776": "022161823588",
"2817_13": 45,
"2817_14": 0,
"2820_1288": 6,
"2820_1290": 90,
"65382_0": "BASE",
"65382_1": "",
"65382_2": "00",
"65382_3": 0,
"65382_4": 0,
"65382_5": 0
}curl -X GET 'https://<HOST>/getTemplates'\
-u <username>:<password> \
-H 'Content-Type: application/json' \{
"24321.json": {
"lumi.sensor_switch.aq2": [
{
"status": [
{
"name": "Clic",
"cluster": "0006",
"attribut": 0
},
{
"name": "MultiClic",
"cluster": "0000",
"attribut": 32768
}
]
}
],
"default": [
{
"status": [
{
"name": "Clic",
"cluster": "0012",
"attribut": 85
},
{
"name": "MultiClic",
"cluster": "0012",
"attribut": 1293
}
]
}
]
},.........
}Installez simplement esptools et exécutez cette commande
esptool.py.exe --chip esp32s3 --port "COMXX" \
--baud 460800 \
--before default_reset --after hard_reset write_flash -z \
--flash_mode dio --flash_freq 40m --flash_size 16MB \
0x0 bootloader.bin \
0x8000 partitions.bin \
0xe000 boot_app0.bin \
0x10000 firmware.bin \
0x910000 littlefs.binesptool.py --chip esp32s3 \
--port /dev/ttyUSB0 \
--baud 460800 \
--before default-reset \
--after hard-reset \
write-flash -z \
--flash-mode dio \
--flash-freq 40m \
--flash-size 16MB \
0x0 bootloader.bin \
0x8000 partitions.bin \
0xe000 boot_app0.bin \
0x10000 firmware.bin \
0x910000 littlefs.binLiXee-Gateway est compatible avec la découverte MQTT de Home Assistant.
Allez simplement dans le menu Passerelle --> MQTT et activez la fonctionnalité
Remplissez le formulaire :
- Serveur MQTT
- Port MQTT
- Nom d'utilisateur MQTT
- Mot de passe MQTT
Puis cliquez sur Home-Assistant et Sauvegarder
Attendez un moment et si tout est correct, l'icône de connexion deviendra verte.
Ensuite, allez dans le menu Réseau --> Zigbee
Pour chaque appareil Zigbee, un nouveau bouton MQTT Discover apparaît. Veuillez cliquer dessus pour créer un nouveau périphérique sur HA. Et voilà.
Attendez un moment et allez dans vos périphériques MQTT HA :

Il est possible de débugger l'application en branchant le matériel sur le port USB d'un ordinateur
Utilisez putty.exe

- Entrer le port "Serial line" : COMXX
- Entrer la vitesse "Speed" : 115200
- Sélectionner "Serial"
- Appuyer sur "Open"
Merci à tous les auteurs des bibliothèques tierces utilisées dans ce projet :
- espressif / arduino-esp32
- rlogiacco/CircularBuffer
- bblanchon/ArduinoJson
- paulstoffregen/Time
- marvinroger/AsyncMqttClient
- arkhipenko/TaskScheduler
- ESP32Async/AsyncTCP
- ESP32Async/ESPAsyncWebServer
- Links2004/WebSockets
Merci à ZigStar pour la mise à jour OTA
- Source init
























