[NETPIE] การแสดงผลข้อมูลความชื้นและอุณหภูมิจากเซนเซอร์ DHT ด้วย Grafana
จากบทความที่แล้ว การแสดงผลข้อมูล JSON อย่างง่ายด้วย Grafana เราจะทำการเพิ่มเติมเล็กน้อยเพื่อให้รับข้อมูลจากเซนเซอร์ DHT ผ่าน NETPIE ครับ
สิ่งที่ต้องเตรียม :
- โปรเจคเดิมจากบทความที่แล้ว
- สร้าง Application บน NETPIE แล้วเตรียม key และ secret ไว้ โดย Device สำหรับบอร์ด Arduino ESP8266 NodeMCU, Session สำหรับ data source
- เซนเซอร์ DHT11 ต่อกับบอร์ด Arduino ESP8266 NodeMCU ที่ upload โค้ดการส่งข้อมูลอุณหภูมิและความชื้น ไว้แล้ว (อย่าลืมใส่ Application id, Device key, secret จากข้อ 2. และตั้งชื่อ device นะครับ)

Let’s Start
- copy โฟลเดอร์ fake-simple-json-datasource เพิ่มขึ้นมาในโปรเจคเดิมของเรา

2. เข้าไปที่โฟลเดอร์ใหม่ เปิด cmd แล้วติดตั้ง microgear เพื่อให้ติดต่อกับ NETPIE ได้ ด้วยคำสั่ง
npm install microgear
3. เพิ่ม module ในการเชื่อมต่อกับ NETPIE โดยดาวน์โหลดจาก netpie-module-for-dht-server และอย่าลืมใส่ Application id, Session key และ secret นะครับ


4. เปิดไฟล์ index.js แก้ไขให้ตัวแปร timeserie รับข้อมูลจาก NETPIE module ของเราแทนไฟล์ series.json
var netpie = require('./netpie'); //เรียกใช้ netpie module
var timeserie = netpie.timeserie; //รับข้อมูลจาก netpie module
5. เปลี่ยน port ให้ไม่ซ้ำกับ data source ตัวเดิม (ในกรณีที่เปิด 2 data source พร้อมกันจะได้ไม่ชนกันครับ) ตัวอย่างเช่น เปลี่ยนเป็น port 4444 ครับ

6. สั่งให้ grafana server และ netpie-json-datasource ทำงาน ด้วยวิธีเดียวกับ
บทความที่แล้วครับ
7. เพิ่ม data source ใหม่ให้ url เป็นไปตามที่เราแก้ไข port ในข้อที่ 5.



8. เพิ่มหน้า dashboard ใหม่ และแสดงกราฟของข้อมูลอุณหภูมิและความชื้นที่ส่งมาจาก netpie-json-datasource โดยขั้นตอนจะเหมือนกับบทความที่แล้วครับ


9. เราสามารถตั้งค่าให้ Grafana แสดงช่วงของข้อมูลที่เราต้องการ และ refresh อัตโนมัติทุกกี่วินาทีได้ โดยคลิกที่มุมบนขวาของหน้าจอ


สรุปส่งท้าย
จะเห็นว่าเราสามารถแสดงผลข้อมูลอุณหภูมิและความชื้นโดยใช้ NETPIE เข้ามาช่วยได้แล้วนะครับ แต่ยังมีข้อจำกัดที่ NETPIE module ที่ผมเขียนขึ้นเองนั้นเก็บข้อมูลลงในตัวแปร timeserie ทั้งหมดโดยไม่มีการจำกัดขนาดหรือบันทึกลงฐานข้อมูล ซึ่งมีข้อเสียคือการกินพื้นใน memory มากเกินจำเป็น และหาก server ของเราเกิดดับขึ้นมาข้อมูลเหล่านี้ก็จะหายไปเลยเพราะไม่มีการบันทึกไว้ โดยในบทความหน้าจะเป็นการเชื่อมต่อกับฐานข้อมูลและอาจจะมีการใช้ Node-RED เป็น server แทนครับ
