Lab 2

HTML -> NodeMCU


ในการทดลองนี้จะให้เบราว์เซอร์สื่อสารกับ Microgear บน NodeMCU ผ่าน REST API

1.ใช้ไฟล์ SetLampStatus.html จาก Lab 1 แก้ไข URL สำหรับ PUT ให้อยู่ในรูปแบบ

https://api.netpie.io/microgear/appid/alias?retain&auth=KEY:SECRET

โดย alias คือชื่อที่เราตั้งให้กับ NodeMCU Microgear ให้ใช้ตามที่เราเคยตั้งให้ Node MCU ในLab4.2ในไฟล์ pieled.ino ใช้ alias ว่า pieled

2.เนื่องจากเราจะใช้ไฟล์ pieled.ino จาก LabIoT Switch แต่เราตั้งเงื่อนไขไว้ให้ 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
    }    
</script>

<center>
<button onclick= “PressButtonOn()” id = “ButtonOn”>ON</button>
<button onclick= “PressButtonOff()” id = “ButtonOff”>OFF</button>
</center>
</body>
</html>

3.อัพโหลดโค้ด pieled.ino (เหมือน Lab IoT Switch)ลงใน NodeMCU

pieled.ino

#include <ESP8266WiFi.h>
#include <MicroGear.h>

const char* ssid     = "SSID"; //change this to your SSID
const char* password = "PASSWORD"; //change this to your PASSWORD

#define APPID   "APPID"     //change this to your APPID
#define KEY     "KEY"     //change this to your KEY
#define SECRET  "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{
        digitalWrite(LED_BUILTIN, HIGH);  // LED off
microgear.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;
    }
    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

results matching ""

    No results matching ""