筆記
這是德語版本,用於英文版本,向下滾動或單擊此處。
Ferraris儀表是用於創建ESP固件的雜質組件,它可以使用ESP微控制器和紅外傳感器來確定模擬法拉利流儀表的轉盤的速度和旋轉,並且可以從中計算當前的電力消耗和儀表狀態。然後可以將這些值發送到家庭自動化軟件,例如家庭助理進行進一步處理。
該軟件(包括帶有硬件樣本結構的文檔)無需違約,也沒有任何明確或默認的保修,包括但不限於保證市場訪問,適用於特定目的以及不侵權第三方權利。作者或版權所有者絕不應對索賠,損害或其他義務,無論是在合同或責任訴訟中,未經授權的行為還是其他與軟件或使用其他商店有關的法案或其他商店。
僅需要ESP微控制器(例如ESP8266或ESP32,包括電壓電源)和紅外傳感器(例如TCRT5000)。對於法拉利儀表的純粹功能,ESP8266完全足以作為微控制器。對於紅外傳感器,具有3.3V-5V輸入電壓的基於TCRT5000的結束模塊,該模塊還具有可控的電阻(電位計)來校準數字輸出。這些TCRT5000模塊具有4個用於傳感器芯片電源的PINS-VCC和GND,以及數字輸出D0和一個模擬輸出A0。
將傳感器放在法拉利電流儀表的蓋板上時,需要一些技能和精確工作。傳感器的紅外發射器/接收器夫婦必須在毫米精確的中間對齊,並在轉盤上直接指向轉盤。
原則上,法拉利儀表組件支持以下開髮變體:
要創建Esphome固件,必須創建基於YAML的配置文件。您可以將此存儲庫中提供的示例配置文件之一用作起點,並根據您的需求進行調整。
原則上,有兩種構建Esphome固件的方法:
您應該選擇哪種方法取決於您對Esphome的信任程度,以及您是否喜歡使用圖形用戶界面或命令行使用。此外,構建固件的主機的性能可以發揮加速過程。
筆記
不必複製此存儲庫(“叉”)並適應複製存儲庫中的示例配置。取而代之的是,可以保存和調整樣本配置或取消主機助理主機上的適應配置(如果需要使用Esphome Device編譯器附加組件來創建Esphome固件)。
以下各節描述了固件配置文件中包含的最重要組件。
組件法拉利是必不可少的,必須添加以使用傳感器。
由於它是不屬於Esphome的自定義組件,因此必須明確導入它。最簡單的方法是直接從此存儲庫中加載組件。
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] 提示
在上面的示例中,從存儲庫的main分支邀請了組件的最新狀態。但是,我建議通過版本編號提及發布的支架,以更多地控制使用哪種軟件支架,並能夠對“破壞更改”做出更好的反應。請參閱示例配置如何完成。
可以配置以下通用設置:
| 選項 | 類型 | 需要 | 標準 | 描述 |
|---|---|---|---|---|
id | ID | 否1 | - | 法拉利組件的實例 |
digital_input | 別針 | 是2 | - | 連接TCRT5000模塊的數字輸出的GPIO PIN |
analog_input | ID | 是2 | - | ADC傳感器讀取連接到TCRT5000模塊的模擬輸出的引腳 |
analog_threshold | 號碼 / ID 3 | 不 | 50 | 通過模擬輸入檢測革命的閾值 |
off_tolerance | 號碼 / ID 3 | 不 | 0 | 降落側面的模擬閾值值負偏移,請參見downings dowmessing soldings“ |
on_tolerance | 號碼 / ID 3 | 不 | 0 | 上升側面的模擬閾值值的積極偏移,請參見downings dowmessing soling soldings詳細信息 |
rotations_per_kwh | 數字 | 不 | 75 | 每千瓦時轉盤的旋轉數量(該值在法拉利電流儀表上註明) |
debounce_threshold | 號碼 / ID 3 | 不 | 400 | 在跌落和隨後的側面增加之間的毫秒毫秒時,革命被考慮到革命,請參閱部分,請參閱部分 |
energy_start_value | ID | 不 | - | 數字組件的值將啟動中的值用作消耗儀的起始值 |
1某些應用程序需要配置元素id 。
2根據硬件開髮變體,只需要兩個配置元素之一 - digital_input或analog_input 。
3配置元素analog_threshold , off_tolerance , on_tolerance和debounce_threshold期望固定數字或數字組件的ID。後者允許通過用戶界面配置該值(例如,使用模板號組件)。
ferraris :
id : ferraris_meter
digital_input : GPIO4
rotations_per_kwh : 75
debounce_threshold : 400
energy_start_value : last_energy_value如果要將ESP集成到家庭助理中,則需要API組件。如果要使用替代家庭自動化軟件,則必須添加MQTT組件。但是,某些機制(例如重新啟動儀表架或重新啟動後的最後一個儀表尺度的恢復)(請參閱下面的詳細信息),而不再工作。
以下是與家庭助理(和加密API)集成的示例:
api :
encryption :
key : !secret ha_api_key這是使用MQTT與替代家庭自動化軟件一起使用的示例:
mqtt :
broker : 10.0.0.2
username : !secret mqtt_user
password : !secret mqtt_passwordWiFi組件應可用,否則傳感器值不能輕易傳輸到另一個設備。
wifi :
ssid : !secret wifi_ssid
password : !secret wifi_password法拉利組件具有主要傳感器,可輸出計算出的校準模式的消耗值和診斷傳感器。所有傳感器都是可選的,如果不需要它們,則可以被排除。
可以配置以下主要傳感器:
| 感應器 | 類型 | 設備類 | 州類 | 單元 | 描述 |
|---|---|---|---|---|---|
power_consumption | 數值 | power | measurement | w | 當前的功耗 |
energy_meter | 數值 | energy | total_increasing | WH | 總電流消耗(電錶/米) |
您可以在Esphome傳感器組件的文檔中找到有關單個元素的配置選項的詳細信息。
sensor :
- platform : ferraris
power_consumption :
name : Momentanverbrauch
energy_meter :
name : Verbrauchszähler 可以配置以下診斷傳感器:
| 感應器 | 類型 | 描述 |
|---|---|---|
rotation_indicator | 二進制 | 顯示轉盤上的標記是否僅在紅外傳感器的前面(僅在校準模式下起作用) |
您可以在Esphome二進制傳感器組件的文檔中找到有關單個元素的配置選項的詳細信息。
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator出於診斷目的,法拉利組件具有開關。它具有名稱calibration_mode ,可用於將組件放入校準模式(有關更多信息,請參見部分校準)。
switch :
- platform : ferraris
calibration_mode :
name : Kalibrierungsmodus法拉利組件提供了兩個動作,以設置儀表刻度並設置過渡計數器。
| 行動 | 描述 |
|---|---|
ferraris.set_energy_meter | 將儀表狀態放在指定值 |
| 範圍 | 類型 | 區域 | 描述 |
|---|---|---|---|
value | float | > = 0 | 千瓦時儀表的目標價值(kWh) |
筆記
儘管當前儀表狀態的傳感器具有WH(瓦小時) ,但覆蓋儀表支架的動作使用了單位kWh(千瓦時) ,因為模擬的素素電流儀表通常也顯示儀表。
| 行動 | 描述 |
|---|---|
ferraris.set_rotation_counter | 將旋轉計數器放在指定的值上 |
筆記
設置儀表架的動作間接設置了旋轉櫃檯,因為法拉利組件內部與旋轉局部合作,而不是瓦特小時或千瓦時。
| 範圍 | 類型 | 區域 | 描述 |
|---|---|---|---|
value | uint64 | > = 0 | 營業額計數器數量革命的目標值 |
本節描述了法拉利組件的各種應用示例。
在此變體中,紅外傳感器的數字輸出用於識別轉盤的轉速。不需要模擬輸出,其他引腳必須連接到微控制器的相應引腳。對於VCC,應使用ESP的3.3V輸出,並且必須將數字輸出D0連接到免費的GPIO引腳(例如GPIO4,對應於D1 Mini上的引腳D2)。
以下插件電路圖顯示了具有ESP8266 D1 Mini開發板作為微控制器的實驗設置的示例。

借助螺絲刀,必須通過電位計對數字輸出信號進行校準。傳感器背面的兩個綠色LED幫助。當傳感器提供電力時,右LED會永久發光。只要沒有“障礙”在反射被中斷時,左led燈光就會閃耀。後者是法拉利電流儀表轉盤上的標記在傳感器前面徘徊時的條件。因此,應設置電位計,以使左LED在標記不在紅外發件人/收件人夫婦的區域中時仍會發光,而標記將其推向前面。這只是一個很小的區域,很難找到此設置。為了提供此過程的額外支持,可以在Ferraris儀表固件中激活校準模式,有關詳細信息,請參見校準部分。
提示
如果無法為電位計找到合適的功能設置,則可以使用紅外傳感器的模擬輸出,請參見下一節。
必須在PIN YAML配置文件中為Ferraris組件配置軟件端,該文件連接到TCRT5000模塊的數字輸出:
ferraris :
id : ferraris_meter
digital_input : GPIO4
# ...示例配置: ferraris_meter_digital.yaml
在此變體中,紅外傳感器的模擬輸出用於識別轉盤的轉速。不需要數字輸出,其他引腳必須連接到微控制器的相應引腳。對於VCC,應使用ESP的3.3V輸出,並且必須將模擬輸出A0連接到自由ADC引腳(例如GPIO17,對應於D1 Mini上的引腳A0)。
以下插件電路圖顯示了具有ESP8266 D1 Mini開發板作為微控制器的實驗設置的示例。

不再需要通過TCRT5000模塊上的電位計進行校準,而是必須為模擬輸入配置軟件端,並且可以(可選)磁滯特徵的偏移值(另請參見下面的截面)。在這裡,法拉利組件的校準模式也可以幫助您,請參閱校準部分以獲取詳細信息。
當將模擬信號視為“識別”(轉盤的標記區域)並且將視為“未識別”(未識別的區域(未標記的轉盤區域)時,閾值analog_threshold 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
也可以使用單個ESP微控制器讀取多個超過一個法拉利當前計數器。為此,您需要在微控制器上進行更多的紅外傳感器 / TCRT5000模塊和其他免費的GPIO引腳。如前所述,TCRT5000模塊通過VCC和GND連接到ESP微控制器的電壓源,並且D0輸出各自連接到ESP板,並使用免費的GPIO PIN連接到ESP板。
筆記
從理論上講,變體也可以與紅外傳感器的模擬輸出一起使用,但是ESP微控制器上具有ADC能力的引腳比純數字引腳更有限。因此,特別是只有一個ADC的ESP8266不適合通過其模擬輸出來支持多個紅外傳感器。
以下插件電路圖顯示了一個測試設置的示例,該測試設置具有連接到ESP8266 D1 mini的兩個TCRT5,000模塊。

但是,應該記住的是,每個其他紅外傳感器都會增加微控制器上的負載,尤其是在轉盤非常高的速度下,硬件使其更接近其限制。
現在必須執行以下配置步驟,例如,軟件方面:
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
在定位和對齊紅外傳感器以及電位計或模擬閾值值的調整期間,衡量素毛素電流計的轉盤的轉速併計算消耗併計算傳感器條件的變化與轉盤的實際檢測相對應。因此,可以通過打開開關以進行校準模式(請參閱執行器),將法拉利組件放入校準模式。只要激活校準模式,就不會對消耗數據進行計算,也不會更改相應的傳感器(請參見主傳感器)。取而代之的是,用於旋轉指示的診斷傳感器(請參閱診斷傳感器)是有效的,也可以用於支持正確的對齊。傳感器處於on何時在轉盤上識別出標記,並且如果未識別標記,則off 。
為了能夠使用校準模式,必須在yaml文件中配置組件calibration_mode和rotation_indicator :
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator
switch :
- platform : ferraris
calibration_mode :
name : Kalibrierungsmodus從未標記到標記區域的過渡,反之亦然,轉盤上可以導致傳感器的識別狀態的快速來回(“彈跳”),尤其是在慢速旋轉速度下發生,並且不能被校準完全抑制。這種瘀傷導致偽造的測量結果並避免使用以下設置。
debounce_threshold凹陷閾值指定跌落和隨後的側面增加之間的最短時間。只有當測量的時間位於配置值上方的兩個側面之間,傳感器就考慮到了傳感器。當使用數字和模擬輸入信號的紅外傳感器時,這種類型的抑鬱症可以工作。

可以將兩個偏移值off_tolerance和on_tolerance配置為使用磁滯特徵,以通過模擬信號檢測轉盤上標記的區域。這補償了模擬信號的“顫抖”,從而最大程度地減少了轉盤上標記區域的識別狀態的可能性。這種類型的抑鬱僅在使用紅外傳感器的模擬輸入信號時起作用。

通過對更新間隔update_interval的巧妙配置以及模擬傳感器analog_input的每次更新的採樣數( samples ),模擬信號的曲線可以平滑,以至於消除了短期波動。但是,應該記住的是,太大的更新間隔可能會導致以下事實:個人旋轉不再以很高的轉動速度認識到,因為增加和隨後的側面側面之間的時間小於設定的更新間隔。這種類型的抑鬱症也只有在使用紅外傳感器的模擬輸入信號時起作用。
為了用法拉利電流儀表的實際儀表來補償法拉利組件中的儀表狀態,可以明確覆蓋消耗儀傳感器的值。為此,兩個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 kWh的速度計數。因此,在每次重新啟動後,您必須通過在法拉利電流儀表上讀取的值手動覆蓋儀表。由於這不是很友好的用戶,因此有可能在家庭助理中持續下一個儀表狀態,並在啟動微控制器時將其傳輸到它。
為了使此功能工作,必須執行以下配置步驟,例如:
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的傳感器自動化,從而更新2下的數字組件。但是,這擴展了微控制器中每次革命的處理時間,並且可以導致轉盤的單個回合的事實,即在非常高的電力消耗的情況下不會記錄轉盤的單個回合。因此,我建議使用家庭助理自動化的變體。Ferraris儀表是一種用於創建ESP固件的大量組件,該組件使用ESP微控制器和紅外傳感器旋轉次數以及模擬法拉利電氣表的體操次數以及計算當前的電力消耗和儀表讀數。然後可以將論文值發送到家庭自動化軟件搜索作為家庭助理以進行進一步處理。
該軟件(包括帶有示例硬件設置的文檔)是“原樣”提供的,沒有任何形式,明示或暗示的保修,包括但不限於商品的保證,特定目的的適用性和非侵權。在任何情況下,無論是在合同,侵權還是其他責任中,作者或版權持有人都不應對任何索賠,損害賠償或其他責任,無論是由合同,侵權還是其他責任。
在硬件方面,要求僅使用ESP微控制器(例如ESP8266或ESP32,包括電源)和紅外傳感器(例如TCRT5000)。 ESP8266微控制器完全足以滿足法拉利儀表的純粹功能。對於紅外傳感器,有可用的3.3V-5V輸入電壓基於現成的TCRT5000突破模塊,因此具有可調節電阻(電位計)來校準傳感器的數字輸出。論文TCRT5000模塊具有4個引腳-VCC和GND,用於傳感器芯片的電源以及數字輸出D0和模擬輸出A0。
將傳感器放在法拉利電量表的蓋板上需要一些技巧和精確工作。傳感器的紅外發射器/接收器對必須以毫米精度將轉盤的中央對齊,並在直線上以直線與轉盤處對齊。
Ferraris儀表組件基本上支持以下設置變體:
要構建一個大聲的固件,您必須生物基於YAML的配置文件。您可以使用該存儲庫中證明的示例配置文件之一作為起點,並根據您的需求進行調整。
原則上,有兩種構建Esphome固件的方法:
您應該選擇哪種方法取決於您對Esphome的熟悉程度,以及您是否喜歡使用圖形用戶界面或命令行。此外,您正在構建的主機的性能可以在加速過程中發揮作用。
筆記
沒有必要分配此存儲庫,並對示例配置進行改編,直接在分叉存儲庫中。取而代之的是,將示例配置保存並在本地保存並將其存儲在家庭助理主機上是足夠的(如果您希望使用Esphome設備編譯器附加組件構建Esphome固件)。
以下各節描述了固件配置文件中最著名的組件。
法拉利組件是必不可少的,必須添加才能使用其傳感器。
由於這是一個自定義組件,它不是Esphome的一部分,因此必須明確導入它。最簡單的方法是直接從此存儲庫中加載組件。
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] 提示
在上面的示例中,加載了來自存儲庫main分支的組件的最新版本。但是,我建議使用版本編號參考發布的版本,以便對使用哪種軟件版本進行更多控制,並能夠對“破壞更改”做出更好的反應。有關如何完成此操作,請參見示例配置。
可以配置以下通用配置項目:
| 選項 | 類型 | 必需的 | 預設 | 描述 |
|---|---|---|---|---|
id | ID | 否1 | - | 法拉利組件實例 |
digital_input | 別針 | 是2 | - | TCRT5000模塊的數字輸出連接到的GPIO PIN |
analog_input | ID | 是2 | - | ADC傳感器讀取連接到TCRT5000模塊的模擬輸出的引腳 |
analog_threshold | 號碼 / ID 3 | 不 | 50 | 通過模擬輸入檢測旋轉的閾值值 |
off_tolerance | 號碼 / ID 3 | 不 | 0 | 落下邊緣的模擬閾值負偏移,請參見部分辯論詳細信息 |
on_tolerance | 號碼 / ID 3 | 不 | 0 | 對上升邊緣的模擬閾值的積極偏移,請參見詳細信息請參見部分 |
rotations_per_kwh | 數字 | 不 | 75 | 通過KWH的轉盤的旋轉數量(通常在法拉利電錶上註意到該值) |
debounce_threshold | 號碼 / ID 3 | 不 | 400 | 毫秒下降的最短時間跌落,隨後的上升邊緣要考慮旋轉,請參見詳細信息,請參閱部分。 |
energy_start_value | ID | 不 | - | 啟動時間將其值用作能量計數器的起始值的數字組件 |
1一些用例需要配置元素id 。
2只有digital_input或analog_input之一是請求,具體取決於硬件設置變體。
3配置元素analog_threshold , off_tolerance , on_tolerance和debounce_threshold期望靜態編號或數字組件上的ID。後者允許通過用戶界面(例如,使用模板號)配置該值。
ferraris :
id : ferraris_meter
digital_input : GPIO4
rotations_per_kwh : 75
debounce_threshold : 400
energy_start_value : last_energy_value如果將ESP集成到家庭助理中,則需要對API組件。對於應使用替代家庭自動化軟件的情況,必須添加MQTT組件。但是,某些機制在手動覆蓋能量表或恢復重新啟動後(以下湖面以獲取細節)後搜索最後的讀數可能不再起作用。
請參見下文示例,將集成到家庭助理(與加密API)中:
api :
encryption :
key : !secret ha_api_key下面是通過MQTT使用替代家庭自動化軟件使用的示例:
mqtt :
broker : 10.0.0.2
username : !secret mqtt_user
password : !secret mqtt_passwordWiFi組件應存在,因為否則,傳感器值不能輕易傳輸到另一台計算機。
wifi :
ssid : !secret wifi_ssid
password : !secret wifi_password法拉利組件提供了主要傳感器,以揭示計算出的消耗量值以及校準模式的診斷傳感器。所有傳感器都是可選的,如果不需要,可以省略。
可以配置以下主要傳感器:
| 感應器 | 類型 | 設備類 | 州類 | 單元 | 描述 |
|---|---|---|---|---|---|
power_consumption | 數字 | power | measurement | w | 當前的功耗 |
energy_meter | 數字 | energy | total_increasing | WH | 總能耗(儀表讀數) |
有關每個項目的詳細配置選項,請參閱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為了診斷目的,法拉利組件提供了一個名稱calibration_mode的開關。它可用於將組件設置為校準時尚(有關更多信息,請參見部分校準)。
switch :
- platform : ferraris
calibration_mode :
name : Calibration mode法拉利組件提供了兩個動作,用於設置能級讀數和旋轉計數器。
| 行動 | 描述 |
|---|---|
ferraris.set_energy_meter | 將能量表讀數設置為提供的值 |
| 範圍 | 類型 | 範圍 | 描述 |
|---|---|---|---|
value | float | > = 0 | 千瓦時能量表讀數的目標值(kWh) |
筆記
儘管當前儀表讀數的傳感器具有單位WH(瓦小時) ,但越過儀表讀數的動作具有單位kWh(千瓦時) ,因為模擬法拉利素電錶通常通常在本單元中顯示儀表讀數。
| 行動 | 描述 |
|---|---|
ferraris.set_rotation_counter | 將旋轉計數器設置為提供的值 |
筆記
在內部旋轉時,旋轉櫃檯的旋轉櫃檯間接地設置了能量計讀數的動作,而不是與瓦特小時或千瓦小時一起使用。
| 範圍 | 類型 | 範圍 | 描述 |
|---|---|---|---|
value | uint64 | > = 0 | 旋轉數量旋轉計數器數量的目標值 |
本節描述了法拉利組件使用的各種示例。
在此變體中,紅外傳感器的數字輸出用於檢測轉盤的旋轉。不需要模擬輸出,其他引腳必須連接到微控制器的相應引腳。 ESP的3.3V輸出應用於VCC,並且必須將數字輸出D0連接到免費的GPIO引腳(例如GPIO4,對應於D1 Mini上的PIN D2)。
以下麵包板示意圖顯示了使用ESP8266 D1 Mini開發板作為微控制器的示例測試設置。

紅外傳感器的數字輸出信號必須通過電報機使用船尾校準;傳感器背面的兩個綠色LED對此有所幫助。當傳感器提供功率時,右手LED會連續亮起。只要未檢測到“障礙”並在反射中斷時,左手LED燈光就會升高。後者是當傳感器前方的Ferraris電力計的轉盤移動時的狀態。因此,電位計SHEDT的調節甜菜因此,使左手LED在標記不在紅外發射器/接收器對范圍內時亮起來,並且隨著標記在其前方移動時就會熄滅。這只是一個很小的範圍,很難找到此設置。為了進一步協助此過程,可以在Ferraris儀表固件中啟用校準模式,有關詳細信息,請參見部分校準。
提示
如果您沒有被誇大並調整電位計的工作調整,則可以替代使用紅外傳感器的模擬輸出,請參見下一節。
在軟件方面,必須在YAML配置文件中為Ferraris組件配置連接到TCRT5000模塊的數字輸出的PIN:
ferraris :
id : ferraris_meter
digital_input : GPIO4
# ...示例配置文件: ferraris_meter_digital.yaml
在此變體中,紅外傳感器的模擬輸出用於檢測轉盤的旋轉。不需要數字輸出,其他引腳必須連接到微控制器的相應引腳。 ESP的3.3V輸出應用於VCC,模擬輸出A0必須連接到自由ADC引腳(例如GPIO17,對應於D1 Mini上的PIN A0)。
以下麵包板示意圖顯示了使用ESP8266 D1 Mini開發板作為微控制器的示例測試設置。

不需要在TCRT5000模塊上使用電位器進行校準。取而代之的是,必須在軟件方面配置模擬輸入的閾值以及磁滯曲線的偏移值(請參閱ACH段進一步辯論)。在這裡,法拉利組件的校準方式可能會有所幫助,有關詳細信息,請參見部分校準。
當將模擬信號視為“檢測到”(轉盤的標記區域)時,閾值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 threshold
icon : mdi:speedometer-slow
entity_category : config
mode : box
optimistic : true
initial_value : 50
min_value : 0
max_value : 1000
step : 1analog_input是指根據1。創建的ADC傳感器,而條目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
因此,使用單個ESP微控制器可以讀取比法拉利電量表的讀數更多。這需要多個紅外傳感器 / TCRT5000模塊以及微控制器上的其他免費GPIO引腳。 TCRT5000模塊必須通過VCC和GND連接到ESP微控制器的電壓源,如“部分硬件設置”中所述,並且必須將D0輸出連接到ESP板上的免費GPIO引腳。
筆記
理論上,可以使用具有紅外傳感器類似輸出的變體,但是ESP微控制器上具有ADC能力的引腳比純數字引腳更強。 ESPECAILLY僅具有單個ADC的ESP8266,可以通過其類似的輸出來支持多個Infrarsors。
以下麵包板示意圖顯示了一個示例,其中一個示例測試設置,該設置具有兩個TCRT5000模塊,該模塊連接到ESP8266 D1 Mini。

但是,請記住,每個其他紅外傳感器都會增加微控制器的負載,並使硬件更接近其極限,尤其是旋轉速度非常高的轉盤速度。
例如,在軟件方面,必須執行以下配置步驟:
ferraris :
- id : ferraris_meter_1
digital_input : GPIO4
# ...
- id : ferraris_meter_2
digital_input : GPIO5
# ...ferraris_id配置條目重複並分配給Corscing Ferraris組件實例。 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 2示例配置文件: ferraris_meter_multi.yaml
在紅外傳感器的定位和對齊期間,以及電位計或模擬閾值的調整,使法拉利電氣儀表體操的旋轉旋轉併計算消耗價值,並且隨著傳感器狀態的變化對轉盤的實際檢測,這是很有意義的。因此,可以通過打開校準時尚開關(請參閱演員)將法拉利組件設置為校準時尚。只要校準方式是有效的,就不會對消耗數據進行計算,並且相應的傳感器(請參閱主傳感器)不會更改。取而代之的是,旋轉指示的診斷傳感器(請參閱診斷傳感器)是有效的,並且還可以用於輔助正確對齊。當檢測到轉盤上的標記並在未檢測到off狀態時,傳感器具有on狀態。
為了能夠使用校準模式,必須在yaml文件中配置組件calibration_mode和rotation_indicator :
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Rotation indicator
switch :
- platform : ferraris
calibration_mode :
name : Calibration mode從未標記到標記區域的過渡,反之亦然,在轉盤上可以導致傳感器檢測狀態的快速來回跳動(“彈跳”),這在慢速旋轉速度下特別發生,並且不能完全被校準完全掩蓋。這種狀態的彈跳導致偽造的測量值並避免這種情況,可以應用以下設置。
Deboonce閾值debounce_threshold指定Millise Conds下降的最小時間和隨後的上升邊緣。僅當兩個邊之間的測量時間高於配置的值時,傳感器的觸發器才會考慮到。使用數字以及紅外傳感器的模擬輸入信號,可以將這種類型的脫棉器應用於變體上。

可以將兩個偏移值off_tolerance和on_tolerance配置為使用磁滯曲線通過模擬信號檢測轉盤上標記的區域。這補償了模擬信號的抖動,從而最大程度地減少了轉盤上標記區域的檢測狀態的任何可能彈跳。這種類型的辯論僅在使用紅外傳感器的模擬輸入信號時起作用。

通過仔細配置更新間隔update_interval和模擬傳感器analog_input的每個更新的示例數( samples ),可以平滑模擬信號的曲線,以搜索消除短期波動的程度。但是,請記住,過度更新間隔可能會導致單個旋轉不再以很高的旋轉速度檢測到,因為上升和子之後的跌落邊緣之間的時間短於更新間隔。因此,僅在使用紅外傳感器的模擬輸入信號時,這種類型的拒絕才能起作用。
為了將法拉利組件中的儀表讀數與法拉利電錶的實際儀表讀數同步,可以明確地結束能級傳感器的值。為此,為此目的提供了兩個動作ferraris.set_energy_meter和ferraris.set_rotation_counter (請參閱操作)。
提示
通常,您只需要使用兩個操作之一,具體取決於您要在千瓦時或旋轉次數中設置儀表讀數。
這些操作可以通過不同的方式使用,具體取決於是否要通過用戶界面或基於觸發的自動化和腳本手動設置能量表的讀數。下面描述了兩個可能的用法示例,但是存在更多可能性的可能性。
例如,以下配置步驟是隨身攜帶的(在此示例中,以千瓦時值覆蓋能量表):
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; 例如,以下配置步驟是隨身攜帶的汽車:
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 : 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 : single為了不縮短ESP微控制器上閃存的使用壽命,Ferraris組件不會在閃存中持續存儲任何數據。結果,它不記得重新啟動微控制器後的儀表讀數,並且在每個啟動過程中,儀表開始以0 kWh的速度計數。因此,每次重新啟動後,必須從法拉利電錶中讀取價值,必須手動覆蓋儀表讀數。由於這不是用戶友好的,因此可以選擇在啟動時將最後一個儀表讀數持續到家庭助手中的最後一個讀數並將其轉移到微控制器上。
為此,必須執行以下配置步驟:
input_number.electricity_meter_last_value )。 number :
- platform : homeassistant
id : last_energy_value
entity_id : input_number.electricity_meter_last_valueenergy_start_value是指在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創建傳感器自動化,該文件可直接從eSphome中更新2下的數字組件。但是,這會導致微控制器的每次旋轉時間更長的處理時間,並且可能導致在非常高功耗的情況下未檢測到轉盤的單個旋轉(因此,旋轉速度很高)。因此,我建議使用家庭助理自動化的變體。