ทำระบบบำรุงรักษาเชิงพยากรณ์ด้วย AI ง่ายๆ
ท่านเคยประสบปัญหากับอุปกรณ์ IoT ที่ทำงานผิดพลาดบ่อยครั้งหรือไม่? การค้นหาความหมายของรหัสข้อผิดพลาด (Error Code) จากคู่มือที่มีความหนามาก อาจทำให้สูญเสียเวลาและพลังงานอันมีค่าของท่านไปโดยเปล่าประโยชน์
ลองจินตนาการว่า หากท่านมี "ระบบผู้ช่วยอัจฉริยะ" ที่คอยเฝ้าสังเกตอุปกรณ์ IoT ของท่านตลอดเวลา เมื่อเกิดปัญหา ระบบนี้จะ:
1. รวบรวมข้อมูลความผิดปกติทั้งหมดที่เกิดขึ้น
2. วิเคราะห์สาเหตุอย่างแม่นยำด้วยเทคโนโลยี GearMind API
3. ส่งการแจ้งเตือนพร้อมวิธีแก้ไขที่เข้าใจได้ง่ายผ่านแอปพลิเคชัน Line Notify
ด้วยระบบนี้ ท่านจะประหยัดเวลา ลดความกังวล และมีโอกาสทุ่มเทความสนใจให้กับภารกิจสำคัญอื่นๆ ได้มากขึ้น
ในโลกของเทคโนโลยีที่เปลี่ยนแปลงอย่างรวดเร็ว การจัดการข้อมูลและการแก้ไขปัญหาอย่างมีประสิทธิภาพเป็นสิ่งสำคัญยิ่ง โดยเฉพาะในอุตสาหกรรมที่ใช้อุปกรณ์ IoT อย่างเช่น Charge Point สำหรับยานยนต์ไฟฟ้า วันนี้ เราจะแนะนำวิธีการสร้าง "คู่หู Charge Point" ด้วย GearMind ที่จะช่วยให้การทำงานของท่านง่ายขึ้นอย่างไม่น่าเชื่อ
องค์ประกอบหลักของโครงการนี้ได้แก่
- ESP32: บอร์ดไมโครคอนโทรลเลอร์ยอดนิยม ราคาประหยัด และใช้งานง่าย
- PZEM004T V3.0: โมดูลวัดค่าไฟฟ้า ใช้สำหรับอ่านค่า Voltage, Current, Power, และ Frequency
- เครื่องชาร์จรถยนต์ไฟฟ้า: แน่นอน เราต้องมีเครื่องชาร์จที่เราต้องการตรวจสอบ!
ในการสาธิตการนำ GearMind API มาประยุกต์ใช้กับการวิเคราะห์ข้อผิดพลาดที่เกิดขึ้นในเครื่องชาร์จรถยนต์ไฟฟ้าในครั้งนี้ จำทำการอ่านค่าสถานะจากเครื่องชาร์จรถยนต์ไฟฟ้าดังต่อไปนี้
- การกดปุ่ม Emergency Stop
- Voltage
- Current
- Power
- Frequency
ในทางปฏิบัติ สามารถดึงค่าอื่นๆได้อีกมากมาย แต่เหตุผลที่ดึงค่าได้เพียงเท่านี้ เกิดจากข้อจำกัดของเครื่องชาร์จรถยนต์ไฟฟ้าที่ไม่รองรับการสื่อสารด้วย RS-485 ทำให้เกิดความยากลำบากในการอ่านค่าทั้งหมด
ขั้นตอนการสร้าง "คู่หู Charge Point" ด้วย GearMind
1. รวบรวมข้อมูลและเอกสารที่เกี่ยวข้อง รวบรวมคู่มือการใช้งาน, เอกสารทางเทคนิค, และประวัติการซ่อมบำรุงของ Charge Point
2. อัปโหลดข้อมูลเข้าสู่ระบบ GearMind โดยไปที่ เมนู -> คลังข้อมูล -> อัพโหลด -> เลือกเอกสารที่ได้รวบรวมไว้ ทำการทยอยอัพโหลดให้เสร็จสิ้น
3. การต่อวงจร
![alt text](https://i.imgur.com/your_diagram_link.png)
หมายเหตุ: เนื่องจากเครื่องชาร์จรถยนต์ไฟฟ้าบางรุ่นอาจไม่รองรับการสื่อสารแบบ RS-485 เราจึงใช้ PZEM004T V3.0 ในการวัดค่าไฟฟ้าจากฝั่งสายชาร์จแทน
4. ติดตั้ง Library
ก่อนที่เราจะเริ่มเขียนโค้ด เราจำเป็นต้องติดตั้ง Library ที่จำเป็น โดยเปิด Arduino IDE ไปที่เมนู Sketch > Include Library > Manage Libraries... จากนั้น ค้นหาและติดตั้ง Library ต่อไปนี้:
- PZEM004Tv30: ใช้สำหรับควบคุม PZEM004T V3.0
- ArduinoJson: ใช้สำหรับจัดการข้อมูล JSON
5. เขียนโค้ดส่วนเริ่มต้น
มาเริ่มเขียนโค้ดส่วนแรกกันเลย!
#include <Arduino.h>
#include <PZEM004Tv30.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
// WiFi credentials
const char *ssid = "YOUR_SSID";
const char *password = "YOUR_PASSWORD";
// GearMind API settings
const char *gearmindHost = "gearmind.geworn.cloud";
const int gearmindPort = 443;
const char *gearmindPath = "/api/v1/chat";
const char *gearmindApiKey = "YOUR_GEARMIND_API_KEY";
// Line Notify settings
const char *lineNotifyHost = "notify-api.line.me";
const char *lineNotifyPath = "/api/notify";
const char *lineNotifyToken = "YOUR_LINE_NOTIFY_TOKEN";
// Configuration
#define EMERGENCY_BUTTON 35
unsigned long PZEMReadInterval = 250;
unsigned long DiagnosisInterval = 60000; // Check every minute
// Initialize
float voltage = 0, current = 0, power = 0, frequency = 0, powerFactor = 0;
unsigned long previousPZEMReadInterval = 0;
unsigned long previousDiagnosisTime = 0;
bool emergencyButtonPressed = false;
unsigned long emergencyButtonPressTime = 0;
const unsigned long emergencyButtonCooldown = 5000; // 5 วินาทีสำหรับ cooldown
// Create Instance
PZEM004Tv30 pzem(Serial2, 16, 17, 0x1);
ในโค้ดส่วนนี้ เราได้:
- กำหนดค่า WiFi, GearMind API, และ Line Notify อย่าลืมเปลี่ยน YOUR_SSID, YOUR_PASSWORD, YOUR_GEARMIND_API_KEY, และ YOUR_LINE_NOTIFY_TOKEN เป็นข้อมูลของท่าน
- กำหนดค่าต่างๆ เช่น EMERGENCY_BUTTON คือขาที่ต่อกับปุ่ม Emergency Stop, PZEMReadInterval คือระยะเวลาในการอ่านค่าจาก PZEM004T
- กำหนดตัวแปรเริ่มต้น เช่น voltage, current, power
- สร้าง Instance ของ PZEM004Tv30 เพื่อใช้ในการติดต่อสื่อสารกับโมดูล
6. ติดต่อสื่อสารกับ PZEM004T
โค้ดที่เราเขียนไว้ในก่อนหน้า ได้สร้าง Instance ของ PZEM004Tv30 เพื่อให้เราสามารถสั่งงานโมดูล PZEM004T V3.0 ได้ง่ายขึ้น โดย Library นี้มีฟังก์ชันต่างๆ เช่น voltage(), current(), power() ที่เราสามารถเรียกใช้เพื่ออ่านค่าที่ต้องการได้เลย
ฟังก์ชัน readPZEMValues()
เราจะสร้างฟังก์ชันชื่อ readPZEMValues() เพื่ออ่านค่าจาก PZEM004T และเก็บไว้ในตัวแปรที่เรากำหนดไว้ ดังนี้:
void readPZEMValues() {
voltage = pzem.voltage();
current = pzem.current();
power = pzem.power();
frequency = pzem.frequency();
powerFactor = pzem.pf();
if (isnan(voltage) || isnan(current) || isnan(power) || isnan(frequency) || isnan(powerFactor)) {
Serial.println("Error reading values from PZEM");
} else {
Serial.printf("V:%.2f A:%.2f W:%.2f Hz:%.2f PF:%.2f\n", voltage, current, power, frequency, powerFactor);
}
}
อธิบายโค้ด:
- บรรทัดที่ 1-5: อ่านค่า Voltage, Current, Power, Frequency, และ Power Factor จาก PZEM004T โดยใช้ฟังก์ชันของ Library และเก็บค่าไว้ในตัวแปรที่สอดคล้องกัน
- บรรทัดที่ 6-8: ตรวจสอบว่าค่าที่อ่านได้ เป็นค่าที่ผิดปกติหรือไม่ (Not a Number - NaN) หากพบ จะแสดงข้อความแจ้งเตือน "Error reading values from PZEM" บน Serial Monitor
- บรรทัดที่ 9-11: หากค่าที่อ่านได้ เป็นปกติ จะแสดงค่าต่างๆ บน Serial Monitor ในรูปแบบ "V: (Voltage) A: (Current) W: (Power) Hz: (Frequency) PF: (Power Factor)"
เรียกใช้ฟังก์ชัน readPZEMValues()
เราจะเรียกใช้ฟังก์ชัน readPZEMValues() ภายในฟังก์ชัน loop() เพื่อให้ ESP32 อ่านค่าจาก PZEM004T อย่างต่อเนื่อง ดังนี้:
void loop() {
unsigned long currentTime = millis();
if (currentTime - previousPZEMReadInterval > PZEMReadInterval) {
previousPZEMReadInterval = currentTime;
readPZEMValues();
}
// ... (โค้ดส่วนอื่นๆ เช่น การตรวจสอบปุ่ม Emergency)
}
อธิบายโค้ด:
- บรรทัดที่ 1: ประกาศตัวแปร currentTime เพื่อเก็บค่าเวลาปัจจุบัน ที่ได้จาก millis()
- บรรทัดที่ 3-6: ตรวจสอบว่าเวลาปัจจุบัน ห่างจากเวลาที่อ่านค่าจาก PZEM004T ครั้งล่าสุด (previousPZEMReadInterval) เกินกว่า PZEMReadInterval หรือไม่ หากเกิน ก็จะเรียกใช้ฟังก์ชัน readPZEMValues() เพื่ออ่านค่า และอัพเดท previousPZEMReadInterval เป็นเวลาปัจจุบัน
- บรรทัดที่ 8: แสดงถึงว่าจะมีโค้ดส่วนอื่นๆ ที่จะอยู่ในฟังก์ชัน loop() เช่น โค้ดสำหรับตรวจสอบสถานะปุ่ม Emergency ซึ่งเราจะมาเขียนกันในบทความตอนต่อไป
ทดสอบการทำงาน
เมื่ออัพโหลดโค้ดนี้ไปยัง ESP32 แล้ว เปิด Serial Monitor ท่านจะเห็นค่าพลังงานไฟฟ้าที่อ่านได้จาก PZEM004T แสดงขึ้นมาเป็นระยะๆ ตามที่เรากำหนดไว้ใน PZEMReadInterval
7. ปุ่ม Emergency Stop: ป้องกันไว้ก่อน ย่อมดีกว่าแก้
ปุ่ม Emergency Stop หรือปุ่มหยุดฉุกเฉิน เป็นส่วนสำคัญของระบบไฟฟ้าหลายๆ ระบบ รวมถึงเครื่องชาร์จรถยนต์ไฟฟ้า ปุ่มนี้ทำหน้าที่ตัดการทำงานของระบบทันที เมื่อเกิดเหตุการณ์ไม่คาดฝัน เพื่อป้องกันอันตรายที่อาจเกิดขึ้นกับอุปกรณ์และผู้ใช้งาน
ฟังก์ชัน checkEmergencyButton()
เราจะสร้างฟังก์ชันชื่อ checkEmergencyButton() เพื่อตรวจสอบสถานะของปุ่ม Emergency Stop และดำเนินการที่จำเป็น ดังนี้:
void checkEmergencyButton(unsigned long currentTime) {
if (digitalRead(EMERGENCY_BUTTON) == LOW) {
if (!emergencyButtonPressed) {
emergencyButtonPressed = true;
emergencyButtonPressTime = currentTime;
Serial.println("EMERGENCY BUTTON PRESSED!");
// ในตอนถัดไป เราจะเพิ่มโค้ดส่ง Line Notify ที่นี่
}
} else {
if (emergencyButtonPressed && (currentTime - emergencyButtonPressTime > emergencyButtonCooldown)) {
emergencyButtonPressed = false;
Serial.println("EMERGENCY BUTTON RELEASED. System ready for next emergency.");
}
}
}
อธิบายโค้ด:
1. ตรวจสอบสถานะปุ่ม:
o digitalRead(EMERGENCY_BUTTON) == LOW: ตรวจสอบว่าปุ่ม Emergency Stop ถูกกดหรือไม่ (โดยทั่วไป ปุ่ม Emergency Stop จะต่อแบบ Pull-up ดังนั้น เมื่อกดปุ่ม สัญญาณที่ขา Digital จะเป็น LOW)
2. หากปุ่มถูกกด:
o !emergencyButtonPressed: ตรวจสอบว่าเป็นการกดปุ่มครั้งแรกหรือไม่ เพื่อป้องกันการทำงานซ้ำ หากเป็นการกดครั้งแรก (emergencyButtonPressed ยังเป็น false) ก็จะเข้าไปทำงานในบล็อกนี้
o emergencyButtonPressed = true;: ตั้งค่า emergencyButtonPressed เป็น true เพื่อระบุว่าปุ่มถูกกดแล้ว
o emergencyButtonPressTime = currentTime;: บันทึกเวลาที่ปุ่มถูกกด
o Serial.println("EMERGENCY BUTTON PRESSED!");: แสดงข้อความบน Serial Monitor
o (ในตอนถัดไป เราจะเพิ่มโค้ดส่ง Line Notify ที่นี่): เราจะเพิ่มโค้ดสำหรับส่งการแจ้งเตือนผ่าน Line Notify เมื่อปุ่ม Emergency Stop ถูกกด ในบทความตอนต่อไป
3. หากปุ่มถูกปล่อย:
o emergencyButtonPressed && (currentTime - emergencyButtonPressTime > emergencyButtonCooldown): ตรวจสอบว่า
§ ปุ่มถูกกดอยู่ก่อนหน้านี้ (emergencyButtonPressed เป็น true) และ
§ เวลาปัจจุบันห่างจากเวลาที่ปุ่มถูกกด เกินกว่า emergencyButtonCooldown (5 วินาที)
เพื่อป้องกันการทำงานผิดพลาดจากสัญญาณรบกวน
o emergencyButtonPressed = false;: ตั้งค่า emergencyButtonPressed กลับเป็น false เพื่อระบุว่าปุ่มถูกปล่อยแล้ว
o Serial.println("EMERGENCY BUTTON RELEASED. System ready for next emergency.");: แสดงข้อความบน Serial Monitor
เรียกใช้ฟังก์ชัน checkEmergencyButton()
เราจะเรียกใช้ฟังก์ชัน checkEmergencyButton() ภายในฟังก์ชัน loop() เพื่อให้ ESP32 ตรวจสอบสถานะของปุ่ม Emergency Stop อย่างต่อเนื่อง:
void loop() {
unsigned long currentTime = millis();
// ... (โค้ดส่วนอื่นๆ เช่น การอ่านค่าจาก PZEM004T)
checkEmergencyButton(currentTime);
}
ทดสอบการทำงาน
เมื่ออัพโหลดโค้ดนี้ไปยัง ESP32 แล้ว ให้ลองกดปุ่ม Emergency Stop ท่านจะเห็นข้อความ "EMERGENCY BUTTON PRESSED!" แสดงขึ้นมาบน Serial Monitor และเมื่อปล่อยปุ่ม ก็จะเห็นข้อความ "EMERGENCY BUTTON RELEASED. System ready for next emergency." แสดงขึ้นมาเช่นกัน
8. Line Notify: ผู้ช่วยส่งข่าวสาร รวดเร็ว ทันใจ
Line Notify เป็นบริการสำหรับส่งข้อความและการแจ้งเตือนไปยัง Line ได้อย่างง่ายดาย โดยใช้ HTTP Request ซึ่ง ESP32 ของเราสามารถทำได้ ทำให้เราสามารถรับการแจ้งเตือนจาก "คู่หู Charge Point" ได้ทันที แม้จะอยู่ไกลแค่ไหนก็ตาม
เตรียม Line Notify Token
ก่อนที่เราจะเริ่มเขียนโค้ด เราต้องเตรียม Line Notify Token เสียก่อน โดยทำตามขั้นตอนง่ายๆ ดังนี้:
1. เข้าไปที่เว็บไซต์ https://notify-bot.line.me/ และล็อกอินด้วยบัญชี Line ของท่าน
2. คลิกที่ "My Page"
3. คลิกที่ "Generate token"
4. ใส่ชื่อบริการที่ต้องการ เช่น "Charge Point Alert"
5. เลือกกลุ่มที่ต้องการให้ส่งการแจ้งเตือนไปถึง (สามารถเลือกส่งหาตัวเองก็ได้)
6. คลิกที่ "Generate token"
7. คัดลอก Token ที่ได้ นำไปใส่ในโค้ดส่วน lineNotifyToken ที่เรากำหนดไว้ในบทความตอนที่ 1
ฟังก์ชัน sendLineNotification()
เราจะสร้างฟังก์ชันชื่อ sendLineNotification() เพื่อส่งข้อความไปยัง Line Notify ดังนี้:
void sendLineNotification(String message) {
HTTPClient http;
http.begin("https://" + String(lineNotifyHost) + lineNotifyPath);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.addHeader("Authorization", "Bearer " + String(lineNotifyToken));
String postData = "message=" + urlEncode(message);
int httpResponseCode = http.POST(postData);
if (httpResponseCode > 0) {
Serial.printf("Line Notify sent. Response: %d\n", httpResponseCode);
} else {
Serial.printf("Error sending Line Notify. Error: %d\n", httpResponseCode);
}
http.end();
}
String urlEncode(String str) {
// ... (โค้ดส่วนนี้เหมือนเดิม จากบทความตอนที่ 1)
}
อธิบายโค้ด:
- บรรทัดที่ 1-3: กำหนดค่าสำหรับ HTTP Request
- บรรทัดที่ 5: สร้างข้อความที่จะส่ง โดยนำ message ที่รับมา มาต่อกับ "message="
- บรรทัดที่ 6: ส่ง HTTP POST Request ไปยัง Line Notify API
- บรรทัดที่ 8-12: ตรวจสอบผลลัพธ์การส่ง หากสำเร็จ จะแสดงข้อความ "Line Notify sent." พร้อมรหัสตอบกลับ หากไม่สำเร็จ จะแสดงข้อความ "Error sending Line Notify." พร้อมรหัสข้อผิดพลาด
- ฟังก์ชัน urlEncode() ถูกใช้สำหรับแปลงข้อความให้เป็นรูปแบบที่ URL เข้าใจได้
เรียกใช้ sendLineNotification() ภายใน checkEmergencyButton()
ตอนนี้ เรามาเรียกใช้ sendLineNotification() ภายใน checkEmergencyButton() เพื่อส่งการแจ้งเตือนเมื่อปุ่ม Emergency Stop ถูกกด:
void checkEmergencyButton(unsigned long currentTime) {
// ... (โค้ดส่วนอื่นๆ เหมือนเดิม)
if (digitalRead(EMERGENCY_BUTTON) == LOW) {
if (!emergencyButtonPressed) {
// ... (โค้ดส่วนอื่นๆ เหมือนเดิม)
String errorMessage = "🚨🚨🚨 EMERGENCY BUTTON PRESSED! System shutdown initiated! 🚨🚨🚨";
sendLineNotification(errorMessage);
}
}
// ... (โค้ดส่วนอื่นๆ เหมือนเดิม)
}
ทดสอบการทำงาน
เมื่ออัพโหลดโค้ดนี้ไปยัง ESP32 แล้ว ลองกดปุ่ม Emergency Stop ท่านจะได้รับการแจ้งเตือนผ่าน Line ในกลุ่มที่ท่านเลือกไว้ พร้อมข้อความ "🚨🚨🚨 EMERGENCY BUTTON PRESSED! System shutdown initiated! 🚨🚨🚨"
ในบทความตอนต่อไป เราจะมาเรียนรู้วิธีการรวม GearMind API เข้ากับระบบ เพื่อให้ "คู่หู Charge Point" ของเราสามารถวิเคราะห์ข้อผิดพลาดและแนะนำวิธีแก้ไขได้อย่างชาญฉลาด!
9. GearMind API: ผู้ช่วยวิเคราะห์ปัญหาแสนรู้
GearMind API คือ ประตูสู่โลกของ AI ที่ช่วยให้เราสามารถนำความสามารถในการประมวลผลภาษาธรรมชาติ (Natural Language Processing) และการเรียนรู้ของเครื่อง (Machine Learning) มาใช้กับ "คู่หู Charge Point" ได้อย่างง่ายดาย โดยเราสามารถส่งข้อมูลต่างๆ เช่น รหัสข้อผิดพลาด ค่าพลังงานไฟฟ้า ไปยัง GearMind API และรับคำแนะนำในการแก้ไขปัญหาที่แม่นยำกลับมาได้
ฟังก์ชัน performDiagnosis()
เราจะสร้างฟังก์ชัน performDiagnosis() เพื่อรับรหัสข้อผิดพลาด รวบรวมข้อมูลที่เกี่ยวข้อง และส่งไปวิเคราะห์กับ GearMind API:
String performDiagnosis(const String &errorCode) {
String diagnosisMessage = F("โปรดวิเคราะห์ข้อผิดพลาดต่อไปนี้ของเครื่องชาร์จรถยนต์ไฟฟ้า\n");
diagnosisMessage += F("Error Code: ");
diagnosisMessage += errorCode;
diagnosisMessage += F("\nVoltage: ");
diagnosisMessage += String(voltage);
diagnosisMessage += F("\nCurrent: ");
diagnosisMessage += String(current);
diagnosisMessage += F("\nPower: ");
diagnosisMessage += String(power);
diagnosisMessage += F("\nFrequency: ");
diagnosisMessage += String(frequency);
diagnosisMessage += F("\nPower Factor: ");
diagnosisMessage += String(powerFactor);
String gearMindResponse = getGearMindResponse(diagnosisMessage);
return gearMindResponse;
}
อธิบายโค้ด:
1. สร้างข้อความสำหรับ GearMind:
o รวบรวมข้อมูลที่สำคัญ เช่น รหัสข้อผิดพลาด ค่าพลังงานไฟฟ้าต่างๆ
o จัดรูปแบบข้อความให้เข้าใจง่าย เพื่อให้ GearMind API วิเคราะห์ได้อย่างถูกต้อง
2. เรียกใช้ getGearMindResponse(): ส่งข้อความที่สร้างขึ้นไปยัง GearMind API และรอรับผลลัพธ์
ฟังก์ชัน getGearMindResponse()
ฟังก์ชันนี้ทำหน้าที่ติดต่อสื่อสารกับ GearMind API โดยใช้ HTTP Request:
String getGearMindResponse(String message) {
Serial.println("Starting GearMind API request...");
HTTPClient http;
http.setTimeout(60000); // ตั้งค่า Timeout 60 วินาที
String url = "https://" + String(gearmindHost) + gearmindPath;
Serial.println("URL: " + url);
http.begin(url);
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", "Bearer " + String(gearmindApiKey));
DynamicJsonDocument doc(1024);
doc["messages"][0]["role"] = "user";
doc["messages"][0]["content"] = message;
String requestBody;
serializeJson(doc, requestBody);
Serial.println("Request Body: " + requestBody);
int httpResponseCode = http.POST(requestBody);
String response = "Error in GearMind API";
if (httpResponseCode > 0) {
response = http.getString();
Serial.println("Raw response: " + response);
// ... (โค้ดส่วนนี้เหมือนเดิม จากบทความตอนที่ 1)
} else {
// ... (โค้ดส่วนนี้เหมือนเดิม จากบทความตอนที่ 1)
}
http.end();
Serial.println("API request completed.");
return response;
}
อธิบายโค้ด:
1. กำหนดค่า HTTP Request: กำหนด URL, Headers และข้อมูลที่จะส่ง (requestBody)
2. ส่ง HTTP POST Request: ส่งข้อมูลไปยัง GearMind API
3. รับผลลัพธ์: รับข้อมูลที่ส่งกลับมาจาก GearMind API
4. แยกวิเคราะห์ผลลัพธ์ (JSON): แยกข้อมูลที่ได้รับมา เพื่อนำไปใช้งานต่อ
เรียกใช้ performDiagnosis() และส่งผลลัพธ์ไปยัง Line Notify
เราจะเรียกใช้ performDiagnosis() ภายใน checkEmergencyButton() และส่งผลลัพธ์ที่ได้จาก GearMind API ไปแสดงบน Line Notify:
void checkEmergencyButton(unsigned long currentTime) {
// ... (โค้ดส่วนอื่นๆ เหมือนเดิม)
if (digitalRead(EMERGENCY_BUTTON) == LOW) {
if (!emergencyButtonPressed) {
// ... (โค้ดส่วนอื่นๆ เหมือนเดิม)
String gearMindAnalysis = performDiagnosis("Emergency Stop Button Pressed");
sendLineNotification("พบเหตุฉุกเฉิน:\n" + gearMindAnalysis);
}
}
// ... (โค้ดส่วนอื่นๆ เหมือนเดิม)
}
เพียงเท่านี้ "คู่หู Charge Point" ของเราก็มี AI แสนรู้จาก GearMind คอยช่วยวิเคราะห์ปัญหา และแนะนำวิธีแก้ไข ทำให้การจัดการเครื่องชาร์จรถยนต์ไฟฟ้า เป็นเรื่องง่าย ปลอดภัย และมีประสิทธิภาพยิ่งขึ้น!
หมายเหตุ:
- อย่าลืมทดสอบการทำงานของระบบ หลังจากเพิ่มโค้ดในแต่ละส่วน
- ศึกษาข้อมูลเพิ่มเติมเกี่ยวกับ GearMind API ได้ที่ https://geworn.cloud/
- สามารถปรับแต่งโค้ด และเพิ่มฟังก์ชันใหม่ๆ ให้ตรงกับความต้องการของท่านได้ เช่น การบันทึกข้อมูล การแสดงผลผ่าน Web Server
ขอให้สนุกกับการสร้างสรรค์ "คู่หู Charge Point" อัจฉริยะ ในแบบฉบับของท่านเอง!