[Node-RED] การเก็บข้อมูลจาก NETPIE.io ลงฐานข้อมูล Mysql โดยใช้ NodeRED
จากบทความ หลาย ๆ บทความก่อนหน้านี้ ที่ได้เขียนเกี่ยวกับการติดตั้ง Node JS, npm, nvm, chocolatey รวมไปถึง Node-RED ความฉลาดของระบบคลาวด์ ถือเป็นอีกองค์ประกอบหนึ่งของอินเทอร์เน็ตในทุกสรรพสิ่งหรือ Internet of Thing (IoT) โดยการที่เราจะส่งข้อมูลอะไรสักอย่างนึงขึ้นไป เพื่อไปเก็บยังฐานข้อมูลต่าง ๆ ดังนั้นจึงมีอีกวิธีง่าย ๆ เพื่อให้สามารถจัดการข้อมูลที่ส่งไปได้อย่างมีประสิทธิภาพ และยืดหยุ่นนั่นก็คือใช้ Node-RED เป็นตัวกลางในการจัดการข้อมูลต่าง ๆ ซึ่งตัว Node-RED เองเป็นแบบ Open source การเขียนก็แสนจะง่ายดาย เพียงแค่ลากบลอคต่าง ๆ มาวาง โยงสายจากบลอคหนึ่งไปอีกบลอคหนึ่งตามความต้องการ โดย node red สามารถแสดงผล ประมวลผล เก็บข้อมูล แปลงข้อมูล คำนวณ หรือส่งไปยังบริการอื่น ๆ ได้อีกด้วย ในบทความนี้จะขอยกตัวอย่างการเก็บข้อมูลอุณหภูมิเข้าระบบฐานข้อมูล เอาละมาเริ่มกันโล้ดดด
วัตถุดิบที่ใช้ :
- ESPresso Lite V2.0
- DHT sensor
- Xampp
- Node-RED
- NETPIE.io
วิธีการปรุง :
- หัวใจหลักของงานนี้คือ Node-RED ฉนั้นแล้วต้องทำการติดตั้งเสียก่อน โดยทำตามบทความนี้ –> ติดตั้ง NVM และ Node-RED และอีกวิธีนึงสำหรับติดตั้งง่าย ๆ ด้วย Chocolate
- เปิดบราวเซอร์ลองเข้า localhost:1880 จะแสดงโปรแกรม Node-RED ขึ้นมา
- แต่….Node-RED ของเรายังไม่มี node สำหรับดึงข้อมูลมาจาก netpie ดังนั้นจึงต้องทำการติดตั้งเพิ่ม โดยทำการเปิด Command Prompt แล้วพิมพ์ npm install -g node-red-node-netpie เป็นการติดตั้ง node ที่ทำหน้าที่เชื่อมกับ netpie นั่นเอง ซึ่ง node ประเภทนี้พัฒนาขึ้นมาด้วยสมาชิก Chiang Mai Maker Club นั่นเองครับ (opensource ให้เข้าไปช่วยกันแก้ไขได้ด้วยนะ!)
- เมื่อติดตั้งเสร็จ ลองรัน Node-RED ใหม่ ก็จะได้บลอคของ netpie ขึ้นมาดังภาพด้านล่าง
- และอีกบลอคที่ต้องทำการติดตั้งเพื่อส่งข้อมูลเข้า MySQL database โดยสามารถเข้าไปเลือกใน flows.nodered ค้นหาคำว่า MySQL
จากนั้นทำการติดตั้งในหน้า Command Prompt แล้วพิมพ์ npm install node-red-node-mysql
หากติดตั้งเรียบร้อยให้ทำการรัน Node-RED ขึ้นมาอีกครั้ง แล้วสังเกตบลอคด้านข้างจะมีบลอคของ mysql เพิ่มขึ้นมา
- หลังจากทำการเตรียม Node-RED เสร็จแล้ว ขั้นตอนต่อไปคือให้ตัวอุปกรณ์ส่งค่าอุณหภูมิขึ้นไปยังระบบคลาวด์ด้วยบอร์ด ESPresso Lite V2.0 โดยทำการต่อวงจรดังภาพด้านล่าง
- จากนั้นให้อัพโหลดโค้ดตัวอย่าง โดยสามารถดาวน์โหลดโค้ดตัวอย่างได้ที่นี่
- เมื่ออัพโหลดโค้ดเข้าไปยังบอร์ดแล้ว ให้ทำการเปิด Serial monitor ที่ความเร็ว 115200
- เปิดบราวเซอร์เข้า netpie.io เพื่อดูว่าอุปกรณ์ได้ทำการเชื่อมต่อข้ามารึยัง
- กลับมายัง Node-RED ให้ทำการลากบลอคสำหรับเชื่อมต่อ netpie ทางด้าน input แล้วตั้งค่าให้เรียบร้อย
- หากเชื่อมต่อได้ จะขึ้นสีเขียวด้านล่าง และแสดงคำว่า connected
- เปิดโปรแกรม Xampp เพื่อทำการจำลอง database ขึ้นมา โดยกด Start ที่ Module Apache และ MySQL
- เปิดบราวเซอร์ขึ้นมาแล้วพิมพ์ localhost/phpmyadmin และทำการสร้าง database ชื่อ test สร้าง table ดังภาพด้านล่าง
- ทำการสร้าง table ให้เรียบร้อย โดย table แรกเป็นเวลา และ table สองเป็นค่าอุณหภูมิ
จะได้ดังภาพด้านล่าง
- คลิปที่ Insert เพื่อ Preview SQL
- ลากบลอค function มาเชื่อมกับ netpie input แล้วทำการเขียนโค้ดดังภาพด้านล่าง
- ลากบลอค mysql มาเชื่อมต่อกับบลอค function จากนั้นทำการแก้ไขให้เชื่อมต่อกับ database ของเรา
ตั้งค่าต่าง ๆ สำหรับเชื่อมต่อ MySQL database
- เมื่อตั้งค่าเสร็จจะได้บลอคดังภาพด้านล่าง
- ทดสอบบลอคการทำงานโดยการกด Deploy
- ในช่อง debug จะแสดงการแจ้งเตือนต่าง ๆ
- กลับไปดูใน database จะแสดงค่าอุณหภูมิที่ส่งมาจาก ESP มาเก็บไว้ยังฐานข้อมูล
เพียงเท่านี้เราก็สามารถส่งค่าจาก ESP8266 เพื่อเก็บข้อมูลไว้ในระบบฐานข้อมูลได้แล้ว หากจะทำการแก้ไข หรือให้ส่งข้อความแจ้งเตือนก็สามารถทำได้โดยการแก้ไขใน Node-RED ซึ่งจะทำให้ IoT มีความฉลาดขึ้นมาอีกขั้น ไม่เพียงแค่แสดงค่าบนเว็บบราวเซอร์อย่างเดียวเท่านั้น
เวอร์ชั่นถัดไปจะพัฒนา node-red-node-netpie เป็น configuration node เพื่อประหยัดจำนวน things ครับ
ขอบคุณมากครับ:”)
ขอถาม แล้วถ้าอยากดึงข้อมูลจาก mysql นี้ต้องทำยังไง
ขอบคุณครับ^^”
ใช้ function node และเขียนโค้ด sql ดึง database ได้เลยครับ
ถ้าขี้น ETIMEOUT คืออะไรคะ
อาจจะมีบางอย่างผิดพลาดจากการส่งขอมูลครับ
ถ้าผมต้องการ insert ค่าหลายๆ ค่า ต้อง แยก ฟังก์ชั้นไหมครับ หรือมีวิธีการจำแนกค่า ไหมครับ