Contribuer au développement¶
Solar Router for ESPHome est conçu de manière modulaire pour faciliter la personnalisation avec différents compteurs de puissance et différents régulateurs.
Vous souhaitez contribuer ? Vous êtes les bienvenus et vous trouverez ci-dessous quelques recommandations pour le faire.
Développer un Hardware¶
Vous pouvez proposer n'importe quel matériel selon vos besoins. Si ce nouveau matériel nécessite l'utilisation de GPIO, les broches utilisées par votre matériel doivent être configurées dans la section substitution
.
Une documentation doit être ajoutée décrivant ce nouveau matériel et ses contraintes (Ex : capacités GPIO). Voir le chapitre mettre à jour la documentation ci-dessous.
Développer un Package Logiciel¶
Configurer l'environnement de développement¶
Pour contribuer à Solar Router for ESPHome, développer une nouvelle fonctionnalité sur votre ordinateur et proposer une pull request, vous devez :
- Forker le dépôt Solar Router for ESPHome sur Github
- Cloner votre dépôt forké sur votre PC
- Créer une branche de développement à partir de main
- Créer et activer un environnement virtuel Python
- Installer ESPHome CLI et autres dépendances :
- Installer et tester votre code sur votre appareil avec la commande
esphome
: - Mettre à jour le code et pousser les modifications sur votre dépôt
- Proposer une pull request depuis votre fork vers le dépôt officiel
Développer un Power Meter¶
Un Power Meter est un composant conçu pour fournir et mettre à jour périodiquement un capteur nommé real_power
.
Astuce : Voir les compteurs de puissance déjà développés pour des exemples
Ce capteur est utilisé par les Moteurs pour obtenir la valeur de la puissance échangée avec le réseau.
Si ce nouveau compteur de puissance nécessite une configuration spécifique, les paramètres requis doivent être ajoutés dans la section substitution
.
Une documentation doit être ajoutée décrivant le compteur de puissance et comment le configurer. Voir le chapitre mettre à jour la documentation ci-dessous.
Développer des Regulators¶
Un Regulator doit gérer le pourcentage d'énergie envoyé à sa charge en fonction de son capteur de niveau de régulation (par exemple, regulator_opening
pour TRIAC/SSR). Le niveau de chaque régulateur peut varier de 0 (où aucune énergie n'est envoyée à la charge) à 100 (où toute l'énergie possible est envoyée à la charge).
L'état global du système est géré par le capteur router_level
, qui contrôle tous les régulateurs. Quand router_level
est à 0, tous les régulateurs doivent être éteints, et quand il est à 100, tous les régulateurs doivent être au maximum. Pour les systèmes avec un seul régulateur, le niveau du régulateur reflète généralement le router_level
, mais ils restent séparés car router_level
est utilisé pour les indicateurs LED et la logique de comptage d'énergie.
Voici un exemple d'implémentation d'un régulateur (extrait de regulator_triac.yaml) utilisant le composant light
et sa brightness
pour contrôler la dérivation d'énergie :
Astuce : Voir les régulateurs déjà développés pour des exemples
Vous pouvez développer un ou plusieurs régulateurs pour travailler ensemble dans le même système. Chaque régulateur doit : - Avoir son propre capteur de niveau allant de 0 à 100 - Répondre aux changements du router_level
global du système - Gérer sa logique de contrôle matériel spécifique
Si ce nouveau compteur de puissance nécessite une configuration spécifique, les paramètres requis doivent être ajoutés dans la section substitution
.
Une documentation doit être ajoutée décrivant le compteur de puissance et comment le configurer. Voir le chapitre mettre à jour la documentation ci-dessous.
Mettre à jour la Documentation¶
La documentation est écrite en utilisant mkdocs et Material for MkDocs.
Pour installer mkdocs
, vous devez installer Python puis :
- Créer un environnement virtuel (voir la documentation Python).
- Installer les modules requis avec la commande suivante
pip install -r requirements.txt
.
La documentation est stockée dans le répertoire docs
. Pour voir vos modifications en temps réel dans votre navigateur, exécutez la commande mkdocs serve
et naviguez sur http://127.0.0.1:8000
Mise à jour du Changelog
Le Changelog n'est disponible que dans la documentation officiellement publiée.
Le Changelog est mis à jour manuellement après la publication d'une nouvelle version.
Le Changelog est généré en utilisant git-cliff
.
Les versions sont basées sur les tags.
Les lignes ajoutées dans le changelog sont basées sur les messages de commit de fusion.
Le script tools\update_documentation.sh
est conçu pour mettre à jour changelog.md
, générer et publier la documentation mkdocs
sur les pages github.
Le script de mise à jour de la documentation est destiné à être utilisé uniquement par le mainteneur du dépôt.