Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

homebridge-blinds-zigbee-mqtt-relay

tomtom14z8.5kMIT1.7.35TypeScript support: included

Plugin Homebridge pour volets roulants via relais Zigbee et MQTT (eWeLink, MHCOZY) avec gestion intelligente des commandes spéciales

homebridge-plugin, homebridge, blinds, shutters, mqtt, zigbee, relay, eweLink, mhcozy, zigbee2mqtt, homekit, smart-home, special-commands, virtual-movement

readme

Homebridge Blinds Zigbee MQTT Relay

Plugin Homebridge pour piloter des volets roulants via relais Zigbee et MQTT (eWeLink, MHCOZY) avec gestion intelligente des commandes.

🎯 Fonctionnalités

  • Pilotage MQTT : Communication avec votre serveur MQTT (zigbee2mqtt)
  • Gestion intelligente des relais : Support des relais eWeLink 2CH et MHCOZY 4CH
  • File d'attente des commandes : Évite les superpositions RF en espacant les impulsions
  • Logique intelligente : Gestion différenciée selon l'état du volet (fermé/ouvert/intermédiaire)
  • Commandes spéciales : Gestion automatique des commandes UP→UP puis DOWN et DOWN→DOWN puis UP
  • Mouvement virtuel : Initialisation immédiate du mouvement dans HomeKit dès le premier clic
  • Détection des doubles impulsions : Surveillance des états des relais pour corriger les erreurs
  • Détection des impulsions externes : Surveillance MQTT pour détecter les commandes 433MHz/télécommandes
  • Synchronisation automatique : Mise à jour de l'état virtuel lors d'impulsions externes
  • Connexion MQTT globale : Une seule connexion partagée entre tous les accessoires (optimisation des ressources)
  • Intégration HomeKit native : Contrôle via l'app Maison d'Apple

🔧 Prérequis

  • Homebridge ou HOOBS installé
  • Serveur MQTT (Mosquitto, etc.)
  • zigbee2mqtt configuré
  • Relais Zigbee compatibles (eWeLink ZB-SW02, MHCOZY TYWB 4ch-RF)

📦 Installation

  1. Installation du plugin :

    npm install -g homebridge-blinds-zigbee-mqtt-relay
  2. Redémarrage de Homebridge :

    sudo systemctl restart homebridge
    # ou via l'interface HOOBS

⚙️ Configuration

Configuration de base

Ajoutez la configuration suivante dans votre config.json :

{
  "accessories": [
    {
      "accessory": "BlindsZigbeeMqttRelay",
      "name": "Volet Salon",
      "mqtt": {
        "host": "192.168.1.100",
        "port": 1883,
        "username": "mqtt_user",
        "password": "mqtt_password"
      },
      "relayName": "relay_salon",
      "relayType": "eweLink-2CH",
      "channels": {
        "up": "1",
        "down": "2"
      },
      "mqttTopic": "zigbee2mqtt",
      "openDuration": 25,
      "queueDelay": 2,
      "settlingTime": 3,
      "movementTime": 22,
      "enableSpecialCommands": true
    }
  ]
}

Paramètres de configuration

Paramètre Type Obligatoire Description
name string Nom unique du volet
mqtt.host string Adresse IP du serveur MQTT
mqtt.port number Port du serveur MQTT
mqtt.username string Nom d'utilisateur MQTT
mqtt.password string Mot de passe MQTT
relayName string Nom du relais dans zigbee2mqtt
relayType string Type de relais (eweLink-2CH ou mhcozy-4CH)
channels.up string Canal pour monter le volet
channels.down string Canal pour descendre le volet
mqttTopic string Topic MQTT de base (défaut: zigbee2mqtt)
openDuration number Durée d'ouverture en secondes (défaut: 30)
queueDelay number Délai entre commandes en secondes (défaut: 2)
settlingTime number Temps de tassement/détassement en secondes (défaut: 3)
movementTime number Temps de mouvement principal en secondes (défaut: 27)
enableSpecialCommands boolean Activer les commandes spéciales (défaut: true)

🧠 Logique intelligente

Gestion des états

Le plugin implémente une logique intelligente pour éviter les problèmes de synchronisation :

  1. Volet fermé (0%) → Commande UP : Envoie d'abord DOWN puis UP
  2. Volet ouvert (100%) → Commande DOWN : Envoie d'abord UP puis DOWN
  3. États intermédiaires → Commande directe UP ou DOWN

Commandes spéciales

Les commandes spéciales permettent de gérer les volets qui nécessitent une impulsion de préparation :

  • Phase de préparation : Impulsion courte pour "réveiller" le volet
  • Phase de mouvement : Impulsion longue pour le mouvement réel
  • Temps de préparation : Calculé automatiquement = queueDelay + globalQueueDelay + temps MQTT + temps relais
  • Calcul intelligent des positions : Prise en compte du détassement/tassement (5% = settlingTime)
  • Timer global : Temps total = temps de préparation + temps de mouvement calculé
  • Mouvement virtuel : HomeKit affiche immédiatement le mouvement en cours
  • Synchronisation parfaite : État HomeKit synchronisé avec le mouvement réel

Calcul intelligent des positions intermédiaires

Le plugin calcule automatiquement le temps nécessaire pour atteindre une position donnée :

Ouverture (0% → 50%) :

  • 0-5% : Détassement (settlingTime = 3s)
  • 5-50% : Mouvement principal (45% de movementTime = 27s)
  • Total : 3s + 12.2s = 15.2s + temps de préparation

Fermeture (100% → 50%) :

  • 100-95% : Mouvement principal (5% de movementTime = 27s)
  • 95-50% : Tassement (settlingTime = 3s)
  • Total : 1.4s + 3s = 4.4s + temps de préparation

File d'attente des commandes

  • Les commandes sont mises en file d'attente
  • Espacement configurable entre les impulsions
  • Évite les superpositions RF des télécommandes

Détection des erreurs

  • Surveillance des états des relais via MQTT
  • Détection des doubles impulsions accidentelles
  • Possibilité de correction automatique

🔌 Types de relais supportés

  • 2 canaux indépendants
  • Configuration : "relayType": "eweLink-2CH"
  • Canaux typiques : "up": "1", "down": "2"

MHCOZY TYWB 4ch-RF (4CH)

  • 4 canaux indépendants
  • Configuration : "relayType": "mhcozy-4CH"
  • Canaux typiques : "up": "3", "down": "4"

🔗 Connexion MQTT globale

Le plugin utilise une connexion MQTT unique partagée entre tous les accessoires pour optimiser les ressources :

Avantages

  • Performance optimisée : 8 volets = 1 connexion MQTT au lieu de 8
  • Ressources économisées : Réduction de la charge réseau et de la consommation mémoire
  • Stabilité améliorée : Évite les déconnexions multiples et les conflits
  • Gestion intelligente : Abonnements multiples sur le même topic gérés efficacement

Architecture

  • Pattern Singleton : Une seule instance de connexion MQTT
  • Surveillance centralisée : Un seul abonnement par topic avec distribution des messages
  • Nettoyage automatique : Gestion automatique des abonnements inactifs

🔍 Détection des impulsions externes

Le plugin surveille automatiquement les changements d'état des relais via MQTT pour détecter les impulsions externes :

Fonctionnement

  • Surveillance MQTT : Le plugin s'abonne aux topics des relais
  • Détection automatique : Les transitions OFF → ON sont détectées
  • Mise à jour virtuelle : L'état du volet virtuel est mis à jour automatiquement
  • Synchronisation HomeKit : Les changements sont reflétés dans l'interface

Types d'impulsions détectées

  • Télécommandes 433MHz : Commandes d'ouverture/fermeture
  • Commandes manuelles : Boutons physiques sur les relais
  • Automatisations externes : Scripts ou autres systèmes

Comportement

  • Impulsion UP : Incrémente la position de 10% (ouverture)
  • Impulsion DOWN : Décrémente la position de 10% (fermeture)
  • Simulation de mouvement : Animation de 2 secondes pour le feedback visuel
  • Persistance : Les nouvelles positions sont sauvegardées

Logs

🔍 Surveillance MQTT activée pour bureau - Topic: zigbee2mqtt/4chCC
🔴 Impulsion externe détectée sur bureau - Canal 3 (state_l3: ON)
🎯 Commande externe détectée: bureau → UP
✅ État mis à jour: bureau = 60% (commande externe UP)
⏹️ Mouvement externe terminé: bureau = 60%

📱 Utilisation dans HomeKit

Une fois configuré, vos volets apparaîtront dans l'app Maison :

  • Contrôle de position : 0% (fermé) à 100% (ouvert)
  • Commandes vocales : "Hey Siri, ouvre le volet du salon à 50%"
  • Automatisations : Ouverture automatique au lever du soleil
  • Scènes : "Tous les volets fermés" pour la nuit
  • Synchronisation : Les commandes externes sont automatiquement reflétées

🚨 Dépannage

Problèmes courants

  1. Connexion MQTT échoue

    • Vérifiez l'adresse IP et le port
    • Contrôlez les identifiants de connexion
    • Testez la connectivité réseau
  2. Volets ne répondent pas

    • Vérifiez les noms des relais dans zigbee2mqtt
    • Contrôlez la configuration des canaux
    • Vérifiez les logs Homebridge
  3. Mouvements erratiques

    • Ajustez le queueDelay pour plus d'espacement
    • Vérifiez la durée d'ouverture (openDuration)
    • Contrôlez la logique des télécommandes

Logs

Activez le mode debug dans Homebridge pour voir les logs détaillés :

{
  "bridge": {
    "debug": true
  }
}

🔄 Mise à jour

npm update -g homebridge-blinds-zigbee-mqtt-relay

🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :

  • Signaler des bugs
  • Proposer des améliorations
  • Soumettre des pull requests

👨‍💻 Auteur

tomtom14z - GitHub | npm

📄 Licence

MIT License - voir le fichier LICENSE pour plus de détails.

🙏 Remerciements

  • Basé sur le plugin homebridge-blinds
  • Communauté Homebridge pour l'inspiration
  • zigbee2mqtt pour l'intégration Zigbee
  • Merci à tous les contributeurs de la communauté Homebridge

Note : Ce plugin est conçu pour fonctionner avec des relais en mode impulsion ponctuelle. Assurez-vous que vos relais sont configurés correctement dans zigbee2mqtt.

changelog

Changelog

Toutes les modifications notables de ce projet seront documentées dans ce fichier.

Le format est basé sur Keep a Changelog, et ce projet adhère au Versioning Sémantique.

[1.7.35] - 2024-12-19

🔧 Correction : Mise à jour finale HomeKit pour fin de mouvement

  • Problème résolu : HomeKit affichait toujours "OUVERTURE" au lieu de "FERMETURE" à la fin du mouvement
  • TargetPosition synchronisé : HomeKit reçoit maintenant la mise à jour finale du TargetPosition
  • État réinitialisé : userTargetPosition réinitialisé pour éviter les conflits
  • Synchronisation complète : HomeKit et Homebridge parfaitement synchronisés

🎯 Améliorations

  • Mise à jour forcée : PositionState, CurrentPosition et TargetPosition mis à jour simultanément
  • Logs clairs : Distinction entre fin de mouvement et mouvement en cours
  • Stabilité : Plus de conflit entre états sauvegardés et affichage HomeKit
  • Cohérence : Même logique pour commandes externes et internes

[1.7.34] - 2024-12-19

🔧 Correction : Synchronisation HomeKit pour commandes externes

  • Problème résolu : L4 (DOWN) MQTT affichait "OUVERTURE" au lieu de "FERMETURE" dans HomeKit
  • Simulation arrêtée : Arrêt automatique de la simulation de mouvement externe
  • Synchronisation : HomeKit et Homebridge maintenant synchronisés
  • État bloqué : Plus de blocage en "Ouverture..." avec bouton bleu

🎯 Améliorations

  • Toggle intelligent : Arrêt automatique de la simulation précédente
  • Mise à jour forcée : HomeKit reçoit la mise à jour finale immédiatement
  • Logs clairs : Distinction entre arrêt et démarrage de mouvement
  • Stabilité : Plus de conflit entre simulations de mouvement

[1.7.33] - 2024-12-19

🔧 Correction : Mise à jour HomeKit immédiate pour commandes externes

  • Problème résolu : L3 (UP) affichait "FERMETURE" au lieu de "OUVERTURE" pour commandes externes
  • Mise à jour forcée : HomeKit reçoit maintenant la mise à jour immédiatement
  • Logique corrigée : PositionState mis à jour directement dans handleExternalCommand
  • État bloqué : Plus de blocage en "FERMETURE" avec roue qui tourne

🎯 Améliorations

  • Réactivité : HomeKit affiche le bon état dès la détection de la commande externe
  • Logs clairs : Affichage "OUVERTURE" pour L3, "FERMETURE" pour L4
  • Comportement cohérent : Commandes externes et internes ont le même affichage
  • Stabilité : Plus de délai entre détection et affichage HomeKit

[1.7.32] - 2024-12-19

🔧 Correction : Logique PositionState HomeKit

  • Problème résolu : L3 (UP) affichait "FERMETURE" au lieu de "OUVERTURE"
  • Logique corrigée : up = INCREASING (ouverture), down = DECREASING (fermeture)
  • Cohérence : Toutes les occurrences utilisent maintenant la même logique
  • État bloqué : Plus de blocage en "FERMETURE" avec roue qui tourne

🎯 Améliorations

  • Logique unifiée : PositionState cohérent dans tout le code
  • Logs corrects : Affichage "OUVERTURE" pour L3, "FERMETURE" pour L4
  • Comportement attendu : HomeKit affiche maintenant le bon état de mouvement
  • Stabilité : Plus de blocage en état de mouvement

[1.7.31] - 2024-12-19

🚀 Optimisation : Clics simples sans stabilisation

  • Détection intelligente : Clics simples (0% ou 100%) exécutés immédiatement
  • Slide avec stabilisation : Positions intermédiaires avec délai de 3000ms
  • Performance améliorée : Plus de délai inutile pour les clics simples
  • Expérience utilisateur : Réactivité instantanée pour ouverture/fermeture complète

🎯 Améliorations

  • Logique adaptative : Détection automatique du type d'action
  • Annulation intelligente : Timer de stabilisation annulé pour clics simples
  • Logs clairs : Distinction entre "Clic simple" et "Slide détecté"
  • Comportement optimal : Chaque type d'action a son timing optimal

[1.7.30] - 2024-12-19

🔧 Correction : Fin de mouvement HomeKit

  • Mise à jour forcée : HomeKit reçoit maintenant les mises à jour finales
  • PositionState STOPPED : Correctement défini à la fin du mouvement
  • CurrentPosition : Mise à jour forcée de la position finale
  • État spécial réinitialisé : Nettoyage automatique à la fin du mouvement
  • Synchronisation parfaite : HomeKit et Homebridge UI parfaitement synchronisés

🎯 Améliorations

  • Timing correct : HomeKit se met à jour immédiatement à la fin du mouvement
  • Plus de blocage : HomeKit ne reste plus bloqué sur "FERMETURE"/"OUVERTURE"
  • Expérience utilisateur : Affichage cohérent et réactif
  • Debugging facilité : Logs plus clairs sur les transitions d'état

[1.7.29] - 2024-12-19

🔧 Correction : PositionState dans handleStateUpdate

  • Logique inversée : up = DECREASING (ouverture), down = INCREASING (fermeture)
  • Cohérence totale : Même logique dans handleStateUpdate et boucle périodique
  • HomeKit correct : Affichage "FERMETURE" au lieu de "MOUVEMENT" pour L4
  • Interface unifiée : HomeKit et Homebridge UI parfaitement synchronisés

🎯 Améliorations

  • Correction finale : Plus d'affichage "MOUVEMENT" dans HomeKit
  • Expérience utilisateur : Affichage prévisible et correct
  • Debugging facilité : Logs et interface cohérents

[1.7.28] - 2024-12-19

🔧 Correction : Affichage HomeKit inversé

  • PositionState inversé : up = DECREASING (ouverture), down = INCREASING (fermeture)
  • HomeKit cohérent : Affichage correct "OUVERTURE"/"FERMETURE" dans HomeKit
  • Logique corrigée : Même comportement pour commandes normales et externes
  • Interface unifiée : Homebridge UI et HomeKit affichent maintenant la même chose

🎯 Améliorations

  • Cohérence totale : HomeKit et Homebridge UI synchronisés
  • Expérience utilisateur : Affichage prévisible et correct
  • Debugging facilité : Logs et interface cohérents

[1.7.27] - 2024-12-19

🔧 Correction : Affichage des états de mouvement

  • Logs améliorés : Affichage correct "OUVERTURE"/"FERMETURE" au lieu de "MOUVEMENT"
  • États HomeKit : PositionState correctement défini (INCREASING/DECREASING)
  • Correspondance canaux : L3 = ouverture, L4 = fermeture
  • Affichage cohérent : Même logique pour commandes normales et externes

🎯 Améliorations

  • Debugging facilité : Logs plus clairs sur le sens du mouvement
  • Interface utilisateur : HomeKit affiche correctement l'état du volet
  • Comportement prévisible : Affichage cohérent dans tous les cas

[1.7.26] - 2024-12-19

🔧 Correction : Topic de publication MQTT

  • Topic complet : Les commandes MQTT incluent maintenant le nom du relais
  • Format correct : zigbee2mqtt/4chCC/set au lieu de zigbee2mqtt/set
  • Compatibilité : Fonctionne avec la configuration standard
  • Logs améliorés : Affichage du topic complet dans les logs

🎯 Améliorations

  • Commandes fonctionnelles : Les commandes HomeKit/Homebridge sont maintenant envoyées au bon relais
  • Topic cohérent : Même format pour surveillance et commandes
  • Debugging facilité : Logs plus clairs avec le topic complet

[1.7.25] - 2024-12-19

🔄 Logique de toggle pour les commandes externes

  • Toggle intelligent : Les impulsions externes fonctionnent comme un bouton toggle (démarre/arrête)
  • Mouvement progressif : Simulation du mouvement réel avec animation de 15 secondes
  • Arrêt intermédiaire : 2ème impulsion arrête le mouvement à la position actuelle
  • Comportement réaliste : Reproduction fidèle du comportement des télécommandes

🎯 Améliorations

  • Logique correcte : 1ère impulsion = démarre, 2ème impulsion = arrête
  • Animation fluide : Mouvement progressif en 30 étapes sur 15 secondes
  • Position intermédiaire : Arrêt possible à n'importe quelle position
  • Gestion des ressources : Nettoyage automatique des intervalles

[1.7.24] - 2024-12-19

🔧 Correction : Debounce pour les commandes externes

  • Debounce externe : Ajout d'un délai de 1 seconde pour éviter les traitements multiples
  • Traitement unique : Une seule commande externe traitée par impulsion
  • Logs améliorés : Affichage des commandes ignorées par debounce
  • Comportement correct : Le volet s'arrête maintenant à la position attendue

🎯 Améliorations

  • Stabilité : Évite les incréments multiples lors d'une seule impulsion
  • Performance : Réduction des traitements inutiles
  • Précision : Position finale correcte après impulsion externe

[1.7.23] - 2024-12-19

🔧 Correction : Construction des topics MQTT

  • Topic flexible : Support des topics complets (ex: "zigbee2mqtt/4chCC") et des topics construits
  • Configuration corrigée : Exemple de configuration mis à jour pour les relais TYWB 4ch-RF
  • Canaux corrects : Configuration des canaux l1, l2, l3, l4 pour les relais 4CH
  • Détection améliorée : Les impulsions externes sont maintenant correctement détectées

🎯 Améliorations

  • Compatibilité : Support des deux formats de configuration MQTT
  • Logs clairs : Affichage du topic exact utilisé pour la surveillance
  • Configuration flexible : Adaptation automatique selon le format du mqttTopic

[1.7.22] - 2024-12-19

🔗 Connexion MQTT globale

  • Connexion unique : Une seule connexion MQTT partagée entre tous les accessoires
  • Performance optimisée : Réduction de la charge réseau et des ressources
  • Architecture Singleton : Pattern Singleton pour gérer la connexion globale
  • Gestion intelligente : Abonnements multiples sur le même topic gérés efficacement
  • Stabilité améliorée : Évite les déconnexions multiples et les conflits

🎯 Améliorations

  • Ressources optimisées : 8 volets = 1 connexion MQTT au lieu de 8
  • Surveillance centralisée : Un seul abonnement par topic avec distribution des messages
  • Logs détaillés : Affichage du nombre d'abonnés par topic
  • Nettoyage automatique : Gestion automatique des abonnements inactifs

[1.7.21] - 2024-12-19

🔧 Correction : Surveillance MQTT déplacée dans l'accessoire

  • Surveillance par accessoire : Chaque accessoire surveille maintenant son propre relais
  • Détection fonctionnelle : Les impulsions externes sont maintenant correctement détectées
  • Logs de surveillance : Affichage des topics MQTT surveillés au démarrage
  • Architecture améliorée : Surveillance MQTT déplacée du BlindController vers l'accessoire

🎯 Améliorations

  • Détection fiable : Les impulsions 433MHz/télécommandes sont maintenant détectées
  • Logs détaillés : Affichage des messages MQTT reçus et des commandes traitées
  • Synchronisation : HomeKit reflète correctement les changements d'état externes

[1.7.20] - 2024-12-19

🔍 Détection des impulsions externes

  • Surveillance MQTT : Le plugin surveille maintenant les changements d'état des relais
  • Détection automatique : Les impulsions externes (433MHz, télécommandes) sont détectées
  • Mise à jour virtuelle : L'état du volet virtuel est mis à jour automatiquement
  • Logs détaillés : Affichage des impulsions détectées et des commandes traitées
  • Synchronisation : HomeKit reflète les changements d'état externes

🎯 Fonctionnalités

  • Impulsions UP/DOWN : Détection des commandes d'ouverture/fermeture externes
  • Mise à jour progressive : Incrément/décrément de 10% par impulsion
  • Simulation de mouvement : Animation de 2 secondes pour le feedback visuel
  • Persistance d'état : Sauvegarde automatique des nouvelles positions

[1.7.19] - 2024-12-19

🔧 Correction : Arrêt en avance de phase

  • Arrêt en avance de phase : La commande d'arrêt est envoyée en avance pour être exécutée au bon moment
  • Calcul précis : Temps d'arrêt = temps total - temps de traitement de la 2ème commande
  • Timing parfait : La commande d'arrêt arrive au volet exactement au bon moment
  • Logs détaillés : Affichage du calcul d'avance de phase

🎯 Améliorations

  • Arrêt précis : Le volet s'arrête exactement à la position cible
  • Timing correct : Prise en compte du délai de traitement MQTT + RF
  • Comportement prévisible : Arrêt à la position demandée

[1.7.18] - 2024-12-19

🔧 Correction : Calcul du temps d'arrêt amélioré

  • Temps de traitement 2ème commande : Prise en compte du temps MQTT + RF pour la commande d'arrêt
  • Calcul précis : Temps total = mouvement + préparation + traitement 2ème commande
  • Arrêt précis : Le volet s'arrête maintenant à la position cible exacte
  • Logs détaillés : Affichage du calcul complet avec tous les composants

🎯 Améliorations

  • Timing correct : Arrêt automatique au bon moment
  • Calcul complet : Tous les délais pris en compte
  • Comportement prévisible : Arrêt à la position demandée

[1.7.17] - 2024-12-19

🔧 Correction : Arrêt automatique fonctionnel

  • Commande d'arrêt : Envoi d'une commande d'arrêt au volet réel
  • Arrêt à la position cible : Le volet s'arrête maintenant à la position demandée
  • Deuxième clic : Commande d'arrêt automatique après le temps calculé
  • Position précise : Arrêt exact à 58% au lieu de continuer jusqu'à 100%

🎯 Améliorations

  • Arrêt automatique : Fonctionne maintenant correctement
  • Mise à jour d'état : État interne et HomeKit synchronisés
  • Comportement prévisible : Le volet s'arrête à la position cible

[1.7.16] - 2024-12-19

🔧 Correction : Temps de stabilisation supérieur au debounce

  • Temps de stabilisation : 3000ms (supérieur au debounce de 2000ms)
  • Logique intelligente : Le debounce ne peut plus interférer avec la stabilisation
  • Stabilisation fiable : Le plugin attend vraiment que l'utilisateur relâche le slider
  • Fin des arrêts prématurés : Plus de volet qui s'arrête au bout de 1-2 secondes

🎯 Améliorations

  • Gestion des timers : Annulation claire des timers précédents
  • Logs améliorés : Messages clairs sur la stabilisation en cours
  • Comportement stable : Évite les commandes multiples en succession rapide

[1.7.15] - 2024-12-19

🔧 Correction : Temps de stabilisation supérieur au debounce

  • Temps de stabilisation : 3000ms (supérieur au debounce de 2000ms)
  • Logique intelligente : Le debounce ne peut plus interférer avec la stabilisation
  • Stabilisation fiable : Le plugin attend vraiment que l'utilisateur relâche le slider
  • Fin des arrêts prématurés : Plus de volet qui s'arrête au bout de 1-2 secondes

🎯 Améliorations

  • Gestion des timers : Annulation claire des timers précédents
  • Logs améliorés : Messages clairs sur la stabilisation en cours
  • Comportement stable : Évite les commandes multiples en succession rapide

[1.7.14] - 2024-12-19

🔧 Correction : Délai de stabilisation amélioré

  • Délai augmenté : 1000ms au lieu de 500ms pour une meilleure stabilisation
  • Debounce intelligent : Désactivé pendant la stabilisation du slider
  • Logs améliorés : Messages clairs sur l'annulation et le démarrage des timers
  • Position finale correcte : Le plugin attend vraiment que l'utilisateur relâche le slider

🎯 Améliorations

  • Stabilisation fiable : Plus de commandes prématurées (3% au lieu de 60%)
  • Timer intelligent : Annulation claire des timers précédents
  • Feedback utilisateur : Logs détaillés sur le processus de stabilisation

[1.7.13] - 2024-12-19

🔧 Correction : CurrentPosition pour les commandes normales

  • CurrentPosition mise à jour : Le slider gris s'incrémente maintenant pour les positions intermédiaires
  • Mouvement visible : L'utilisateur voit le slider gris progresser vers la position cible
  • Logs améliorés : Messages clairs sur l'initialisation du mouvement normal
  • Expérience utilisateur : Comportement cohérent entre commandes spéciales et normales

🎯 Améliorations

  • Initialisation du mouvement : CurrentPosition mise à jour dès le début du mouvement
  • Feedback visuel : L'utilisateur voit immédiatement que le mouvement a commencé
  • Cohérence : Même comportement pour toutes les commandes

[1.7.12] - 2024-12-19

🔧 Correction critique : TargetPosition fixe

  • TargetPosition vraiment fixe : Suppression des mises à jour dans la boucle périodique
  • Slider bleu stable : Le slider bleu reste maintenant fixe à la position demandée
  • Arrêt précis : Le volet s'arrête exactement à la position cible
  • Comportement HomeKit correct : Plus de confusion entre consigne et état réel

🎯 Améliorations

  • Boucle périodique corrigée : Seule CurrentPosition est mise à jour, pas TargetPosition
  • Logs améliorés : Messages plus clairs sur les mises à jour
  • Expérience utilisateur : Comportement identique aux autres plugins HomeKit

[1.7.11] - 2024-12-19

🚀 Nouvelle fonctionnalité : Délai de stabilisation du slider

  • Délai de stabilisation : Attente de 500ms avant d'exécuter la commande
  • Position finale correcte : Le plugin attend que l'utilisateur relâche le slider à sa position finale
  • Fin des commandes prématurées : Plus de commandes envoyées au premier mouvement du slider
  • Expérience utilisateur améliorée : Comportement identique aux autres plugins HomeKit

🎯 Améliorations

  • Timer de stabilisation : Annulation automatique du timer précédent si l'utilisateur continue à glisser
  • Logs améliorés : Messages clairs sur l'attente de stabilisation
  • Gestion mémoire : Nettoyage automatique des timers lors de la destruction de l'accessoire

[1.7.10] - 2024-12-19

🔧 Correction critique de l'arrêt automatique

  • Arrêt automatique corrigé : L'arrêt automatique ne envoie plus de nouvelle commande
  • Position précise : Le volet s'arrête exactement à la position cible demandée
  • Fin du dépassement : Plus de mouvement au-delà de la position demandée
  • Logique d'arrêt : Mise à jour directe de l'état sans nouvelle commande MQTT

🎯 Améliorations

  • Comportement prévisible : Arrêt automatique fiable pour les positions intermédiaires
  • Logs améliorés : Messages plus clairs sur l'arrêt automatique
  • Gestion d'état : Réinitialisation correcte de lastCommand en fin de mouvement

[1.7.9] - 2024-12-19

🔧 Corrections critiques

  • TargetPosition fixe : Le slider bleu (position cible) reste maintenant fixe à la position demandée par l'utilisateur
  • Comportement HomeKit correct : Plus de confusion entre consigne et état réel
  • CurrentPosition dynamique : Seul le slider gris (position actuelle) s'incrémente pendant le mouvement
  • Arrêt précis : Le volet s'arrête exactement à la position cible demandée

🎯 Améliorations

  • Expérience utilisateur : Comportement identique aux autres plugins HomeKit
  • Logs améliorés : Affichage de la position cible dans les logs
  • Gestion d'état : Réinitialisation correcte de la position cible en fin de mouvement

[1.7.8] - 2024-12-19

🚀 Nouvelles fonctionnalités

  • Calcul avec détassement/tassement : Prise en compte du temps de détassement (5% = settlingTime) et de tassement
  • Calcul intelligent des positions : Ouverture = détassement + mouvement principal, Fermeture = mouvement principal + tassement
  • Mise à jour HomeKit en temps réel : Notifications automatiques des changements d'état vers HomeKit
  • Système de callbacks : Communication bidirectionnelle entre le contrôleur et l'accessoire

🎯 Améliorations

  • Précision améliorée : Calcul du temps tenant compte des phases de détassement/tassement
  • Synchronisation HomeKit : L'état du volet virtuel est mis à jour en temps réel
  • Logs détaillés : Affichage du calcul détaillé (détassement + mouvement principal + tassement)

[1.7.7] - 2024-12-19

🚀 Nouvelles fonctionnalités

  • Gestion des positions intermédiaires : Support des positions comme 50% avec arrêt automatique
  • Calcul intelligent du temps : Calcul automatique du temps nécessaire pour atteindre la position cible
  • Arrêt automatique programmé : Deuxième clic d'arrêt automatique après le temps calculé
  • Prise en compte des délais : Inclusion du temps de préparation et des délais MQTT dans le calcul

🎯 Améliorations

  • Précision des positions : Le volet s'arrête maintenant à la position demandée (ex: 50%)
  • Expérience utilisateur : Plus besoin de gérer manuellement l'arrêt du volet
  • Logs détaillés : Affichage du calcul du temps et de l'arrêt programmé

[1.7.6] - 2024-12-19

🔧 Corrections

  • Suppression de la détection 433MHz : Fonctionnalité supprimée car techniquement impossible (les commandes 433MHz ne passent pas par Zigbee/MQTT)
  • Nettoyage du code : Suppression de tout le code lié à la détection des commandes externes
  • Documentation mise à jour : Suppression des références aux commandes 433MHz dans le README et les mots-clés

🎯 Améliorations

  • Code simplifié : Suppression du code inutile et des callbacks non fonctionnels
  • Performance améliorée : Moins de code à exécuter, surveillance MQTT optimisée
  • Clarté de la documentation : Focus sur les fonctionnalités réellement disponibles

[1.7.5] - 2024-12-19

🚀 Nouvelles fonctionnalités

  • Calcul automatique du temps de préparation : Temps de préparation calculé automatiquement = queueDelay + globalQueueDelay + temps MQTT + temps relais
  • Timer global intelligent : Temps total = temps de préparation calculé + movementTime pour une synchronisation parfaite
  • Logs détaillés : Affichage du temps de préparation calculé et du temps total dans les logs

🎯 Améliorations

  • Calcul précis du temps : Prise en compte automatique du temps d'envoi de la commande spéciale jusqu'au clic secondaire
  • Configuration simplifiée : Plus besoin de paramètre preparationTime, calcul automatique basé sur queueDelay
  • Intelligence adaptative : Le temps de préparation s'adapte automatiquement à la configuration existante

[1.7.4] - 2024-12-19

🔧 Corrections

  • Correction critique de la gestion de fin de mouvement : Le volet ne reste plus bloqué en "OUVERTURE" ou "FERMETURE" indéfiniment
  • Détection automatique de fin de mouvement : Passage automatique à l'état "OUVERT" ou "FERME" quand la position finale est atteinte
  • Gestion de la fin de progression virtuelle : Réinitialisation complète de l'état spécial quand la progression virtuelle atteint 100% ou 0%

🎯 Améliorations

  • Synchronisation parfaite : État HomeKit toujours cohérent avec la position réelle du volet
  • Logs améliorés : Messages plus clairs pour le débogage

[1.7.3] - 2024-12-19

🚀 Nouvelles fonctionnalités

  • Initialisation du mouvement virtuel : Le mouvement est initialisé immédiatement dans HomeKit dès le premier clic spécial
  • Progression virtuelle continue : Pendant la préparation, la progression continue de +1% toutes les 500ms
  • Transition fluide : Passage automatique de la progression virtuelle au mouvement réel

🎯 Améliorations

  • Réactivité HomeKit : HomeKit comprend immédiatement qu'un mouvement est en cours
  • Expérience utilisateur : Plus de délai d'attente avant de voir le mouvement dans HomeKit

[1.7.2] - 2024-12-19

🔧 Corrections

  • Suppression de la mise à jour immédiate : Évite les mises à jour avec des valeurs incorrectes au début des commandes spéciales
  • Boucle périodique unique : Toutes les mises à jour HomeKit sont gérées par la boucle périodique
  • Cohérence des états : Élimination des conflits entre mise à jour immédiate et boucle périodique

[1.7.1] - 2024-12-19

🚀 Nouvelles fonctionnalités

  • Commandes spéciales : Gestion automatique des commandes UP→UP puis DOWN et DOWN→DOWN puis UP
  • Phase de préparation : Impulsion courte pour "réveiller" le volet avant le mouvement réel
  • Phase de mouvement : Impulsion longue pour le mouvement principal
  • Configuration flexible : Paramètres settlingTime, movementTime et enableSpecialCommands

🎯 Améliorations

  • Gestion intelligente des états : Logique différenciée selon l'état du volet
  • Synchronisation HomeKit : État d'affichage mémorisé pendant les commandes spéciales
  • Logs détaillés : Messages informatifs pour le débogage

[1.7.0] - 2024-12-19

🚀 Nouvelles fonctionnalités

  • Détection des impulsions externes : Surveillance des commandes 433MHz et autres télécommandes
  • Mise à jour automatique : État HomeKit synchronisé en temps réel avec les commandes externes
  • Callbacks système : Notifications automatiques quand des commandes externes sont détectées

🎯 Améliorations

  • Surveillance MQTT : Abonnement aux changements d'état des relais
  • Intégration transparente : Détection automatique des commandes manuelles et externes
  • Nom des accessoires : Correction du problème où tous les volets s'appelaient "2"

🔧 Corrections

  • Méthode getName() : Ajout de la méthode pour forcer le bon nom des accessoires dans HomeKit
  • Gestion des noms : Utilisation correcte du nom configuré au lieu du nom par défaut

[1.6.0] - 2024-12-18

🚀 Nouvelles fonctionnalités

  • Support des relais MHCOZY 4CH : Ajout du support pour les relais 4 canaux
  • Configuration flexible des canaux : Possibilité de choisir les canaux UP et DOWN
  • Gestion des types de relais : Support des relais eWeLink 2CH et MHCOZY 4CH

🎯 Améliorations

  • Interface unifiée : Même interface pour tous les types de relais
  • Configuration simplifiée : Paramètres clairs et documentés
  • Compatibilité étendue : Support de plus de modèles de relais

[1.5.0] - 2024-12-18

🚀 Nouvelles fonctionnalités

  • File d'attente des commandes : Évite les superpositions RF en espacant les impulsions
  • Délai configurable : Paramètre queueDelay pour ajuster l'espacement entre commandes
  • Gestion des erreurs : Détection et correction des doubles impulsions

🎯 Améliorations

  • Stabilité RF : Réduction des interférences entre commandes
  • Fiabilité : Moins d'erreurs de transmission
  • Performance : Optimisation de la gestion des commandes

[1.4.0] - 2024-12-18

🚀 Nouvelles fonctionnalités

  • Logique intelligente : Gestion différenciée selon l'état du volet
  • Commandes conditionnelles : Envoi de commandes de préparation selon l'état
  • Détection des états : Surveillance de la position du volet

🎯 Améliorations

  • Synchronisation : Meilleure cohérence entre l'état réel et l'état HomeKit
  • Fiabilité : Réduction des erreurs de position
  • Intelligence : Adaptation automatique aux différents états

[1.3.0] - 2024-12-18

🚀 Nouvelles fonctionnalités

  • Support des relais eWeLink 2CH : Intégration des relais Zigbee 2 canaux
  • Communication MQTT : Intégration avec zigbee2mqtt
  • Configuration MQTT : Support des identifiants et mots de passe

🎯 Améliorations

  • Intégration Zigbee : Support des protocoles Zigbee
  • Flexibilité : Configuration personnalisable
  • Sécurité : Support de l'authentification MQTT

[1.2.0] - 2024-12-18

🚀 Nouvelles fonctionnalités

  • Intégration HomeKit : Support des caractéristiques WindowCovering
  • Contrôle de position : Gestion des positions 0-100%
  • États de mouvement : Support des états INCREASING, DECREASING, STOPPED

🎯 Améliorations

  • Interface native : Intégration parfaite avec l'app Maison d'Apple
  • Commandes vocales : Support de Siri et des automatisations
  • Expérience utilisateur : Interface familière et intuitive

[1.1.0] - 2024-12-18

🚀 Nouvelles fonctionnalités

  • Architecture modulaire : Séparation des responsabilités
  • Gestionnaire MQTT : Classe dédiée à la communication MQTT
  • Contrôleur de volets : Logique métier centralisée

🎯 Améliorations

  • Maintenabilité : Code plus structuré et modulaire
  • Extensibilité : Facilité d'ajout de nouvelles fonctionnalités
  • Robustesse : Gestion d'erreurs améliorée

[1.0.0] - 2024-12-18

🚀 Première version

  • Plugin Homebridge : Intégration de base avec Homebridge
  • Support des volets : Gestion des volets roulants
  • Communication MQTT : Intégration avec les serveurs MQTT
  • Configuration : Système de configuration flexible
  • Documentation : README et exemples de configuration

Types de modifications

  • 🚀 Nouvelles fonctionnalités : Nouvelles capacités ajoutées
  • 🎯 Améliorations : Améliorations des fonctionnalités existantes
  • 🔧 Corrections : Corrections de bugs
  • 📚 Documentation : Mises à jour de la documentation
  • ⚡ Performance : Améliorations de performance
  • 🔒 Sécurité : Corrections de sécurité