feat: Ajoute le mode Séquenceur de relais et sa documentation#8
Open
tsabran wants to merge 1 commit intoF1ATB:mainfrom
Open
feat: Ajoute le mode Séquenceur de relais et sa documentation#8tsabran wants to merge 1 commit intoF1ATB:mainfrom
tsabran wants to merge 1 commit intoF1ATB:mainfrom
Conversation
- Ajoute le mode Séquenceur (mode 6) et la logique de distribution staircase vers les relais gérés - Introduit IdxSequenceur et PuissanceCharge dans le modèle Action et dans la sérialisation JSON - Met à jour la logique UI pour configurer les actions séquencées et préserver la compatibilité existante - Renforce la neutralisation des sorties physiques pour une action parent séquenceur - Met à jour la documentation fonctionnelle, implémentation et guide utilisateur
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

feat: Mode Séquenceur de relais (MODE_SEQUENCEUR = 6)
Note de l'auteur: Description/documentation essentiellement générée par AI, mais j'ai repris une bonne partie du code moi-même, surtout coté JS :)
J'ai splitté l'an dernier mon routeur de chauffe-eau 3000W avec 3 SSR (1 par resistance de 1000W) au lieu d'un gros SSR pour reduire les clignotements sur mon reseau electrique, mais j'avais beaucoup perdu en efficacité de régulation à cause des conflits/seuils/delais entre les 3 actions. J'ai donc voulu gérer les 3 relais à partir d'une seule régulation composite, gérant les 3 charges de maniere séquentielle. Je l'utilise depuis 1 semaine et ca fonctionne beaucoup mieux depuis.
La PR fournit 3 fichiers de documentation dans /docs:
Contexte
Sur une installation solaire avec plusieurs charges résistives (chauffe-eau, radiateurs…), piloter chaque charge importante via une action PID indépendante crée des harmoniques et des appels de courant simultanés non désirables. Ce PR introduit un nouveau mode de régulation qui mitige ce problème en distribuant l'énergie disponible séquentiellement sur un groupe de relais, depuis un seul régulateur PID central.
Une cascade de seuils (chaque relais utilise sa propre régulation qui s'active quand le précédent atteint 100 %) ne résout pas non plus le problème : les PIDs créent des oscillations au seuil de saturation, entraînant plusieurs relais en commutation partielle simultanée, et des délais de réactivité diminuant l'efficacité du routage d'énergie non utilisée/
Fonctionnement
Un séquenceur (mode 6) est une action virtuelle : elle porte un PID mais n'a pas de GPIO propre. Elle distribue son ouverture calculée vers ses relais gérés selon une formule staircase pondérée par la puissance nominale de chaque charge.
Exemple pour 3 relais de 2 000 W / 1 000 W / 1 500 W — puissance totale = 4 500 W :
Modifications
IdxSequenceur(index du séquenceur parent, -1 si autonome),PuissanceCharge(W nominaux)MODE_SEQUENCEURGestionOverproduction, neutralisation dansGestionIT_10msetInitGPIOs, log Telnet de debugIdxSequenceuretPuissanceCharge3 documents ajoutés dans docs : spécifications fonctionnelles, guide d'implémentation, guide utilisateur.
Compatibilité
IdxSequenceur = -1etPuissanceCharge = 0par défaut → toutes les actions existantes se comportent exactement comme avant.int).