การจัดเก็บรวบรวมข้อมูลในฐานข้อมูล โดยใช้โปรแกรม SQLite และแสดงค่าในฐานข้อมูลบน Dashboard ของ PIEBOX

NEXPIE Co., Ltd.
4 min readNov 13, 2020

--

เกริ่นนำ

บทความระบบการตรวจวัดการใช้พลังงานไฟฟ้าด้วย PIEBOX บทแรก เป็นการนำเสนอการใช้งาน PIEBOX ในการวัดค่าพลังงานไฟฟ้าจาก Electronic Meter รุ่น SX1-A31E เพื่อที่จะสามารถนำข้อมูลที่วัดได้มาใช้จัดเก็บ หรือนำมาวิเคราะห์ในงานอื่นๆ ต่อไป ในบทความนี้จึงเป็นการจัดเก็บข้อมูลใน PIEBOX โดยใช้โปรแกรม SQLite เพื่อให้มีประสิทธิภาพในการจัดเก็บข้อมูล และสะดวกต่อการใช้งาน

การทำงานแบ่งเป็น 4 ส่วน ผู้ใช้สามารถศึกษาตามหัวข้อดังนี้

A. การเข้าใช้งาน PIEBOX และการติดตั้ง Nodes SQLite

B. การสร้างฐานข้อมูล และการสร้างตาราง SQLite

C. การเขียนข้อมูลในฐานข้อมูล SQLite

D. การอ่านข้อมูลในฐานข้อมูล SQLite

A. การเข้าใช้งาน PIEBOX และการติดตั้ง Nodes SQLite

  1. ในหัวข้อนี้เป็นหัวข้อที่ได้อธิบานในบทความแรก ผู้ใช้งานสามารถย้อนกลับไปอ่านในบทความแรก การอ่านค่าพลังงานไฟฟ้าจาก Electronic SX1-A31E

B. การสร้างฐานข้อมูล และการสร้างตาราง SQLite

  1. การสร้างฐานข้อมูล ผู้ใช้คลิกแถบ FlowEngine และเลื่อนแถบเมนู Nodes มาที่ Storage ทำการคลิกที่ Node Sqlite และลากมายังพื้นที่ Flow

Node Sqlite มีหน้าที่จัดการการทำงาน Sqlite ต่างๆ เช่น การสร้างตาราง, การเขียนข้อมูล, การอ่านข้อมูล, การลบข้อมูล

ทำการดับเบิลคลิกเข้าไปที่ Node Sqlite เพื่อตั้งค่าการสร้างฐานข้อมูล และสร้างตารางเก็บข้อมูล ในตัวอย่างนี้ต้องการสร้างฐานข้อมูลเพื่อเก็บค่าที่อ่านได้จากเซนเซอร์ จากตัวอย่าง การอ่านค่าพลังงานไฟฟ้าจาก Electronic SX1-A31E

การตั้งค่าการสร้างฐานข้อมูล และสร้างตารางเก็บข้อมูล แถบ Database เป็นการระบุชื่อไฟล์ Database และที่อยู่จัดเก็บไฟล์ Database (หากไม่พบชื่อไฟล์ Database จะเป็นการสร้างใหม่ หากมีพบชื่อไฟล์อยู่แล้วจะเป็นการเรียกใช้งาน Database นั้น)

แถบ SQL Query เลือกเป็น Fixed Statement และใส่คำสั่งการสร้างตาราง ในที่นี้เป็นการจำลองการเก็บข้อมูลค่าพลังงานไฟฟ้าที่วัดได้จากเครื่องจักร จึงมีการสร้างตารางฐานข้อมูลตามคำสั่งในตัวอย่าง เมื่อตั้งค่าเสร็จแล้วทำการคลิกปุ่ม Done

คำสั่งการสร้างตารางฐานข้อมูล
create table powermeter (id int, sensor text, voltage int, frequency int, current int, power int, energy int, time Timestamp)

Node Sqlite เพื่อให้เกิดเหตุการณ์ที่ระบุคำสั่งใน SQL Statement จำเป็นต้องให้เกิดเหตุการณ์ Input ข้อมูล เพื่อให้เกิดกระบวนการทำงานโดยใช้ Node Inject

Node Inject มีหน้าที่ให้ผู้ใช้สามารถสร้างข้อมูล จำลองข้อมูลในการ Input

การตั้งค่า Node Inject เบื้องต้นสามารถตั้งค่าให้ Input ข้อมูลอย่างไรก็ได้ไปยัง Node Sqlite และทำการลากเส้นข้อมูลจาก Node Inject ไปยัง Node Sqlite และลากเส้น Output ข้อมูลไปยัง Node Debug เพื่อตรวจสอบผลลัพธ์ และคลิกปุ่ม Save

จากนั้นทำการคลิกที่ปุ่มหน้า Inject เพื่อให้เกิดเหตุการณ์การสร้างฐานข้อมูล และการสร้างตาราง สังเกตผลลัพธ์ที่แถบ Debug

สังเกตผลลัพธ์ หากสร้างฐานข้อมูลไม่สำเร็จจะแสดงข้อความ Error

C. การเขียนข้อมูลในฐานข้อมูล SQLite

ในส่วนของตัวอย่างข้อมูลจะใช้ตัวอย่าง การอ่านค่าพลังงานไฟฟ้าจาก Electronic SX1-A31E

สังเกตว่า ตัวอย่างข้อมูลที่ได้นั้นเป็นค่าที่อ่านได้จากเซนเซอร์ 5 Node เพื่อสะดวกในการเขียนข้อมูล SQLite จะรวบรวมค่าที่อ่านจากเซนเซอร์ได้เป็นข้อมูลเดียวโดยใช้ Node Join

ดับเบิลคลิกที่ Node Join เพื่อระบุค่าการตั้งค่ารวบรวมข้อมูล การตั้งค่าโดยกำหนด Mode เป็น manual และกำหนด to create เป็น a merged Object กำหนดค่า After a number of message parts เท่ากับ 5 ซึ่งเป็นการรวมข้อมูลจากแต่ละ Object Node เมื่อได้รับข้อมูลให้ครบตามที่กำหนด 5 node จึงจะรวบรวมข้อมูลและ Output ข้อมูลต่อไป

เมื่อตั้งค่าสำเร็จ คลิกปุ่ม Done จากนั้นทำการลากเส้นจาก Node อ่านค่าจากเซนเซอร์ไปยัง Node Join และลากเส้น Output ข้อมูลไปยัง Node Debug เพื่อสังเกตผลลัพธ์ และคลิกปุ่ม Save

ผลลัพธ์ที่ได้ข้อมูลที่อ่านค่าได้จากเซนเซอร์ 5 Node รวบรวมเป็น 1 ข้อมูล

เมื่อข้อมูลอยู่ในรูปแบบที่ต้องการ จากนั้นจะเป็นการเขียนข้อมูลไปยัง SQLite การนำข้อมูลที่ได้เขียนไปยังโปรแกรม SQLite ผู้ใช้สามารถนำข้อมูลมากำหนดให้อยู่ในรูปแบบของ Parameter เพื่อให้สะดวกในการใช้ Node Sqlite โดยใช้ Node Function

ผู้ใช้ทำคลิกที่ Node Function และลากมายังพื้นที่ Flow

ดับเบิลคลิกที่ Node Function เพื่อกำหนดค่า Parameter โดยกำหนดคำสั่งดังนี้

เมื่อกำหนดค่า Parameter สำเร็จ คลิกปุ่ม Done จากนั้นทำการลากเส้นข้อมูลจาก Node Join ไปยัง Node Function (Add Parameter) และลากเส้น Output ข้อมูลไปยัง Node Debug เพื่อสังเกตผลลัพธ์ และคลิกปุ่ม Save

จากนั้นทำการสร้าง Node Sqlite อีก 1 Node โดยทำหน้าที่การเขียนข้อมูลลงในตารางฐานข้อมูล โดยคลิกที่ Node Sqlite และลากมายังพื้นที่ Flow

ทำการดับเบิลคลิกเข้าไปที่ Node Sqlite เพื่อระบุคำสั่งการเขียนข้อมูลในตารางฐานข้อมูล

การตั้งค่าเขียนฐานข้อมูล แถบ Database เป็นการระบุ Database แถบ SQL Query เลือกเป็น Prepared Statement และใส่คำสั่งการเขียนข้อมูลในตารางฐานข้อมูลดังนี้ ตั้งค่าเสร็จคลิกปุ่ม Done

คำสั่งการเขียนข้อมูลลงตารางฐานข้อมูล
INSERT into machine (ID, SENSOR, VOLTAGE, FREQUENCY, CURRENT, POWER, ENERGY, TIME) values ($id, $sensor, $volt, $freq, $cur, $pow, $en, $time)

จากนั้นทำการลากเส้นข้อมูลจาก Node Function (Add Parameter) ไปที่ Node sqlite และลากเส้น Output ข้อมูลไปยัง Node Debug เพื่อสังเกตผลลัพธ์ และคลิกปุ่ม Save

สังเกตผลลัพธ์ที่แถบ Debug หากเขียนข้อมูลไม่สำเร็จจะแสดงข้อความ Error

D. การอ่านข้อมูลในฐานข้อมูล SQLite

  1. ผู้ใช้ทำการสร้าง Node Sqlite อีกหนึ่ง Node ทำหน้าที่อ่านข้อมูลในตารางฐานข้อมูล โดยคลิกที่ Node Sqlite และลากมายังพื้นที่ Flow

ทำการดับเบิลคลิกเข้าไปที่ Node Sqlite เพื่อระบุค่าที่ต้องการอ่านข้อมูลในฐานข้อมูล ในตัวอย่างเป็นการอ่านข้อมูลทั้งหมดในตารางฐานข้อมูล

การตั้งค่าแถบ Database เป็นการระบุ Database แถบ SQL Query เลือกเป็น Fixed Statement และใส่คำสั่งการอ่านข้อมูลในฐานข้อมูล ตั้งค่าเสร็จคลิกปุ่ม Done

คำสั่งอ่านข้อมูลทั้งหมดในตาราง machine
SELECT * FROM machine;

Node Sqlite เพื่อให้เกิดเหตุการณ์ที่ระบุคำสั่งใน SQL Statement จำเป็นต้องให้เกิดเหตุการณ์ Input ข้อมูล เพื่อให้เกิดกระบวนการทำงานโดยใช้ Node Inject

Node Inject ทำหน้าที่ให้ผู้ใช้สามารถสร้างข้อมูล จำลองข้อมูลในการ Input

การตั้งค่า Node Inject เบื้องต้นสามารถตั้งค่าให้ Input ข้อมูลอย่างไรก็ได้ไปยัง Node Sqlite และทำการลากเส้นข้อมูลจาก Node Inject ไปยัง Node Sqlite และลากเส้น Output ข้อมูลไปยัง Node Debug เพื่อสังเกตผลลัพธ์ และคลิกปุ่ม Save

สังเกตผลลัพธ์ที่แถบ Debug หากอ่านข้อมูลไม่สำเร็จจะแสดงข้อความ Error และหากอ่านข้อมูลสำเร็จจะแสดงข้อมูลที่ได้จัดเก็บในตารางฐานข้อมูล ผู้ใช้สามารถนำข้อมูลที่ต้องการไปใช้งานในระบบงานต่อไป

สำหรับใครที่ติดปัญหาหรือมีข้อสงสัย สามารถสอบถามได้ทุกอย่างในคอมเมนต์ข้างล่างเลยครับ

ในบทความนี้เป็นตัวอย่างการเก็บข้อมูลลงใน PIEBOX โดยใช้งานโปรแกรม Sqlite เบื้องต้น ผู้ใช้สามารถศึกษา Sqlite เพิ่มเติมต่อได้ที่ https://www.sqlite.org/docs.html ในบทความต่อไปจะเป็นการนำข้อมูลที่เก็บใน Database มาแสดงบน Dashboard Local ของ PIEBOX

พูดคุย แลกเปลี่ยน สอบถามข้อมูลเกี่ยวกับ NETPIE ได้ที่
Facebook Group: https://www.facebook.com/groups/netpie

ติดตามข่าวสาร ติดต่อธุรกิจกับ NEXPIE ได้ที่
Facebook Fanpage: https://www.facebook.com/nexpie

--

--

NEXPIE Co., Ltd.

Internet of Things Experts in Thailand เราคือผู้เชี่ยวชาญและผู้ให้บริการ Platform IoT โดยคนไทยเพื่อคนไทย