Lab 1

การแสดงผลข้อมูลเซนเซอร์ด้วย NETPIE Feed


Lab นี้เป็นการทบทวนการประยุกต์ใช้ NETPIE Feed ในการดูข้อมูลอุณหภูมิและความชื้นที่ได้รับจากเซนเซอร์โมดูล DHT11 ผู้อบรมสามารถฝึกการนาข้อมูลที่เก็บจาก Feed มาใช้แสดงผลในรูปแบบต่างๆ พร้อมทั้งเข้าใจขีดจากัดการใช้งานของระบบและบริการ

1.สร้างไฟล์ feed_dht.ino ตามโค้ดด้านล่าง โดยระบุข้อมูลการเข้าถึงเครือข่าย Wifi ข้อมูล APPID, KEY และ SECRET และทาการ Upload ไฟล์เข้า NodeMCU ให้เชื่อมต่อกับ NETPIE

2.สร้าง Feed เพื่อรองรับค่าของข้อมูลอุณหภูมิและความชื้นที่เซนเซอร์ส่งมา ปรับแต่งการแสดงผลตามความเหมาะสม (ใน Data Display)

3.เพิ่ม Datasource สาหรับ Feed ในหน้า Freeboard

4.เพิ่ม Widget เพื่อแสดงผล Feed ในหน้า Freeboard

5.ทดลองเปลี่ยนอัตราการส่งข้อมูลของ Feed จาก NodeMCU ให้เร็วกว่าค่าของ INTERVAL ที่ระบุ (หรือเร็วกว่าอัตราเฉลี่ยที่เขียนได้คือ 15 วินาที ต่อ 1 จุด) สังเกตการเปลี่ยนแปลงในการแสดงผลของข้อมูลว่าเป็นอย่างไร มีผลต่อ Rate Limit หรือไม่ ในการดูระยะห่างระหว่างจุดของข้อมูลในระดับวินาที ควรปรับแต่งช่วงเวลาในการแสดงผลให้สั้นลง เช่น อยู่ในระดับ 1 นาที เป็นต้น

feed_dht.ino

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

const char* ssid     = "SSID";
const char* password = "PASSWORD";

#define APPID   "YOUR_APPID"
#define KEY     "YOUR_KEY"
#define SECRET  "YOUR_SECRET" 

#define ALIAS   "YOUR_MICROGEAR_NAME"
#define FEEDID  "YOUR_FEED_ID"

#define INTERVAL 15000
#define T_INCREMENT 200
#define T_RECONNECT 5000
#define BAUD_RATE 115200
#define MAX_TEMP 100
#define MAX_HUMID 100

WiFiClient client;

int timer = 0;
char str[32];  

#define DHTTYPE DHT11                    //Define sensor type
#define DHTPIN D4                        // Define sensor pin
DHT dht(DHTPIN, DHTTYPE);                //Initialize DHT sensor

float humid;
float temp;  


MicroGear microgear(client);

// when the other thing send a msg to this board
void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) {
    Serial.print("Incoming message --> ");
    msg[msglen] = '\0';
    Serial.println((char *)msg);
}

void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) {
    Serial.println("Connected to NETPIE...");
    microgear.setAlias(ALIAS);
}

void setup() {
    dht.begin();

    microgear.on(MESSAGE,onMsghandler);
    microgear.on(CONNECTED,onConnected);

    Serial.begin(BAUD_RATE);
    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());

    microgear.init(KEY,SECRET,ALIAS);
    microgear.connect(APPID);
}

void loop() {
    if (microgear.connected()) {
        Serial.print("*");
        microgear.loop();
        if (timer >= INTERVAL) {
            humid = dht.readHumidity();
            temp = dht.readTemperature();  

            Serial.print("\nHumidity: ");
            Serial.print(humid);
            Serial.print(" %\t");
            Serial.print("Temperature: ");
            Serial.print(temp);
            Serial.print(" C%\n");

            String data = "{\"humid\":";
            data += humid ;
            data += ", \"temp\":";
            data += temp ;
            data += "}";
            if (isnan(humid) || isnan(temp) || humid >= MAX_HUMID || temp>= MAX_TEMP) {
              Serial.println("Failed to read from DHT sensor!");
            }else{
              Serial.print("Sending -->");  
              Serial.println((char*) data.c_str());
              microgear.writeFeed(FEEDID,data); //YOUR  FEED ID, API KEY
            }
            timer = 0;
        } 
        else timer += T_INCREMENT;
    }
    else {
        Serial.println("connection lost, reconnect...");
        if (timer >= T_RECONNECT) {
            microgear.connect(APPID);
            timer = 0;
        }
        else timer += T_INCREMENT;
    }
    delay(200);
}

หมายเหตุ: ไฟล์ feed_dht.ino ได้รับการทดสอบด้วยการ compile กับ ESP8266 Microgear Version 1.2.2 และ DHT Sensor Library by Adafruit Version 1.2.3

results matching ""

    No results matching ""