Saturday, February 20, 2016

LinkIt Smart 7688 - เรียกใช้งาน ntp-client ใน Node.js

LinkIt Smart 7688 เป็นคอนโทรลเลอร์ที่ถือว่าดีตัวหนึ่ง ถึงแม้ผู้เขียนยังไม่ได้ใช้งานทั้งหมด หรือรู้ทะลุปรุโปร่ง แต่ก็พยายามศึกษาค้นคว้าและจดบันทึกไว้ก่อน เพื่ออ้างอิงหรือต่อยอดภายหลัง

ช่วงระหว่างรอซื้อ Smart 7688 Duo เพื่อเอามาพัฒนาระบบงานโดยรับค่าผ่านทาง Arduino ก็ลองศึกษา Node.js ไปด้วยเพื่อเตรียมงานไปในตัว

วัตถุประสงค์ของการสแกนลายนิ้วมือของระบบ Time Attendance นั้นก็เพื่อป้องกันไม่ให้ทุจริตตอกบัตรแทนกันนั่นเอง แต่การทำงานผ่านระบบคอมพิวเตอร์ก็มีเรื่องของการเปลี่ยนแปลงข้อมูลได้เช่นกัน ที่ชัดเจนที่สุด คือ เปลี่ยนแปลงเวลาในเครื่อง หรือแม้แต่การปลอมแปลงข้อมูลก่อนส่งเข้าไปเก็บที่เซิร์ฟเวอร์


แต่โชคดีที่ระบบเน็ตเวิร์กสามารถกำหนดเวลาจากเซิร์ฟเวอร์ได้ ซึ่งถ้าจะผิดก็ต้องผิดมาจากต้นทางนั่นเอง

การเรียกใช้เวลาจากเซิร์ฟเวอร์นั้นวิธีที่ดีที่สุดก็ เป็นการอ้างอิงจากเซิร์ฟเวอร์ที่ให้บริการทางด้านเวลา เรียกว่า NTP Server ในประเทศไทยมีหลายแห่ง ลองค้นหาจากอินเตอร์เน็ตดู

ใน Node.js มีโมดูลหนึ่งชื่อ ntp-client สำหรับเชื่อมต่อไปยัง ntp server เพื่อขอเวลามาตรฐาน การใช้งานให้ติดตั้งโมดูลด้วยคำสั่ง

npm install ntp-client
และ

npm install colors 
 (โมดูลนี้ไม่เกี่ยวกับเวลา แต่เป็นตัวจัดการสีที่จะแสดงออกทาง Console เพื่อให้ดูสวยงาม)

หลังจากติดตั้งเสร็จแล้วก็เรียกใช้ด้วยคำสั่งง่ายๆ ดังนี้

var ntpClient = require('ntp-client');
var color = require('colors');
ntpClient.getNetworkTime("ntp.ku.ac.th", 123, function(err, date) {
    if(err) {
        console.error(err);
        return;
    }
    console.log("Current time : ");
    console.log("System  time: %s".blue, new Date()); // Mon Jul 0
    console.log("Network time: %s".green, date);
});

บรรทัดแรกเรียกใช้โมดูล ntp-client
บรรทัดที่สองเรียกใช้โมดูล colors
บรรทัดที่สามรับเวลาจาก ntp.ku.ac.th ผ่าน port 123 (udp)

เมื่อได้ข้อมูลแล้วก็เขียนไปที่ Console โดยแสดงวันที่ระบบ หรือวันที่ของเครื่องใช้ฟังค์ชัน new Date() แสดงเป็นสีน้ำเงิน และแสดงวันที่ที่ได้จาก ntp ผ่านตัวแปร date ได้มาจาก Anonymous Function ตอนส่งคำสั่งร้องขอไปที่ ntp server 

ผลลัพธ์ที่ได้ดังในรูป

เวลาในเครื่องเป็นวันที่ 20 เวลา 11.38 นาที แต่เวลาจริงที่ได้จาก ntp เป็น 14.06 วันเดียวกัน

จากตัวอย่างนี้เราสามารถนำเอาเวลา ntp server มาใช้งานได้ อาจจะเอาไว้ส่งโดยตรงหรือแก้ไขเวลาในเครื่องโดยตรงก็ทำได้ (จะนำมาบันทึกไว้ภายหลัง)

ถึงตอนนี้ระบบสแกนลายนิ้วมือก็มีวิธีการ ดึงเวลาจาก ntp server แล้ว และจะคิดระบบที่เกี่ยวข้องอื่นๆ ต่อไป...



No comments:

Post a Comment