วันพฤหัสบดีที่ 25 พฤษภาคม พ.ศ. 2560

ส่งค่าข้อมูลจาก ESP8266(HDC1080) ไปยัง Google Sheets ผ่าน PushingBox API

ส่งค่าจาก ESP8266(HDC1080) ไป Google Sheets ผ่าน PushingBox API

ในบล๊อกนี้เราจะพาไปสู่การเขียนโปรแกรมและการเตรียม Google Sheet เพื่อรับค่าที่จะถูกส่งมาจาก ESP8266

  • อย่างแรกเลยคือให้เราล๊อกอิน Gmail ของเรา แล้วเข้าไปจัดการเอกสารของเรา

  • เมื่อเข้ามาตอนแรกจะอยู่ที่เอกสารให้เราเลือกไปจัดการที่ "ซีต"


  • เมื่อเข้ามาในซีตก็ให้เราสร้างไฟล์ใหม่ แล้วเก็บ URL ที่อยู่ระหว่าง /d/ กับ /edit เสร็จแล้วให้เราไปที่ "เครื่องมือ > โปรแกรมจัดการสคริป"

  • Copy โค้ดส่วนนี้แล้วนำไปวาง แล้วแก้ไข ในส่วนของ var id = '  ';  โดย id มาจากส่วนของ URL ตามภาพข้างบนมาใส่



  • เมื่อแก้ไขเรียบร้อยแล้วให้เราบันทึกโค้ดส่วนนี้ : File > Save All
  • แล้วให้เราเผยแพร่เป็นเว็บแอป โดยไปที่ เผยแพร่ > ใช้งานเป็นแอปพลิเคชั่นเว็บ...


  • จะมีหน้าต่างขึ้นมาเด้งขึ้นมา ให้เราเก็บ URL ของเว็บแอปพลิเคชั่นนี้เอาไว้
    • ในส่วนของการเรียกใช้แอปพลิเคชั่น ให้เปลี่ยนเป็น ฉัน(YOU_EMAIL)
    • ในส่วนของใครสามารถเข้าถึงแอปพลิเคชั่น ให้เปลี่ยนเป็น ทุกคน รวมถึงผู้ใช้ไม่ระบุชื่อ


          เสร็จสิ้นกันไปกับการเตรียมการในส่วนของ Google Sheet ต่อไปเราจะไปเตรียมการที่ PushingBox.com เข้าไปก็ให้เราทำการสมัคร PushingBox account ด้วย Gmail ของเราไปเลย
  • ขั้นตอนแรกใน PushingBox ของเรา ให้เราไปที่ My Service แล้วให้เราเลิอก Add a service > CustomURL  


  • จะเด้งหน้าต่างนี้ขึ้นมา เราก็ทำการตั้งชื่อไปเลย ส่วน Root URL นั้น มาจาก URL ที่ไว้ติดต่อกับ
    เว็บแอปพลิเคชั่น ที่ได้ให้เก็บเอาไว้ในก่อนหน้านี้


  • หลังจากนั้นให้ไปที่หน้า My Scenario แล้วทำการตั้ง Scenario ตรงกล่อง Create a scenario or add a device แล้วจะได้หน้าตามตัวอย่างข้างล่างออกมา
  • แล้วกดปุ่ม Add an Action แล้วเลือก Service ที่จะเชื่อมต่อ แล้วให้ใส่
    ?humidityData=$humidityData$&tempData=$tempData$ ลงไปในกล่อง Data


ก็เสร็จสิ้นกันไปกับการเตรียมการใน PushingBox API แล้วถ้าหากว่า เราต้องการทดสอบว่า ที่เราเตรียมมาทั้งหมดนั้น ใช้งานได้หรือไม่ ให้เราพิมพ์
http://api.pushingbox.com/pushingbox?devid=(YOUR-DEV_ID)&humidityData=56&tempData=28
ไปในช่อง URL ข้อมูลก็จะไปเด้งใน Google Sheet แล้ว


       หลังจากเสร็จสิ้นทุกส่วนแล้ว ต่อไปเราจะจัดการนำโค้ดส่วนนี้ไปใส่เอาไว้ใน ESP8266 เพื่อติดต่อ PushingBox ให้ส่งข้อมูลไปยัง Google Sheet เปลี่ยน devid ตาม Devid ใน My Scenario



อ่านค่าอุณภูมิความชื้น(HDC1080) ส่งไป Thing Speak


          Thinkspeak คืออะไร

          Thingspeak เป็นเว็ปที่ให้การบริการ PaaS สำหรับ Internet of Thing มีบริการ Open API เชื่อมต่อกับอุปกรณ์ผ่าน REST API, บริการในการเก็บข้อมูล และสามารถแสดงข้อมูลแบบ real-time, แสดงข้อมูล geolocation, ประมวลผลข้อมูล, แสดงข้อมูลกราฟ, สถานะของอุปกรณ์ และ plugins เสริมสำหรับเชื่อมต่อกับบริการอื่นๆ เช่น Google Chart ได้ 
           ซึ่งเราสามารถ update ข้อมูล หรือจะเรียกดูข้อมูลได้ตลอดเวลา ที่ไหนก็ได้ เพราะทำงานบน cloud ซึ่ง thingspeak สร้างมาเพื่อต้องการให้ตอบโจทย์ของ IoT อยู่แล้ว ส่วนข้อมูลที่เก็บอยู่บน cloud นั้นก็ขึ้นอยู่กับเราว่าจะใช้ยังไง รูปแบบไหน ในการจะส่งข้อมูล data ไปไว้บน cloud ทาง thingspeak มี api ในการติดต่อไว้เรียบร้อยแล้ว 
https://thingspeak.com/

เปิดใช้งาน Thingspeak

    • อันดับแรกคือจะต้องสมัครสมาชิกใก้เรียบร้อยก่อน
    • จากนั้นก็สร้าง channel ขึ้นมา โดยกดไปที่ My Channels แล้วกด New Channel
    • หลังจากที่ New Channel ขึ้นมาแล้ว ก็ป้อนข้อมูลเข้าไป
    • อย่าลืมติก Make Public
    • เสร็จแล้วกด Save Channel
    • เมื่อสร้างเสร็จแล้ว จะแสดงหน้าต่างที่มีการแสดงข้อมูลเป็นแบบกราฟ ซึ่งตอนนี้ไม่มีข้อมูลเพราะยังไม่มีข้อมูลใดๆ ถูกส่งมา


การ Update ข้อมูลไปยัง Cloud ผ่าน API ของ thingspeak

  • เราต้องเข้าไปดู API Keys ของเราก่อน
    • Write API Key          I6MPC6303SSADW9W
    • Read API Key           XIIN62C9O0NOYTQQ

  • ในการ update ข้อมูล จะเป็นการส่ง HTTP Request ไปยัง server เพื่อ update ข้อมูลที่ต้องการตาม field ต่าง ๆ ที่เรากำหนดเอาไว้ วีธีการ update จะส่งข้อมูลแบบนี้
                 https://api.thingspeak.com/update?key=I6MPC6303SSADW9W&field1=0
  • มาดูผลลัพธ์ได้ที่แถบ Private View


โค้ดสั่ง Arduino ส่งค่าขึ้นไป Thinkspeak

นำโค้ดข้างล่างนี้ไปแก้ไข SSID , PASSWORD , CHANNEL_NUMBER , API_KEY แล้วโหลดลงไปในบอร์ดก็จะสามารถส่งค่าข้อมูลขึ้น Thingspeakได้เรียบร้อย

อ้างอิง

วีดีโอต้นฉบับ : https://www.youtube.com/watch?v=_ZF71GhXCjc&feature=youtu.be