การเขียนข้อมูลลงใน FEED
การเขียนข้อมูลเพื่อเก็บใน Feed มี 2 วิธี ดังนี้
วิธีที่ 1 ใช้ REST API (ข้อมูลและการใช้งานโดยละเอียดของ REST API อยู่ในบทที่ 7)
REST API สามารถเรียกผ่าน Command Line ได้โดยใช้โปรแกรม curl ซึ่งเป็น HTTP Client แบบ Command Line ที่นักพัฒนานิยมใช้กันมาก ในระบบปฏิบัติการ Mac OSX และ Linux โปรแกรมนี้จะถูกติดตั้งมาแบบพร้อมใช้งานอยู่แล้ว เพียงแค่เปิด Terminal ก็สามารถพิมพ์คาสั่งได้เลย แต่สาหรับ Windows อาจต้องติดตั้งโปรแกรมเพิ่ม โดยสามารถดาวน์โหลดได้จาก https://curl.haxx.se/download.html
การเขียน Feed ผ่าน REST API จะต้องกระทาโดยใช้ API Key ควบคู่กันไปด้วยเสมอ และมีรูปแบบคำสั่งที่เรียกผ่าน curl บน Terminal ดังนี้ (เครื่องหมาย$ ไม่ต้องพิมพ์ลงไป ใส่ไว้เพื่อสื่อว่าเป็น Command Line)
$ curl -X PUT "https://api.netpie.io/feed/<FEEDID>?apikey=<APIKEY>&data=<DATA>"
ตัวอย่างการส่งค่า temp = 25.2 และ humid = 62.5 ไปเขียนที่ Feed ชื่อ mysensor จะใช้คาสั่งดังนี้
$ curl -X PUT "https://api.netpie.io/feed/mysensor?apikey=5DunZ38nKP5dGC0h4Bj7mXyeMURdoXOo&data=temp:25.2,humid:62.5"
เมื่อพิมพ์เสร็จให้กด Enter หากไม่มีข้อผิดพลาด จะมีข้อความขึ้นมาดังนี้ {“code”:200,”message”:”Update OK”}
เมื่อกลับไปดูที่หน้า Feed เราจะเห็นจุดข้อมูลปรากฏขึ้นมาแบบนี้ข้อที่ควรระวังคือ ชื่อ Field ข้อมูลในคาสั่ง (temp และ humid) จะต้องตรงกับชื่อ Field ที่ได้สร้างรอเอาไว้บน Feed เพื่อให้ข้อมูลถูกจัดเก็บสาเร็จ
รูปแสดงการสร้างข้อมูลไปเก็บใน Feed ด้วย command curl
วิธีที่ 2 ใช้ Microgear Function
สำหรับอุปกรณ์ที่ต่อ NETPIE ผ่าน Microgear Library อยู่แล้ว สามารถส่งค่าเข้าไปใน Feed ผ่าน Real-time Message ได้เลยโดยใช้ฟังก์ชั่น microgear.writeFeed() ซึ่งจะมีใน Library ปัจจุบันทุกภาษาของ NETPIE อยู่แล้ว (หากไม่มีโปรดอัพเดทให้เป็นเวอร์ชั่นล่าสุด) การเขียน Feed ด้วย Microgear นี้ ในกรณีที่เราได้ให้สิทธิ์กับ AppID ไว้แล้ว ก็ไม่จำเป็นต้องใส่ API Key ลงไปรูปแบบการใช้ฟังก์ชั่นมีดังนี้
microgear.writeFeed("<FEEDID>","<DATA>")
โดยที่ DATA เป็น String ที่มีลักษณะเดียวกับ REST API ดังตัวอย่างนี้
microgear.writeFeed("mysensor","temp:25.2,humid:62.5")
ส่วนของ DATA นอกจากรองรับ String รูปแบบดังกล่าวแล้ว เรายังสามารถส่ง String ที่แปลงมาจาก json ได้ด้วย เช่น “{\”temp\”:25.2,\”humid\”:62.5}” หรือหากเป็น Node.js หรือ Javascript เรายังสามารถส่งตัวแปรที่มี Type เป็น Object ได้เลยโดยไม่ต้องแปลงเป็น String ก่อน
ในกรณีที่เรายังไม่ได้ให้สิทธิ์กับ AppID ฟังก์ชั่นข้างต้นจะได้รับข้อความ Error ว่าไม่มีสิทธิ์เขียน Feed จึงต้องใส่ API Key ลงไปในฟังก์ชั่นด้วยซึ่งจะเหมาะกับกรณีที่ต้องการให้มีเฉพาะอุปกรณ์เพียงบางตัวเท่านั้นที่สามารถเขียน Feed ได้ รูปแบบการเรียกจะเป็นตามนี้
microgear.writeFeed("<FEEDID>","<DATA>","<APIKEY>")
ซึ่งตัวอย่างการใช้จริงจะอยู่ในรูปแบบดังนี้
microgear.writeFeed("mysensor","temp:25.2,humid:62.5","5DunZ38nKP5dGC0h4Bj7mXyeMURdoXOo")
และทุกครั้งที่เราส่งค่าเข้าไปที่ Feed ไม่ว่าสาเร็จหรือไม่ จะมี Message ตอบกลับมาทาง Event Info หรือ Error เสมอ เราสามารถเช็คสถานะการเขียน Feed ได้จากการรับ Event info และ Error ซึ่งลักษณะการเรียกใช้จะแตกต่างกันเล็กน้อยตามรูปแบบภาษาของ Library ที่ใช้งาน รายละเอียดเพิ่มเติมสามารถศึกษาได้ในส่วนอธิบาย Events ของเอกสาร readme ใน Microgear Library แต่ละภาษา