โดยปกติแล้ว คนส่วนใหญ่ที่ทำโปรเจค IoT จะคุ้นเคยกับการใช้ HTML5 Microgear Library เพื่อควบคุมหรือออกคำสั่งให้กับอุปกรณ์ IoT แต่วันนี้เราจะมาใช้ NETPIE Freeboard กันแทน
Freeboard คือ Web Application ที่ให้เราสร้างเป็น Dash Board เพื่อใช้สำหรับ IoT ซึ่งเปรียบเสมือนกับกระดานสำหรับแสดงผลหรือออกคำสั่ง IoT ของเราโดยเฉพาะเลย ภายใน NETPIE Freeboard จะสามารถลาก, จับ, วางวัตถุเช่น ปุ่มหรือกราฟได้เลย ซึ่งงานกว่า HTML5 ที่ต้องเขียนโค้ดขึ้นมาเอง
งั้นเริ่มกันเลยดีกว่า....
ขั้นที่ 1 เตรียมความพร้อมฝั่งอุปกรณ์ (Hardware)
อุปกรณ์ที่เราจะใช้คือ
- ESP8266 ซึ่งในตัวอย่างนี้ผมจะใช้ Espresso Lite v2.0 ของ Espert
- Breadboard (Protoboard)
- FTDI สำหรับอัพโหลดโค้ด ในตัวอย่างผมจะใช้ FT232
- LED
ให้เราทำการต่อ LED โดยขาขั้วบวก(ขายาว)กับ Digital PIN และต่อขั้วลบ(ขาสั้น)เข้ากับ GRN PIN (ขา Ground) ดังภาพ
และนี้คือโค้ดสำหรับ ESP8266 นะครับ
(Update URL Date: 02 Feb 2022)
https://drive.google.com/file/d/0BwEHsMXKRHHlUHBDbDZWWGxKeUk/view?usp=sharing&resourcekey=0-hGgsjZI0ZvOveXVrLTu9UA
หลังจากนั้นเราก็สร้าง Application ID ใน NETPIE.io และนำค่าต่างๆใส่เข้าไปในโค้ดทั้ง AppID, Key, Secret, Alias
(สำหรับใครที่ยังสร้าง AppID, Key, Secret ไม่เป็น ให้มาอ่านที่ตรงนี้ได้ครับ http://kongrawi.blogspot.com/2016/07/netpieio-esp8266.html )
APP ID
(สำหรับใครที่ยังสร้าง AppID, Key, Secret ไม่เป็น ให้มาอ่านที่ตรงนี้ได้ครับ http://kongrawi.blogspot.com/2016/07/netpieio-esp8266.html )
APP ID
แล้วนำโค้ดนี้เอาอัพโหลดใน ESP8266 (อย่าลืมเปลี่ยน SSID กับ Password ด้วยนะครับ)
เมื่ออัพโหลดเสร็จให้ลองดูที่ Serial Monitor (Ctrl+Shift+M)
ขั้นที่ 2 เตรียมความพร้อมฝั่ง NETPIE Freeboard
เริ่มแรกให้เราดาวน์โหลด NETPIE Freeboard ที่เว็บนี้ https://github.com/netpieio/netpie-freeboard
ซึ่งหลังจากแตกไฟล์แล้วจะเจอไฟล์ต่างๆจำนวนมากทั้ง HTML และ JavaScript ที่ทางทีมพัฒนา NETPIE ได้ทำไว้ให้แล้ว
ตัว NETPIE Freeboard นั้นเป็น Web Application ซึ่งสามารถเปิดได้ด้วย Web Browser (IE, Google Chrome, Firefox) ให้เราเปิดไฟล์ index.html จะเจอหน้าดังภาพ
หลังจากเราเปิด NETPIE Freeboard ขึ้นมา ซึ่งก่อนที่เราจะลงมือทำมารู้จัก Data Source ก่อนดีกว่าครับ
NETPIE Freeboard เป็นหน้าเว็บที่ไว้แสดงข้อมูลๆต่างๆ ซึ่งตัวอุปกรณ์ (Thing) ภายใน App ID เดียวกันจะมีการส่งข้อมูลสื่อสารกันด้วยการ chat เช่น ค่าอุณหภูมิหรือค่าความชื้น รวมไปถึงก็กดปุ่มออกคำสั่งต่างๆ โดยตัว Freeboard ทำหน้าที่เป็น Thing ตัวหนึ่งเช่นกันเพื่อไว้สื่อสารกับอุปกรณ์อื่นๆหรือรับข้อมูลมาจาก Things อื่นๆด้วยเช่นกัน เพราะงั้นจึงต้องมี Data Source เพื่อเป็นตัวกลางในการรับส่งข้อมูล
ตัว NETPIE Freeboard เองมี NETPIE Microgear เป็น Data Source ซึ่งที่จริงแล้ว Data Source นั้นมีหลากหลายประเภทให้เราเลือกใช้เช่น JSON, Payback, Clock เป็นต้น
ในตัวอย่างนี้ผมจะทำด้วย NETPIE Microgear นะครับ
เริ่มสร้าง Data Source
ให้เรากดปุ่ม ADD ที่ด้านบนขวาในส่วนของ Data Source
หลังจากเราเปิด NETPIE Freeboard ขึ้นมา ซึ่งก่อนที่เราจะลงมือทำมารู้จัก Data Source ก่อนดีกว่าครับ
NETPIE Freeboard เป็นหน้าเว็บที่ไว้แสดงข้อมูลๆต่างๆ ซึ่งตัวอุปกรณ์ (Thing) ภายใน App ID เดียวกันจะมีการส่งข้อมูลสื่อสารกันด้วยการ chat เช่น ค่าอุณหภูมิหรือค่าความชื้น รวมไปถึงก็กดปุ่มออกคำสั่งต่างๆ โดยตัว Freeboard ทำหน้าที่เป็น Thing ตัวหนึ่งเช่นกันเพื่อไว้สื่อสารกับอุปกรณ์อื่นๆหรือรับข้อมูลมาจาก Things อื่นๆด้วยเช่นกัน เพราะงั้นจึงต้องมี Data Source เพื่อเป็นตัวกลางในการรับส่งข้อมูล
ตัว NETPIE Freeboard เองมี NETPIE Microgear เป็น Data Source ซึ่งที่จริงแล้ว Data Source นั้นมีหลากหลายประเภทให้เราเลือกใช้เช่น JSON, Payback, Clock เป็นต้น
ในตัวอย่างนี้ผมจะทำด้วย NETPIE Microgear นะครับ
เริ่มสร้าง Data Source
ให้เรากดปุ่ม ADD ที่ด้านบนขวาในส่วนของ Data Source
เลือก Type เป็น NETPIE Microgear
จากนั้นให้เราใส่ข้อมูลต่างๆลง
ซึ่งในส่วนของ Device Alias และ Microgear Reference นั้นก็เปรียบเสมือนตัวแทนของแต่ละอุปกรณ์ซึ่งจะเป็นชื่อที่เราไว้ติดต่อกันระหว่าง Things ซึ่ง Device Alias เป็นตัวแทนของ Freeboard ที่มีอ้างอิงตอนรับข้อความจาก ESP8266 และ Microgear Reference ก็เป็นตัวแทนของ Freeboard ในการส่งข้อความไปหา ESP8266 ครับ
จากนั้้นก็กด Save ครับ
แล้วเราก็ไปเพิ่มค่าให้ในโค้ดของ Arduino IDE ด้วยนะครับ
ขั้นที่ 3 สร้างปุ่มใน panel
ตอนนี้เราก็มี Thing 2 แล้วนะครับที่ AppID เดียวกันนั้นคือ NETPIE Freeboard และ ESP8266 ซึ่งตอนนี้ NETPIE.io จะทำให้อุปกรณ์สองตัวนี้ ทีนี้เราต้องการให้ตัว freeboard สามารถสั่งให้ตัว LED ของเราเปิดปิดไฟได้ ดังนั้นเราจึงต้องมีปุ่มเพื่อที่ chat ไปหา ESP8266 ว่าให้เปิด-ปิดไฟ
เริ่มด้วยการกดปุ่ม Add Pane ทางด้านซ้าย จะมี Pane เปล่าๆขึ้นมา
จากนั้นให้เรากด + เพื่อที่จะเพิ่ม Widget (ปุ่มหรือกราฟแสดงผล) เมื่อกดแล้วจะเจอหน้าต่าง Widget ขึ้นมา
ให้เราเลือก Type เป็น Button
จากนั้นให้ข้อมูลต่างๆให้กับปุ่มตามภาพ
(ในตัวอย่างนี้เราจะไม่ได้ใช้ ONCREATED ACTION นะครับ ปล่อยว่างได้เลย)
ตัวอย่างภาพปุ่ม ON (เปิดไฟ)
ทีนี้เรามีดูในส่วนของ Java Script ซึ่งจะเป็นโค้ดที่เราเอาไว้ส่งข้อมูลไปหา ESP8266 จากบน NETPIE Freeboard โดยตัวโค้ดนั้นจะมีลักษณะดังนี้
microgear["ชื่อผู้ส่งนั้นคือ Microgear Reference"].chat("ชื่อผู้รับนั้นคือ Alias","ข้อความ")
ตัวชื่อ Microgear Reference ก็คือ ชื่อผู้ส่งนั้นคือ free_mg1 ที่เราเคยใส่ใน Data Source
ส่วน Alias คือ ชื่อที่เราตั้งไว้ให้กับอุปกรณ์ของเรา
และข้อความก็คือคำสั่งที่เป็น String หรือข้อความที่ส่งไปหาตัว ESP8266 นั้นเอง ในที่นี้จะมีแค่คำสั่ง ON และ OFF เท่านั้น (เปิดไฟกับปิดไฟ)
microgear["free_mg1"].chat("lednode555","ON")
ซึ่งความหมายของ Java Script นี้คือให้ free_mg1 (ตัว NETPIE Freeboard) ส่งข้อความ "ON" ไปหา lednode555 (ตัว ESP8266)
จากนั้นเราก็สร้างปุ่มปิดไฟหรือ OFF ครับ โดยให้กดปุ่ม + เพื่อเพิ่มปุ่ม
ดังนั้นเ
ขั้นตอนเหมือนเดิมกับตอนทำปุ่ม ON เลยครับ แค่เราเปลี่ยนในส่วนของ Java Script จาก
.chat("lednode555","ON") เป็น .chat("lednode555","OFF") แทน
จากนั้นกด Save ก็จะได้ปุ่ม OFF มาครับ
เมื่อเราสามารถเปิดสั่งไปหาตัวบอร์ดให้เปิดไฟได้แล้ว แต่เราอยากจะเช็คว่าไฟเปิดได้รึเปล่า ดังนั้นเราจึงต้องมีตัวเช็คการเปิดปิดไฟนั้นคือ Indicator Light
ให้เรากด + ที่บน pane เหมือนเดิม แล้วเลือก Indicator Light
จากนั้นใส่ข้อมูลต่างๆลงไป
1. กด + ที่ Datasource
2. เลือก datasource
3. หลังจากเราเลือก datasource แล้ว จะมี Alias ให้เราเลือก ซึ่งมันหมายถึงให้เราเลือกว่าจะให้ Alias ไหนเป็น "ตัวรับค่า" จาก ESP8266 มา ให้เราเลือก free_ledtest ซึ่ง Device Alias ที่เราสร้างไว้ใน datasource เพื่อรับข้อความนั้นเอง
4. จากนั้นให้เราเข้า JS Editor จะเจอโค้ดนี้
ซึ่งทั้งโค้ดในรูปข้างบนนี้คือ 1 ตัวแปร นั้นคือ free_ledtest ครับ
5. การเช็คค่า Value จะเช็คจากการเป็นจริงหรือเท็จครับ ซึ่งในโค้ดนี้ต้องการให้ใส่เงื่อนไขที่เป็นจริงครับ เพื่อให้ Indicator Light บอกว่าเปิดไฟได้ ให้เราทำการเติม =="ON" ต่อท้ายไปครับ
กล่าวคือ เมื่อเรากดปุ่ม ON ไป free_mg1 จะส่งข้อความ ON ไปให้ lednode555 จากนั้น lednode555 ก็จะส่งข้อความ ON กลับไปหา free_ledtest เพื่อบอกว่าไฟเปิดแล้ว ซึ่งจะมีเงื่อนไขตรงกับ java script ตามภาพบนครับ จะทำให้ Indicator Light แสดงสถานะเปิดไฟได้นั้นเอง แต่ในทางกลับกัน ถ้าเรากดปุ่ม OFF จะทำให้ free_ledtest ส่งข้อความ OFF กลับมาแทน ทำให้ไม่ตรงเงื่อนไขและ Indicator Light จะแสดงสถานะปิดไฟ
จากนั้นกด close แล้วก็กด save ครับ
เพียงเท่านี้ก็เป็นอันเสร็จสิ้นครับ เราก็สามารถเปิด-ปิดไฟจาก NETPIE Freeboard ได้เรียบร้อยแล้วครับ