примечание
Это немецкая версия, для английской версии, прокрутите вниз или нажмите здесь.
Meter Ferraris - это компонент Esphome для создания прошивки ESP, который может использовать микроконтроллер ESP и инфракрасный датчик для определения скорости и оборотов проигрывателя аналогового измерителя потока Ferraris, и из этого может рассчитать текущее потребление электроэнергии и состояние метра. Эти значения могут затем быть отправлены в программное обеспечение для домашней автоматизации, такое как Home Assistant для дальнейшей обработки.
Программное обеспечение (включая документацию с аппаратными образцами структур) предоставляется без дефолта и без какой-либо явной или молчаливой гарантии, включая, помимо прочего, гарантирование доступа на рынок, пригодность для конкретной цели и не нарушающегося права сторонних прав. Авторы или владельцы авторских прав никоим образом не несут ответственности за претензии, ущерб или другие обязательства, будь то в ходе договора или иска об ответственности, несанкционированный акт или иным образом, которые возникают из или в связи с программным обеспечением или использованием или другими магазинами с программным обеспечением.
Требуются только микроконтроллер ESP (например, ESP8266 или ESP32, включая подачу напряжения) и инфракрасный датчик (например, TCRT5000). Для чистой функциональности измерителя Ferraris ESP8266 полностью достаточно в качестве микроконтроллера. Для инфракрасного датчика существуют законченные модули прорыва на основе TCRT5000 с входным напряжением 3,3 В-5 В, которые также имеют контролируемое сопротивление (потенциометр) для калибровки цифрового выхода. Эти модули TCRT5000 имеют 4 контакта VCC и GND для питания чипа датчика, а также цифровой выходной сигнал D0 и аналоговый выход A0.
При размещении датчика на крышку пластины измерителя тока Ferraris требуется небольшой навык и точные работы. Пара инфракрасного передатчика/реципиента датчика должна быть выровнена в середине миллиметра точного над поворотным столом и направлена прямо на поворотный стол.
В принципе, компонент счетчика Ferraris поддерживает следующие варианты разработки:
Для создания прошивки Esphome должен быть создан файл конфигурации на основе YAML. Вы можете использовать один из образцов файлов конфигурации, предоставленных в этом репозитории в качестве отправной точки, и адаптировать их к вашим потребностям.
В принципе, есть два способа построения прошивки Esphome:
Какой метод вы должны выбрать, зависит от того, насколько вы доверяете Esphome и предпочитаете ли вы работать с графическим пользовательским интерфейсом или с командной строкой. Кроме того, производительность хоста, на котором вы создаете прошивку, может сыграть роль, чтобы ускорить процесс.
примечание
Нет необходимости копировать этот репозиторий («forken») и адаптироваться к примеру конфигурации в копировальном репозитории. Вместо этого достаточно сохранить и адаптировать образец конфигурации или снять адаптированную конфигурацию на вашем хозяине домашнего помощника (если будет желательно создание прошивки Esphome с использованием дополнения компилятора устройства Esphome).
В следующих разделах описываются наиболее важные компоненты, включенные в файл конфигурации прошивки.
Компонент Ferraris необходим и должен быть добавлен для использования ваших датчиков.
Поскольку это пользовательский компонент, который не является частью Esphome, он должен быть явно импортирован. Самый простой способ - загрузить компонент непосредственно из этого репозитория.
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] Кончик
В приведенном выше примере последний статус компонента приглашается из main ветви репозиторию. Тем не менее, я рекомендую ссылаться на выпущенный стенд с помощью номера версии, чтобы иметь больше контроля над тем, какая программная подставка используется, и для того, чтобы иметь возможность лучше реагировать на «нарушение изменений». См. Пример конфигурации, как это можно сделать.
Можно настроить следующие общие настройки:
| вариант | тип | Нужный | стандартный | Описание |
|---|---|---|---|---|
id | ИДЕНТИФИКАТОР | № 1 | - | Экземпляр компонента Ferraris |
digital_input | Приколоть | Да 2 | - | Подключен контакт GPIO, с которым подключен цифровой выход модуля TCRT5000 |
analog_input | ИДЕНТИФИКАТОР | Да 2 | - | Датчик ADC, который считывает штифт, подключенный к аналоговому выходу модуля TCRT5000 |
analog_threshold | Номер / идентификатор 3 | нет | 50 | Порог обнаружения революции через аналоговый вход |
off_tolerance | Номер / идентификатор 3 | нет | 0 | Отрицательное смещение на аналоговое пороговое значение для падающего фланг |
on_tolerance | Номер / идентификатор 3 | нет | 0 | Положительное смещение на аналоговое пороговое значение для растущего фланг |
rotations_per_kwh | Число | нет | 75 | Количество революций проигрывателя на кВтч (значение отмечено в измерителе тока Ferraris) |
debounce_threshold | Номер / идентификатор 3 | нет | 400 | Минимальное время в миллисекундах между падением и последующим увеличением фланга, так что революция была принята во внимание, см. В разделе «Разбавление» |
energy_start_value | ИДЕНТИФИКАТОР | нет | - | Компоненты числа, значение которых используется в загрузке в качестве начального значения для измерителя потребления |
1 Определенные приложения требуют id элемента конфигурации.
2 Требуется только один из двух элементов конфигурации - digital_input или analog_input - в зависимости от варианта разработки аппаратного обеспечения.
3 Элементы конфигурации analog_threshold , off_tolerance , on_tolerance и debounce_threshold либо ожидают фиксированного числа, либо идентификатора численного компонента. Последнее позволяет настроить значение через пользовательский интерфейс (например, с помощью компонента номера шаблона).
ferraris :
id : ferraris_meter
digital_input : GPIO4
rotations_per_kwh : 75
debounce_threshold : 400
energy_start_value : last_energy_valueКомпонент API требуется, если ESP должен быть интегрирован в домашний помощник. В случае использования альтернативного программного обеспечения для автоматизации домашней автоматизации, вместо этого необходимо добавить компонент MQTT. Тем не менее, некоторые механизмы, такие как перезапись стойки измерителя или восстановление последней метровой шкалы после перезапуска (подробности см. Ниже) и больше не работают.
Ниже приведен пример интеграции с домашним помощником (и зашифрованным API):
api :
encryption :
key : !secret ha_api_keyА вот пример использования с альтернативным программным обеспечением для домашней автоматизации с использованием MQTT:
mqtt :
broker : 10.0.0.2
username : !secret mqtt_user
password : !secret mqtt_passwordДолжен быть доступен компонент Wi -Fi, в противном случае значения датчика не могут быть легко переданы на другое устройство.
wifi :
ssid : !secret wifi_ssid
password : !secret wifi_passwordКомпонент Ferraris имеет первичные датчики для вывода рассчитанных значений потребления и диагностических датчиков для режима калибровки. Все датчики являются необязательными и могут быть оставлены, если они не нужны.
Можно настроить следующие первичные датчики:
| датчик | тип | Устройство класса | Государственный класс | Единица | Описание |
|---|---|---|---|---|---|
power_consumption | числовой | power | measurement | W. | Текущее энергопотребление |
energy_meter | числовой | energy | total_increasing | Ведущий | Общее потребление тока (счетчик электроэнергии/состояние метра) |
Вы можете найти подробную информацию о параметрах конфигурации отдельных элементов в документации компонентов датчика Esshome.
sensor :
- platform : ferraris
power_consumption :
name : Momentanverbrauch
energy_meter :
name : Verbrauchszähler Можно настроить следующие диагностические датчики:
| датчик | тип | Описание |
|---|---|---|
rotation_indicator | бинарный | Показывает, находится ли маркировка на поворотном столе прямо перед инфракрасным датчиком (работает только в режиме калибровки) |
Вы можете найти подробную информацию о параметрах конфигурации отдельных элементов в документации компонентов бинарного датчика Esphome.
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator Для диагностических целей компонент Ferraris имеет переключатель. Это имеет имя calibration_mode и может использоваться для размещения компонента в режим калибровки (для получения дополнительной информации см. Раздел «Калибровка раздела»).
switch :
- platform : ferraris
calibration_mode :
name : KalibrierungsmodusКомпонент Ferraris предоставляет два действия для установки шкалы измерителей и установки счетчика перехода.
| действие | Описание |
|---|---|
ferraris.set_energy_meter | Поместите состояние счетчика на указанное значение |
| параметр | тип | Область | Описание |
|---|---|---|---|
value | float | > = 0 | Целевое значение для состояния метра в киловатт -часах (кВтч) |
примечание
Несмотря на то, что датчик для текущего состояния счетчика имеет единицу WH (WATT WARTS) , в действии, чтобы перезаписать подставку счетчика, используется устройство кВтч (киловатт -часы) , поскольку аналоговый счетчик тока Ferraris обычно также отображает счетчик.
| действие | Описание |
|---|---|
ferraris.set_rotation_counter | Поместите вращающийся счетчик на указанное значение |
примечание
Действие по установлению стенда метра косвенно также устанавливает вращающийся счетчик, поскольку компонент Ferraris работает внутри революции, а не с часами Watt или часами киловатта.
| параметр | тип | Область | Описание |
|---|---|---|---|
value | uint64 | > = 0 | Целевое значение для счетчика оборота в чисел революции |
Различные примеры применения для компонента Ferraris описаны в этом разделе.
В этом варианте цифровой выход инфракрасного датчика используется для определения революций проигрывателя. Аналоговый выход не требуется, другие контакты должны быть подключены к соответствующим контактам микроконтроллера. Для VCC должен использоваться выход 3,3 В ESPS, и цифровой выход D0 должен быть подключен к бесплатному выводу GPIO (например, GPIO4, соответствует выводу D2 на D1 Mini).
На следующей схеме подключаемой схемы показано пример экспериментальной установки с платой разработки ESP8266 D1 в качестве микроконтроллера.

С помощью отвертки цифровой выходной сигнал должен затем быть откалиброван через потенциометр. Два зеленых светодиода на задней части датчика помогают. Правый светодиод постоянно сияет, когда датчик поставляется с электричеством. Левый светодиод сияет до тех пор, пока не было признано «препятствия» и истекает, когда отражение было прервано. Последнее является условием, когда маркировка на поворотном столе из метра тока Ferraris бродит перед датчиком. Поэтому потенциометр должен быть установлен так, чтобы левый светодиод все еще светился, когда маркировка не находится в области инфракрасной пары отправителя/получателей, как только маркер наставил перед ним. Это всего лишь очень маленькая область, и это может быть немного сложно найти эту обстановку. Для получения дополнительной поддержки для этого процесса режим калибровки может быть активирован в прошивке Ferraris Meter, см. В разделе калибровки.
Кончик
Если невозможно найти подходящую и функционирующую настройку для потенциометра, аналоговый выход инфракрасного датчика можно альтернативно использовать, см. Следующий раздел.
Сторона программного обеспечения должна быть настроена для компонента Ferraris в файле конфигурации PIN YAML, который подключен к цифровому выходу модуля TCRT5000:
ferraris :
id : ferraris_meter
digital_input : GPIO4
# ...Пример конфигурации: ferraris_meter_digital.yaml
В этом варианте аналоговый выход инфракрасного датчика используется для идентификации революций проигрывателя. Цифровой выход не требуется, другие контакты должны быть подключены к соответствующим контактам микроконтроллера. Для VCC должен использоваться выход 3,3 В ESPS, и аналоговый выход A0 должен быть подключен к бесплатному выводу ADC (например, GPIO17, соответствует контакту A0 на D1 Mini).
На следующей схеме подключаемой схемы показано пример экспериментальной установки с платой разработки ESP8266 D1 в качестве микроконтроллера.

Калибровка с помощью потенциометра на модуле TCRT5000 больше не является необходимой, вместо этого должна быть настроена сторона программного обеспечения для аналогового входа и, необязательно, значения смещения для характеристики гистерезиса (см. Также раздел снизится ниже). Здесь также калибровочный режим компонента Ferraris может помочь, чтобы детали см. В разделе калибровки.
Пороговый analog_threshold контролирует, когда аналоговый сигнал рассматривается как «распознаваемый» (отмеченная область поворотного стола) и при обработке как «не распознается» (не отмеченная область поворотного стола). Если значение датчика ADC больше порогового analog_input , маркировка считается признанной, она меньше или одинаково, она не распознается.

Следующие шаги конфигурации теперь должны быть выполнены, например, сторона программного обеспечения:
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 чисел компонент, созданному в соответствии с 2. ferraris :
id : ferraris_meter
analog_input : adc_input
analog_threshold : adc_threshold
# ...analog_threshold также может быть указано, если порог уже известен и больше не должен быть настроен/изменен. В этом случае шаг 2 может быть опущен. ferraris :
# ...
analog_threshold : 45
# ... Конфигурация значений смещения off_tolerance и on_tolerance очень похожа на настройку analog_threshold и, следовательно, не была явно показана в примере выше.
Пример конфигурации: Ferraris_meter_analog.yaml
Также можно прочитать более одного счетчика тока Ferraris с одним микроконтроллером ESP. Для этого вам нужны дополнительные инфракрасные датчики / модули TCRT5000 и дополнительные бесплатные выводы GPIO на микроконтроллере. Как уже описано, модули TCRT5000 подключены к источнику напряжения микроконтроллера ESP через VCC и GND, а выходы D0 подключены к плате ESP со свободным штифтом GPIO.
примечание
Теоретически, вариант также может использоваться с аналоговым выходом инфракрасного датчика, но контакты с ADC на микроконтроллерах ESP более ограничены, чем чисто цифровые контакты. В частности, ESP8266, который имеет только один АЦП, поэтому будет непригодным для поддержки нескольких инфракрасных датчиков через их аналоговые результаты.
На следующей схеме подключаемой схемы показано пример настройки тестирования с двумя модулями TCRT5000, подключенными к Mini ESP8266 D1.

Тем не менее, следует иметь в виду, что каждый дополнительный инфракрасный датчик увеличивает нагрузку на микроконтроллер, и, особенно на очень высоких скоростях, оборудование приближается к его пределам.
Следующие шаги конфигурации теперь должны быть выполнены, например, сторона программного обеспечения:
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 2Пример конфигурации: ferraris_meter_multi.yaml
Во время позиционирования и выравнивания инфракрасного датчика, а также регулировки потенциометра или аналогового порогового значения, не имеет смысла измерить революции проигрывателя измерителя тока Ferraris и рассчитать потребление, поскольку изменения в состоянии датчика не соответствуют фактическому обнаружению маркировки на повороте. Следовательно, существует возможность поместить компонент Ferraris в режим калибровки путем включения переключателя для режима калибровки (см. Приводы). Пока активируется режим калибровки, расчет данных о потреблении не выполняется, и соответствующие датчики (см. Первичные датчики) не изменяются. Вместо этого диагностический датчик для оборотной индикации (см. Диагностические датчики) активен и также может использоваться для поддержки правильного выравнивания. Датчик находится в on , когда отметка была признана на проигрывательном столе и off , если маркировка не была признана.
Чтобы иметь возможность использовать режим калибровки, Components calibration_mode и rotation_indicator должны быть настроены в файле YAML:
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator
switch :
- platform : ferraris
calibration_mode :
name : KalibrierungsmodusПереход от не известного к отмеченной области и наоборот на поворотном столе может привести к быстрому и обратному («отскакиванию») состояния идентификации датчика, которое происходит, особенно при медленных скоростях вращения и не может быть полностью подавлена калибровкой. Этот синяк приводит к фальсифицированным измерениям и для их избегания, есть следующие настройки.
Порог debounce_threshold Depransing указывает минимальное время в миллисекундах между падением и последующим увеличением фланга. Только если измеренное время находится между двумя флангами выше настроенного значения, является запуск датчика. Этот тип депрессии работает при использовании как цифрового, так и аналогового входного сигнала инфракрасного датчика.

Два значения смещения off_tolerance и on_tolerance могут быть настроены для использования характеристики гистерезиса для обнаружения отмеченной области на поворотном столе через аналоговый сигнал. Это компенсирует «дрожь» аналогового сигнала и, таким образом, сводит к минимуму возможный синяк состояния идентификации для отмеченной области на поворотном столе. Этот тип депрессии работает только при использовании аналогового входного сигнала инфракрасного датчика.

С помощью умелой конфигурации интервала обновления update_interval и количества выборки на обновление ( samples ) для аналогового датчика analog_input , кривая аналогового сигнала может быть сглажена до сих пор, что краткосрочные колебания устраняются. Тем не менее, следует иметь в виду, что слишком большие интервалы обновления могут привести к тому факту, что отдельные революции больше не распознаются с очень высокими скоростями поворота, поскольку время между увеличением и последующим падением фланга меньше, чем интервал установленного обновления. Этот тип депрессии также работает только при использовании аналогового входного сигнала инфракрасного датчика.
Чтобы компенсировать состояние счетчика в компоненте Ferraris фактическим счетчиком измерителя тока Ferraris, значение датчика счетчика потребления может быть явно перезаписано. Для этого два ferraris.set_energy_meter и ferraris.set_rotation_counter .
Кончик
Обычно необходимо только одно из двух действий, в зависимости от того, хотите ли вы поместить счетчик в киловатт или в количестве революций.
В зависимости от того, должен ли настройка уровня измерителя обрабатываться пользовательским интерфейсом или автоматически через автоматизации и сценарии, действия могут использоваться по -разному. Два возможных примера применения описаны ниже, но есть и другие варианты, которые здесь не описаны.
Для этого, например, выполняются следующие шаги конфигурации (в этом примере, чтобы установить стойку метра как значение часа киловатта):
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; Для этого, например, выполняются следующие шаги конфигурации:
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 : singleЧтобы не уменьшить срок службы флэш -памяти на микроконтроллере ESP, компонент Ferraris не сохраняет какие -либо данные постоянно во время вспышки. В результате он не может сначала запомнить состояние счетчика над перезапуском микроконтроллера, и счетчик начинает подсчитать на 0 кВтч на каждой лодке. Таким образом, после каждого перезапуска вам придется вручную перезаписать шкалу счетчика по значению, читаемому на счетчика тока Ferraris. Поскольку это не очень дружелюбно, есть возможность сохранить состояние последнего метра в домашнем помощнике и передать его при загрузке микроконтроллера.
Чтобы это работало, необходимо выполнить следующие шаги конфигурации, например:
input_number.stromzaehler_letzter_wert ). number :
- platform : homeassistant
id : last_energy_value
entity_id : input_number.stromzaehler_letzter_wertenergy_start_value относится к номеру компоненту до 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 в файле конфигурации YAML, которая обновляет чисел компонент до 2. Поэтому я рекомендую вариант с автоматизацией домашнего помощника.Meter Ferraris - это компонент Esphome для создания прошивки ESP, в котором используется микроконтроллер ESP и инфракрасный датчик, количество вращений и скорость гимнастики аналогового электрического измерителя Ferraris и для расчета текущего потребления электроэнергии и считывания счетчика. Затем значение тезиса можно отправить в поиск программного обеспечения для домашней автоматизации в качестве домашнего помощника для дальнейшей обработки.
Программное обеспечение (включая документацию с примером настройки аппаратного обеспечения) предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии торговли, пригодности для определенной цели и неинфекции. Ни в коем случае авторы или владельцы авторского права не будут либными для каких -либо претензий, убытков или другой ответственности, будь то в действии договора, деликте или иным образом, возникающим из или в связи с или в использовании или других сделках в программном обеспечении.
На стороне аппаратного обеспечения запрошен только микроконтроллер ESP (например, ESP8266 или ESP32, включая источник питания) и инфракрасный датчик (например, TCRT5000). Микроконтроллер ESP8266 полностью достаточно для чистой функциональности измерителя Ferraris. Для инфракрасного датчика существует готовый модуль прорыва на основе TCRT5000 с входным напряжением 3,3 В-5 В, который, следовательно, имеет регулируемый резистор (потенциометр) для калибровки цифрового выхода датчика. Модули тезиса TCRT5000 имеют 4 контакта - VCC и GND для источника питания чипа датчика, а также цифровой выходной сигнал D0 и аналоговый выход A0.
Размещение датчика на крышке измерителя электроэнергии Ferraris требует небольшого мастерства и точной работы. Пара инфракрасного передатчика/приемника датчика должна быть выровнена центрально над поворотным столом с точностью миллиметра и точкой по прямой линии до поворотного стола.
Компонент измерителя Ferraris в основном поддерживает варианты последующей установки:
Чтобы построить прошивку Esphome, вы должны создать файл конфигурации на основе YAML. Вы можете использовать один из примеров файлов конфигурации, доказанных в этом репозитории в качестве отправной точки, и адаптировать его к вашим потребностям.
В принципе, есть два способа построения прошивки Esphome:
Какой метод вы должны выбрать, зависит от того, насколько вы знакомы с Esphome и предпочитаете ли вы работать с графическим пользовательским интерфейсом или командной строкой. Кроме того, производительность хозяев, на которых вы создаете прошивку, может сыграть роль в ускорении процесса.
примечание
Нет необходимости разворачивать этот репозиторий и делать адаптацию к примеру конфигурации непосредственно внутри разветвенного репозитория. Вместо этого достаточно сохранить и адаптировать пример конфигурации локально или сохранить ее на своем домашнем помощнике (если вы хотите построить прошивку Esphome с дополнением компилятора Esshome Device).
В следующих разделах описываются наиболее заметные компоненты, содержащиеся в файле конфигурации прошивки.
Компонент Ferraris необходим и должен быть добавлен для использования его датчиков.
Поскольку это пользовательский компонент, который не является частью Esphome, он должен быть явно импортирован. Самый простой способ - загрузить компонент непосредственно из этого репозитория.
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] Кончик
В приведенном выше примере загружается новейшая версия компонента из main ветви репозитория. Тем не менее, я рекомендую использовать номер версии для обозначения выпущенной версии, чтобы больше контролировать, какую версию программного обеспечения используется, и иметь возможность лучше реагировать на «нарушение изменений». См. Пример конфигурации для того, как это можно сделать.
Можно настроить следующие общие элементы конфигурации:
| вариант | Тип | Необходимый | по умолчанию | Описание |
|---|---|---|---|---|
id | ИДЕНТИФИКАТОР | № 1 | - | Экземпляр компонента Ferraris |
digital_input | Приколоть | Да 2 | - | PIN GPIO, к которому подключен цифровой выход модулей TCRT5000 |
analog_input | ИДЕНТИФИКАТОР | Да 2 | - | Датчик ADC, который считывает вывод, подключенный к аналоговому выходу модулей TCRT5000 |
analog_threshold | Номер / идентификатор 3 | НЕТ | 50 | Пороговое значение для обнаружения вращений через аналоговый вход |
off_tolerance | Номер / идентификатор 3 | НЕТ | 0 | Отрицательное смещение аналогового порога для падения, см. Раздел, дебаутируя подробности |
on_tolerance | Номер / идентификатор 3 | НЕТ | 0 | Положительное смещение аналогового порога для восходящего края см. В разделе дебаутируя подробности |
rotations_per_kwh | Число | НЕТ | 75 | Количество вращений проигрывателя через кВтч (это значение обычно отмечается на измерителе Ferraris Electrication) |
debounce_threshold | Номер / идентификатор 3 | НЕТ | 400 | Минимальное время в падении миллисекунды и последующем повышении, чтобы учитывать вращение, см. В разделе «Дебуонсирование» для получения подробной информации |
energy_start_value | ИДЕНТИФИКАТОР | НЕТ | - | Компонент числа, значение которого будет использоваться в качестве начального значения для счетчика энергии во время загрузки |
1 Некоторые варианты использования требуют id элемента конфигурации.
2 Запрос только один из digital_input или analog_input , в зависимости от варианта установки аппаратного обеспечения.
3 Элементы конфигурации analog_threshold , off_tolerance , on_tolerance и debounce_threshold ожидают либо статического номера, либо идентификатора на численном компоненте. Последнее позволяет конфигурации значения через пользовательский интерфейс (например, с использованием номера шаблона).
ferraris :
id : ferraris_meter
digital_input : GPIO4
rotations_per_kwh : 75
debounce_threshold : 400
energy_start_value : last_energy_valueДля компонента API требуется, если ESP должен быть интегрирован в домашний помощник. Для случая, когда должно использоваться альтернативное программное обеспечение для домашней автоматизации, вместо этого необходимо добавить компонент MQTT. Тем не менее, некоторые механизмы ищут как вручную переверкающие энергетический счетчик или восстановление последнего метра после перезапуска (озеро ниже для подробностей), который, возможно, больше не работает.
См. Пример для интеграции в домашний помощник (с зашифрованным API):
api :
encryption :
key : !secret ha_api_keyИ ниже к примеру для использования с альтернативным программным обеспечением для автоматизации домашней автоматизации через MQTT:
mqtt :
broker : 10.0.0.2
username : !secret mqtt_user
password : !secret mqtt_passwordДолжно присутствовать компонент WiFi, так как в противном случае значения датчика не могут быть легко переданы на другой компьютер.
wifi :
ssid : !secret wifi_ssid
password : !secret wifi_passwordКомпонент Ferraris обеспечивает первичные датчики, чтобы выявлять рассчитанные значения потребителей, а также диагностические датчики для режима калибровки. Все датчики являются необязательными и могут быть пропущены, если не требуются.
Можно настроить следующие первичные датчики:
| датчик | Тип | Устройство класса | Государственный класс | Единица | Описание |
|---|---|---|---|---|---|
power_consumption | числовое | power | measurement | W. | Текущее энергопотребление |
energy_meter | числовое | energy | total_increasing | Ведущий | Общее потребление энергии (показания метра) |
Для получения подробных параметров конфигурации каждого элемента, пожалуйста, обратитесь к конфигурации компонента датчика Esphome.
sensor :
- platform : ferraris
power_consumption :
name : Power consumption
energy_meter :
name : Meter reading Можно настроить следующие диагностические датчики:
| датчик | Тип | Описание |
|---|---|---|
rotation_indicator | бинарный | Указывает, находится ли отметка на поворотном столе перед инфракрасным датчиком (работает только в режиме калибровки) |
Для получения подробных параметров конфигурации каждого элемента, пожалуйста, обратитесь к конфигурации компонента бинарного датчика Esphome.
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Rotation indicator Для диагностических целей компонент Ferraris предоставляет переключатель с именем calibration_mode . Его можно использовать для установки компонента на калибровку (см. Калибровку раздела для получения дополнительной информации).
switch :
- platform : ferraris
calibration_mode :
name : Calibration modeКомпонент Ferraris предоставляет два действия для установки показания измерителя энергии и счетчика вращения.
| Действие | Описание |
|---|---|
ferraris.set_energy_meter | Устанавливает показания измерителя энергии на предоставленную стоимость |
| параметр | Тип | Диапазон | Описание |
|---|---|---|---|
value | float | > = 0 | Целевое значение для показания счетчика энергии в киловатт -часах (кВтч) |
примечание
Несмотря на то, что датчик для текущего показания счетчика имеет единицу Wh (Watt Hours) , действие для перевозки показателя счетчика имеет устройство кВтч (киловатт) , так как аналог электроэнергии Ferraris обычно отображает показания счетчика в этом блоке.
| Действие | Описание |
|---|---|
ferraris.set_rotation_counter | Устанавливает счетчик вращения на предоставленное значение |
примечание
Действие по установке энергетического счетчика косвенно, чтобы счетчик вращения в качестве компонента Ferraris внутренне работает с вращениями, а не с часами ваттов или киловатт -часами.
| параметр | Тип | Диапазон | Описание |
|---|---|---|---|
value | uint64 | > = 0 | Целевое значение для счетчика вращения в количестве вращений |
В этом разделе описываются различные примеры использования для компонента Ferraris.
В этом варианте цифровой выход инфракрасного датчика используется для обнаружения вращений проигрывателя. Аналоговый выход не требуется, другие контакты должны быть подключены к соответствующим контактам микроконтроллера. Выход 3,3 В ESP должен использоваться для VCC, а цифровой выход D0 должен быть подключен к бесплатному выводу GPIO (например, GPIO4, соответствующий выводу D2 на D1 Mini).
Следующая схема макета показывает настройку примеров теста с использованием мини -платы разработки ESP8266 D1 в качестве микроконтроллера.

Цифровой выходной сигнал инфракрасного датчика должен быть откалиброван через потенциометр с помощью винта; Два зеленых светодиода на задней части датчика помогают с этим. Правый светодиод непрерывно освещается, когда датчик поставляется с мощностью. Левый светодиод загорается до тех пор, пока не было обнаружено никаких «препятствий» и выходит, когда отражение было прервано. Последнее - это состояние, когда отметка на поворотном столе Ferraris Electrication Moster движется перед датчиком. Следовательно, регулировка мощного выселения свеклы, так что левый светодиод просто загорается, когда маркер не находится в диапазоне инфракрасной пары передатчика/приемника и выходит, когда маркер движется перед ним. This is only a very small range and it can be a little difficult to find this setting. To Further Assist with this Process, the Calibration Mode Can Be Enabled In The Ferraris Meter Firmware, See Section Calibration for Details.
Кончик
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.
примечание
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.
Кончик
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.