บันทึก
นี่คือเวอร์ชันภาษาเยอรมันสำหรับเวอร์ชันภาษาอังกฤษเลื่อนลงหรือคลิกที่นี่
Ferraris Meter เป็นส่วนประกอบของ Esphome สำหรับการสร้างเฟิร์มแวร์ ESP ซึ่งสามารถใช้ไมโครคอนโทรลเลอร์ ESP และเซ็นเซอร์อินฟราเรดเพื่อกำหนดความเร็วและการปฏิวัติของแผ่นเสียงของเครื่องวัดกระแสลมแบบอะนาล็อกเฟอร์ราริสและจากนี้สามารถคำนวณปริมาณการใช้ไฟฟ้าในปัจจุบันและสถานะมิเตอร์ ค่าเหล่านี้สามารถส่งไปยังซอฟต์แวร์ระบบอัตโนมัติที่บ้านเช่นผู้ช่วยที่บ้านสำหรับการประมวลผลเพิ่มเติม
ซอฟต์แวร์ (รวมถึงเอกสารที่มีโครงสร้างตัวอย่างฮาร์ดแวร์) มีให้โดยไม่มีการผิดนัดและไม่มีการรับประกันแบบด่วนหรือโดยปริยายรวมถึง แต่ไม่ จำกัด เพียงการรับประกันการเข้าถึงตลาดความเหมาะสมสำหรับวัตถุประสงค์เฉพาะและการไม่ละเมิดสิทธิของบุคคลที่สาม ผู้เขียนหรือเจ้าของลิขสิทธิ์ไม่รับผิดชอบต่อการเรียกร้องความเสียหายหรือภาระผูกพันอื่น ๆ ไม่ว่าจะเป็นในสัญญาหรือคดีความรับผิดการกระทำที่ไม่ได้รับอนุญาตหรืออย่างอื่นซึ่งเกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือร้านค้าอื่น ๆ ด้วยซอฟต์แวร์
มีเพียงไมโครคอนโทรลเลอร์ ESP (เช่น ESP8266 หรือ ESP32 รวมถึงการจ่ายแรงดันไฟฟ้า) และเซ็นเซอร์อินฟราเรด (เช่น TCRT5000) สำหรับฟังก์ชั่นที่บริสุทธิ์ของมิเตอร์เฟอร์ราริส ESP8266 นั้นเพียงพออย่างสมบูรณ์ในฐานะไมโครคอนโทรลเลอร์ สำหรับเซ็นเซอร์อินฟราเรดจะมีโมดูลการฝ่าวงล้อม TCRT5000 ที่ใช้เสร็จแล้วพร้อมแรงดันไฟฟ้าอินพุต 3.3V-5V ซึ่งมีความต้านทานต่อการควบคุม (โพเทนชิออมิเตอร์) เพื่อปรับเทียบเอาต์พุตดิจิตอล โมดูล TCRT5000 เหล่านี้มี 4 PINS-VCC และ GND สำหรับแหล่งจ่ายไฟของชิปเซ็นเซอร์รวมถึงเอาต์พุตดิจิตอล D0 และเอาต์พุตอะนาล็อก A0
เมื่อวางเซ็นเซอร์ไว้บนแผ่นปกของมิเตอร์ปัจจุบันเฟอร์ราริสจำเป็นต้องใช้ทักษะและความแม่นยำเล็กน้อย เครื่องส่งสัญญาณ/ผู้รับอินฟราเรดคู่ของเซ็นเซอร์จะต้องจัดแนวตรงกลางของมิลลิเมตรอย่างแม่นยำเหนือแผ่นเสียงและชี้ตรงไปที่แผ่นเสียง
โดยหลักการแล้วองค์ประกอบของเฟอร์ราริสมิเตอร์รองรับตัวแปรการพัฒนาต่อไปนี้:
ในการสร้างเฟิร์มแวร์ Esphome ต้องสร้างไฟล์การกำหนดค่าที่ใช้ YAML คุณสามารถใช้หนึ่งในไฟล์การกำหนดค่าตัวอย่างที่มีให้ในที่เก็บนี้เป็นจุดเริ่มต้นและปรับให้เข้ากับความต้องการของคุณ
โดยหลักการแล้วมีสองวิธีในการสร้างเฟิร์มแวร์ Esphome:
วิธีใดที่คุณควรเลือกขึ้นอยู่กับความน่าเชื่อถือของคุณกับ Esphome และไม่ว่าคุณต้องการทำงานกับส่วนต่อประสานผู้ใช้กราฟิกหรือกับบรรทัดคำสั่ง นอกจากนี้ประสิทธิภาพของโฮสต์ที่คุณสร้างเฟิร์มแวร์สามารถมีบทบาทในการเร่งกระบวนการ
บันทึก
ไม่ จำเป็นต้องคัดลอกที่เก็บนี้ ("Forken") และปรับให้เข้ากับการกำหนดค่าตัวอย่างในที่เก็บที่คัดลอก แต่ก็เพียงพอที่จะบันทึกและปรับการกำหนดค่าตัวอย่างหรือถอดการกำหนดค่าที่ปรับเปลี่ยนบนโฮสต์ผู้ช่วยบ้านของคุณ (หากต้องการการสร้างเฟิร์มแวร์ Esphome โดยใช้ Add-on คอมไพเลอร์อุปกรณ์ Esphome)
ส่วนต่อไปนี้อธิบายส่วนประกอบที่สำคัญที่สุดที่รวมอยู่ในไฟล์การกำหนดค่าเฟิร์มแวร์
ส่วนประกอบเฟอร์ราริสเป็นสิ่งจำเป็นและต้องเพิ่มเพื่อใช้เซ็นเซอร์ของคุณ
เนื่องจากเป็นองค์ประกอบที่กำหนดเองที่ไม่ได้เป็นส่วนหนึ่งของ Esphome จึงต้องนำเข้าอย่างชัดเจน วิธีที่ง่ายที่สุดคือการโหลดส่วนประกอบโดยตรงจากที่เก็บนี้
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] เคล็ดลับ
ในตัวอย่างข้างต้นสถานะล่าสุดของส่วนประกอบได้รับเชิญจากสาขา main ของที่เก็บ อย่างไรก็ตามฉันขอแนะนำให้อ้างถึงจุดยืนที่ปล่อยออกมาโดยใช้หมายเลขเวอร์ชันเพื่อให้สามารถควบคุมได้มากขึ้นว่ามีการใช้ซอฟต์แวร์ที่ใช้และเพื่อให้สามารถตอบสนองได้ดีขึ้นเพื่อ "ทำลายการเปลี่ยนแปลง" ดูตัวอย่างการกำหนดค่าวิธีการนี้สามารถทำได้
การตั้งค่าทั่วไปต่อไปนี้สามารถกำหนดค่าได้:
| ตัวเลือก | พิมพ์ | ที่ต้องการ | มาตรฐาน | คำอธิบาย |
|---|---|---|---|---|
id | รหัสประจำตัว | หมายเลข 1 | - | อินสแตนซ์ขององค์ประกอบเฟอร์ราริส |
digital_input | เข็มหมุด | ใช่ 2 | - | GPIO PIN ที่เอาต์พุตดิจิตอลของโมดูล TCRT5000 เชื่อมต่อกัน |
analog_input | รหัสประจำตัว | ใช่ 2 | - | เซ็นเซอร์ ADC ที่อ่านพินที่เชื่อมต่อกับเอาต์พุตอะนาล็อกของโมดูล TCRT5000 |
analog_threshold | หมายเลข / รหัส 3 | เลขที่ | 50 | เกณฑ์สำหรับการตรวจจับการปฏิวัติผ่านอินพุตแบบอะนาล็อก |
off_tolerance | หมายเลข / รหัส 3 | เลขที่ | 0 | ออฟเซ็ตเชิงลบของค่าเกณฑ์อะนาล็อกสำหรับปีกที่ตกลงมาดูส่วนที่ตกต่ำเพื่อดูรายละเอียด |
on_tolerance | หมายเลข / รหัส 3 | เลขที่ | 0 | ออฟเซ็ตบวกของค่าเกณฑ์อะนาล็อกสำหรับปีกที่เพิ่มขึ้นดูที่ส่วนที่ตกต่ำสำหรับรายละเอียด |
rotations_per_kwh | ตัวเลข | เลขที่ | 75 | จำนวนการปฏิวัติของแผ่นเสียงต่อ kWh (ค่าถูกบันทึกไว้ในมิเตอร์ปัจจุบันของเฟอร์ราริส) |
debounce_threshold | หมายเลข / รหัส 3 | เลขที่ | 400 | ใช้เวลาน้อยที่สุดในมิลลิวินาทีระหว่างการลดลงและการเพิ่มขึ้นของปีก |
energy_start_value | รหัสประจำตัว | เลขที่ | - | ส่วนประกอบจำนวนที่ใช้ในการบูตเป็นค่าเริ่มต้นสำหรับเครื่องวัดการบริโภค |
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จำเป็นต้องใช้องค์ประกอบ 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ส่วนประกอบเฟอร์ราริสมีเซ็นเซอร์หลักเพื่อส่งออกค่าการบริโภคที่คำนวณได้และเซ็นเซอร์วินิจฉัยสำหรับโหมดการสอบเทียบ เซ็นเซอร์ทั้งหมดเป็นตัวเลือกและสามารถทิ้งไว้ได้หากไม่จำเป็น
เซ็นเซอร์หลักต่อไปนี้สามารถกำหนดค่าได้:
| เซ็นเซอร์ | พิมพ์ | คลาสอุปกรณ์ | ชั้นเรียนรัฐ | หน่วย | คำอธิบาย |
|---|---|---|---|---|---|
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 ควรใช้เอาต์พุต 3.3V ของ ESPs และเอาต์พุตดิจิตอล D0 จะต้องเชื่อมต่อกับพิน GPIO ฟรี (เช่น GPIO4 สอดคล้องกับพิน D2 บน D1 mini)
แผนภาพวงจรปลั๊กอินต่อไปนี้แสดงตัวอย่างของการตั้งค่าการทดลองด้วยบอร์ดพัฒนา Mini ESP8266 D1 เป็นไมโครคอนโทรลเลอร์

ด้วยความช่วยเหลือของไขควงสัญญาณเอาต์พุตดิจิตอลจะต้องถูกสอบเทียบผ่านโพเทนชิออมิเตอร์ ไฟ LED สีเขียวสองตัวที่ด้านหลังของเซ็นเซอร์ช่วย LED ด้านขวาส่องแสงอย่างถาวรเมื่อเซ็นเซอร์มาพร้อมกับไฟฟ้า LED ด้านซ้ายส่องแสงตราบใดที่ไม่มี "อุปสรรค" ได้รับการยอมรับและหมดอายุเมื่อการสะท้อนกลับถูกขัดจังหวะ หลังเป็นเงื่อนไขเมื่อการทำเครื่องหมายบนแผ่นเสียงของมิเตอร์ปัจจุบันของเฟอร์ราริสเดินอยู่ด้านหน้าของเซ็นเซอร์ ดังนั้นควรตั้งค่าโพเทนชิออมิเตอร์เพื่อให้ LED ด้านซ้ายยังคงส่องแสงเมื่อการทำเครื่องหมายไม่ได้อยู่ในพื้นที่ของคู่ผู้ส่งอินฟราเรด/ผู้รับทันทีที่มาร์กเกอร์ผลักไปด้านหน้า นี่เป็นเพียงพื้นที่ขนาดเล็กมากและอาจเป็นเรื่องยากเล็กน้อยที่จะหาการตั้งค่านี้ สำหรับการสนับสนุนเพิ่มเติมสำหรับกระบวนการนี้โหมดการสอบเทียบสามารถเปิดใช้งานในเฟิร์มแวร์เฟอร์ราริสมิเตอร์ดูส่วนของการสอบเทียบเพื่อดูรายละเอียด
เคล็ดลับ
หากเป็นไปไม่ได้ที่จะหาการตั้งค่าที่เหมาะสมและการทำงานสำหรับโพเทนชิออมิเตอร์เอาต์พุตอะนาล็อกของเซ็นเซอร์อินฟราเรดสามารถใช้อีกทางเลือกหนึ่งดูส่วนถัดไป
ต้องกำหนดค่าด้านซอฟต์แวร์สำหรับส่วนประกอบ Ferraris ในไฟล์การกำหนดค่า PIN YAML ซึ่งเชื่อมต่อกับเอาต์พุตดิจิตอลของโมดูล TCRT5000:
ferraris :
id : ferraris_meter
digital_input : GPIO4
# ...ตัวอย่างการกำหนดค่า: ferraris_meter_digital.yaml
ในตัวแปรนี้เอาต์พุตอะนาล็อกของเซ็นเซอร์อินฟราเรดใช้เพื่อระบุการหมุนรอบของแผ่นเสียง ไม่จำเป็นต้องใช้เอาต์พุตดิจิตอลพินอื่น ๆ จะต้องเชื่อมต่อกับพินที่สอดคล้องกันของไมโครคอนโทรลเลอร์ สำหรับ VCC ควรใช้เอาต์พุต 3.3V ของ ESPs และเอาต์พุตอะนาล็อก A0 จะต้องเชื่อมต่อกับ PIN ADC ฟรี (เช่น GPIO17 สอดคล้องกับ PIN A0 บน D1 Mini)
แผนภาพวงจรปลั๊กอินต่อไปนี้แสดงตัวอย่างของการตั้งค่าการทดลองด้วยบอร์ดพัฒนา Mini ESP8266 D1 เป็นไมโครคอนโทรลเลอร์

การสอบเทียบโดยใช้โพเทนชิออมิเตอร์บนโมดูล TCRT5000 ไม่จำเป็นอีกต่อไปแทนที่จะกำหนดค่าด้านซอฟต์แวร์สำหรับอินพุตแบบอะนาล็อกและเลือกค่าชดเชยสำหรับลักษณะ hysteresis (ดูส่วนที่ลดลงด้านล่าง) ที่นี่เช่นกันโหมดการสอบเทียบของส่วนประกอบเฟอร์ราริสสามารถช่วยดูส่วนของการสอบเทียบเพื่อดูรายละเอียด
การควบคุมเกณฑ์ 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
นอกจากนี้ยังเป็นไปได้ที่จะอ่านเคาน์เตอร์ปัจจุบันของเฟอร์ราริสมากกว่าหนึ่งตัวพร้อมไมโครคอนโทรลเลอร์ ESP ตัวเดียว ในการทำเช่นนี้คุณต้องใช้เซ็นเซอร์อินฟราเรดเพิ่มเติม / โมดูล TCRT5000 และพิน GPIO ฟรีเพิ่มเติมบนไมโครคอนโทรลเลอร์ ตามที่อธิบายไว้แล้วโมดูล TCRT5000 เชื่อมต่อกับแหล่งแรงดันไฟฟ้าของไมโครคอนโทรลเลอร์ ESP ผ่าน VCC และ GND และเอาต์พุต D0 แต่ละอันเชื่อมต่อกับบอร์ด ESP ด้วยพิน GPIO ฟรี
บันทึก
ในทางทฤษฎีตัวแปรยังสามารถใช้กับเอาต์พุตอะนาล็อกของเซ็นเซอร์อินฟราเรด แต่พินที่สามารถใช้งานได้ของ ADC บนไมโครคอนโทรลเลอร์ ESP นั้นมี จำกัด มากกว่าพินดิจิตอลล้วนๆ โดยเฉพาะอย่างยิ่ง ESP8266 ซึ่งมี ADC เพียงตัวเดียวเท่านั้นจึงไม่เหมาะสมที่จะรองรับเซ็นเซอร์อินฟราเรดหลายตัวผ่านเอาต์พุตอะนาล็อก
แผนภาพวงจรปลั๊กอินต่อไปนี้แสดงตัวอย่างของการตั้งค่าการทดสอบที่มีโมดูล TCRT5,000 สองโมดูลที่เชื่อมต่อกับ ESP8266 D1 Mini

อย่างไรก็ตามควรคำนึงถึงว่าเซ็นเซอร์อินฟราเรดเพิ่มเติมแต่ละตัวจะเพิ่มภาระในไมโครคอนโทรลเลอร์และโดยเฉพาะอย่างยิ่งด้วยความเร็วสูงของสแครชฮาร์ดแวร์ทำให้ใกล้เคียงกับขีด จำกัด
ขั้นตอนการกำหนดค่าต่อไปนี้จะต้องดำเนินการตัวอย่างเช่นด้านซอฟต์แวร์:
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 หากไม่มีการจดจำการทำเครื่องหมาย
เพื่อให้สามารถใช้โหมดการสอบเทียบได้ต้องกำหนดค่าส่วนประกอบ calibration_mode และ rotation_indicator ในไฟล์ YAML:
binary_sensor :
- platform : ferraris
rotation_indicator :
name : Umdrehungsindikator
switch :
- platform : ferraris
calibration_mode :
name : Kalibrierungsmodusการเปลี่ยนจากที่ไม่ได้ทำเครื่องหมายเป็นพื้นที่ที่ทำเครื่องหมายไว้และในทางกลับกันบนแผ่นเสียงสามารถนำไปสู่การกลับไปกลับมา ("ตีกลับ") ของสถานะการระบุตัวตนของเซ็นเซอร์ซึ่งเกิดขึ้นโดยเฉพาะอย่างยิ่งที่ความเร็วหมุนช้าและไม่สามารถระงับการสอบเทียบได้อย่างสมบูรณ์ รอยช้ำนี้นำไปสู่การวัดเท็จและเพื่อหลีกเลี่ยงพวกเขามีการตั้งค่าต่อไปนี้
เกณฑ์ที่ลดลงของ debounce_threshold จะระบุเวลาขั้นต่ำเป็นมิลลิวินาทีระหว่างการลดลงและปีกที่เพิ่มขึ้นในภายหลัง เฉพาะในกรณีที่เวลาที่วัดได้อยู่ระหว่างสองข้างที่อยู่เหนือค่าที่กำหนดค่าคือเซ็นเซอร์ที่ทริกเกอร์เข้าบัญชี ภาวะซึมเศร้าประเภทนี้ทำงานได้เมื่อใช้ทั้งสัญญาณอินพุตดิจิตอลและอะนาล็อกของเซ็นเซอร์อินฟราเรด

ค่าชดเชยสองค่า off_tolerance และ on_tolerance สามารถกำหนดค่าให้ใช้คุณสมบัติ hysteresis สำหรับการตรวจจับพื้นที่ที่ทำเครื่องหมายไว้บนแผ่นเสียงผ่านสัญญาณอะนาล็อก สิ่งนี้จะชดเชย "ตัวสั่น" ของสัญญาณอะนาล็อกและช่วยลดรอยช้ำที่เป็นไปได้ของสถานะการระบุสำหรับพื้นที่ที่ทำเครื่องหมายไว้บนแผ่นเสียง ภาวะซึมเศร้าประเภทนี้จะใช้งานได้เฉพาะเมื่อใช้สัญญาณอินพุตแบบอะนาล็อกของเซ็นเซอร์อินฟราเรด

ด้วยการกำหนดค่าที่ชาญฉลาดของช่วงเวลาอัปเดต update_interval และจำนวนการสุ่มตัวอย่างต่อการอัปเดต ( samples ) สำหรับเซ็นเซอร์อะนาล็อก analog_input เส้นโค้งของสัญญาณอะนาล็อกสามารถราบรื่นจนถึงความผันผวนระยะสั้นจะถูกกำจัด อย่างไรก็ตามควรเป็นที่ทราบกันดีว่าช่วงเวลาการอัปเดตที่มีขนาดใหญ่เกินไปอาจนำไปสู่ความจริงที่ว่าการปฏิวัติแต่ละครั้งจะไม่ได้รับการยอมรับด้วยความเร็วในการหมุนที่สูงมากเนื่องจากเวลาระหว่างการเพิ่มขึ้นและปีกที่ตกลงมานั้นมีขนาดเล็กกว่าช่วงเวลาการอัปเดตที่ตั้งไว้ ภาวะซึมเศร้าประเภทนี้ยังใช้งานได้เฉพาะเมื่อใช้สัญญาณอินพุตแบบอะนาล็อกของเซ็นเซอร์อินฟราเรด
เพื่อชดเชยสถานะมิเตอร์ในส่วนประกอบเฟอร์ราริสด้วยมิเตอร์จริงของมิเตอร์ปัจจุบันเฟอร์ราริสค่าของเซ็นเซอร์การบริโภคเมตรสามารถเขียนทับได้อย่างชัดเจน เพื่อจุดประสงค์นี้ทั้งสอง 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 ส่วนประกอบเฟอร์ราริสจะไม่บันทึกข้อมูลใด ๆ อย่างต่อเนื่องในแฟลช เป็นผลให้ไม่สามารถจำสถานะมิเตอร์ได้ก่อนการรีสตาร์ทของไมโครคอนโทรลเลอร์และเคาน์เตอร์เริ่มนับที่ 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 ในไฟล์การกำหนดค่า YAML สามารถสร้างขึ้นได้ซึ่งจะอัปเดตองค์ประกอบจำนวนภายใต้ 2 อย่างไรก็ตามสิ่งนี้ขยายเวลาการประมวลผลต่อการปฏิวัติในไมโครคอนโทรลเลอร์และสามารถนำไปสู่ความจริงที่ว่าแต่ละรอบ ดังนั้นฉันขอแนะนำตัวแปรด้วยระบบอัตโนมัติในผู้ช่วยที่บ้านFerraris Meter เป็นส่วนประกอบของ Esphome สำหรับการสร้างเฟิร์มแวร์ ESP ที่ใช้ไมโครคอนโทรลเลอร์ ESP และเซ็นเซอร์อินฟราเรดจำนวนการหมุนและความเร็วของยิมนาสติกของเครื่องวัดกระแสไฟฟ้าแบบอะนาล็อกเฟอร์ราริสและเพื่อคำนวณปริมาณการใช้ไฟฟ้าในปัจจุบันและการอ่านมิเตอร์ จากนั้นค่าวิทยานิพนธ์สามารถส่งไปยังซอฟต์แวร์ระบบอัตโนมัติในบ้านในฐานะผู้ช่วยที่บ้านสำหรับการประมวลผลเพิ่มเติม
ซอฟต์แวร์ (รวมถึงเอกสารที่มีการตั้งค่าฮาร์ดแวร์ตัวอย่าง) มีให้ "ตามที่เป็นอยู่" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันของสินค้าความเหมาะสมสำหรับวัตถุประสงค์เฉพาะและ noninfringement ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะไม่สามารถเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ได้ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ เกิดขึ้นจากหรือเกี่ยวข้องกับการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์
ทางด้านฮาร์ดแวร์มีเพียงไมโครคอนโทรลเลอร์ ESP (เช่น ESP8266 หรือ ESP32 รวมถึงแหล่งจ่ายไฟ) และเซ็นเซอร์อินฟราเรด (เช่น TCRT5000) ไมโครคอนโทรลเลอร์ ESP8266 นั้นได้รับการแก้ไขอย่างสมบูรณ์สำหรับฟังก์ชั่นที่บริสุทธิ์ของมิเตอร์เฟอร์ราริส สำหรับเซ็นเซอร์อินฟราเรดมีโมดูลการฝ่าวงล้อมแบบใช้ TCRT5000 พร้อมด้วยแรงดันไฟฟ้าอินพุต 3.3V-5V ซึ่งมีตัวต้านทานที่ปรับได้ (โพเทนชิออมิเตอร์) เพื่อปรับเทียบเอาต์พุตดิจิตอลของเซ็นเซอร์ โมดูลวิทยานิพนธ์ TCRT5000 มี 4 พิน - VCC และ GND สำหรับแหล่งจ่ายไฟของชิปเซ็นเซอร์รวมถึงเอาต์พุตดิจิตอล D0 และเอาต์พุตอะนาล็อก A0
การวางเซ็นเซอร์บนแผ่นปกของเครื่องวัดไฟฟ้าเฟอร์ราริสต้องใช้ทักษะและความแม่นยำเล็กน้อย คู่ส่งสัญญาณ/ตัวรับสัญญาณอินฟราเรดของเซ็นเซอร์จะต้องจัดแนวตรงกลางเหนือแผ่นเสียงที่มีความแม่นยำมิลลิเมตรและจุดเป็นเส้นตรงไปยังแผ่นเสียง
ส่วนประกอบเฟอร์ราริสมิเตอร์โดยทั่วไปรองรับตัวแปรการตั้งค่าติดตาม:
ในการสร้างเฟิร์มแวร์ ESPHOME คุณต้องสร้างไฟล์การกำหนดค่าที่ใช้ YAML คุณสามารถใช้หนึ่งในไฟล์การกำหนดค่าตัวอย่างที่พิสูจน์แล้วในที่เก็บนี้เป็นจุดเริ่มต้นและปรับให้เข้ากับความต้องการของคุณ
โดยหลักการแล้วมีสองวิธีในการสร้างเฟิร์มแวร์ Esphome:
วิธีใดที่คุณควรเลือกขึ้นอยู่กับว่าคุณคุ้นเคยกับ Esphome อย่างไรและคุณต้องการทำงานกับส่วนต่อประสานผู้ใช้กราฟิกหรือบรรทัดคำสั่ง นอกจากนี้ประสิทธิภาพของโฮสต์ที่คุณกำลังสร้างเฟิร์มแวร์สามารถมีบทบาทในการเร่งกระบวนการ
บันทึก
ไม่ จำเป็นต้องแยกพื้นที่เก็บข้อมูลนี้และทำการปรับตัวเข้ากับการกำหนดค่าตัวอย่างโดยตรงภายในที่เก็บที่ถูกแยก แต่ก็เพียงพอที่จะบันทึกและปรับการกำหนดค่าตัวอย่างในเครื่องหรือเก็บไว้ในโฮสต์ผู้ช่วยบ้านของคุณ (หากคุณต้องการสร้างเฟิร์มแวร์ Esphome ด้วยอุปกรณ์เสริมของคอมไพเลอร์อุปกรณ์ Esphome)
ส่วนต่อไปนี้อธิบายส่วนประกอบที่โดดเด่นที่สุดที่มีอยู่ในไฟล์กำหนดค่าเฟิร์มแวร์
ส่วนประกอบของเฟอร์ราริสเป็นสิ่งจำเป็นและต้องเพิ่มเพื่อใช้เซ็นเซอร์
เนื่องจากนี่เป็นองค์ประกอบที่กำหนดเองซึ่งไม่ได้เป็นส่วนหนึ่งของ Esphome จึงต้องนำเข้าอย่างชัดเจน วิธีที่ง่ายที่สุดคือการโหลดส่วนประกอบโดยตรงจากที่เก็บนี้
external_components :
- source : github://jensrossbach/esphome-ferraris-meter
components : [ferraris] เคล็ดลับ
ในตัวอย่างข้างต้นเวอร์ชันใหม่ล่าสุดของส่วนประกอบจากสาขา main ของที่เก็บจะถูกโหลด อย่างไรก็ตามฉันขอแนะนำให้ใช้หมายเลขเวอร์ชันเพื่ออ้างถึงเวอร์ชันที่วางจำหน่ายเพื่อให้สามารถควบคุมได้มากขึ้นว่ามีการใช้เวอร์ชันซอฟต์แวร์ใดและสามารถตอบสนองได้ดีกว่าเพื่อ "ทำลายการเปลี่ยนแปลง" ดูตัวอย่างการกำหนดค่าสำหรับวิธีการนี้
สามารถกำหนดค่ารายการการกำหนดค่าทั่วไปต่อไปนี้:
| ตัวเลือก | พิมพ์ | ที่จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
id | รหัสประจำตัว | หมายเลข 1 | - | อินสแตนซ์ส่วนประกอบเฟอร์ราริส |
digital_input | เข็มหมุด | ใช่ 2 | - | GPIO PIN ที่เอาต์พุตดิจิตอลของโมดูล TCRT5000 เชื่อมต่อกัน |
analog_input | รหัสประจำตัว | ใช่ 2 | - | เซ็นเซอร์ ADC ซึ่งอ่านพินที่เชื่อมต่อกับเอาต์พุตอะนาล็อกของโมดูล TCRT5000 |
analog_threshold | หมายเลข / รหัส 3 | เลขที่ | 50 | ค่าขีด จำกัด สำหรับการตรวจจับการหมุนผ่านอินพุตแบบอะนาล็อก |
off_tolerance | หมายเลข / รหัส 3 | เลขที่ | 0 | ออฟเซ็ตเชิงลบไปยังเกณฑ์อะนาล็อกสำหรับขอบที่ตกลงมาดูที่ส่วน debouncing สำหรับรายละเอียด |
on_tolerance | หมายเลข / รหัส 3 | เลขที่ | 0 | ออฟเซ็ตบวกกับเกณฑ์อะนาล็อกสำหรับขอบที่เพิ่มขึ้นดูส่วน debouncing สำหรับรายละเอียด |
rotations_per_kwh | ตัวเลข | เลขที่ | 75 | จำนวนการหมุนของแผ่นเสียงผ่าน kWh (ค่านั้นมักจะถูกบันทึกไว้ในเครื่องวัดไฟฟ้าของเฟอร์ราริส) |
debounce_threshold | หมายเลข / รหัส 3 | เลขที่ | 400 | เวลาขั้นต่ำในมิลลิวินาทีที่ลดลงและขอบที่เพิ่มขึ้นตามมาเพื่อนำการหมุนมาพิจารณาดูการลดรายละเอียดส่วน |
energy_start_value | รหัสประจำตัว | เลขที่ | - | ส่วนประกอบตัวเลขที่มีค่าจะถูกใช้เป็นค่าเริ่มต้นสำหรับตัวนับพลังงานในเวลาบูต |
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เป็นส่วนประกอบของ API หาก ESP จะถูกรวมเข้ากับผู้ช่วยที่บ้าน สำหรับกรณีที่จะใช้ซอฟต์แวร์ระบบอัตโนมัติในบ้านทางเลือกจะต้องเพิ่มส่วนประกอบ MQTT แทนแทน อย่างไรก็ตามกลไกบางอย่างค้นหาด้วยตนเอง overwrrrrrrrrrrined พลังงานมิเตอร์พลังงานหรือเรียกคืนการอ่านมิเตอร์สุดท้ายหลังจากรีสตาร์ท (ทะเลสาบด้านล่างสำหรับรายละเอียด) ต้องการให้อาจไม่ทำงานอีกต่อไป
ดูตัวอย่างด้านล่างสำหรับการรวมเข้ากับ Home Assistant (พร้อม 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ส่วนประกอบของเฟอร์ราริสให้เซ็นเซอร์หลักเพื่อแสดงค่า consempto ที่คำนวณได้เช่นเดียวกับเซ็นเซอร์วินิจฉัยสำหรับโหมดการสอบเทียบ เซ็นเซอร์ทั้งหมดเป็นตัวเลือกและสามารถละเว้นได้หากไม่จำเป็น
เซ็นเซอร์หลักต่อไปนี้สามารถกำหนดค่าได้:
| เซ็นเซอร์ | พิมพ์ | คลาสอุปกรณ์ | ชั้นเรียนรัฐ | หน่วย | คำอธิบาย |
|---|---|---|---|---|---|
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 | ค่าเป้าหมายสำหรับตัวนับการหมุนในจำนวนการหมุน |
ส่วนนี้อธิบายตัวอย่างต่าง ๆ ของการใช้งานสำหรับองค์ประกอบเฟอร์ราริส
ในตัวแปรนี้เอาต์พุตดิจิตอลของเซ็นเซอร์อินฟราเรดใช้ในการตรวจจับการหมุนของแผ่นเสียง ไม่จำเป็นต้องใช้เอาต์พุตแบบอะนาล็อกพินอื่น ๆ จะต้องเชื่อมต่อกับพินที่สอดคล้องกันของไมโครคอนโทรลเลอร์ เอาต์พุต 3.3V ของ ESP ควรใช้สำหรับ VCC และเอาต์พุตดิจิตอล D0 จะต้องเชื่อมต่อกับพิน GPIO ฟรี (เช่น GPIO4 ซึ่งสอดคล้องกับ PIN D2 บน D1 Mini)
แผนผัง Breadboard ต่อไปนี้แสดงการตั้งค่าการทดสอบตัวอย่างโดยใช้บอร์ดพัฒนา Mini Mini ESP8266 D1 เป็นไมโครคอนโทรลเลอร์

สัญญาณเอาต์พุตดิจิตอลของเซ็นเซอร์อินฟราเรดจะต้องได้รับการสอบเทียบผ่านโพเทนชิออมิเตอร์โดยใช้สกรู ไฟ LED สีเขียวสองตัวที่ด้านหลังของเซ็นเซอร์ช่วยด้วยสิ่งนี้ ไฟ LED ด้านขวาจะเพิ่มขึ้นอย่างต่อเนื่องเมื่อเซ็นเซอร์มาพร้อมกับพลังงาน ไฟ LED ด้านซ้ายจะสว่างขึ้นตราบใดที่ไม่มี "อุปสรรค" ถูกตรวจพบและออกไปเมื่อการสะท้อนถูกขัดจังหวะ หลังคือสถานะเมื่อเครื่องหมายบนแผ่นเสียงของเฟอร์ราริสไฟฟ้ามิเตอร์เคลื่อนที่อยู่ด้านหน้าเซ็นเซอร์ การปรับตัวของโพเทนชิออมิเตอร์ shedt จึงหัวผักกาดเพื่อให้ LED ซ้ายเพียงแค่สว่างขึ้นเมื่อเครื่องหมายไม่อยู่ในช่วงของคู่ส่งสัญญาณ/ตัวรับสัญญาณอินฟราเรดและออกไปเมื่อเครื่องหมายเคลื่อนที่อยู่ด้านหน้า 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.