[NETPIE] การแสดงผลข้อมูลความชื้นและอุณหภูมิจากเซนเซอร์ DHT ด้วย Grafana

จากบทความที่แล้ว การแสดงผลข้อมูล JSON อย่างง่ายด้วย Grafana เราจะทำการเพิ่มเติมเล็กน้อยเพื่อให้รับข้อมูลจากเซนเซอร์ DHT ผ่าน NETPIE ครับ

สิ่งที่ต้องเตรียม :

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

Let’s Start

  1. copy โฟลเดอร์ fake-simple-json-datasource เพิ่มขึ้นมาในโปรเจคเดิมของเรา
ผมตั้งชื่อโฟลเดอร์ใหม่ว่า netpie-json-datasource

2. เข้าไปที่โฟลเดอร์ใหม่ เปิด cmd แล้วติดตั้ง microgear เพื่อให้ติดต่อกับ NETPIE ได้ ด้วยคำสั่ง

npm install microgear

3. เพิ่ม module ในการเชื่อมต่อกับ NETPIE โดยดาวน์โหลดจาก netpie-module-for-dht-server และอย่าลืมใส่ Application id, Session key และ secret นะครับ

นำไฟล์ netpie.js ที่ดาวน์โหลดมาวางไว้ที่ netpie-json-datasource
ใน netpie.js อย่าลืมนำ 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.

ไปที่ data source
กดเพิ่ม data source ที่มุมบนขวา
url ตามที่ netpie-json-datasource ทำงานอยู่

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

กดสร้าง dashboard ใหม่
หน้าตาของกราฟที่สามารถรับข้อมูลอุณหภมิและความชื้นได้สำเร็จ

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

คลิกที่นี่เพื่อตั้งค่า
ตัวอย่างการตั้งค่า refresh ทุก 5 วินาที และแสดงข้อมูลถึง 5 นาทีก่อนหน้านี้

สรุปส่งท้าย

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

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade