Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore คู่มือการใช้ NETPIE

คู่มือการใช้ NETPIE

Published by Chalermkiat Deesom, 2019-01-14 02:37:53

Description: NETPIE Where thing chat

Keywords: คู่มือการใช้ NETPIE,NETPIE Where thing chat

Search

Read the Text Version

Lab 7.2: HTML  NodeMCU ในการทดลองนีจ้ ะให้เบราว์เซอร์สื่อสารกบั Microgear บน NodeMCU ผา่ น REST API 1. ใช้ไฟล์ SetLampStatus.html จาก Lab 7.1 แก้ไข URL สาหรับ PUT ให้อยใู่ นรูปแบบ https://api.netpie.io/microgear/appid/alias?retain&auth=KEY:SECRET โดย alias คอื ช่ือที่เราตงั้ ให้กบั NodeMCU Microgear ให้ใช้ตามที่เราเคยตงั้ ให้ Node MCU ในLab 4.2 ในไฟล์ pieled.ino ใช้ alias วา่ pieled 2. เนื่องจากเราจะใช้ไฟล์ pieled.ino จาก Lab 4.2 แตเ่ ราตงั้ เงื่อนไขไว้ให้ NodeMCU รอรับ ข้อความ 1 หรือ 0 จงึ ต้องแก้ฟังก์ชนั่ PressButtonOn และ PressButtonOff ในไฟล์ SetLampStatus.html ให้สง่ คา่ 1 และ 0 แทน ON และ OFF ตามลาดบัSetLampStatus.html<html><body><script> var APPID= “YOURAPPID.”;// enter your appid var KEY =“YOURKEY”;// enter your key var SECRET =“YOURSECRET”;// enter your secret var ALIAS = “pieled”;// same alias you set on NodeCMU function PressButtonOn(){ var url ='https//:api.netpie.io/microgear/'+APPID+ALIAS+'?retain&auth='+KEY+':'+SECRET; var xmlHttp =new XMLHttpRequest(); xmlHttp.open('PUT',url,true); xmlHttp.send('1'); window.alert(url);//for debugging purpose } function PressButtonOff(){ var url ='https//:api.netpie.io/microgear/'+APPID+ALIAS+'?retain&auth='+KEY+':'+SECRET; var xmlHttp =new XMLHttpRequest(); xmlHttp.open('PUT',url,true); xmlHttp.send('0'); window.alert(url);// for debugging purpose คูม่ ือการใชง้ าน NETPIE - 101

}</script><center><button onclick= “PressButtonOn()” id = “ButtonOn”>ON</button><button onclick= “PressButtonOff()” id = “ButtonOff”>OFF</button></center></body></html> 3. อพั โหลดโค้ด pieled.ino (เหมือนใน Lab 4.2) ลงใน NodeMCUpieled.ino#include <ESP8266WiFi.h>#include <MicroGear.h>const char* ssid = \"SSID\"; //change this to your SSIDconst char* password = \"PASSWORD\"; //change this to your PASSWORD#define APPID \"APPID\" //change this to your APPID#define KEY#define SECRET \"KEY\" //change this to your KEY \"SECRET\" //change this to your SECRET#define ALIAS \"pieled\"WiFiClient client;int timer = 0;MicroGear microgear(client);void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) { // Serial.print(\"Incoming message -->\"); msg[msglen] = '\0';Serial.println((char *)msg); if(*(char *)msg == '1'){ digitalWrite(LED_BUILTIN, LOW); // LED on microgear.chat(\"switch\",\"1\"); }else{ คูม่ ือการใชง้ าน NETPIE - 102

digitalWrite(LED_BUILTIN, HIGH); // LED offmicrogear.chat(\"switch\",\"0\"); }}void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.println(\"Connected to NETPIE...\"); microgear.setName(ALIAS);}void setup() { microgear.on(MESSAGE,onMsghandler); microgear.on(CONNECTED,onConnected); Serial.begin(115200); Serial.println(\"Starting...\"); pinMode(LED_BUILTIN, OUTPUT); if (WiFi.begin(ssid, password)) { while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(\".\"); } }Serial.println(\"WiFi connected\"); Serial.println(\"IP address: \"); Serial.println(WiFi.localIP()); microgear.init(KEY,SECRET,ALIAS); microgear.connect(APPID);}void loop() { if (microgear.connected()) { Serial.println(\"...\"); microgear.loop(); timer = 0; คูม่ ือการใชง้ าน NETPIE - 103

} else { Serial.println(\"connection lost, reconnect...\"); if (timer >= 5000) { microgear.connect(APPID); timer = 0; } else timer += 100; } delay(100);} 4. สงั เกตผลที่ได้เม่ือกดป่มุ ON OFF ท่ีเว็บเบราว์เซอร์ จะสามารถควบคมุ ไฟท่ีบอร์ด NodeMCU เชน่ เดียวกบั การใช้ Microgear บน HTML5 คูม่ ือการใชง้ าน NETPIE - 104

Lab 7.3: KKMC IoT แอปพลเิ คชนั่ KKMC-IoT พฒั นาโดยคณุ คมเดช เผือดผดุ จากมหาวิทยาลยั ขอนแก่นและชมรมขอนแก่นเมกเกอร์คลบั (KKMC) เป็น Android Application สาหรับสื่อสารไปยงั Microgear หรืออปุ กรณ์อื่นๆ ท่ีเช่ือมตอ่ กบั NETPIE การส่ือสารทาได้ทงั้ การรายงานผลสถานะ และการสง่ คาสง่ั ควบคมุ รวมถงึ การตงั้ เวลาเพื่อสง่ คาสง่ั ควบคมุ เบอื ้ งหลงั การสื่อสารของแอปพลเิ คชนั่ นีค้ ือการเรียกใช้งาน NETPIE RESTAPI เพื่อเช่ือมตอ่ กบั อปุ กรณ์ตา่ งๆ (เน่ืองจาก ณ เวลาที่พฒั นาแอปพลิเคชน่ั นี ้ ยงั ไมม่ ี Microgear สาหรับสร้าง Native Android Application) ข้อมูลรายละเอียดแอปพลเิ คชั่นจาก Google Play(https://play.google.com/store/apps/details?id=com.numberx.kkmctimer) “KKMC IoT สร้างขึ้นมาเพ่ือให้ผู้ใช้งานทตี่ ้องการจะควบคุมอุปกรณ์ IoT กับ NETPIE หรือมีอุปกรณ์อยู่แล้ว แต่ยังขาด App ดีๆ ซ่งึ ผู้ใช้บางคนจะต้องสร้างส่วนเชื่อมต่อขึน้ มา เช่น เวบ็ หรือapplication ต่างๆ เพื่อควบคุมโดยเฉพาะ หลายๆท่านอาจจะยงั ไม่มีความรู้ทางด้านโปรแกรมม่ิงจึงอาจจะมองว่าเป็ นอะไรท่ยี ่งุ ยาก KKMC IoT จึงได้ถือกาเนิดขึ้นมาโดยมี Concept ทว่ี ่า \"แอพเดยี ว ทาได้ทุกอย่าง\" โดยตวั แอพนั้นเขียนไว้ให้ผู้ใช้สามารถกดสร้าง Widget การควบคุมอุปกรณ์ไว้ทง้ั หมดแล้วเพียงเข้าไปตง้ั ค่า Topic สาหรับการเชื่อมต่อ จากน้ันกส็ ามารถใช้งานได้เลย มีทั้งการแสดงผล และควบคุมอุปกรณ์อีกท้งั ยังเพิ่ม Timer ให้อุปกรณ์ทางานได้ตามเวลาที่กาหนดอีกด้วย หากใครสนใจรายละเอียดเพ่มิ เตมิ สามารถเข้าไปร่วมกลุ่มกับ Khon Kaen Maker Club ได้เลยครับ” Fanpage: https://www.facebook.com/KhonKaenMakerClub/ Group: https://www.facebook.com/groups/KhonKaenMakerClub/ *** Distributed from: https://github.com/carlosperate/LightUpDroid-Alarm 1. ทดลองตดิ ตงั้ แอปพลเิ คชนั่ KKMC-IoT จาก Google Play Store คูม่ ือการใชง้ าน NETPIE - 105

รูปท่ี 7.1 แอปพลเิ คช่ัน KMMC IoT ใน Google Play Storeตงั้ คา่ ขนั้ ตอนท่ี 1 ตงั้ คา่ ขนั้ ตอนท่ี 2-3 ตงั้ คา่ ขนั้ ตอนท่ี 4 ตงั้ คา่ ขนั้ ตอนที่ 5 รูปท่ี 7.2 ขัน้ ตอนตงั้ ค่าแอปพลเิ คช่ัน KMMC IoT 2. เลือกเมนู Settings ท่ีมมุ ขวาลา่ ง 3. ใสข่ ้อมลู NETPIE AppIDคูม่ ือการใชง้ าน NETPIE - 106

4. ใสข่ ้อมลู NETPIE REST Key ซง่ึ อยใู่ นรูปแบบ KEY: SECRET หรือสามารถก๊อปปี ้ โดยตรงจากหน้า Application Management ของ netpie.io ตามภาพ รูปท่ี 7.3 ข้อมูล REST Key ในหน้า Application Management ของเวบ็ ไซต์ netpie.io 5. ตงั้ คา่ Topic โดยกดท่ีรูปโลกในหน้าแรกของแอปพลเิ คชนั่ แล้วกดเพ่มิ Topic ตามชื่อ Topic ที่เคยตงั้ ไว้เชน่ /LampStatus เลือก Widget Type เป็น On/Off Switch (เพื่อสร้าง ป่มุ ควบคมุ ไฟ) 6. กลบั มาท่ีหน้าแรกของแอปพลเิ คชนั่ จะเห็นป่มุ ให้ทดลองกด เปิด/ปิด ถ้าสง่ คาสง่ั ไปสาเร็จ จะเหน็ ข้อความวา่ “Publish to topic success” ตรวจสอบสถานะที่เปลี่ยนไปโดยเปิด ไฟล์ GetLampStatus.html (จาก Lab 7.1) หรือแก้ไขโค้ด pieled.ino (จาก Lab 7.2) ท่ี NodeMCU โดยเพ่ิมคาสง่ั microgear.subscribe(“/LampStatus”); ในฟังก์ชน่ั onConnected ดงั แสดงด้านลา่ ง จากนนั้ ทดลองกดเปิด/ปิด เพื่อควบคมุ LED บน NodeMCUvoid onConnected(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.println(\"Connected to NETPIE...\"); microgear.setName(ALIAS); microgear.subscribe(\"/LampStatus\");} เนื่องจากแอปพลิเคชนั่ KKMC-IoT นีร้ องรับเฉพาะการเรียก REST API บน Topic (ยงั ไมร่ องรับResource ประเภท Microgear และ Postbox) จงึ ต้องสงั่ ให้ Microgear (NodeMCU) รอรับข้อความ(Subscribe) ท่ี Topic/LampStatus ก่อน ซงึ่ ตา่ งจากใน Lab 7.2 ที่ใช้ REST API สง่ คาสงั่ เปิดปิดไปยงัResource ประเภท Microgear จงึ สามารถสง่ คาสงั่ ไปท่ีช่ือของ Microgear ได้โดยตรงในรูปแบบ/microgear/appid/alias คูม่ ือการใชง้ าน NETPIE - 107

ทดลองเพ่มิ เตมิ 1. เพมิ่ Widget ชนิด Push Button (ป่มุ แบบกดตดิ ปลอ่ ยดบั ) ท่ี Topic /LampStatus สงั เกต ไฟ LED บน NodeMCU เมื่อกดป่มุ 2. เพมิ่ Widget ชนิด Text เพ่ือแสดงผลข้อมลู อณุ หภมู ิที่ตรวจวดั จากเซนเซอร์ DHT11รายละเอียดเพ่มิ เตมิ เก่ียวกับ KKMC-IoT Source Code https://github.com/KhonKaenMakerClub/KKMC-IoT บทความ http://www.kkmakerclub.com/2016/05/26/ วิดีโอสอนวิธีใช้ https://www.youtube.com/watch?v=VWKrjvDCQQs Disclaimer NECTEC/NETPIE ไมไ่ ด้มีสว่ นร่วมในการพฒั นาแอปพลิเคชนั่ KKMC-IoT นี ้ข้อผดิ พลาดใดๆ ท่ีเกิดจากการใช้แอปพลเิ คชนั่ นี ้ขอให้แจ้งไปยงั ผ้พู ฒั นาโดยตรง คูม่ ือการใชง้ าน NETPIE - 108

8. NETPIE SECURE CONNECTION ในกรณีท่ีต้องการให้อปุ กรณ์สื่อสารกนั อยา่ งปลอดภยั ไมใ่ ห้ใครดกั ฟังข้อความที่แลกเปล่ียนกนั ได้และไมใ่ ห้ใครมาเปล่ียนข้อความกลางทาง เราจาเป็นต้องเข้ารหสั ให้ชอ่ งทางสื่อสาร โพรโทคอลที่นยิ มใช้ในการรักษาความปลอดภยั ให้ชอ่ งทางสื่อสารได้แก่ TLS (Transport Layer Security) และ SSL (SecureSocket Layer) ซง่ึ มกั จะเรียกรวมๆ กนั วา่ SSL/TLS แอปพลเิ คชน่ั ที่นิยมใช้บน SSL/TLS ได้แกเ่ วบ็ อีเมลโปรแกรมสนทนา ฯลฯ ท่ีต้องการความปลอดภยั ในการสง่ ข้อมลู ตวั อยา่ งเชน่ โพรโทคอล HTTPS หรือHTTP Secure จะเป็นการสง่ ข้อมลู เวบ็ ที่เข้ารหสั บน SSL หรือ TLS การสง่ ข้อมลู บน SSL/TLS มีข้อดี 3 ด้านคือ 1. Privacy ข้อมลู ท่ีรับสง่ จะถกู เข้ารหสั ทาให้มีความเป็นสว่ นตวั และปลอดภยั จากการดกั ฟังโดย บคุ คลท่ีสาม 2. Authentication คสู่ นทนาทงั้ สองฝั่งจะได้รับการยืนยนั ตวั ตนโดยการใช้ Public/Private Key ที่ออก ให้โดย Certificate Authority ที่ได้รับการยอมรับ ทาให้มน่ั ใจได้วา่ คสู่ นทนาเป็นคนหรืออปุ กรณ์ที่ ต้องการสื่อสารด้วยจริงๆ ไม่ใชต่ วั ปลอมท่ีมาสวมสทิ ธ์ิ 3. Reliability ข้อมลู ที่รับสง่ ไมส่ ามารถถกู เปล่ียนแปลงกลางทาง เพราะมีกลไกการตรวจสอบความ ถกู ต้องของข้อมลู โดยใช้ Message Authentication Code TLS vs SSL บ่อยคร้ังที่เกิดความสับสนระหว่าง TLS กับ SSL ทง้ั สองโพรโทคอลทาหน้าที่เหมือนกันคือสร้างช่องทางการสื่อสารที่ปลอดภยั ด้วยการเข้ารหสั ข้อมูล ยนื ยันความถูกต้องของข้อมูล และยืนยันตัวตนของคู่สนทนา โพรโทคอล SSL กาเนิดมาก่อน TLS และได้รับความนิยมสูงโดยเฉพาะกับการใช้งานเว็บ (HTTPover SSL) แต่ในปี ค.ศ.2014 มีการพบช่องโหว่ที่ร้ายแรงท่เี รียกว่าPOODLE Attack บน SSL เวอร์ชั่น 3.0 ตั้งแต่น้ันมา SSL จงึ กลายเป็ นโพรโทคอลที่ไม่ปลอดภัยและไม่ควรใช้ โพรโทคอล TLS ถูกออกแบบมาทีหลังและออกแบบให้รองรับกลไกสมัยใหม่ที่เก่ียวกับการสร้าง Key การแลกเปล่ียน Key การเข้ารหสั จงึ ทาให้ TLS มีความปลอดภัยมากกว่า SSLการใช้ TLS กับ NETPIE NETPIE เลือกใช้โพรโทคอล TLS เวอร์ชนั่ 1.2 ในการสร้างความปลอดภยั ให้กบั การสื่อสารระหว่างMicrogear กบั NETPIE คูม่ ือการใชง้ าน NETPIE - 109

NETPIE Microgear ท่รี องรับการส่ือสารบน TLS ได้แก่ Node.js, HTML5, ESP8266TCP พอร์ตท่ใี ช้ส่ือสารHTML5 Microgear ESP8266 และ Node.js MicrogearTLS: 8081 and 8084 (default) Non-TLS: 8080 and 1883 (default)Non-TLS: 8080 and 8083 TLS: 8081 and 8883ฟังก์ช่ันเพ่อื เรียกใช้ TLS บน Node.js และ ESP8266 Microgear จะมีฟังก์ชน่ั useTLS(tlsmode) เพ่ือระบวุ า่ จะเลือกใช้หรือไมใ่ ช้การเข้ารหสั แบบ TLS สว่ น argument tlsmode เป็น Boolean ถ้าตงั้ คา่ TRUE แปลว่าใช้ TLS ถ้าตงั้ คา่ FALSE แปลวา่ ไมใ่ ช้ TLS หากไมไ่ ด้เรียกใช้ฟังก์ชน่ั นี ้คา่ default ของ Microgear จะไมใ่ ช้ TLS บน HTML5 Microgear ก็มีฟังก์ชน่ั useTLS(tlsmode) เชน่ กนั แตค่ า่ default คอื ใช้ TLS ดงั นนั้ การส่ือสารกบั HTML5 จะเป็นการส่ือสารแบบปลอดภยั เสมอ นอกจากนกั พฒั นาจะปิดการใช้ TLS ด้วยคาสง่ัuseTLS (false) วธิ ีสร้าง Secure Connection บน ESP8266 Microgear แตกตา่ งจากการสร้าง Connection ปกติสองจดุ 1. ประกาศตวั แปร Client เป็นชนิด WiFiClientSecure แทน WiFiClientWiFiClientSecure client;MicroGear microgear(client); 2. ภายในฟังก์ชน่ั setup() เรียกใช้ useTLS(true) ก่อนการเรียกฟังก์ชนั่ init(KEY, SECRET, ALIAS)microgear.useTLS(true);microgear.init(KEY,SECRET,ALIAS);microgear.connect(APPID); วิธีสร้าง Secure Connection บน Node.js Microgear แตกตา่ งจากการสร้าง Connection ปกตจิ ดุเดียว คือต้องเรียกใช้ useTLS(true) ก่อนการเรียกฟังก์ชน่ั connect(APPID) คูม่ ือการใชง้ าน NETPIE - 110

microgear.useTLS(true);microgear.connect(APPID); สาหรับการใช้ TLS บน ESP8266 จะใช้ได้กับ ESP8266 SDK 2.1.0 แต่มีปัญหากับ SDK2.2.0 และกลับมาใช้ได้กับ SDK 2.3.0-rc1Lab 8.1: สร้าง Secure Connection ระหว่าง NodeMCU และ HTML5แก้ไขไฟล์ pieled.ino จาก Lab 4.2 สองจดุ คือ1. ประกาศตวั แปร Client เป็นชนิด WiFiClientSecure แทน WiFiClient ก่อนสร้าง MicrogearWiFiClientSecure client;MicroGear microgear(client); 2. ภายในฟังก์ชนั่ setup() เรียกใช้ useTLS(true) ก่อนการเรียกฟังก์ชน่ั init(KEY, SECRET, ALIAS)microgear.useTLS(true); แล้วอพั โหลดไฟล์ SecureConnect.ino ลงบนmicrogear.init(KEY,SECRET,ALIAS);microgear.connect(APPID); บนั ทกึ เป็นไฟล์ใหมช่ ่ือ SecureConnect.inoNodeMCUSecureConnect.ino/* NETPIE ESP8266 secure microgear connection sample *//* It differs from the normal connection by 2 stpes *//* 1. Declare a client as WiFiClientSecure instead of WiFiClient. *//* 2. Call microgear.useTLS(true) before initial *//* More information visit : https://netpie.io */#include <ESP8266WiFi.h>#include <MicroGear.h>const char* ssid = \"WIFI_SSID\"; //change this to your SSID คูม่ ือการใชง้ าน NETPIE - 111

const char* password = \"WIFI_KEY\"; //change this to your WIFIpassword#define APPID \"YOURAPPID\" //change this to your appid#define KEY \"YOURKEY\" //change this to your key#define SECRET \"YOURSECRET\" //change this to your secret#define ALIAS \"esp8266tls\"/* 1. Declare a client as WiFiClientSecure instead of WiFiClient. */WiFiClientSecure client;int timer = 0;MicroGear microgear(client);void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) { Serial.print(\"Incoming message -->\"); msg[msglen] = '\0'; Serial.println((char *)msg);}void onFoundgear(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.print(\"Found new member -->\"); for (int i=0; i<msglen; i++) Serial.print((char)msg[i]); Serial.println();}void onLostgear(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.print(\"Lost member -->\"); for (int i=0; i<msglen; i++) Serial.print((char)msg[i]); Serial.println();}void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.println(\"Securely connected to NETPIE...\"); microgear.setAlias(ALIAS);}void setup() { คูม่ ือการใชง้ าน NETPIE - 112

/* Event listener */ microgear.on(MESSAGE,onMsghandler); microgear.on(PRESENT,onFoundgear); microgear.on(ABSENT,onLostgear); microgear.on(CONNECTED,onConnected); Serial.begin(115200); Serial.println(\"Starting...\"); if (WiFi.begin(ssid, password)) { while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(\".\"); } } Serial.println(\"WiFi connected\"); Serial.println(\"IP address: \"); Serial.println(WiFi.localIP()); /* 2. Call microgear.useTLS(true) before initial */ microgear.useTLS(true); microgear.init(KEY,SECRET,ALIAS); microgear.connect(APPID);}void loop() { if (microgear.connected()) { Serial.println(\"connected\"); microgear.loop(); if (timer >= 1000) { Serial.println(\"Publish...\"); microgear.chat(ALIAS,\"Hello\"); timer = 0; } else timer += 100; } else { Serial.println(\"connection lost, reconnect...\"); คูม่ ือการใชง้ าน NETPIE - 113

if (timer >= 5000) { microgear.connect(APPID); timer = 0; } else timer += 100; } delay(100);} เปิดไฟล์ switch.html จาก Lab 4.2 เน่ืองจาก HTML5 Microgear จะใช้ TLS เป็นคา่ default อยู่แล้วดงั นนั้ หากเราไมแ่ ก้ไขอะไร HTML5 จะสง่ คา่ เปิดปิดไฟ ผา่ นการเช่ือมตอ่ แบบเข้ารหสั หากต้องการยกเลิกการใช้ TLS สามารถเรียกฟังก์ชน่ั microgear.useTLS(false) กอ่ นการเรียกmicrogear.connect(APPID) และบนั ทกึ ไฟล์ใหมช่ ่ือ UnsecureSwitch.html ดงั ตวั อย่างด้านลา่ งUnsecureSwitch.html<script src=\"https://cdn.netpie.io/microgear.js\"></script><script> const APPID = \"YOURAPPID\"; const KEY = \"YOURKEY\"; const SECRET = \"YOURSECRET\"; const ALIAS = \"switch\"; var microgear = Microgear.create({ key: KEY, secret: SECRET, alias : ALIAS });function toggle() { if(document.getElementById(\"button\").innerText==\"off\"){ microgear.chat('pieled','1'); } else{ microgear.chat('pieled','0'); }} microgear.on('message',function(topic,msg) { document.getElementById(\"data\").innerHTML = msg; คูม่ ือการใชง้ าน NETPIE - 114

if(msg==\"1\"){ document.getElementById(\"button\").innerText=\"on\"; }else if(msg==\"0\"){ document.getElementById(\"button\").innerText=\"off\"; } }); microgear.on('connected', function() { microgear.setAlias(ALIAS); document.getElementById(\"data\").innerHTML = \"Now I am connected withnetpie...\"; });//add this line if you don’t want a secure connectionmicrogear.useTLS(false);microgear.connect(APPID);</script><div id=\"data\">_____</div><center><button onclick=\"toggle()\" id=\"button\">off</button></center> ตดิ ตงั้ และใช้งานโปรแกรม Wireshark (https//:www.wireshark.org/download.html) ซง่ึ เป็นโปรแกรมดกั จบั แพก็ เกตในเครือข่าย (ในขนั้ ตอนการตดิ ตงั้ Wizard จะถามวา่ ให้ติดตงั้ ไลบรารี่ libpcapด้วยหรือไม่ ให้ตอบตกลง) เม่ือเริ่มใช้งานโปรแกรมจะเห็นหน้าตา่ งในภาพ ให้คลกิ เลือกท่ี NetworkInterface ที่ต้องการดกั จบั ข้อมลู (กรณีในภาพคือ Wi-Fi) แล้วคลิกที่ไอคอนรูปครีบฉลาม เพื่อเริ่มดกั จบัข้อมลู วธิ ีสงั เกตวา่ ควรเลือก Network Interface ใดให้เลือก Interface ท่ีมีเส้นกราฟขยบั (หมายถงึ มีข้อมลูว่ิงเข้าออก) คูม่ ือการใชง้ าน NETPIE - 115

รูปท่ี 8.1 หน้าจอโปรแกรม Wireshark เนื่องจากเราสามารถดกั จบั ได้เฉพาะข้อมลู ท่ีวิ่งเข้าออกคอมพิวเตอร์ของเรา ดงั นนั้ เราจะทดลองดกัจบั ข้อมลู ท่ีเกิดจาก HTML5 Microgear โดยเปิดไฟล์ switch.html ทดลองกดป่มุ ON OFF จากนนั้ หยดุการดกั จบั ข้อมลู ที่ Wireshark โดยกดท่ีไอคอนส่ีเหลี่ยมจตรุ ัสสีแดง แล้วลองไลด่ ู Packet ที่เกิดจากไฟล์switch.html วง่ิ ผา่ นคอมพวิ เตอร์ของเรา เนื่องจากมี Packet ท่ีเกิดจากหลายแอปพลเิ คชน่ั บนคอมพิวเตอร์ วิธีเลือกดู Packet อาจสงั เกตจากDestination Port ในกรณีท่ีใช้ TLS HTML5 Microgear จะส่ือสารกบั NETPIE โดยใช้ Destination Port8081 และ 8084วิธีเลือกดเู ฉพาะแพ็กเกตที่สนใจ คือการกาหนดตวั กรอง ใส่ลงในช่องด้านบนที่เขียนว่า“Apply a display filter … <Ctrl-/>” ตัวอย่างเช่นtcp.dstport == 8084 || tcp.dstport == 8081 Filter โดยระบุ Destination Portip.src_host==192.168.1.137 Filter โดยระบุ Source IP addressip.addr==192.168.1.137 Filter โดยระบุ IP address ของคู่สนทนาจากภาพจะพบวา่ เราไมส่ ามารถอา่ นข้อมลู ท่ีว่งิ เข้าและออกจาก HTML5 Microgear คูม่ ือการใชง้ าน NETPIE - 116

รูปท่ี 8.2 หน้าจอ Wireshark หลังเรียกใช้ TLSทดลองเพ่มิ เตมิ ใช้ไฟล์ UnsecureSwitch.html แล้วทดสอบดวู ่าสามารถเหน็ ข้อความท่ี Chat ระหวา่ ง Switch และNodeMCU หรือไม่ การใช้ TLS ในกรณีน้ีเป็ นการเข้ารหสั การส่ือสารระหว่างอุปกรณ์ใดๆ ที่มี Microgear กับแพลตฟอร์ม NETPIE เท่านั้นไม่ใช่การเข้ารหัสแบบ End-to-end โดยตรงระหว่างอุปกรณ์สองตวั คูม่ ือการใชง้ าน NETPIE - 117

ภาคผนวก NETPIE MICROGEAR REFERENCE GUIDE สาหรับรายละเอียดล่าสุดของ Microgear ทกุ ตวั ท่านสามารถดูได้จากเว็บไซต์https://github.com/netpieio1. ESP8266-ARDUINO MICROGEAR ESP8266 Arduino Microgear คือ Client Library ที่ทาหน้าท่ีเป็นตวั กลางในการเชื่อมตอ่ESP8266 เข้ากบั บริการของ NETPIE 1.1 ความเข้ากนั ได้ ทางทีมพฒั นาได้ทาการทดสอบพบว่า Library สามารถใช้ได้กบั อปุ กรณ์ตอ่ ไปนี ้(อาจมีมากกวา่ นี)้  ESP8266-01, 07, 12E, 12F  NodeMCU v1, v2, V3  Espresso Lite v2.0 1.2 พอร์ตส่ือสาร ESP8266 ใช้พอร์ตสื่อสารตอ่ ไปนี ้ หากพบปัญหาการใช้งาน กรุณาตรวจสอบวา่ Port ตอ่ ไปนีไ้ ด้รับอนญุ าตให้เข้าถึง NETPIE.  Non-TLS mode : 8080 and 1883 (คา่ default )  TLS mode : 8081 and 8883 (อยรู่ ะหวา่ งทดสอบ) 1.3 การตดิ ตงั้  ดาวน์โหลด Arduino IDE 1.6.9 หรือใหมก่ วา่ จาก https://www.arduino.cc/en/Main/Software  หลงั จากตดิ ตงั้ เสร็จ เปิด Preferences คูม่ ือการใชง้ าน NETPIE - 118

 ใสข่ ้อความ http://arduino.esp8266.com/stable/package_esp8266com_index.json ลงใน ชอ่ ง Additional Board Manager URLs เปิด Boards Manager เมนู Tools ค้นหาคาวา่ esp8266 และคลกิ Install ในเมนู Tools จะมีบอร์ด ESP8266 ชนดิ ตา่ งๆเพ่ิมขนึ ้ มา เลือกให้ตรงกบั ชนิดของบอร์ดท่ีใช้ ดาวน์โหลด Microgear Library จาก https://github.com/netpieio/microgear-esp8266- arduino/archive/master.zip Unzip ไปวางใน Folder ชื่อ Libraries ของ Arduino IDE รายละเอียดเพมิ่ เตมิ เก่ียวกบั ESP8266 Arduino IDE ศกึ ษาได้ จาก https://github.com/esp8266/Arduino1.4 ข้อจากดั ท่พี บ ฟี เจอร์ TLS ทางานได้บน ESP8266 SDK 2.1.0 และ 2.3.0-rc1 แตไ่ มท่ างานบนเวอร์ชนั่ 2.2.01.5 ตัวอย่างการเรียกใช้/* NETPIE ESP8266 basic sample *//* More information visit : https://netpie.io */#include <ESP8266WiFi.h>#include <MicroGear.h>const char* ssid = \"WIFI_SSID\";const char* password = \"WIFI_KEY\";#define APPID \"YOUR_APPID\"#define KEY \"YOUR_KEY\"#define SECRET \"YOUR_SECRET\"#define ALIAS \"esp8266\"WiFiClient client;int timer = 0;MicroGear microgear(client);/* If a new message arrives, do this */void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) { คูม่ ือการใชง้ าน NETPIE - 119

Serial.print(\"Incoming message --> \"); msg[msglen] = '\0'; Serial.println((char *)msg);}void onFoundgear(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.print(\"Found new member --> \"); for (int i=0; i<msglen; i++) Serial.print((char)msg[i]); Serial.println();}void onLostgear(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.print(\"Lost member --> \"); for (int i=0; i<msglen; i++) Serial.print((char)msg[i]); Serial.println();}/* When a microgear is connected, do this */void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.println(\"Connected to NETPIE...\"); /* Set the alias of this microgear ALIAS */ microgear.setAlias(ALIAS);}void setup() { /* Add Event listeners */ /* Call onMsghandler() when new message arraives */ microgear.on(MESSAGE,onMsghandler); /* Call onFoundgear() when new gear appear */ microgear.on(PRESENT,onFoundgear); /* Call onLostgear() when some gear goes offline */ microgear.on(ABSENT,onLostgear); /* Call onConnected() when NETPIE connection is established */ microgear.on(CONNECTED,onConnected); คูม่ ือการใชง้ าน NETPIE - 120

Serial.begin(115200);Serial.println(\"Starting...\");/* Initial WIFI, this is just a basic method to configure WIFI onESP8266. */ /* You may want to use other method that is more complicated, butprovide better user experience */if (WiFi.begin(ssid, password)) { while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(\".\"); }}Serial.println(\"WiFi connected\");Serial.println(\"IP address: \");Serial.println(WiFi.localIP());/* Initial with KEY, SECRET and also set the ALIAS here */microgear.init(KEY,SECRET,ALIAS); /* connect to NETPIE to a specific APPID */ microgear.connect(APPID);}void loop() { /* To check if the microgear is still connected */ if (microgear.connected()) { Serial.println(\"connected\"); /* Call this method regularly otherwise the connection may be lost*/ microgear.loop(); if (timer >= 1000) { Serial.println(\"Publish...\"); /* Chat with the microgear named ALIAS which is myself */ microgear.chat(ALIAS,\"Hello\"); timer = 0; คูม่ ือการใชง้ าน NETPIE - 121

} else timer += 100; } else { Serial.println(\"connection lost, reconnect...\"); if (timer >= 5000) { microgear.connect(APPID); timer = 0; } else timer += 100; } delay(100);} 1.6 การใช้งาน LIBRARYInitial library ด้วยคาสงั่int MicroGear::init(char* key, char* secret [,char* alias])arguments  key (string) - ใช้ในการอ้างองิ ตวั ตนของ Microgear  secret (string) - เป็น Secret ของ Key ซงึ่ จะใช้ประกอบในกระบวนการยืนยนั ตวั ตน  alias (string)– เป็นการระบชุ ื่อเลน่ (ตามข้างหน้า) ของอปุ กรณ์microgear.init(\"sXfqDcXHzbFXiLk\", \"DNonzg2ivwS8ceksykGntrfQjxbL98\",\"myplant\");void MicroGear::on(unsigned char event, void (* callback)(char, uint8_t,unsigned int))เพ่มิ ฟังก์ชน่ั ท่ีตอบสนองตอ่ Eventarguments  event - ชื่อ Event ได้แก่ MESSAGE, CONNECTED, PRESENT, ABSENT คูม่ ือการใชง้ าน NETPIE - 122

 callback - ฟังก์ชนั่ Callback เม่ือเกิด Eventbool MicroGear::connect(char* appid)เชื่อมตอ่ กบั NETPIE Platform ถ้าเช่ือมตอ่ สาเร็จ จะมี Event ช่ือ CONNECTED เกิดขนึ ้ คา่ ท่ีสง่ คนื มาจากฟังก์ชน่ั มีดงั นี ้  NETPIECLIENT_CONNECTED - การเชื่อมตอ่ สาเร็จ  NETPIECLIENT_NOTCONNECTED - การเชื่อมตอ่ ล้มเหลว เชน่ มีปัญหาเร่ืองเครือขา่ ย  NETPIECLIENT_TOKENERROR - ไมไ่ ด้รับ Access Token อาจเป็นเพราะ Appid, Key หรือ Secret ไมถ่ กู ต้องarguments  Appid - AppIDbool MicroGear::connected()สง่ คา่ สถานะการเชื่อมตอ่ เป็น TRUE หากกาลงั เชื่อมตอ่ อยู่void MicroGear::useTLS(bool* enabled)ระบรุ ูปแบบของชอ่ งทางการสื่อสารวา่ ต้องการสื่อสารแบบเข้ารหสั โดยใช้ TLS หรือไม่ (คา่ default คือไมใ่ ช้TLS) เรียกใช้ฟังก์ชนั่ นีก้ ่อนสร้างการเชื่อมตอ่ ด้วยฟังก์ชนั่ connectarguments  Enabled – ตงั้ คา่ TRUE เพอื่ ใช้ TLS คูม่ ือการใชง้ าน NETPIE - 123

void MicroGear::setAlias(char* alias)Microgear สามารถตงั้ นามแฝงของตวั เองได้ ซง่ึ สามารถใช้เป็นช่ือให้คนอ่ืนเรียกในการใช้ฟังก์ชน่ั chat()และชื่อที่ตงั้ ในโค้ด จะไปปรากฏบนหน้าจดั การ Key บนเว็บ netpie.io อยา่ งอตั โนมตั ิarguments  alias - ช่ือเลน่ ของ Microgear นี ้ bool MicroGear::chat(char* target, char* message) bool MicroGear::chat(char* target, int message) bool MicroGear::chat(char* target, double message) bool MicroGear::chat(char* target, double, int decimal) bool MicroGear::chat(char* target, String message)arguments  target - ช่ือของ Microgear ท่ีต้องการจะสง่ ข้อความไปถึง  decimal - จานวนตาแหนง่ หลงั จดุ ทศนิยม  message - ข้อความ bool MicroGear::publish(char* topic, char* message [, bool retained]) bool MicroGear::publish(char* topic, double message [, bool retained]) bool MicroGear::publish(char* topic, double message, int decimal [, bool retained]) bool MicroGear::publish(char* topic, int message [, bool retained]) bool MicroGear::publish(char* topic, String message [, bool retained])ในกรณีท่ีต้องการสง่ ข้อความแบบไมเ่ จาะจงผ้รู ับ สามารถใช้ฟังชนั่ Publish ไปยงั Topic ท่ีกาหนดได้ ซง่ึ จะมีแต่ Microgear ท่ี Subscribe Topic นีเ้ทา่ นนั้ ท่ีจะได้รับข้อความarguments  topic - ชื่อของ Topic ที่ต้องการจะสง่ ข้อความไปถึง คูม่ ือการใชง้ าน NETPIE - 124

 message - ข้อความ  decimal - จานวนตาแหนง่ หลงั จดุ ทศนิยม  retained - ให้ Retain ข้อความไว้หรือไมค่ า่ Default เป็น false (optional)void MicroGear::subscribe(char* topic)Microgear อาจจะมีความสนใจใน topic ใดเป็นการเฉพาะ เราสามารถใช้ฟังก์ชนั่ subscribe() ในการบอกรับ Message ของ Topic นนั้ ได้ และหาก Topic นนั้ เคยมีการ Retain ข้อความไว้ Microgear จะได้รับข้อความนนั้ ทกุ ครัง้ ท่ี Subscribearguments  topic - ช่ือของ Topic ที่ต้องการจะบอกรับข้อความvoid MicroGear::unsubscribe(char* topic)ยกเลิกการ Subscribearguments  topic - ช่ือของ Topic ที่ต้องการจะยกเลิกvoid microgear.writeFeed(feedid, datajson [, apikey])เขียนข้อมลู ลง Feed Storagearguments  feed (string) - ช่ือของ feed ที่ต้องการจะเขียนข้อมลู  datajson (string) - ข้อมลู ที่จะบนั ทกึ ในรูปแบบ JSON คูม่ ือการใชง้ าน NETPIE - 125

 apikey (string) – API Key สาหรับตรวจสอบสิทธิ์ หากไมก่ าหนด จะใช้ Default API Key ของ feed ที่ให้สทิ ธิ์ไว้กบั AppIDmicrogear.writeFeed(\"homesensor\",{temp:25.7,humid:62.8,light:8.5});void MicroGear::resetToken()สง่ คาสง่ั Revoke Token ไปยงั NETPIE และลบ Token ออกจาก Cache สง่ ผลให้ Microgear ต้องขอToken ใหมใ่ นการเชื่อมตอ่ ครัง้ ตอ่ ไปvoid MicroGear::loop()Method นีค้ วรถกู เรียกใน arduino loop() เป็นระยะๆ เพื่อท่ี Microgear Library สามารถ Keep aliveconnection alive และจดั การกบั Message ที่เข้ามา2. ARDUINO-ETHERNET MICROGEAR Arduino Ethernet Microgear คอื Client Library ท่ีทาหน้าที่เป็นตวั กลางในการเชื่อมตอ่ ArduinoBoard ที่ใช้ Ethernet Shield เข้ากบั บริการของ NETPIE 2.1 ความเข้ากันได้ Library สามารถใช้ได้กบั Arduino Mega 2560 และ Ethernet Shield 2.2 ตวั อย่างการเรียกใช้#include <AuthClient.h>#include <MicroGear.h>#include <MQTTClient.h>#include <PubSubClient.h>#include <SHA1.h>#include <Arduino.h>#include <SPI.h> คูม่ ือการใชง้ าน NETPIE - 126

#include <Ethernet.h>#include <EEPROM.h>#include <MicroGear.h>#define APPID \"YOUR_APPID\"#define GEARKEY \"YOUR_KEY\"#define GEARSECRET \"YOUR_SECRET\"#define SCOPE \"\"EthernetClient client;AuthClient *authclient;byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };MicroGear microgear(client);int timer = 0;void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) { Serial.print(\"Incoming message --> \"); msg[msglen] = '\0'; Serial.println((char *)msg);}void onFoundgear(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.print(\"Found new member --> \"); for (int i=0; i<msglen; i++) Serial.print((char)msg[i]); Serial.println();}void onLostgear(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.print(\"Lost member --> \"); for (int i=0; i<msglen; i++) Serial.print((char)msg[i]); Serial.println();}void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) { Serial.println(\"Connected to NETPIE...\"); microgear.setAlias(\"mygear\");} คูม่ ือการใชง้ าน NETPIE - 127

void setup() { Serial.begin(9600); Serial.println(\"Starting...\"); microgear.on(MESSAGE,onMsghandler); microgear.on(PRESENT,onFoundgear); microgear.on(ABSENT,onLostgear); microgear.on(CONNECTED,onConnected); if (Ethernet.begin(mac)) { Serial.println(Ethernet.localIP()); microgear.resetToken(); microgear.init(GEARKEY,GEARSECRET,SCOPE); microgear.connect(APPID); }}void loop() { if (microgear.connected()) { Serial.println(\"connected\"); microgear.loop(); if (timer >= 1000) { microgear.chat(\"mygear\",\"Hello\"); timer = 0; } else timer += 100; } else { Serial.println(\"connection lost, reconnect...\"); if (timer >= 5000) { microgear.connect(APPID); timer = 0; } else timer += 100; } delay(100);} 2.3 การใช้งาน LIBRARY คูม่ ือการใชง้ าน NETPIE - 128

Initial library ด้วยคาสง่ัint MicroGear::init(char* key, char* secret [,char* alias])argumentskey (string) - ใช้ในการอ้างอิงตวั ตนของ Microgearsecret (string) - เป็น Secret ของ Key ซงึ่ จะใช้ประกอบในกระบวนการยืนยนั ตวั ตนalias (string) – เป็นการระบชุ ่ือของอปุ กรณ์microgear.init(\"sXfqDcXHzbFXiLk\", \"DNonzg2ivwS8ceksykGntrfQjxbL98\",\"myplant\");void MicroGear::on(unsigned char event, void (* callback)(char, uint8_t,unsigned int))เพิม่ ฟังก์ชนั่ ท่ีตอบสนองตอ่ Eventargumentsevent - ช่ือ Event ได้แก่ MESSAGE, CONNECTED, PRESENT, ABSENTcallback - ฟังก์ชนั่ Callbackbool MicroGear::connect(char* appid)เช่ือมตอ่ กบั NETPIE Platform ถ้าเช่ือมตอ่ สาเร็จ จะมี Event ชื่อ CONNECTED เกิดขนึ ้argumentsappid - AppIDbool MicroGear::connected(char* appid)สง่ คา่ สถานะการเช่ือมตอ่ เป็น true หากกาลงั เช่ือมตอ่ อยู่argumentsappid - AppID คูม่ ือการใชง้ าน NETPIE - 129

void MicroGear::setAlias(char* alias)Microgear สามารถตงั้ นามแฝงของตวั เองได้ ซง่ึ สามารถใช้เป็นช่ือให้คนอื่นเรียกในการใช้ฟังก์ชนั่ chat()และชื่อที่ตงั้ ในโค้ด จะไปปรากฏบนหน้าจดั การ Key บนเวบ็ netpie.io อย่างอตั โนมตั ิargumentsalias – ช่ือเลน่ ของ microgear นี ้ bool MicroGear::chat(char* target, char* message) bool MicroGear::chat(char* target, int message) bool MicroGear::chat(char* target, double message) bool MicroGear::chat(char* target, double, int decimal) bool MicroGear::chat(char* target, String message)argumentstarget - ชื่อของ Microgear ที่ต้องการจะสง่ ข้อความไปถึงdecimal - จานวนตาแหนง่ หลงั จดุ ทศนิยมmessage - ข้อความ bool MicroGear::publish(char* topic, char* message [, bool retained]) bool MicroGear::publish(char* topic, double message [, bool retained]) bool MicroGear::publish(char* topic, double message, int decimal [, bool retained]) bool MicroGear::publish(char* topic, int message [, bool retained]) bool MicroGear::publish(char* topic, String message [, bool retained])ในกรณีที่ต้องการสง่ ข้อความแบบไมเ่ จาะจงผ้รู ับ สามารถใช้ฟังชนั่ Publish ไปยงั Topic ท่ีกาหนดได้ ซงึ่ จะมีแต่ Microgear ที่ Subscribe Topic นีเ้ทา่ นนั้ ท่ีจะได้รับข้อความargumentstopic - ช่ือของ Topic ท่ีต้องการจะสง่ ข้อความไปถงึmessage - ข้อความdecimal - จานวนตาแหนง่ หลงั จดุ ทศนิยมretained - ให้ Retain ข้อความไว้หรือไมค่ า่ default เป็น false (optional) คูม่ ือการใชง้ าน NETPIE - 130

void MicroGear::subscribe(char* topic)microgear อาจจะมีความสนใจใน Topic ใดเป็นการเฉพาะ เราสามารถใช้ฟังก์ชน่ั subscribe() ในการบอกรับ Message ของ Topic นนั้ ได้ และหาก Topic นนั้ เคยมีการ Retain ข้อความไว้ Microgear จะได้รับข้อความนนั้ ทกุ ครัง้ ท่ี Subscribe Topicargumentstopic - ช่ือของ Topic ท่ีต้องการจะบอกรับข้อความvoid MicroGear::unsubscribe(char* topic)ยกเลิกการ Subscribeargumentstopic - ชื่อของ Topic ท่ีต้องการจะยกเลกิvoid microgear.writeFeed (feedid, datajson [, apikey])เขียนข้อมลู ลง Feed Storagearguments  feed (string) - ชื่อของ feed ท่ีต้องการจะเขียนข้อมลู  datajson (string) - ข้อมลู ที่จะบนั ทกึ ในรูปแบบ JSON  apikey(string) – API Key สาหรับตรวจสอบสิทธ์ิ หากไมก่ าหนด จะใช้ Default API Key ของ feed ท่ีให้สทิ ธิ์ไว้กบั AppIDmicrogear.writeFeed(\"homesensor\",{temp:25.7,humid:62.8,light:8.5});void MicroGear::resetToken()สง่ คาสง่ั Revoke Token ไปยงั NETPIE และลบ Token ออกจาก Cache สง่ ผลให้ Microgear ต้องขอToken ใหมใ่ นการเชื่อมตอ่ ครัง้ ตอ่ ไป คูม่ ือการใชง้ าน NETPIE - 131

void MicroGear::loop()Method นีค้ วรถกู เรียกใน arduino loop() เป็นระยะๆ เพื่อท่ี Microgear library จะได้ keep aliveconnection alive และจดั การกบั Message ที่เข้ามา3. NODE.JS MICROGEAR microgear-nodejs คือ Client Library ภาษา Node.js ที่ทาหน้าที่เป็นตวั กลางในการเช่ือมโยง โค้ดแอปพลเิ คชน่ั หรือ Hardware เข้ากบั บริการของ NETPIE 3.1 พอร์ตส่ือสาร หากพบปัญหาการใช้งาน กรุณาตรวจสอบวา่ Port ตอ่ ไปนีไ้ ด้รับอนญุ าตให้เข้าถงึ จาก NETPIE  Non-TLS mode : 8080 and 1883 (คา่ default )  TLS mode : 8081 and 8883 3.2 การตดิ ตงั้npm install microgear 3.3 ตัวอย่างการเรียกใช้var MicroGear = require('microgear');const APPID = <APPID>;const KEY = <KEY>;const SECRET = <SECRET>;var microgear = MicroGear.create({ key : KEY, secret : SECRET}); คูม่ ือการใชง้ าน NETPIE - 132

microgear.on('connected', function() { console.log('Connected...'); microgear.setAlias(\"mygear\"); setInterval(function() { microgear.chat('mygear', 'Hello world.'); },1000);});microgear.on('message', function(topic,body) { console.log('incoming : '+topic+' : '+body);});microgear.on('closed', function() { console.log('Closed...');});microgear.connect(APPID); 3.4 การใช้งาน LIBRARY microgear create (config) arguments  config เป็น JSON Object ที่ที่มี Attribute ดงั นี ้ o key (string)- ใช้ในการอ้างอิงตวั ตนของ Microgear o secret (string) - เป็น Secret ของ Key ซงึ่ จะใช้ประกอบในกระบวนการยืนยนั ตวั ตน o alias (string) – เป็นการตงั้ ช่ือเลน่ จะใสท่ ่ีน่ีหรือเรียกฟังก์ชน่ั setAlias() ทีหลงั ก็ได้var microgear = MicroGear.create({ gearkey : \"sXfqDcXHzbFXiLk\", gearsecret : \"DNonzg2ivwS8ceksykGntrfQjxbL98\", alias : \"mygear\"}); 3.4.1 Microgearvoid microgear.connect (appid, callback) คูม่ ือการใชง้ าน NETPIE - 133

arguments  Appid (string) – คอื กลมุ่ ของแอปพลเิ คชนั่ Microgear จะทาการเชื่อมตอ่microgear.connect(\"happyfarm\");void microgear.setAlias (gearalias)Microgear สามารถตงั้ นามแฝงของตวั เองได้ ซง่ึ สามารถใช้เป็นช่ือให้คนอื่นเรียกในการใช้ฟังก์ชนั่ chat()และช่ือที่ตงั้ ในโค้ด จะไปปรากฏบนหน้าจดั การ Key บนเวบ็ netpie.io อย่างอตั โนมตั ิarguments  gearalias (string) - ช่ือของ Microgear นี ้microgear.setAlias(\"plant\");void microgear.chat (gearname, message)arguments  gearname (string) - ช่ือของ Microgear ท่ีต้องการจะสง่ ข้อความไปถึง  message (string) - ข้อความmicrogear.chat(\"valve\",\"I need water\");void microgear.publish (topic, message, [retained]) ในกรณีที่ต้องการสง่ ข้อความแบบไมเ่ จาะจงผ้รู ับสามารถใช้ฟังชน่ั Publish ไปยงั Topic ท่ีกาหนดได้ ซงึ่ จะมีแต่ Microgear ท่ี Subscribe Topoic นีเ้ทา่ นนั้ท่ีจะได้รับข้อความarguments  topic (string) - ชื่อของ Topic ที่ต้องการจะสง่ ข้อความไปถึง  message (string) - ข้อความ  retained (boolean) - ให้ Retain ข้อความไว้หรือไม่ คา่ Default เป็น False คูม่ ือการใชง้ าน NETPIE - 134

microgear.publish(\"/outdoor/temp\",\"28.5\");microgear.publish(\"/outdoor/humid\",\"56\",true);void microgear.subscribe (topic)Microgear อาจจะมีความสนใจใน Topic ใดเป็นการเฉพาะ เราสามารถใช้ฟังก์ชน่ั Subscribe() ในการบอกรับ Message ของ Topic นนั้ ได้ และหาก Topic นนั้ เคยมีการ Retain ข้อความไว้ Microgear จะได้รับข้อความนนั้ ทกุ ครัง้ ที่ Subscribe Topicarguments  topic (string) - ช่ือของ Topic ที่ต้องการจะบอกรับข้อความmicrogear.subscribe(\"/outdoor/temp\");void microgear.unsubscribe (topic) ยกเลิกการ Subscribearguments  topic (string) - ชื่อของ Topic ท่ีต้องการจะยกเลกิmicrogear.unsubscribe(\"/outdoor/temp\");void microgear.setCachePath (path) โดยปกตแิ ล้ว microgear จะเก็บไฟล์ token cache ใน directoryเดียวกบั application โดยตงั้ ชื่อไฟล์ช่ือไฟล์ในรูปแบบ microgear-.cache เราสามารถกาหนด path ของtoken cache file ใหมด่ ้วยฟังก์ชนั่ setCachePath() ซงึ่ อาจจาเป็ฯต้องใช้ หากในไฟล์ Node.jsapplication เดยี วกนั มีการสร้าง microgear มากกวา่ หนง่ึ ตวัarguments  path (string) - path ของไฟล์ cachemicrogear.setCachePath('microgear-g1.cache'); คูม่ ือการใชง้ าน NETPIE - 135

void microgear.writeFeed (feedid, datajson [, apikey])เขียนข้อมลู ลง Feed Storagearguments  feed (string) - ช่ือของ feed ที่ต้องการจะเขียนข้อมลู  datajson (string) - ข้อมลู ที่จะบนั ทกึ ในรูปแบบ JSON  apikey (string) – API Key สาหรับตรวจสอบสิทธ์ิ หากไมก่ าหนด จะใช้ Default API Key ของ feed ท่ีให้สทิ ธ์ิไว้กบั AppIDmicrogear.writeFeed(\"homesensor\",{temp:25.7,humid:62.8,light:8.5});void microgear.resetToken (callback)สง่ คาสงั่ Revoke Token ไปยงั NETPIE และลบ Token ออกจาก Cache สง่ ผลให้ Microgear ต้องขอToken ใหมใ่ นการเช่ือมตอ่ ครัง้ ตอ่ ไปarguments  callback (function) – ฟังก์ชน่ั ท่ีจะถกู เรียกเม่ือการรีเซต็ Token เสร็จสิน้microgear.resetToken(function(result){}); เน่ืองจาก resettoken() เป็น Asynchronous Function หากต้องการ Connect หลงั จาก resettokenต้องเขียนโค้ดในลกั ษณะนี ้microgear.resetToken(function(result){ microgear.connect(APPID);});void microgear.useTLS (tlsmode)เลือกใช้หรือไมใ่ ช้การเข้ารหสั แบบ TLS. โดยคา่ เร่ิมต้น microgear-nodejs จะไมใ่ ช้ TLSarguments  tlsmode (boolean) - true เมื่อต้องการใช้ TLS คูม่ ือการใชง้ าน NETPIE - 136

microgear.useTLS(false); 3.4.2 Events แอปพลเิ คชนั่ ท่ีรันบน Microgear จะมีการทางานในแบบ Event Driven คือเป็นการทางานตอบสนองตอ่ Event ตา่ งๆ ด้วยการเขียน Callback Function ขนึ ้ มารองรับในลกั ษณะนี ้void microgear.on (event, callback)arguments  event (string) - ชื่อ Event  callback (function) - Callback Function NETPIE Platform เวอร์ชนั่ ปัจจบุ นั มี Event ดงั ตอ่ ไปนี ้Event: 'connected' เกิดขนึ ้ เมื่อ Microgear Library เชื่อมตอ่ กบั Platform สาเร็จmicrogear.on(\"connected\", function() { console.log(\"connected\");});Event: 'closed' เกิดขนึ ้ เม่ือ Microgear Library ตดั การเช่ือมตอ่ กบั Platformmicrogear.on(\"closed\", function() { console.log(\"closed\");});Event: 'error' เป็น Event ที่เกิดมี Error ขนึ ้ ภายใน Microgearmicrogear.on(\"error\", function(err) { console.log(\"Error: \"+err);});Event: 'warning' เป็น Event ที่เกิดมีเหตกุ ารณ์บางอยา่ งเกิดขนึ ้ และมีการเตือนให้ทราบmicrogear.on(\"warning\", function(msg) { console.log(\"Connection rejected: \"+msg);});Event: 'info' เป็น Event ที่เกิดมีเหตกุ ารณ์บางอยา่ งเกิดขนึ ้ ภายใน Microgearmicrogear.on(\"info\", function(msg) { console.log(\"Connection rejected: \"+msg);}); คูม่ ือการใชง้ าน NETPIE - 137

Event: 'message' เม่ือมี Message เข้ามา จะเกิด Event นีข้ นึ ้ พร้อมกบั สง่ ผา่ นข้อมลู เก่ียวกบั Messageนนั้ มาทาง Argument ของ Callback Functionmicrogear.on(\"message\", function(topic,msg) { console.log(\"Incoming message: \"+mesage);});Event: 'present' Event นีจ้ ะเกิดขนึ ้ เมื่อมี Microgear ใน Appid เดียวกนั Online เข้ามาเชื่อมตอ่ NETPIEmicrogear.on(\"present\", function(event) { console.log(\"New friend found: \"+event.gearkey);});Event: 'absent' Event นีจ้ ะเกิดขนึ ้ เมื่อมี Microgear ใน Appid เดียวกนั Offline หายไปmicrogear.on(\"absent\", function(event) { console.log(\"Friend lost: \"+event.gearkey);});4. HTML5 MICROGEAR microgear-html5 คือ Client Library ของ NETPIE ที่จะเปล่ียน Web Browser ให้เป็น Microgearเพื่อส่ือสารกบั Microgear ใน Platform อื่นๆ เชน่ Arduino, Raspberry Pi Library นีส้ ามารถนาไปพฒั นาIoT Console หรือ Mobile Application ได้โดยการเขียนโปรแกรมภาษา HTML/JavaScript 4.1 การรองรับ  Chrome  Firefox  Opera  Safari  Internet Explorer  Edge คูม่ ือการใชง้ าน NETPIE - 138

4.2 พอร์ตส่ือสาร หากพบปัญหาการใช้งาน กรุณาตรวจสอบวา่ Port ตอ่ ไปนีไ้ ด้รับอนญุ าตให้เข้าถงึ จาก Network ของคณุ TLS mode : 8081 and 8084 (คา่ default ) Non-TLS mode : 8080 and 80834.3 การตดิ ตงั้ ดาวน์โหลด microgear.js จาก https://raw.githubusercontent.com/netpieio/microgear-html5/master/microgear.js หรือเรียกใช้เวอร์ชนั่ ลา่ สดุ จาก cdn โดยใช้ Tag<script src=\"https://cdn.netpie.io/microgear.js\"></script> 4.4 ตวั อย่างการเรียกใช้<script src=\"https://cdn.netpie.io/microgear.js\"></script><script>const APPID = \"YOUR_APPID\";const KEY = \"YOUR_KEY\";const SECRET = \"YOUR_SECRET\";var microgear = Microgear.create({ key: KEY, secret: SECRET, alias : \"myhtml\" /* optional */});microgear.on('message',function(topic,msg) { document.getElementById(\"data\").innerHTML = msg;});microgear.on('connected', function() { microgear.setAlias('htmlgear'); /* alias can be renamed anytimewith this function */ document.getElementById(\"data\").innerHTML = \"Now I am connectedwith netpie...\"; คูม่ ือการใชง้ าน NETPIE - 139

setInterval(function() { microgear.chat(\"htmlgear\",\"Hello from myself at \"+Date.now()); },5000); }); microgear.on('present', function(event) { console.log(event); }); microgear.on('absent', function(event) { console.log(event); }); microgear.connect(APPID);</script><div id=\"data\">_____</div> 4.5 การใช้งาน LIBRARY microgear create (config) arguments  config เป็น JON Obect ท่ีมี Attribute ดงั นี ้ o key (string) - เป็น key สาหรับ device o secret (string) - เป็น Secret ของ Key ซงึ่ จะใช้ประกอบในกระบวนการยืนยนั ตวั ตน o alias (string) – เป็นการตงั้ ชื่อเลน่ จะใสท่ ี่นี่หรือเรียกฟังก์ชน่ั setAlias() ภายหลงั ก็ได้var microgear = MicroGear.create({ key : \"sXfqDcXHzbFXiLk\", secret : \"DNonzg2ivwS8ceksykGntrfQjxbL98\", alias : \"myhtml\"}); 4.5.1 Microgearvoid microgear.connect (appid, callback) คูม่ ือการใชง้ าน NETPIE - 140

เชื่อมตอ่ ไปที่ NETPIE โดยระบุ Appid เปา้ หมายarguments  appid (string) - คือ Application ที่ Microgear จะทาการเช่ือมตอ่microgear.connect(\"happyfarm\");void microgear.setAlias(gearalias)Microgear สามารถตงั้ ชื่อตวั เองได้ ซงึ่ สามารถใช้เป็นชื่อเลน่ ในการใช้ฟังก์ชนั่ chat()arguments  gearalias (string) - ชื่อของ Microgear นี ้microgear.setAlias(\"plant\");void microgear.chat (gearalias, message)arguments  gearalias(string)- ช่ือของ Microgear ที่ต้องการจะสง่ ข้อความไปถึง  message(string)- ข้อความmicrogear.chat(\"valve\",\"I need water\");void microgear.publish (topic, message)ในกรณีที่ต้องการสง่ ข้อความแบบไมเ่ จาะจงผ้รู ับ สามารถใช้ฟังชน่ั Publish ไปยงั Topic ท่ีกาหนดได้ ซง่ึ จะมีแต่ Microgear ที่ Subscribe ใน Topic นีเ้ทา่ นนั้ ท่ีจะได้รับข้อความarguments  topic (string) - ช่ือของ topic ท่ีต้องการจะสง่ ข้อความไปถึง  message (string) - ข้อความmicrogear.publish(\"/outdoor/temp\",\"28.5\"); คูม่ ือการใชง้ าน NETPIE - 141

void microgear.subscribe (topic)Microgear อาจจะมีความสนใจใน Topic ใดเป็นการเฉพาะ เราสามารถใช้ฟังก์ชนั่ subscribe() ในการบอกรับ Message ของ Topic นนั้ ได้arguments  topic (string) - ชื่อของ topic ที่ต้องการจะบอกรับข้อความmicrogear.subscribe(\"/outdoor/temp\");void microgear.unsubscribe (topic)ยกเลิกการ Subscribearguments  topic (string) - ช่ือของ Topic ที่ต้องการจะยกเลิกmicrogear.unsubscribe(\"/outdoor/temp\");void microgear.writeFeed (feedid, datajson [, apikey])เขียนข้อมลู ลง Feed Storagearguments  feed (string) - ชื่อของ feed ท่ีต้องการจะเขียนข้อมลู  datajson (string) - ข้อมลู ที่จะบนั ทกึ ในรูปแบบ JSON  apikey (string) – API Key สาหรับตรวจสอบสทิ ธ์ิ หากไมก่ าหนด จะใช้ Default API Key ของ feed ที่ให้สิทธิ์ไว้กบั AppIDmicrogear.writeFeed(\"homesensor\",{temp:25.7,humid:62.8,light:8.5}); คูม่ ือการใชง้ าน NETPIE - 142

void microgear.resetToken (callback)ออนไลน์สง่ คาสง่ั Revoke Token และลบ Token ออกจาก Cache สง่ ผลให้ Microgear ต้องขอ Tokenใหมใ่ นการเช่ือมตอ่ ครัง้ ตอ่ ไปarguments  callback (function) – Callback Function ท่ีจะถกู เรียกเม่ือการ Reset Token เสร็จสิน้microgear.resetToken(function(result){}); เน่ืองจาก resetToken() เป็น Asynchronous Function หากต้องการ Connect หลงั จากresetToken ต้องเขียนโค้ดในลกั ษณะนี ้microgear.resetToken(function(result){ microgear.connect(APPID);});void microgear.useTLS (tlsmode)Enable หรือ disable TLS โดยใน HTML5 Microgear จะใช้ TLS เป็นคา่ Defaultarguments  tlsmode (boolean) - เป็น true หมายถงึ ใช้ TLS (เป็นคา่ Default), false หมายถึงไมใ่ ช้ TLSmicrogear.useTLS(false); 4.5.2 EventsApplication ท่ีรันบน Microgear จะมีการทางานในแบบ Event Driven คือเป็นการทางานตอบสนองตอ่Event ตา่ งๆ ด้วยการเขียน Callback Function ขนึ ้ มารองรับในลกั ษณะนี ้void microgear.on (event, callback)arguments  event (string) - ช่ือ Event คูม่ ือการใชง้ าน NETPIE - 143

 callback (function) - Callback FunctionNETPIE Platform เวอร์ชนั่ ปัจจบุ นั มี Event ดงั ตอ่ ไปนี ้Event: 'connected' เกิดขนึ ้ เม่ือ Microgear Library เชื่อมตอ่ กบั NETPIE สาเร็จmicrogear.on(\"connected\", function() { console.log(\"connected\");});Event: 'closed' เกิดขนึ ้ เม่ือ Microgear Library เชื่อมตอ่ กบั NETPIE สาเร็จmicrogear.on(\"closed\", function() { console.log(\"closed\");});Event: 'error' เป็น Event ที่เกิดมี Error ขนึ ้ ภายใน Microgearmicrogear.on(\"error\", function(err) { console.log(\"Error: \"+err);});Event: 'message' เมื่อมี Message เข้ามา จะเกิด Event นีข้ นึ ้ พร้อมกบั สง่ ผา่ นข้อมลู เก่ียวกบั Messageนนั้ มาทาง Argument ของ Callback Functionmicrogear.on(\"message\", function(topic,msg) { console.log(\"Incoming message: \"+msg);});Event: 'present' Event นีจ้ ะเกิดขนึ ้ เมื่อมี Microgear ใน Appid เดียวกนั Online เข้ามาเชื่อมตอ่ NETPIEmicrogear.on(\"present\", function(event) { console.log(\"New friend found: \"+event.gearkey);});Event: 'absent' Event นีจ้ ะเกิดขนึ ้ เมื่อมี Microgear ใน Appid เดียวกนั Offline หายไปmicrogear.on(\"absent\", function(event) { console.log(\"Friend lost: \"+event.gearkey);}); คูม่ ือการใชง้ าน NETPIE - 144

5. PYTHON MICROGEAR microgear -python คอื Client Library ภาษา Python ท่ีทาหน้าท่ีเป็นตวั กลางในการเชื่อมโยงApplication Code หรือ Hardware เข้ากบั บริการของ NETPIE Platform เพื่อการพฒั นา IoT application 5.1 การตดิ ตงั้$ pip install microgear 5.2 ตวั อย่างการเรียกใช้งานimport microgear.client as microgearimport timeappid = <appid>gearkey = <key>gearsecret = <secret>microgear.create(gearkey,gearsecret,appid,{'debugmode': True})def connection(): print \"Now I am connected with netpie\"def subscription(topic,message): print topic+\" \"+messagedef disconnect(): print \"disconnect is work\"microgear.setalias(\"doraemon\")microgear.on_connect = connectionmicrogear.on_message = subscriptionmicrogear.on_disconnect = disconnectmicrogear.subscribe(\"/mails\")microgear.connect(True) 5.3 ตวั อย่างเพ่มิ เตมิ คูม่ ือการใชง้ าน NETPIE - 145

https://github.com/netpieio/microgear-python/wiki 5.4 การใช้งาน LIBRARY 5.4.1 Microgearclient.create(gearkey,gearsecret,appid,args):arguments  gearkey (string) - ใช้ในการอ้างอิงตวั ตนของ Microgear  gearkey (string) - เป็น Secret ของ Key ซง่ึ จะใช้ประกอบในกระบวนการยืนยนั ตวั ตน  appid (string) - กลมุ่ ของ Application ท่ี Microgear จะทาการเชื่อมตอ่  args (dictionary) - เป็นการตงั้ คา่ เพม่ิ เตมิ สาหรับ Microgear ได้แก่ o debugmode (boolean) - แสดงข้อความในโหมด ฏebug o scope (string) - กาหนด Scope ให้กบั Microgear เพ่ือให้จากดั /สิทธิ์ บางอย่าง โดยมีรูปแบบดงั นี ้  [r][w]:</topic/path> - r และ w คอื สิทธ์ิในการ Publish ละ Subscribe topic ดงั ท่ีระบตุ ามลาดบั เชน่ rw:/outdoor/temp  name:<gearname> - คอื สิทธิ์ในการตงั้ ชื่อตวั เองวา่ <gearname>  chat:<gearname> - คือสทิ ธ์ในการ chat กบั <gearname> o alias (string) – กาหนดชื่อเลน่ สาหรับ Microgear นี ้โดยจะปรากฏที่หน้า Key Management และสามารถเป็นช่ือท่ี Microgear ตวั อื่นใช้สาหรับ chat() ได้ ในขนั้ ตอนของการสร้าง Key บนเว็บ netpie.io นกั พฒั นาสามารถกาหนดสิทธ์ิขนั้ พืน้ ฐานให้แตล่ ะKey ได้อยแู่ ล้ว หากการสร้าง Microgear อยภู่ ายใต้ขอบเขตของสิทธิ์ที่มี Token จะถกู จา่ ยอตั โนมตั ิ และMicrogear จะสามารถเชื่อมตอ่ NETPIE Platform ได้ทนั ที แตห่ าก Scope ท่ีร้องขอนนั้ มากเกินกวา่ สิทธ์ิท่ีกาหนดไว้ นกั พฒั นาจะได้รับ Notification ให้พิจารณาอนมุ ตั ิ Microgear ที่เข้ามาขอเช่ือมตอ่ ข้อควรระวงัคือ หาก Microgear มีการกระทาการเกินกวา่ สิทธิ์ที่ได้รับไป เชน่ พยายามจะ Publish ไปยงั Topic ท่ีตวั เองไมม่ ีสิทธ์ิ NETPIE จะตดั การเชื่อมตอ่ ของ Microgear โดยอตั โนมตั ิ คูม่ ือการใชง้ าน NETPIE - 146

gearkey = <gearkey>gearsecret = <gearsecret>appid = <appid>client.create(gearkey,gearsecret,appid, {'debugmode': True, 'scope':\"r:/outdoor/temp,w:/outdoor/valve,name:logger,chat:plant\", 'alias':\"logger\"})client.connect(will_block): การเชื่อมตอ่ Microgearargument  will_block (boolean) - (optional) ระบรุ ูปแบบการเช่ือมตอ่ วา่ ให้มีการ Block หลงั จาก เรียกฟังก์ชน่ั หรือไม่ ซงึ่ จะมีคา่ Default เป็น False โดยโปรแกรมจะทางานในบรรทดั ถดั ไปหลงั จาก ท่ีทาการ Connect แล้ว ซงึ่ จะทาให้ผ้พู ฒั นาสามารถเขียนโปรแกรมในการตดิ ตอ่ กบั NETPIE ตอ่ ไปได้ โดยการเชื่อมตอ่ จะคงอย่ตู ราบเทา่ การทางานของโปรแกรม เชน่client.connect()while True: client.chat(\"doraemon\",\"Hello world. \"+str(int(time.time()))) time.sleep(2) หากต้องการให้ Library ทาการ Block หลงั จาก Connect แล้ว ทาให้หลงั จาก Connect แล้วโปรแกรมหยดุ อยทู่ ี่การทางานร่วมกบั Platform โดยจะทางานตามท่ีมีเหตกุ ารณ์ callback (on_*) ที่ถกูกาหนดไว้กอ่ นหน้า โดยสามารถระบพุ ารามเิ ตอร์เป็น True ได้ เชน่client.connect(True)client.setalias(alias):กาหนดช่ือเรียกสาหรับ Microgear นี ้ โดยจะปรากฏที่หน้า Key Management และสามารถเป็นชื่อท่ีMicrogear ตวั อื่นใช้สาหรับ chat() ได้argument  alias (string) - ช่ือของ Microgear นี ้client.setalias(\"python\"); คูม่ ือการใชง้ าน NETPIE - 147

client.chat(gearname, message):การสง่ ข้อความโดยระบุ gearname และข้อความที่ต้องการสง่arguments  gearname (string) - ชื่อของ Microgear นี ้  message (string) – ข้อความclient.chat(\"html\",\"hello from python\");client.publish(topic, message, retain):ในกรณีที่ต้องการสง่ ข้อความแบบไมเ่ จาะจงผ้รู ับ สามารถใช้ฟังชน่ั Publish ไปยงั Topic ที่กาหนดได้ ซง่ึ จะมีแต่ Microgear ที่ Subscribe ใน Topic นีเ้ทา่ นนั้ ท่ีจะได้รับข้อความarguments  topic (string) - ช่ือของ topic ที่ต้องการจะสง่ ข้อความไปถึง  message (string) – ข้อความ  retain (boolean) – ระบคุ า่ True ถ้าต้องการเก็บข้อความไว้ หากมีการ Subscribe Topic นีก้ ็จะได้รับข้อความนีอ้ ีก คา่ Default เป็น False หากไมร่ ะบุ และถ้าต้องการลบข้อความท่ีบนั ทึก ไว้ให้สง่ ข้อความ ซงึ่ มีความยาวเป็น \"\"0 เพ่ือล้างคา่ ข้อความท่ีไว้ทกึ ไว้client.publish(\"/outdoor/temp\",\"28.5\");client.subscribe(topic)Microgear อาจจะมีความสนใจใน Topic ใดเป็นการเฉพาะ เราสามารถใช้ฟังก์ชนั่ Subscribe() ในการบอกรับ Message ของ Topic นนั้ ได้argument  topic (string) - ชื่อของ Topic ที่ต้องการบอกรับ โดยต้องขนึ ้ ต้นด้วยเครื่องหมาย \"/\"client.subscribe(\"/temp\"); คูม่ ือการใชง้ าน NETPIE - 148

void microgear.writeFeed (feedid, datajson [, apikey])เขียนข้อมลู ลง Feed Storagearguments  feed (string) - ชื่อของ feed ท่ีต้องการจะเขียนข้อมลู  datajson (string) - ข้อมลู ท่ีจะบนั ทกึ ในรูปแบบ JSON  apikey (string) – API key สาหรับตรวจสอบสิทธ์ิ หากไมก่ าหนด จะใช้ Default API Key ของ feed ท่ีให้สิทธิ์ไว้กบั AppIDmicrogear.writeFeed(\"homesensor\",{temp:25.7,humid:62.8,light:8.5});client.resettoken()ใช้ในการการลบ Token ท่ีมีอยู่ จาก Cache และบน Platform เม่ือลบแล้ว จาเป็นจะต้องขอ Token ใหม่ทกุ ครัง้client.resettoken(); 5.4.2 Event Application ท่ีรันบน Microgear จะมีการทางานในแบบ Event Driven คอื เป็นการทางานตอบสนองตอ่ Event ตา่ งๆ ด้วยการเขียน Callback Function ขนึ ้ มารองรับในลกั ษณะๆ ดงั ตอ่ ไปนี ้client.on_connect เกิดขนึ ้ เมื่อ Microgear Library เชื่อมตอ่ กบั Platform สาเร็จ คา่ ที่ตงั้  Callback (function) - ฟังก์ชนั่ ท่ีจะทางาน เมื่อมีการ Connect เกิดขนึ ้def callback_connect() : print \"Now I am connected with netpie\"client.on_ connect = callback_connect คูม่ ือการใชง้ าน NETPIE - 149

client.on_disconnect เกิดขนึ ้ เมื่อ Microgear Library ตดั การเช่ือมตอ่ กบั Platform คา่ ท่ีตงั้  Callback (function) – Callback Functiondef callback_disconnect() : print \"Disconnected”client.on_disconnect = callback_disconnectclient.on_message เกิดขนึ ้ เม่ือได้รับข้อความจากการ Chat หรือ หวั ข้อที่ Subscribe คา่ ที่ตงั้  Callback (function) - ฟังก์ชนั่ ที่จะทางานเมื่อได้รับข้อความ โดยฟังก์ชนั่ นีจ้ ะรับพารามเิ ตอร์ 2 ตวั คอื o topic - ช่ือ Topic ท่ีได้รับข้อความนี ้ o message - ข้อความท่ีได้รับdef callback_message(topic, message) : print \"I got message from \", topic, \": \", messageclient.on_message= callback_messageclient.on_present Event นีจ้ ะเกิดขนึ ้ เมื่อมี Microgear ใน Appid เดียวกนั Online เข้ามาเชื่อมตอ่NETPIE คา่ ท่ีตงั้  callback (function) - จะทางานเมื่อเกิดเหตกุ ารณ์นี ้โดยจะรับคา่ พารามิเตอร์ คือ o gearkey - ระบคุ า่ ของ gearkey ท่ีเก่ียวข้องกบั เหตกุ ารณ์นี ้def callback_present(gearkey) : print gearkey+\" become online.\"client.on_present = callback_present คูม่ ือการใชง้ าน NETPIE - 150


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook