note
Ceci est la version allemande, pour la version anglaise, faites défiler vers le bas ou cliquez ici.
Le compteur Ferraris est un composant d'esphome pour créer un micrologiciel ESP, qui peut utiliser un microcontrôleur ESP et un capteur infrarouge pour déterminer la vitesse et les révolutions de la platine de la platine d'un compteur de flux de Ferraris analogique et de cela peut calculer la consommation d'électricité actuelle et l'état du compteur. Ces valeurs peuvent ensuite être envoyées à des logiciels domestiques tels que Home Assistant pour un traitement ultérieur.
Le logiciel (y compris la documentation avec des structures d'échantillons de matériel) est fourni sans défaut et sans garantie express ou tacite, y compris, mais sans s'y limiter, garantissant l'accès au marché, l'adéquation dans un but spécifique et la non-contrefaçon des droits tiers. Les auteurs ou les titulaires de droits d'auteur ne sont en aucun cas responsables des réclamations, des dommages ou d'autres obligations, que ce soit dans un contrat ou un procès de responsabilité, un acte non autorisé ou autrement, qui découlent ou en relation avec le logiciel ou l'utilisation ou d'autres magasins avec le logiciel.
Seul un microcontrôleur ESP (par exemple ESP8266 ou ESP32, y compris l'alimentation en tension) et un capteur infrarouge (par exemple TCRT5000) sont nécessaires. Pour la fonctionnalité pure du compteur Ferraris, un ESP8266 est complètement suffisant en tant que microcontrôleur. Pour le capteur infrarouge, il existe des modules de cassure basés sur TCRT5000 finis avec une tension d'entrée de 3,3 V-5V, qui ont également une résistance contrôlable (potentiomètre) pour calibrer la sortie numérique. Ces modules TCRT5000 ont 4 broches-VCC et GND pour l'alimentation de la puce du capteur ainsi qu'une sortie numérique D0 et une sortie analogique A0.
Lorsque vous placez le capteur sur la plaque de couverture du compteur de courant Ferraris, un peu de compétence et de travail de précision sont nécessaires. L'émetteur infrarouge / couple receveur du capteur doit être aligné au milieu du millimètre précis sur la plaque tournante et pointé droit sur la platine.
En principe, la composante du compteur Ferraris prend en charge les variantes de développement suivantes:
Pour créer un micrologiciel ESPHOME, un fichier de configuration basé sur YAML doit être créé. Vous pouvez utiliser l'un des exemples de fichiers de configuration fournis dans ce référentiel comme point de départ et les adapter à vos besoins.
En principe, il existe deux façons de construire le firmware de l'Esphome:
La méthode que vous devez choisir dépend de la confiance que vous êtes avec ESPHOME et si vous préférez travailler avec une interface utilisateur graphique ou avec la ligne de commande. De plus, les performances de l'hôte sur lesquelles vous construisez le firmware pourraient jouer un rôle pour accélérer le processus.
note
Il n'est pas nécessaire de copier ce référentiel ("Fork") et de s'adapter à l'exemple de configuration dans le référentiel copié. Au lieu de cela, il suffit d'enregistrer et d'adapter la configuration de l'échantillon ou de retirer la configuration adaptée sur votre hôte d'assistant domestique (si la création du micrologiciel de l'esphome soit souhaité à l'aide du compilateur de périphérique ESPHOME).
Les sections suivantes décrivent les composants les plus importants inclus dans le fichier de configuration du firmware.
Le composant Ferrari est essentiel et doit être ajouté pour utiliser vos capteurs.
Puisqu'il s'agit d'un composant personnalisé qui ne fait pas partie de l'Esphome, il doit être explicitement importé. Le moyen le plus simple consiste à charger le composant directement à partir de ce référentiel.
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] Conseil
Dans l'exemple ci-dessus, le dernier statut du composant est invité à la branche main du Repositrie. Cependant, je recommande de se référer à un support publié au moyen d'un numéro de version pour avoir plus de contrôle sur le stand de logiciel et afin de pouvoir mieux réagir pour "rompre les changements". Voir Exemple de configuration comment cela peut être fait.
Les paramètres génériques suivants peuvent être configurés:
| option | taper | Nécessaire | standard | Description |
|---|---|---|---|---|
id | IDENTIFIANT | N ° 1 | - | Instance du composant Ferraris |
digital_input | Épingle | Oui 2 | - | Broche GPIO avec laquelle la sortie numérique du module TCRT5000 est connectée |
analog_input | IDENTIFIANT | Oui 2 | - | Capteur ADC qui lit la broche connectée à la sortie analogique du module TCRT5000 |
analog_threshold | Nombre / id 3 | Non | 50 | Seuil pour la détection d'une révolution via l'entrée analogique |
off_tolerance | Nombre / id 3 | Non | 0 | Compense négative sur la valeur de seuil analogique pour le flanc de baisse, voir la section déprimant pour plus de détails |
on_tolerance | Nombre / id 3 | Non | 0 | Compense positif sur la valeur de seuil analogique pour le flanc croissant, voir la section déprimant pour plus de détails |
rotations_per_kwh | Nombre | Non | 75 | Nombre de révolutions de la platine par kWh (la valeur est notée sur le compteur de courant Ferraris) |
debounce_threshold | Nombre / id 3 | Non | 400 | Temps minimal en millisecondes entre la chute et l'augmentation subséquente du flanc afin que la révolution soit prise en compte, voir la section Démoussante pour plus de détails |
energy_start_value | IDENTIFIANT | Non | - | Composants numériques dont la valeur est utilisée pour démarrer comme valeur de démarrage pour le compteur de consommation |
1 Certaines applications nécessitent l' id de l'élément de configuration.
2 Un seul des deux éléments de configuration - digital_input ou analog_input - est requis, en fonction de la variante de développement matériel.
3 Les éléments de configuration analog_threshold , off_tolerance , on_tolerance et debounce_threshold attendez-vous à un nombre fixe ou à l'ID d'un composant de nombre. Ce dernier permet de configurer la valeur via l'interface utilisateur (par exemple en utilisant un composant de numéro de modèle).
ferraris :
id : ferraris_meter
digital_input : GPIO4
rotations_per_kwh : 75
debounce_threshold : 400
energy_start_value : last_energy_valueUn composant API est requis si l'ESP doit être intégré à l'assistant à domicile. Dans le cas où un autre logiciel domestique doit être utilisé, un composant MQTT doit être ajouté à la place. Cependant, certains mécanismes tels que l'écrasement du support du compteur ou la restauration de la dernière échelle de mètre après un redémarrage (voir ci-dessous pour plus de détails) et ne fonctionnent plus.
Vous trouverez ci-dessous un exemple d'intégration avec l'assistant à domicile (et API cryptée):
api :
encryption :
key : !secret ha_api_keyEt voici un exemple d'utilisation avec un autre logiciel domestique à l'aide de MQTT:
mqtt :
broker : 10.0.0.2
username : !secret mqtt_user
password : !secret mqtt_passwordUn composant wifi doit être disponible, sinon les valeurs du capteur ne peuvent pas être facilement transférées vers un autre appareil.
wifi :
ssid : !secret wifi_ssid
password : !secret wifi_passwordLe composant Ferraris a des capteurs primaires pour produire les valeurs de consommation calculées et les capteurs de diagnostic pour le mode d'étalonnage. Tous les capteurs sont facultatifs et peuvent être exclus s'ils ne sont pas nécessaires.
Les capteurs principaux suivants peuvent être configurés:
| capteur | taper | Classe d'appareil | Classe d'état | Unité | Description |
|---|---|---|---|---|---|
power_consumption | numérique | power | measurement | W | Consommation électrique actuelle |
energy_meter | numérique | energy | total_increasing | What | Consommation totale de courant (état d'électricité / mètre) |
Vous pouvez trouver des informations détaillées sur les options de configuration des éléments individuels dans la documentation des composants du capteur Esphome.
sensor :
- platform : ferraris
power_consumption :
name : Momentanverbrauch
energy_meter :
name : Verbrauchszähler Les capteurs de diagnostic suivants peuvent être configurés:
| capteur | taper | Description |
|---|---|---|
rotation_indicator | binaire | Montre si le marquage sur la platine est juste devant le capteur infrarouge (fonctionne uniquement en mode d'étalonnage) |
Vous pouvez trouver des informations détaillées sur les options de configuration des éléments individuels dans la documentation des composants du capteur binaire de l'esphome.
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator À des fins de diagnostic, le composant Ferraris a un interrupteur. Cela a le nom calibration_mode et peut être utilisé pour mettre le composant dans le mode d'étalonnage (voir l'étalonnage de la section pour plus d'informations).
switch :
- platform : ferraris
calibration_mode :
name : KalibrierungsmodusLe composant Ferraris fournit deux actions pour définir l'échelle du compteur et régler le compteur de transition.
| action | Description |
|---|---|
ferraris.set_energy_meter | Place l'état du compteur sur la valeur spécifiée |
| paramètre | taper | Zone | Description |
|---|---|---|---|
value | float | > = 0 | Valeur cible pour l'état du compteur en kilowattheures (kWh) |
note
Bien que le capteur de l'état du compteur actuel ait l'unité WH (watt heures) , l'action pour écraser le support du compteur utilise l'unité KWH (kilowattheures) , car le compteur de courant Ferraris analogique affiche généralement également le compteur.
| action | Description |
|---|---|
ferraris.set_rotation_counter | Place le compteur tournant sur la valeur spécifiée |
note
L'action pour définir indirectement le stand du compteur définit également le compteur tournant, car le composant Ferraris fonctionne en interne avec des révolutions et non avec des heures de watt ou des heures de kilowatt.
| paramètre | taper | Zone | Description |
|---|---|---|---|
value | uint64 | > = 0 | Valeur cible pour le compteur de chiffre d'affaires dans les révolutions du nombre |
Divers exemples d'application pour le composant Ferraris sont décrits dans cette section.
Dans cette variante, la sortie numérique du capteur infrarouge est utilisée pour identifier les révolutions de la platine. La sortie analogique n'est pas requise, les autres broches doivent être connectées aux broches correspondantes du microcontrôleur. Pour VCC, la sortie 3,3 V des ESP doit être utilisée et la sortie numérique D0 doit être connectée à une broche GPIO gratuite (par exemple GPIO4, correspond à la broche D2 sur le Mini D1).
Le diagramme de circuit plug-in suivant montre un exemple de configuration expérimentale avec une carte de développement ESP8266 D1 en tant que microcontrôleur.

À l'aide d'un tournevis, le signal de sortie numérique doit ensuite être calibré via le potentiomètre. Les deux LED vertes à l'arrière du capteur aident. La LED droite brille en permanence lorsque le capteur est fourni en électricité. La LED gauche brille tant qu'aucun "obstacle" n'a été reconnu et expire lorsque la réflexion a été interrompue. Ce dernier est la condition lorsque le marquage sur la platine du compteur de courant Ferraris se promenait devant le capteur. Le potentiomètre doit donc être réglé de sorte que la LED gauche brille toujours lorsque le marquage n'est pas dans la zone de l'expéditeur / destinataire infrarouge dès que le marqueur pousse devant lui. Ce n'est qu'une très petite zone et il peut être un peu difficile de trouver ce cadre. Pour une prise en charge supplémentaire pour ce processus, le mode d'étalonnage peut être activé dans le firmware du compteur Ferrari, voir la section de l'étalonnage pour plus de détails.
Conseil
S'il n'est pas possible de trouver un réglage approprié et fonctionnel pour le potentiomètre, la sortie analogique du capteur infrarouge peut également être utilisée, voir la section suivante.
Le côté logiciel doit être configuré pour le composant Ferraris dans le fichier de configuration PIN YAML, qui est connecté à la sortie numérique du module TCRT5000:
ferraris :
id : ferraris_meter
digital_input : GPIO4
# ...Exemple de configuration: ferraris_meter_digital.yaml
Dans cette variante, la sortie analogique du capteur infrarouge est utilisée pour identifier les révolutions de la platine. La sortie numérique n'est pas requise, les autres broches doivent être connectées aux broches correspondantes du microcontrôleur. Pour VCC, la sortie 3,3 V des ESP doit être utilisée et la sortie analogique A0 doit être connectée à une broche ADC gratuite (par exemple GPIO17, correspond à la broche A0 sur le Mini D1).
Le diagramme de circuit plug-in suivant montre un exemple de configuration expérimentale avec une carte de développement ESP8266 D1 en tant que microcontrôleur.

L'étalonnage au moyen du potentiomètre sur le module TCRT5000 n'est plus nécessaire, mais le côté logiciel doit être configuré pour l'entrée analogique et éventuellement les valeurs de décalage pour une caractéristique d'hystérésis (voir également la section déprimant ci-dessous). Ici aussi, le mode d'étalonnage du composant Ferraris peut aider, voir la section de l'étalonnage pour plus de détails.
Le seuil analog_threshold contrôle lorsque le signal analogique est traité comme "reconnu" (zone marquée de la platine) et lorsqu'elle est traitée comme "non reconnue" (zone non marquée de la plaque tournante). Si la valeur du capteur ADC est supérieure à la analog_input de seuil, le marquage est considéré comme reconnu, il est plus petit ou le même, il n'est pas reconnu.

Les étapes de configuration suivantes doivent maintenant être effectuées, par exemple, le côté logiciel:
sensor :
- platform : adc
id : adc_input
pin : GPIO17
internal : true
raw : true
samples : 10
update_interval : 50ms number :
- platform : template
id : adc_threshold
name : ADC Schwellwert
icon : mdi:speedometer-slow
entity_category : config
mode : box
optimistic : true
initial_value : 50
min_value : 0
max_value : 1000
step : 1analog_input analog_threshold composant numéro créé sous 2. ferraris :
id : ferraris_meter
analog_input : adc_input
analog_threshold : adc_threshold
# ...analog_threshold peut également être spécifiée si le seuil est déjà connu et ne doit plus être configuré / modifié. Dans ce cas, l'étape 2 peut être omise. ferraris :
# ...
analog_threshold : 45
# ... La configuration des valeurs de décalage off_tolerance et on_tolerance est très similaire à la configuration de analog_threshold et n'a donc pas été explicitement montrée dans l'exemple ci-dessus.
Exemple de configuration: ferraris_meter_analog.yaml
Il est également possible de lire plus d'un compteur de courant Ferraris avec un seul microcontrôleur ESP. Pour ce faire, vous avez besoin d'autres capteurs infrarouges / modules TCRT5000 et des broches GPIO gratuites supplémentaires sur le microcontrôleur. Comme décrit déjà, les modules TCRT5000 sont connectés à la source de tension du microcontrôleur ESP via VCC et GND et les sorties D0 sont chacune connectées à la carte ESP avec une broche GPIO libre.
note
En théorie, la variante peut également être utilisée avec la sortie analogique du capteur infrarouge, mais les broches compatibles ADC sur les microcontrôleurs ESP sont plus limitées que les broches purement numériques. En particulier, l'ESP8266, qui n'a qu'un seul ADC, ne serait donc pas adapté à soutenir plusieurs capteurs infrarouges à travers leurs résultats analogiques.
Le diagramme de circuit de plug-in suivant montre un exemple de configuration de test avec deux modules TCRT5,000 connectés à un MINI ESP8266 D1.

Cependant, il convient de garder à l'esprit que chaque capteur infrarouge supplémentaire augmente la charge sur le microcontrôleur et, en particulier à des vitesses très élevées des platines, le matériel se rapproche de ses limites.
Les étapes de configuration suivantes doivent maintenant être effectuées, par exemple, le côté logiciel:
ferraris :
- id : ferraris_meter_1
digital_input : GPIO4
# ...
- id : ferraris_meter_2
digital_input : GPIO5
# ...ferraris_id . sensor :
- platform : ferraris
ferraris_id : ferraris_meter_1
power_consumption :
name : Momentanverbrauch 1
energy_meter :
name : Verbrauchszähler 1
- platform : ferraris
ferraris_id : ferraris_meter_2
power_consumption :
name : Momentanverbrauch 2
energy_meter :
name : Verbrauchszähler 2
binary_sensor :
- platform : ferraris
ferraris_id : ferraris_meter_1
rotation_indicator :
name : Umdrehungsindikator 1
- platform : ferraris
ferraris_id : ferraris_meter_2
rotation_indicator :
name : Umdrehungsindikator 2
switch :
- platform : ferraris
ferraris_id : ferraris_meter_1
calibration_mode :
name : Kalibrierungsmodus 1
- platform : ferraris
ferraris_id : ferraris_meter_2
calibration_mode :
name : Kalibrierungsmodus 2Exemple de configuration: ferraris_meter_multi.yaml
Pendant le positionnement et l'alignement du capteur infrarouge ainsi que l'ajustement du potentiomètre ou de la valeur de seuil analogique, il est peu logique de mesurer les révolutions de la platine du compteur de courant Ferraris et de calculer la consommation, car les modifications de la condition du capteur ne correspond pas à la détection réelle de la noyau sur le tournable. Par conséquent, il est possible de mettre le composant Ferraris dans le mode d'étalonnage en basculant sur l'interrupteur pour le mode d'étalonnage (voir actionneurs). Tant que le mode d'étalonnage est activé, aucun calcul des données de consommation n'est effectué et les capteurs correspondants (voir les capteurs primaires) ne sont pas modifiés. Au lieu de cela, le capteur de diagnostic pour l'indication tournante (voir capteurs de diagnostic) est actif et peut également être utilisé pour soutenir l'alignement correct. Le capteur est dans l'état on moment où la marque a été reconnue sur la platine et off si aucun marquage n'a été reconnu.
Afin de pouvoir utiliser le mode d'étalonnage, les composants calibration_mode et rotation_indicator doivent être configurés dans le fichier YAML:
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator
switch :
- platform : ferraris
calibration_mode :
name : KalibrierungsmodusLa transition de la zone non marquée à la zone marquée et vice versa sur la plaque tournante peut conduire à un va-et-vient rapide ("rebond") de l'état d'identification du capteur, qui se produit en particulier à des vitesses rotatives lentes et ne peut pas être complètement supprimée par l'étalonnage. Cette ecchymose conduit à des mesures falsifiées et pour les éviter, il existe les paramètres suivants.
Le seuil déprimant debounce_threshold spécifie le temps minimum en millisecondes entre la chute et l'augmentation ultérieure du flanc. Ce n'est que si le temps mesuré se situe entre les deux flancs au-dessus de la valeur configurée est le déclencheur du capteur. Ce type de dépression fonctionne lors de l'utilisation du signal d'entrée numérique et analogique du capteur infrarouge.

Les deux valeurs de décalage off_tolerance et on_tolerance peuvent être configurées pour utiliser une caractéristique d'hystérésis pour la détection de la zone marquée sur la plaque tournante via le signal analogique. Cela compense un "tremblement" du signal analogique et minimise ainsi une éventuelle ecchymose de l'état d'identification pour la zone marquée sur la platine. Ce type de dépression ne fonctionne que lors de l'utilisation du signal d'entrée analogique du capteur infrarouge.

Avec une configuration intelligente de l'intervalle de mise à jour update_interval et le nombre d'échantillonnage par mise à jour ( samples ) pour le analog_input analogique analogique, la courbe du signal analogique peut être lissée jusqu'à présent que les fluctuations à court terme sont éliminées. Cependant, il convient de garder à l'esprit que des intervalles de mise à jour trop importants peuvent conduire au fait que les révolutions individuelles ne sont plus reconnues à des vitesses de virage très élevées, car le temps entre l'augmentation et le flanc de chute ultérieur est plus petit que l'intervalle de mise à jour défini. Ce type de dépression ne fonctionne également que lors de l'utilisation du signal d'entrée analogique du capteur infrarouge.
Afin de compenser l'état du compteur dans la composante Ferraris avec le compteur réel du compteur de courant Ferraris, la valeur du capteur de compteur de consommation peut être explicitement écrasée. À cette fin, les deux ferraris.set_energy_meter et ferraris.set_rotation_counter .
Conseil
Habituellement, une seule des deux actions est nécessaire, selon que vous souhaitez mettre le compteur en kilowattheures ou en nombre de révolutions.
Selon que le réglage du niveau du compteur doit être géré par l'interface utilisateur ou automatiquement via des automatisations et des scripts, les actions peuvent être utilisées de différentes manières. Deux exemples d'application possibles sont décrits ci-dessous, mais il existe d'autres options qui ne sont pas décrites ici.
Pour cela, par exemple, les étapes de configuration suivantes sont effectuées (dans cet exemple pour définir le stand de compteur en valeur de kilowatt-heure):
number :
- platform : template
id : target_energy_value
name : Manueller Zählerstand
icon : mdi:counter
unit_of_measurement : kWh
device_class : energy
entity_category : config
mode : box
optimistic : true
min_value : 0
max_value : 1000000
step : 0.01 button :
- platform : template
name : Verbrauchszähler überschreiben
icon : mdi:download
entity_category : config
on_press :
- ferraris.set_energy_meter :
id : ferraris_meter
value : !lambda |-
float val = id(target_energy_value).state;
return (val >= 0) ? val : 0; Pour cela, par exemple, les étapes de configuration suivantes sont effectuées:
ferraris.set_energy_meter ). api :
# ...
actions :
- action : set_energy_meter
variables :
target_value : float
then :
- ferraris.set_energy_meter :
id : ferraris_meter
value : !lambda |-
return (target_value >= 0)
? target_value
: 0;- id : ' 1234567890 '
alias : Zurücksetzen des Verbrauchszählers
trigger :
- platform : time
at : 00:00:00
condition :
- condition : template
value_template : ' {{ now().day == 1 }} '
action :
- action : esphome.ferraris_meter_set_energy_meter
data :
target_value : 0
mode : singleAfin de ne pas réduire la durée de vie de la mémoire flash sur le microcontrôleur ESP, le composant Ferraris n'enregistre pas de données de manière persistante dans le flash. En conséquence, il ne peut d'abord pas se souvenir de l'état du compteur au-dessus d'un redémarrage du microcontrôleur et le compteur commence à compter à 0 kWh à chaque bateau. Donc, après chaque redémarrage, vous devrez écraser manuellement l'échelle du compteur par une valeur lue sur le compteur de courant Ferraris. Étant donné que cela n'est pas très convivial, il est possible de persister l'état de dernier compteur dans l'assistant à domicile et de le transférer lors du démarrage du microcontrôleur.
Pour que cela fonctionne, les étapes de configuration suivantes doivent être effectuées, par exemple:
input_number.stromzaehler_letzter_wert ). number :
- platform : homeassistant
id : last_energy_value
entity_id : input_number.stromzaehler_letzter_wertenergy_start_value fait référence au composant numérique en moins de 2. ferraris :
# ...
energy_start_value : last_energy_value- id : ' 1234567890 '
alias : Aktualisierung Verbrauchszähler-Cache
trigger :
- platform : state
entity_id :
- sensor.ferraris_meter_verbrauchszaehler
condition : []
action :
- action : input_number.set_value
target :
entity_id : input_number.stromzaehler_letzter_wert
data :
value : ' {{ states(trigger.entity_id) }} '
mode : singleenergy_meter dans le fichier de configuration YAML peut également être créée, qui met à jour le composant numérique moins de 2. Cependant, cela prolonge le temps de traitement par révolution dans le microcontrôleur et peut entraîner le fait que les cycles tournants individuels ne sont pas enregistrés dans le cas d'une consommation d'énergie très élevée (et donc des vitesses rotatives très élevées). Par conséquent, je recommande la variante avec l'automatisation de l'assistant à domicile.Ferraris METER est un composant Esphome pour créer un firmware ESP qui utilise un microcontrôleur ESP et un capteur infrarouge le nombre de rotations et la vitesse de la gymnastique d'un compteur d'électricité Ferraris analogique et pour calculer la consommation d'électricité actuelle et la lecture des mètres. La valeur de la thèse peut ensuite être envoyée à une recherche de logiciels domestique en tant qu'assistant à domicile pour un traitement ultérieur.
Le logiciel (y compris la documentation avec l'exemple de configuration matérielle) est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de merchavité, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les titulaires de droits d'auteur ne seront en aucun cas pour toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors de ou en relation avec ou l'utilisation ou d'autres transactions dans le logiciel.
Du côté matériel, seul un microcontrôleur ESP (par exemple ESP8266 ou ESP32, y compris l'alimentation électrique) et un capteur infrarouge (par exemple TCRT5000) sont demandés. Un microcontrôleur ESP8266 est complètement suffisant pour la fonctionnalité pure du compteur de ferraris. Pour le capteur infrarouge, il existe un module de cassure basé sur TCRT5000 prêt à l'emploi avec une tension d'entrée de 3,3 V-5V disponible, qui ont donc une résistance réglable (potentiomètre) pour calibrer la sortie numérique du capteur. La thèse Les modules TCRT5000 ont 4 broches - VCC et GND pour l'alimentation de la puce du capteur ainsi qu'une sortie numérique D0 et une sortie analogique A0.
Placer le capteur sur la plaque de couverture du compteur d'électricité Ferraris nécessite un peu de compétence et de travail de précision. L'émetteur / récepteur infrarouge du capteur doit être aligné au-dessus de la platine avec une précision millimètre et un point en ligne droite à la platine.
Le composant du compteur Ferraris prend en charge les variantes de configuration de suivi:
Pour construire un firmware Esphome, vous devez créer un fichier de configuration basé sur YAML. Vous pouvez utiliser l'un des exemples de fichiers de configuration prouvés dans ce référentiel comme point de départ et l'adapter à vos besoins.
En principe, il existe deux façons de construire le firmware de l'Esphome:
La méthode que vous devez choisir dépend de la façon dont vous êtes familier avec l'Esphome et si vous préférez travailler avec une interface utilisateur graphique ou la ligne de commande. De plus, les performances des hôtes sur lesquelles vous construisez le firmware pourraient jouer un rôle dans l'accélération du processus.
note
Il n'est pas nécessaire de débarquer ce référentiel et de faire les adaptations à l'exemple de configuration directement dans le référentiel fourchu. Au lieu de cela, il suffit d'enregistrer et d'adapter l'exemple de configuration localement ou de le stocker sur votre hôte d'assistant à domicile (si vous souhaitez créer le micrologiciel ESPHOME avec le compilateur de périphérique ESPHOME).
Les sections suivantes décrivent les composants les plus notables contenus dans le fichier de configuration du firmware.
Le composant Ferraris est essentiel et doit être ajouté pour utiliser ses capteurs.
Comme il s'agit d'un composant personnalisé qui ne fait pas partie de l'Esphome, il doit être importé explicitement. Le moyen le plus simple consiste à charger le composant directement à partir de ce référentiel.
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] Conseil
Dans l'exemple ci-dessus, la dernière version du composant de la branche main du référentiel est chargée. Cependant, je recommande d'utiliser un numéro de version pour se référer à une version publiée afin d'avoir plus de contrôle sur la version logicielle utilisée et de pouvoir réagir mieux aux "changements de rupture". Voir l'exemple de configuration de la façon dont cela peut être fait.
Les éléments de configuration générique suivants peuvent être configurés:
| option | Taper | Requis | défaut | Description |
|---|---|---|---|---|
id | IDENTIFIANT | N ° 1 | - | Instance de composante Ferraris |
digital_input | Épingle | Oui 2 | - | Broche GPIO à laquelle la sortie numérique des modules TCRT5000 est connectée |
analog_input | IDENTIFIANT | Oui 2 | - | Capteur ADC qui lit la broche connectée à la sortie analogique des modules TCRT5000 |
analog_threshold | Nombre / id 3 | NON | 50 | Valeur de seuil pour la détection des rotations via l'entrée analogique |
off_tolerance | Nombre / id 3 | NON | 0 | Compense négative du seuil analogique pour le bord de la chute, voir la section Debountage pour plus de détails |
on_tolerance | Nombre / id 3 | NON | 0 | Compense positive du seuil analogique pour le bord montant, voir la section Debouning pour plus de détails |
rotations_per_kwh | Nombre | NON | 75 | Nombre de rotations de la platine via KWH (cette valeur est généralement notée sur le compteur d'électricité Ferraris) |
debounce_threshold | Nombre / id 3 | NON | 400 | Temps minimum en millisecondes tombant et le bord montant ultérieur pour prendre en compte la rotation, voir la section Débooning pour plus de détails |
energy_start_value | IDENTIFIANT | NON | - | Composant numérique dont la valeur sera utilisée comme valeur de démarrage pour le compteur d'énergie au moment du démarrage |
1 Certains cas d'utilisation nécessitent l' id de l'élément de configuration.
2 Un seul de digital_input ou analog_input est la demande, selon la variante de configuration matérielle.
3 Les éléments de configuration analog_threshold , off_tolerance , on_tolerance et debounce_threshold s'attendent à un numéro statique ou à l'ID sur un composant de nombre. Ce dernier permet la configuration de la valeur via l'interface utilisateur (par exemple, en utilisant un numéro de modèle).
ferraris :
id : ferraris_meter
digital_input : GPIO4
rotations_per_kwh : 75
debounce_threshold : 400
energy_start_value : last_energy_valueÀ la composante API est requise si l'ESP doit être intégré à l'assistant à domicile. Dans le cas où un autre logiciel domestique doit être utilisé, un composant MQTT doit être ajouté à la place. Cependant, certains mécanismes recherchent comme une substitution manuelle du compteur d'énergie ou restaurer le dernier compteur après un redémarrage (lac en dessous pour plus de détails) qui ne fonctionne plus.
Voir l'exemple ci-dessous pour l'intégration dans l'assistant à domicile (avec API cryptée):
api :
encryption :
key : !secret ha_api_keyEt ci-dessous à l'exemple d'utilisation avec un autre logiciel domestique via MQTT:
mqtt :
broker : 10.0.0.2
username : !secret mqtt_user
password : !secret mqtt_passwordUn composant wifi doit être présent, car sinon les valeurs du capteur ne peuvent pas être facilement transmises à un autre ordinateur.
wifi :
ssid : !secret wifi_ssid
password : !secret wifi_passwordLe composant Ferraris fournit des capteurs primaires pour exposer les valeurs de consommation calculées ainsi que des capteurs de diagnostic pour le mode d'étalonnage. Tous les capteurs sont facultatifs et peuvent être omis s'ils ne sont pas nécessaires.
Les capteurs principaux suivants peuvent être configurés:
| capteur | Taper | Classe d'appareil | Classe d'état | Unité | Description |
|---|---|---|---|---|---|
power_consumption | numérique | power | measurement | W | Consommation électrique actuelle |
energy_meter | numérique | energy | total_increasing | What | Consommation totale d'énergie (lecture du compteur) |
Pour les options de configuration détaillées de chaque élément, veuillez vous référer à la configuration du composant du capteur Esphome.
sensor :
- platform : ferraris
power_consumption :
name : Power consumption
energy_meter :
name : Meter reading Les capteurs de diagnostic suivants peuvent être configurés:
| capteur | Taper | Description |
|---|---|---|
rotation_indicator | binaire | Indique si la marque sur la platine est devant le capteur infrarouge (fonctionne uniquement en mode d'étalonnage) |
Pour les options de configuration détaillées de chaque élément, veuillez vous référer à la configuration du composant du capteur binaire ESPHOME.
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Rotation indicator À des fins de diagnostic, le composant Ferraris fournit un commutateur avec le nom calibration_mode . Il peut être utilisé pour définir le composant sur la mode d'étalonnage (voir l'étalonnage de la section pour plus d'informations).
switch :
- platform : ferraris
calibration_mode :
name : Calibration modeLe composant Ferraris fournit deux actions pour définir la lecture du compteur d'énergie et le compteur de rotation.
| Action | Description |
|---|---|
ferraris.set_energy_meter | Définit la lecture du compteur d'énergie à la valeur fournie |
| paramètre | Taper | Gamme | Description |
|---|---|---|---|
value | float | > = 0 | Valeur cible pour la lecture du compteur d'énergie en kilowattheures (kWh) |
note
Bien que le capteur de la lecture du compteur actuel ait l'unité WH (watt heures) , l'action pour déborder de la lecture du compteur a l'unité KWH (kilowattheures) , car les compteurs d'électricité Ferraris analogiques affichent généralement la lecture du compteur dans cette unité.
| Action | Description |
|---|---|
ferraris.set_rotation_counter | Définit le contraire de rotation à la valeur fournie |
note
L'action pour régler indirectement la lecture du compteur d'énergie afin que le compteur de rotation en tant que composant Ferraris fonctionne en interne avec des rotations et non avec des heures de watt ou des kilowattheures.
| paramètre | Taper | Gamme | Description |
|---|---|---|---|
value | uint64 | > = 0 | Valeur cible pour le compteur de rotation en nombre de rotations |
Cette section décrit divers exemples d'utilisation du composant Ferraris.
Dans cette variante, la sortie numérique du capteur infrarouge est utilisée pour détecter les rotations de la platine. La sortie analogique n'est pas requise, les autres broches doivent être connectées aux broches correspondantes du microcontrôleur. La sortie 3.3 V de l'ESP doit être utilisée pour VCC et la sortie numérique D0 doit être connectée à une broche GPIO libre (par exemple GPIO4, correspondant à la broche D2 sur le D1 Mini).
Le schéma de planche à pain suivant montre un exemple de configuration de test à l'aide d'une carte de développement ESP8266 D1 Mini comme microcontrôleur.

Le signal de sortie numérique du capteur infrarouge doit être calibré via le potentiomètre à l'aide d'un scripteur; Les deux LED vertes à l'arrière du capteur aident à cela. La LED de droite s'allume en continu lorsque le capteur est alimenté en puissance. La LED de gauche s'allume tant qu'aucun "obstacle" n'a été détecté et s'éteint lorsque la réflexion a été interrompue. Ce dernier est l'état lorsque la marque de la platine du compteur d'électricité Ferraris se déplace devant le capteur. Le réglage du potentiomètre Shedt est donc de la betterave de sorte que la LED gauche s'allume simplement lorsque le marqueur n'est pas dans la plage de la paire d'émetteurs / récepteurs infrarouges et s'éteint lorsque le marqueur se déplace devant lui. Ce n'est qu'une très petite gamme et il peut être un peu difficile de trouver ce paramètre. To Further Assist with this Process, the Calibration Mode Can Be Enabled In The Ferraris Meter Firmware, See Section Calibration for Details.
Conseil
In case you are unable to find an appropriate and working adjustment of the potentiometer, you can alternatively use the analog output of the infrared sensor, see next section.
On the software side, the pin which is connected to the digital output of the TCRT5000 module has to be configured for the Ferraris component in the YAML configuration file:
ferraris :
id : ferraris_meter
digital_input : GPIO4
# ...Example configuration file: ferraris_meter_digital.yaml
In this variant, the analog output of the infrared sensor is used to detect rotations of the turntable. The digital output is not required, the other pins must be connected to the corresponding pins of the microcontroller. The 3.3V output of the ESP should be used for VCC and the analog output A0 must be connected to a free ADC pin (eg GPIO17, corresponding to pin A0 on the D1 Mini).
The following breadboard schematic shows an example test setup using an ESP8266 D1 Mini development board as microcontroller.

A calibration using the potentiometer on the TCRT5000 module is not needed. Instead, the threshold for the analog input and optionally the offset values for a hysteresis curve must be configured on the software side (see also section Debouncing further down). Here as well, the calibration mode of the Ferraris component could be helpful, see section calibration for details.
The threshold value analog_threshold controls when the analog signal is treated as "detected" (marked area of the turntable) and when it is treated as "not detected" (unmarked area of the turntable). If the value from the ADC sensor analog_input is greater than the threshold value, the marking is considered detected; if it is smaller than or equal to the threshold value, it is considered not detected.

On the software side, for instance, the following configuration steps must now be carried out:
sensor :
- platform : adc
id : adc_input
pin : GPIO17
internal : true
raw : true
samples : 10
update_interval : 50ms number :
- platform : template
id : adc_threshold
name : ADC threshold
icon : mdi:speedometer-slow
entity_category : config
mode : box
optimistic : true
initial_value : 50
min_value : 0
max_value : 1000
step : 1analog_input refers to the ADC sensor created under 1. and the entry analog_threshold refers to the number component created under 2. ferraris :
id : ferraris_meter
analog_input : adc_input
analog_threshold : adc_threshold
# ...analog_threshold if the threshold value is already known and no longer needs to be configured/changed. In this case, step 2 can be omitted. ferraris :
# ...
analog_threshold : 45
# ... The configuration for the offset values off_tolerance and on_tolerance is very similar to the configuration of analog_threshold and therefore not explicitly shown in above example.
Example configuration file: ferraris_meter_analog.yaml
It is also possible to read more than one Ferraris electricity meter with a single ESP microcontroller. This requires multiple infrared sensors / TCRT5000 modules and additional free GPIO pins on the microcontroller. The TCRT5000 modules have to be connected to the voltage source of the ESP microcontroller via VCC and GND as described in the section Hardware Setup and the D0 outputs have to be connected to free GPIO pins on the ESP board.
note
Theoretically, the variant with the analog output of the infrared sensor can also be used, but the ADC-capable pins on the ESP microcontrollers are stronger limited than the pure digital pins. Especially the ESP8266, which has a single ADC only, would therefore not be suitable to support multiple infrared sensors via their analog outputs.
The following breadboard schematic shows an example of an example test setup with two TCRT5000 modules connected to an ESP8266 D1 Mini.

However, bear in mind that each additional infrared sensor increases the load on the microcontroller and brings the hardware closer to its limits, especially with very high rotation speeds of the turntables.
On the software side, for instance, the following configuration steps must now be carried out:
ferraris :
- id : ferraris_meter_1
digital_input : GPIO4
# ...
- id : ferraris_meter_2
digital_input : GPIO5
# ...ferraris_id configuration entry. sensor :
- platform : ferraris
ferraris_id : ferraris_meter_1
power_consumption :
name : Power consumption 1
energy_meter :
name : Meter reading 1
- platform : ferraris
ferraris_id : ferraris_meter_2
power_consumption :
name : Power consumption 2
energy_meter :
name : Meter reading 2
binary_sensor :
- platform : ferraris
ferraris_id : ferraris_meter_1
rotation_indicator :
name : Rotation indicator 1
- platform : ferraris
ferraris_id : ferraris_meter_2
rotation_indicator :
name : Rotation indicator 2
switch :
- platform : ferraris
ferraris_id : ferraris_meter_1
calibration_mode :
name : Calibration mode 1
- platform : ferraris
ferraris_id : ferraris_meter_2
calibration_mode :
name : Calibration mode 2Example configuration file: ferraris_meter_multi.yaml
During the positioning and alignment of the infrared sensor as well as the adjustment of the potentiometer or the analog threshold, it makes little sense to measure the rotations of the Ferraris electricity meter's turntable and calculate the consumption values, as the changes in state of the sensor do not correspond to the actual detection of the mark on the turntable. It is therefore possible to set the Ferraris component to calibration mode by turning on the calibration mode switch (see Actors). As long as the calibration mode is activated, no calculation of the consumption data is performed and the corresponding sensors (see Primary Sensors) are not changed. Instead, the diagnostic sensor for the rotation indication (see Diagnostic Sensors) is active and can additionally be used to assist with correct alignment. The sensor has the on state when the marker on the turntable is detected and the off state when it is not detected.
To be able to use the calibration mode, the components calibration_mode and rotation_indicator must be configured in the YAML file:
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Rotation indicator
switch :
- platform : ferraris
calibration_mode :
name : Calibration modeThe transition from unmarked to marked area and vice versa on the turntable can lead to a rapid back and forth jump ("bouncing") in the detection state of the sensor, which occurs particularly at slow rotation speeds and cannot be completely suppressed by the calibration. This bouncing of the state leads to falsified measured values and to avoid this, the following settings can be applied.
The debounce threshold value debounce_threshold specifies the minimum time in milliseconds between falling and subsequent rising edge. The trigger from the sensor is only taken into account if the measured time between the two edges is above the configured value. This type of debouncing can be applied to both the variant using the digital as well as the analog input signal of the infrared sensor.

The two offset values off_tolerance and on_tolerance can be configured to use a hysteresis curve for the detection of the marked area on the turntable via the analog signal. This compensates the jitter of the analog signal and thus minimizes any possible bouncing of the detection status for the marked area on the turntable. This type of debouncing only works when using the analog input signal of the infrared sensor.

By carefully configuring the update interval update_interval and the number of samples per update ( samples ) for the analog sensor analog_input , the curve of the analog signal can be smoothed to such an extent that short-term fluctuations are eliminated. However, bear in mind that excessive update intervals can lead to individual rotations no longer being detected at very high rotation speeds, as the time between the rising and subsequent falling edge is then shorter than the set update interval. Also this type of debouncing only works when using the analog input signal of the infrared sensor.
To synchronize the meter reading in the Ferraris component with the actual meter reading of the Ferraris electricity meter, the value of the energy meter sensor can be explicitly overwritten. The two actions ferraris.set_energy_meter and ferraris.set_rotation_counter (see Actions) are provided for this purpose.
Conseil
Usually, you need to use only one of the two actions, depending on whether you want to set the meter reading in kilowatt hours or in number of rotations.
The actions can be used in different ways, depending on whether the energy meter reading is to be set manually via the user interface or trigger-based via automations and scripts. Two possible usage examples are described below, but there are more possibilities existing which are not described here.
For instance, the following configuration steps are carried out (in this example to overwrite the energy meter with a kilowatt hours value):
number :
- platform : template
id : target_energy_value
name : Manual meter reading
icon : mdi:counter
unit_of_measurement : kWh
device_class : energy
entity_category : config
mode : box
optimistic : true
min_value : 0
max_value : 1000000
step : 0.01 button :
- platform : template
name : Overwrite meter reading
icon : mdi:download
entity_category : config
on_press :
- ferraris.set_energy_meter :
id : ferraris_meter
value : !lambda |-
float val = id(target_energy_value).state;
return (val >= 0) ? val : 0; For instance, the following configuration steps are carried out:
ferraris.set_energy_meter is used). api :
# ...
actions :
- action : set_energy_meter
variables :
target_value : float
then :
- ferraris.set_energy_meter :
id : ferraris_meter
value : !lambda |-
return (target_value >= 0)
? target_value
: 0;- id : ' 1234567890 '
alias : Reset energy meter reading
trigger :
- platform : time
at : 00:00:00
condition :
- condition : template
value_template : ' {{ now().day == 1 }} '
action :
- action : esphome.ferraris_meter_set_energy_meter
data :
target_value : 0
mode : singleIn order not to reduce the service life of the flash memory on the ESP microcontroller, the Ferraris component does not store any data persistently in the flash. As a result, it cannot remember the meter reading after a restart of the microcontroller and the meter starts counting at 0 kWh with every boot process. Therefore, the meter reading would have to be overwritten manually with a value read from the Ferraris electricity meter after each restart. As this is not very user-friendly, there is the option of persisting the last meter reading in Home Assistant and transferring it to the microcontroller when booting.
For this to work, the following configuration steps must be carried out:
input_number.electricity_meter_last_value ). number :
- platform : homeassistant
id : last_energy_value
entity_id : input_number.electricity_meter_last_valueenergy_start_value refers to the number component created under 2. ferraris :
# ...
energy_start_value : last_energy_value- id : ' 1234567890 '
alias : Update meter reading cache
trigger :
- platform : state
entity_id :
- sensor.ferraris_meter_energy
condition : []
action :
- action : input_number.set_value
target :
entity_id : input_number.electricity_meter_last_value
data :
value : ' {{ states(trigger.entity_id) }} '
mode : singleenergy_meter in the YAML configuration file which updates the number component created under 2 directly from ESPHome. However, this leads to a longer processing time per rotation in the microcontroller and may result in individual rotations of the turntable not being detected in the event of very high power consumption (and hence, very high rotation speeds). Therefore, I recommend the variant with the automation in Home Assistant.