ส่งข้อมูลเข้า Google Sheets ด้วย IoT HMI
ให้ HMI Samkoon ส่งข้อมูลจาก PLC ขึ้น Google Sheets โดยตรงด้วย HTTP POST และ JSON ผ่าน Google Apps Script แบบ Web App ทำ Data Logging อัตโนมัติโดยไม่ต้องใช้ USB Drive
HMI ที่ต่อ Internet ได้ส่งข้อมูลจาก PLC เป็น JSON ด้วย HTTP POST ไปที่ Google Apps Script ซึ่ง Deploy เป็น Web App แล้วสคริปต์จะต่อแถวใหม่ลง Google Sheets พร้อมเวลาบันทึก — ในคลิปส่งสถานะ Y0 กับค่า D5 ทุกครั้งที่กดปุ่มที่ผูกกับ LB0
อัพเดทล่าสุด: 26 ตุลาคม 2569
ชุดอุปกรณ์สำหรับการทำระบบ Google Sheets
ชุดอุปกรณ์สำหรับการทำระบบ Google Sheets


ราคาชุดอุปกรณ์
ทำไมต้องส่งข้อมูลขึ้น Google Sheets
การทำ Data Logging บน HMI แบบเดิมคือ HMI ดึงข้อมูลจาก PLC เก็บไว้ แล้วให้พนักงานเอา USB Thumb Drive มาเสียบดึงไฟล์ Excel หรือ CSV ไปเก็บที่คอมพิวเตอร์หรือ Server วิธีนี้ใช้ได้ แต่ต้องมีคนมาทำทุกวัน
HMI รุ่นใหม่ที่รองรับ HTTP และต่อ Internet ได้ สามารถส่งข้อมูลที่สนใจไปที่ Google Sheets ได้โดยตรง ไม่ต้องพึ่งการเสียบ USB Drive เลย
อุปกรณ์ในคลิป
- HMI SK-070QE-G + WiFi Module
- PLC FAT-16MT-DC-E (HMI สื่อสารกับ PLC ผ่าน COM2)
ผลลัพธ์ที่ได้: กดปุ่มบน HMI แล้วจะมีแถวใหม่ใน Google Sheets ประกอบด้วยสถานะเครื่องจักร จำนวนชิ้นงาน และเวลาที่บันทึก
1. โปรแกรม PLC
ในตัวอย่างสนใจข้อมูล 2 อย่าง
- Y0 — สถานะเครื่องจักร (ติด = ทำงาน ดับ = ไม่ได้ทำงาน) คุมด้วย M0 ที่เป็น Coil ช่วยไปสั่ง Y0
- D5 — ค่าตัวเลขแทนจำนวนชิ้นงาน ในคลิปจำลองด้วยคำสั่ง TRD D0 (ใช้ M8151 ให้ทำงานตลอด) ซึ่งเขียนวันเวลาจาก RTC ลง D0 เป็นต้นไป ค่า D5 จึงเปลี่ยนไปเรื่อยๆ
2. หน้าจอใน SKTool
สร้าง Component เหล่านี้
| Component | Address | หน้าที่ |
|---|---|---|
| Bit Button (Set ON) | LB0 | ปุ่ม Send Data — สั่งยิงข้อมูลไป Google Sheets |
| Numeric Entry | D5 | แสดงและแก้ค่าตัวเลข (16-Bit Unsigned Int) |
| Bit Button | M0 | สลับสถานะ M0 เพื่อเปลี่ยน Y0 |
| Function Button | — | ตั้งค่า Wi-Fi หรือ Network ของ HMI |
LB คือ Local Bit ซึ่งเป็น Address ภายใน HMI ไม่ใช่ใน PLC
3. พื้นฐาน HTTP และ JSON
HTTP
HTTP (Hypertext Transfer Protocol) คือโปรโตคอลที่เว็บไซต์ใช้รับส่งข้อมูลกัน มีฝั่ง Client (ผู้ใช้งาน) ส่ง Request ไปที่ Server แล้ว Server ส่ง Response กลับมา เช่นพิมพ์ URL ของเว็บไซต์ก็คือส่ง Request แล้วได้ไฟล์ HTML กลับมา
- GET — ขอข้อมูลเฉยๆ
- POST — Request ที่แนบข้อมูลไปด้วย เช่นส่งฟอร์ม ซึ่งตรงกับงานนี้ที่ส่งข้อมูลไปเก็บใน Sheet
Response มี Status Code เช่น 200 = ทุกอย่างโอเค, 404 = Not Found (สิ่งที่ขอไม่มีอยู่), 500 = Server พัง
JSON
JSON (JavaScript Object Notation) คือรูปแบบข้อมูลที่ HMI ต้องส่งไปให้ฝั่ง Google ไม่อย่างนั้นจะประมวลผลไม่ได้ ข้างในปีกกามีคู่ Key : Value คั่นด้วยคอมมา
{
"partsCount": 42,
"machineStatus": true
}
ชนิดข้อมูลหลักของ JSON คือ String, Number (จำนวนเต็มหรือทศนิยม เช่น 42, 36.9), Boolean (true / false), Null, Object และ Array — ตัวอย่างนี้ใช้แค่ Number กับ Boolean
4. สร้าง Google Sheets
- สร้าง Google Sheet ใหม่ใน Google Account ตั้งชื่อ เช่น
hmi-database - พิมพ์หัวคอลัมน์ไว้ดูเอง:
machine-status,parts-count,timestamp - เปลี่ยนชื่อ Sheet (แท็บด้านล่าง) เป็น
data
5. เขียน Google Apps Script
Apps Script เป็นภาษาคล้าย JavaScript ไว้ Automate งานใน Google Workspace
- ที่เมนู Extensions เลือก Apps Script
- ตั้งชื่อโปรเจกต์ เช่น
hmi-google-sheets - ใส่โค้ดนี้ใน
Code.gsโดยชื่อในgetSheetByNameต้องตรงกับชื่อ Sheet (data)
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data");
var data = JSON.parse(e.postData.contents);
/*
{
"Y0": true,
"D5": 123
}
*/
var y0 = data.Y0; // true
var d5 = data.D5; // 123
var timestamp = new Date();
sheet.appendRow([y0, d5, timestamp]);
return ContentService.createTextOutput(JSON.stringify({"result": "success", "timestamp": timestamp}))
.setMimeType(ContentService.MimeType.JSON);
}
JSON.parse(e.postData.contents)อ่าน JSON ที่ HMI ส่งมากับ POST Requestdata.Y0และdata.D5ดึงค่าตาม Key ของ JSONnew Date()คือเวลาปัจจุบันsheet.appendRow([...])ต่อแถวใหม่ท้าย Sheet ด้วย 3 ค่านี้
จะ Copy โค้ดไปใช้เลยก็ได้ หรือถ้าอยากเข้าใจมากขึ้นก็ไปศึกษาพื้นฐาน Programming เพิ่ม
6. Deploy เป็น Web App
- กด Deploy → New deployment
- Select type เลือก Web app
- Execute as: Me (บัญชีของเรา)
- Who has access: Anyone — เพราะ HMI ต้องเรียกสคริปต์นี้ได้
- กด Deploy แล้วกด Authorize access เลือกบัญชี แล้วกด Allow
- Copy URL ของ Web app (ขึ้นต้นด้วย
script.google.com)
7. ตั้งค่า HTTP ใน SKTool
- ที่เมนูทางซ้ายดับเบิลคลิก HTTP ติ๊ก Use แล้วกด New
- แท็บ General ตั้งค่าดังนี้
| ช่อง | ค่าในคลิป |
|---|---|
| Name | hmi-google-sheets (ตั้งอะไรก็ได้) |
| Website | URL ของ Web app ที่ Copy มา |
| Mode | POST |
| Time out | 2000 ms |
| Header | content-type:application/json |
| Format | Json (Advance) |
| Send mode | Bit trigger — Address LB0, OFF->ON |
| Automatic reset | ติ๊ก (ยิงเสร็จแล้ว Reset LB0 ให้เอง) |
- แท็บ Send Json กด Add Value เพิ่มค่า 2 ตัว
| Name | Data type | Data | Address |
|---|---|---|---|
| Y0 | bool | Address | Y0 ของ PLC (COM2) |
| D5 | 16-Bit Unsigned Int | Address | D5 ของ PLC (COM2) |
Name ต้องตรงกับ Key ที่สคริปต์อ่าน (data.Y0, data.D5)
8. ทดสอบ
- ต่อสาย USB-C เข้า HMI แล้ว Download โปรแกรมใหม่เพื่ออัปเดต HTTP Request ในเครื่อง
- กด Function Button เข้าหน้าตั้งค่า Network แล้วต่อ Wi-Fi
- เปลี่ยนสถานะ Y0 และค่า D5 ตามต้องการ แล้วกดปุ่ม Send Data (LB0)
- ถ้าเขียนโค้ดถูกและต่อ Wi-Fi แล้ว แถวใหม่จะขึ้นใน Google Sheets ทันที เช่น
TRUE | 22 | 2/26/2024 15:03
ข้อมูลดิบใน Sheet นำไปประมวลผลต่อได้เลย
สรุป
HMI ที่ต่อ Internet ได้ส่งข้อมูลจาก PLC ขึ้น Google Sheets ได้เองด้วย HTTP POST + JSON โดยมี Google Apps Script ที่ Deploy เป็น Web App คอยรับข้อมูลและต่อแถวใหม่ ทำ Data Logging อัตโนมัติได้โดยไม่ต้องให้พนักงานมาดึงไฟล์ด้วย USB Drive ทุกวัน
บทถัดไป
MQTT Protocol กับ HMI: สร้างระบบ IoT สื่อสารไร้สาย
มีคำถาม? ติดต่อทีมงาน