คู่มือสำหรับผู้เริ่มต้น: แอปชาร์จรถ EV ทำงานอย่างไร ติดต่อกับสถานีชาร์จ และคำนวณค่าใช้จ่ายอย่างไร

เมื่อรถยนต์ไฟฟ้า (EV) กลายเป็นทางเลือกหลักในยุคปัจจุบัน ผู้ใช้งานคาดหวังว่าจะสามารถชาร์จรถได้อย่างสะดวกและชาญฉลาดผ่านแอปมือถือ บทความนี้จะอธิบายให้คุณเข้าใจง่ายๆ ถึงวิธีที่ระบบชาร์จ EV แบบสมาร์ตทำงาน โดยเฉพาะถ้าคุณกำลังพัฒนา ระบบด้วย Flask backend หรือกำลังเริ่มต้นสร้างแพลตฟอร์มของคุณเอง


🧩 ส่วนประกอบหลัก 4 อย่างของระบบชาร์จ EV

องค์ประกอบ หน้าที่
แอปมือถือ ใช้โดยผู้ขับขี่ EV เพื่อค้นหา เริ่ม และหยุดการชาร์จ
Backend ด้วย Flask ทำหน้าที่เชื่อมต่อระหว่างแอปและเครื่องชาร์จ
EVSE (Charger) เครื่องชาร์จจริงที่ให้พลังงานกับรถ EV
โปรโตคอล OCPP ภาษาที่ backend ใช้ในการสื่อสารกับเครื่องชาร์จ EVSE

🔄 แผนภาพการทำงานของระบบ

แอปไม่ได้ติดต่อกับเครื่องชาร์จโดยตรง — แต่ใช้การสื่อสารผ่าน backend

sequenceDiagram
    participant User
    participant App
    participant Flask Backend
    participant EVSE (Charger)

    User->>App: Start Charging
    App->>Flask Backend: POST /start_session
    Flask Backend->>EVSE (Charger): OCPP RemoteStartTransaction
    EVSE (Charger)-->>Flask Backend: MeterStart = 154200 Wh
    Flask Backend-->>App: Charging session started

    Note over EVSE (Charger): Charging in progress...

    User->>App: Stop Charging
    App->>Flask Backend: POST /stop_session
    Flask Backend->>EVSE (Charger): OCPP RemoteStopTransaction
    EVSE (Charger)-->>Flask Backend: MeterStop = 156700 Wh
    Flask Backend-->>App: Energy used = 2.5 kWh

⚡ การติดตามการใช้งานพลังงาน: MeterStart และ MeterStop

EVSE (Charger) มีมิเตอร์ในตัว เมื่อลูกค้าเริ่มและหยุดชาร์จ เครื่องจะส่งค่าพลังงาน:

ค่าที่ใช้ ความหมาย
MeterStart ค่าพลังงาน (Wh) เมื่อเริ่มชาร์จ
MeterStop ค่าพลังงาน (Wh) เมื่อสิ้นสุดการชาร์จ

ตัวอย่าง:

MeterStart = 154200 Wh  
MeterStop = 156700 Wh  
พลังงานที่ใช้ = (156700 - 154200) / 1000 = 2.5 kWh

💰 การคำนวณค่าใช้จ่าย

ค่าบริการชาร์จคำนวณจากพลังงานที่ใช้ x ราคาต่อหน่วย (kWh)

ตัวอย่างโค้ดใน Flask:

def calculate_cost(meter_start, meter_stop, rate_per_kwh=0.25):
    energy_wh = meter_stop - meter_start
    energy_kwh = energy_wh / 1000
    return round(energy_kwh * rate_per_kwh, 2)

ตัวอย่างผลลัพธ์:

{
  "energy_kwh": 2.5,
  "rate_per_kwh": 0.25,
  "total_cost": 0.63
}

🔋 Bonus: เปิดการใช้งานรายงานสถานะแบตเตอรี่ (SOC)

SOC (State of Charge) คือเปอร์เซ็นต์ของแบตเตอรี่ในรถ EV ระหว่างการชาร์จ ซึ่งบางเครื่องชาร์จอาจรองรับแต่ยังไม่เปิดใช้งาน คุณสามารถเปิด SOC ได้จาก backend ผ่านคำสั่ง OCPP


✅ ขั้นที่ 1: ตรวจสอบว่าเครื่องรองรับ SOC หรือไม่

@app.route('/station/<cp_id>/check-soc', methods=['GET'])
def check_soc(cp_id):
    ws = get_websocket(cp_id)  # ฟังก์ชันเชื่อมต่อ WebSocket
    request = call.GetConfigurationPayload(key=["MeterValuesSampledData"])
    asyncio.run(ws.send(request))
    response = asyncio.run(ws.receive())

    for item in response.configuration_key:
        if "StateOfCharge" in item.value:
            return jsonify({"soc_supported": True})
    return jsonify({"soc_supported": False})

✅ ขั้นที่ 2: เปิดใช้งาน SOC ถ้ายังไม่เปิด

@app.route('/station/<cp_id>/enable-soc', methods=['POST'])
def enable_soc(cp_id):
    ws = get_websocket(cp_id)
    request = call.ChangeConfigurationPayload(
        key="MeterValuesSampledData",
        value="StateOfCharge,Energy.Active.Import.Register"
    )
    asyncio.run(ws.send(request))
    response = asyncio.run(ws.receive())

    if response.status == "Accepted":
        return jsonify({"status": "success", "message": "SOC enabled"})
    return jsonify({"status": "failed", "message": "Change rejected"})

🧾 ตัวอย่างข้อมูล MeterValues หลังเปิด SOC

{
  "meterValue": [{
    "timestamp": "2025-05-26T03:25:00Z",
    "sampledValue": [
      {"measurand": "Energy.Active.Import.Register", "value": "156300"},
      {"measurand": "StateOfCharge", "value": "74"}
    ]
  }]
}

สามารถแสดงผลในแอปได้แบบนี้:

🔋 แบตเตอรี่: 74%
⚡ พลังงานที่ใช้: 2.1 kWh
💰 ค่าใช้จ่าย: ฿0.53

📱 API ที่ส่งกลับไปยังแอป

{
  "session_id": "sess_001",
  "meter_start": 154200,
  "meter_stop": 156700,
  "energy_kwh": 2.5,
  "rate_per_kwh": 0.25,
  "total_cost": 0.63,
  "soc": 74,
  "start_time": "2025-05-26T03:14:00Z",
  "end_time": "2025-05-26T03:54:00Z"
}

🧱 เทคโนโลยีที่แนะนำสำหรับ Backend

ชั้นระบบ เทคโนโลยีที่แนะนำ
Web Framework Flask
โปรโตคอล EVSE OCPP 1.6 (Mobility House lib)
ฐานข้อมูล PostgreSQL หรือ MongoDB
Frontend Mobile Flutter หรือ React Native
การชำระเงิน Stripe, PromptPay, PayPal

✅ สรุป

ระบบชาร์จ EV ของคุณสามารถ:

  • เริ่ม/หยุดการชาร์จผ่านแอป
  • ติดตามพลังงานผ่าน MeterStart และ MeterStop
  • คำนวณค่าบริการอย่างแม่นยำ
  • เปิดรายงาน SOC เพื่อให้ผู้ใช้เห็นแบตเตอรี่แบบเรียลไทม์

ทั้งหมดนี้ทำได้ด้วย Flask backend และการเชื่อมต่อผ่าน OCPP!


🚀 พร้อมสร้างแพลตฟอร์ม EV Charging แล้วหรือยัง?

หากคุณกำลังเริ่มต้น สร้าง หรือขยายเครือข่ายเครื่องชาร์จ EV — เราช่วยคุณได้!

📬 ติดต่อเราได้ที่ www.simplico.net
💬 หรือขอคำปรึกษาฟรีด้านเทคนิคกับทีมของเรา

Related Posts

Our Products


Related Posts

Our Products


Get in Touch with us

Speak to Us or Whatsapp(+66) 83001 0222

Chat with Us on LINEiiitum1984

Our HeadquartersChanthaburi, Thailand