สร้างสูตรคำนวณค่าไฟฟ้าด้วย Sensor Template
จากบทความก่อนหน้านี้ หลังจากได้ลองใช้งานเมนู Energy ในส่วนของ Solar Panels ก็อยากจะต่อยอดไอเดียเพิ่มเติมอีกหน่อย ให้ระบบสามารถคำนวณค่าไฟฟ้าที่ micro grid tie ผลิตได้แต่ละเดือน แม้จะน้อยนิด
ก่อนอื่นเราต้องทำความเข้าใจ อัตราค่าไฟฟ้าของการไฟฟ้านครหลวง (MEA) แล้วเราต้องรู้ว่าบ้านเราใช้ไฟประเภทไหน (* สามารถดูได้จากบิลค่าไฟฟ้า) บ้านผมเป็นแบบ "บ้านอยู่อาศัยอัตรา 1.2 (อัตราปกติ แบบก้าวหน้า)" (อ่านเพิ่มเติม)
สิ่งที่เราต้องทำความเข้าใจอีกอย่างคือ ไฟฟ้า 1 กิโลวัตต์ (1kWh) = 1000 วัตต์ (1000Wh) = 1 หน่วย นั้นหมายความว่า ถ้าเราผลิตไฟฟ้าได้ 250W เป็นเวลา 4 ชั่วโมง เราก็จะผลิตไฟฟ้าได้ 1 หน่วย นั่นเอง
เริ่มต้น Configuration
- ทำการแก้ไขไฟล์ configuration.yaml
sensor:
- platform: integration
source: sensor.sonoff_10012eed24_power
name: Omnik SMP600
unit_prefix: k
round: 2
method: left
จาก configuration ของเก่า unit_of_measurement: Wh ผมทำการปรับเพิ่มให้เป็น kWh เพื่อจะได้ง่ายต่อการคำนวณ ส่วน method: left จะค่อนข้างเก็บข้อมูลได้แม่นยำกว่า trapezoidal ซึ่งเป็นค่า default (อ่านเพิ่มเติม)
2. Validate Configuration จากนั้น restart HA
3. ทำการแก้ไขไฟล์ configuration.yaml อีกครั้ง!
utility_meter:
daily_energy:
source: sensor.omnik_smp600
cycle: daily
monthly_energy:
source: sensor.omnik_smp600
cycle: monthly
offset:
days: 2
hours: 0
minutes: 0
Utility Meter เป็น function สำหรับทำ consumption ข้อมูล เราก็ทำการสร้าง sensor ขึ้นมา 2 ตัว daily_energy, monthly_energy ส่วนของ source ก็นำข้อมูลจาก sensor บ้างบน ซึ่งตอนนี้เราได้ปรับให้เป็นหน่วย kWh แล้ว
cycle คือรอบของการ consumption ข้อมูล daily, monthly ส่วนของ monthly จะมีการกำหนด offset ด้วยนะ เพราะว่าเราต้องการให้ระบบมันเคลียร์ค่าของ consumption (อ่านเพิ่มเติม)
* ตัวอย่างคือเคลียร์ค่าข้อมูลทุกๆ วันที่ 2 ของเดือน
** เราสามารถใช้งาน Service -> Utility Meter: Calibrate เพื่อทดลองเปลี่ยนค่าของ consumption ได้เช่นกัน
4. Validate Configuration จากนั้น restart HA อีกครั้ง!
5. ทำการแก้ไขไฟล์ configuration.yaml รอบนี้มาเขียนสูตรคำนวณค่าไฟฟ้า
sensor:
- platform: template
sensors:
monthly_cost:
friendly_name: "Monthly Cost"
unit_of_measurement: '฿'
value_template: >
{% set unit = states('sensor.monthly_energy') | float %}
{% set price_150 = 3.2484 %}
{% set price_250 = 4.2218 %}
{% set price_400 = 4.4217 %}
{% if unit <= 150 %}
{% set cost = unit * price_150 %}
{% elif unit >= 150 and unit <= 400 %}
{% set cost = (150 * price_150) + ((unit - 150) * price_250) %}
{% elif unit > 400 %}
{% set cost = (150 * price_150) + (250 * price_250) + ((unit - 400) * price_400) %}
{% endif %}
{{ cost | round(2) }}
icon_template: >
mdi:transmission-tower
- platform: template (อ่านเพิ่มเติม)
- monthly_cost คือชื่อ sensor คำนวณค่าไฟฟ้า
- value_template เป็นส่วนของการเขียน template คำนวณค่าไฟฟ้า โดยเราสามารถลองเขียน template ก่อนจะใช้งานจริงผ่านทาง developer-tools -> template
- set unit = states('sensor.monthly_energy') ดึงข้อมูลจาก monthly_energy ที่เราสร้างไว้ข้างบน
- set price_150 = 3.2484 กำหนดอัตราค่าไฟฟ้า 150 หน่วย (1 - 150)
- set price_250 = 4.2218 กำหนดอัตราค่าไฟฟ้า 250 หน่วยต่อไป (251 - 400)
- set price_400 = 4.4217 กำหนดอัตราค่าไฟฟ้าเกินกว่า 400 หน่วย (401 เป็นต้นไป)
- cost | round(2) ผลลัพธ์ค่าไฟฟ้า ทศนิยม 2 ตำแหน่ง
- mdi:transmission-tower icon ของ sensor
5. Validate Configuration จากนั้น restart HA อีกครั้ง!!
6. เช็คความถูกต้องของสูตรคำนวณค่าไฟฟ้า การคิดค่าไฟฟ้าประเภทต่างๆ