หลายๆท่านคงได้ยินคำว่า IoT (Internet of things) กันมาบ้างแล้ว เกี่ยวกับอุปกรณ์ที่สามารถนำเข้าหรือส่งออกข้อมูลจากอินเตอร์เน็ตได้ บทความนี้จะเป็นตัวอย่างการนำความเป็น IoT มาแสดงกันแบบเจาะลึกไปในการใช้บริการ API (Application programming interface) ของผู้ให้บริการต่างๆ เช่น ดึงสภาพอากาศ ดึงเวลาและวันที่ ดึงค่าเงินสกุลต่างๆ ดึงแผนที่จาก google map ดึงค่าคุณภาพอากาศอย่าง pm2.5 และอีกมากมายหลากหลายผู้ให้บริการ
ซึ่งหลายๆผู้ให้บริการมักจะมีข้อมูลให้ใช้ในรูปแบบของ JSON ซึ่งเป็นรูปแบบการจัดข้อมูลแบบที่เป็นมิตรกับผู้ใช้กว่าแบบ XML ลองดูตัวอย่างข้อเปรียบเทียบครับ จะเห็นว่า ข้อมูลในรูปแบบ JSON ทำควมเข้าใจได้ง่ายและสั้นกว่า แถมยังสะดวกในการแกะข้อมูลโดยใช้คอมพิวเตอร์ด้วย

โดยในบทความนี้ จะยกตัวอย่างการดึงข้อมูลสภาพอากาศโดยใช้ ESP8266 ดึงข้อมูลจาก
openweathermap ซึ่งให้ข้อมูลแบบ JSON กันครับ
สมัครสมาชิก และรับ API key ( หรือ token key)
เริ่มแรกโดยการเข้าไปยังหน้าบริการ API ของเว็ปไซต์
https://openweathermap.org/apiบริการของ openweathermap จะมีทั้งบริการที่ให้บริการฟรี และบริการที่ต้องเสียเงินรายเดือน
โดยในส่วนของการระบุสภาพอากาศแต่ละเมือง จะเป็นบริการฟรี แต่จำกัดการเรียกอยู่ที่ 60 ครั้งต่อนาทีแต่หากมีการทำนายข้อมูลสภาพอากาศล่วงหน้ารายวัน ก็จะเป็นบริการที่ต้องเสียเงินรายเดือนครับ ลองดู service ของเว็ปนี้ได้จากตารางข้างล่าง

ส่วนที่สำคัญในการขอรับข้อมูลจากผู้บริการคือการขอ token key หรือ api key ซึ่งจะเป็นตัวระบุตัวตนของผู้ใช้ข้อมูล คล้ายๆเป็น username พร้อม password ของเราครับ หลังจากที่เราเข้าไปยังเว็ปไซต์ ให้กดสมัครสมาชิก (Sign up)

ใส่รายละเอียดต่างๆรวมทั้ง email

หลังจากกดยืนยันข้อตกลง ก็จะมี email มาให้พร้อม API key ที่เราจำเป็นต้องใช้ในการดึงข้อมูลกันครับ ให้เราเก็บ key ตรงนี้ไว้ เพื่อใช้ในโปรแกรมของเรากัน

หลังจากได้ api key ให้เราลองนำ api key ใส่ท้ายในลิ้งข้างล่าง
http://api.openweathermap.org/data/2.5/weather?q=phuket&units=metric&appid=ใส่APIKEYตรงนี้
เราจะได้ข้อมูลของจังหวัดภูเก็ต ซึ่งเป็น format แบบ JSON แต่ด้วยผมเปิดกับ google chrome เดิมๆไม่ได้รองรับการจัดระเบียน format นี้ สำหรับผู้ใช้ chrome เหมือนกันให้ลองติดตั้ง google extension ตัวนี้ครับ
https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh/related?hl=thเมื่อติดตั้งเรียบร้อย กด refresh ในหน้าแสดงข้อมูล json จะพบว่ามีการจัดระเบียบให้ดูเข้าใจง่ายมากขึ้น

ในรูปแบบนี้ เราจะสามารถเข้าใจได้ทันทีว่า object ไหนเป็น element ของ object ไหน เพื่อให้เราสามารถดึงข้อมูลได้ง่ายขึ้น เช่น ถ้าเราอยากรู้อุณหภูมิ ซึ่งคือ temp จะเห็นว่าอยู่ภายใต้กรอบของ main นั่นเอง
หรือถ้าไม่อยากติดตั้ง plugin ก็สามารถ copy ข้อความ json ทั้งหมดไปใส่ในเว็ปนี้ก็ได้เหมือนกันครับ
https://jsonformatter.curiousconcept.com/ในตอนต่อไปจะนำข้อมูลเหล่านี้ลงไปใน ESP8266 เพื่อนำไปแสดงใน Serial monitor หรือ display อื่นๆ
หวังว่าคงมีประโยชน์ไม่มากก็น้อย ใครที่ทำได้ทำไม่ได้ยังไง แชร์ให้ทราบกันในช่อง comment ได้นะครับ 
ตอนที่ 2 สามารถดูได้ที่
https://www.modulemore.com/article/8/เปลี่ยนอุปกรณ์-iot-ให้เป็นสถานีกรมอุตุนิยมวิทยา-ตอน-2
ธนบดี บุหลันศรีชาติ
ผู้เขียน
Reference.
https://www.educba.com/json-vs-xml/