วันพฤหัสบดีที่ 3 กันยายน พ.ศ. 2558

Node-RED - Datalogger และเพิ่ม Dweet.IO nodes

 
Datalogger เป็นส่วนหนึ่งในการดูแลระบบ นอกเหนือจากการส่งข้อมูลแจ้งเตือนไปที่ tweeter และ Email
ข้อมูลเมื่อมีข้อมูลใหม่เข้ามหรือช่วงเวลาที่กำหนดก็เป็นส่วนที่สำคัญ Node-RED ก็ไม่ได้ขาดจุดนี้ วิธีการท่จะนำเสนอต่อไปนี้ไม่ได้เป็นวิธีเดียวเท่านั้น โดยเป็นการนำข้อมูลไปเก็บไว้เป็นรูปแบบเท็กไฟล์ ง่ายและสะดวก แต่ถ้าจะเก็บเป็นรูปแบบฐานข้อมูลก็จะมี mongoDB มาช่วย ส่วนของโพสต์นี้จะพูดในการทำรูปแบบข้อมูลและนำไปบันทึกเป็นรูปแบบไฟล์เท่านั้น
คงจะไม่ลืมว่าเราเคยทำการฝากข้อมูลไว้ที่ Dweet.io บันทึกและนำเข้ามูลมาใช้งานกันมาแล้ว
คราวที่แล้วเราเรียกใช้งานผ่าน http request nodes ก็ใช้งานได้ในระดับหนึ่ง จะเห็นว่า Dweet.io ไม่มีใน nodes มาตรฐานใน editor (ใน FRED มีอยู่) แต่ข่าวดีเรามีคนสร้างไว้ให้เราใช้ ซึ่งสามารถทำการติดตั้งได้โดยง่าย ตามกันไปเลยครับ
เปิด Node-RED server มองหาบรรทัดที่ขึ้นต้นด้วย User directory 
ปิด Node-RED server ด้วย Ctrl + C 
จากนั้นเปิด Command prompt แบบ Admnistrator เข้าไปที่ User directory และพิมพ์คำสั่ง
npm install node-red-node-dweetio
* เพิ่มเติม เราควรเพิ่ม –g ในการติดตั้ง เพื่อให้ทุก user สามารถใช้งานได้
npm install –g node-red-node-dweetio

รอจนติดตั้งเรียบร้อย สำรวจดูจะพบ directory ชื่อ  node-red-node-dweetio ใน directory ชื่อ node_modules เป็นอันเสร็จสมบูรณ์
เปิด Node-RED server แล้วเปิดใช้ Node-RED editor ด้วย browser 
จะพบ Dweet.io nodes ในแท็ป input เป็น dweetio in และในแท๊ป output เป็น dweetio out
image          image
dweetio in nodes จะได้รับการกระตุ้นให้แสดงผล เราสามารถแสดงผลลัพธ์ผ่าน debug nodes และสามารถปรับ
รูปแบบของผลลัพธ์ผ่าร function nodes ก่อนทำการบันทีกได้ด้วย
ผมขอตั้งชื่อ thing เป็น noderedsupotsaeea
ดังนั้นการเก็บข้อมูลเข้า thing นี้ สามารถพิมพ์ที่ browser address ตามนี้
ถ้าตั้งชื่อ thing เป็นอื่นๆ ก็นำไปใส่แทน noderedsupotsaeea ได้เลย
สร้าง flow ตามรูป
image
1. dweetio in nodes
image

2. function nodes
image
ช่อง function พิมพ์คำสั่ง javascripts
var date = new Date();
msg.payload = {date:date.toISOString(), data:msg.payload.val, created:msg.created, thing:msg.thing};
return msg;


3. debug nodes
image

4. template nodes
image
พิมพ์ Date: {{payload.date}}, value={{payload.data}} ในช่อง Template

5. files nodes
image
จะทำการบันทึกข้อมูลลงไฟล์ชื่อ datalogger.txt ในโฟลเดอร์ data ในไดรว์ d:
ถ้าไม่พบโฟลเดอร์จะทำการสร้างให้
ทำการ deploy flow
จากนั้นทำการทดลอง

จะพบว่าเมื่อมีการอัพเดทข้อมูล dweetio in จะถูกกระตุ้นให้ทำการอ่านข้อมูลผ่านไปที่ function nodes
เพื่อดึงข้อมูลที่ต้องการนั่นคือ val และ thing ทำการสร้างวันที่ เวลาปัจจุบัน เก็บค่าไว้ที่ตัวแปร date
และปรับสภาพของข้อมูลด้วย template nodes ก่อนการบันทึกลงไฟล์ด้วย file node

เพียงเท่านี้เราก็สามารถบันทึกข้อมูลทุกครั้งที่มีการเปลี่บยแปลงค่าของ thing
คราวนี้เราได้วิธีการเพิ่ม dweetio nodes ซึ่งเป็นวิธีการมาตรฐาน
ฝากเรื่องไว้ว่าจะทำอย่างไร ถ้าต้องการบันทึกข้อมูลตามคาบเวลา แทนที่จะรอการกระตุ้น น่าจะนำเอา
dweetio out มาช่วยครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น