สร้างสูตรคำนวณค่าไฟฟ้าด้วย Sensor Template

สร้างสูตรคำนวณค่าไฟฟ้าด้วย Sensor Template

จากบทความก่อนหน้านี้ หลังจากได้ลองใช้งานเมนู Energy ในส่วนของ Solar Panels ก็อยากจะต่อยอดไอเดียเพิ่มเติมอีกหน่อย ให้ระบบสามารถคำนวณค่าไฟฟ้าที่ micro grid tie ผลิตได้แต่ละเดือน แม้จะน้อยนิด

ลองใช้งานเมนู Energy Home Assistant
สำหรับ Home Assistant ตั้งแต่เวอร์ชั่น 2021.8.0 จะมีการเพิ่มเมนูหลักด้านซ้าย โดยจะเป็นส่วนการแสดงผล Energy Dashboard (demo) หลังจากเปิดดูตัวอย่างของเขาอลังการมากๆ แต่สำหรับวันนี้ผมจะมาทดลองใช้งานแค่ส่วนของ Solar Panels เพื่อจะเป็นไอเดียนะ เริ่มต้นผมจะใช้วิ

ก่อนอื่นเราต้องทำความเข้าใจ อัตราค่าไฟฟ้าของการไฟฟ้านครหลวง (MEA) แล้วเราต้องรู้ว่าบ้านเราใช้ไฟประเภทไหน (* สามารถดูได้จากบิลค่าไฟฟ้า) บ้านผมเป็นแบบ "บ้านอยู่อาศัยอัตรา 1.2 (อัตราปกติ แบบก้าวหน้า)" (อ่านเพิ่มเติม)

อัตราปกติปริมาณการใช้พลังงานไฟฟ้าเกินกว่า 150 หน่วยต่อเดือน

สิ่งที่เราต้องทำความเข้าใจอีกอย่างคือ ไฟฟ้า 1 กิโลวัตต์ (1kWh) = 1000 วัตต์ (1000Wh) = 1 หน่วย นั้นหมายความว่า ถ้าเราผลิตไฟฟ้าได้ 250W เป็นเวลา 4 ชั่วโมง เราก็จะผลิตไฟฟ้าได้ 1 หน่วย นั่นเอง

เริ่มต้น Configuration

  1. ทำการแก้ไขไฟล์ 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. เช็คความถูกต้องของสูตรคำนวณค่าไฟฟ้า การคิดค่าไฟฟ้าประเภทต่างๆ