Loading...
OUR BLOG

Hantar data ke Favoriot menggunakan Ultrasonic Sensor dan NodeMCU ESP8266

Hi BDx-ian!

 

Tutorial kali ini kita akan belajar cara nak hantar data jarak ke Favoriot menggunakan ultrasonic sensor dan NodeMCU ESP8266. 

 

 

Apa itu Favoriot?

Merupakan platform yang dibangunkan untuk menyokong integrasi data daripada pelbagai sensor, microcontroller dan sumber data lain. Platform ini membolehkan pengumpulan dan penyimpanan data daripada peranti IOT menjadi lebih mudah. 

 

Bagi menghantar data ke platform Favoriot anda perlu menggunakan API yang disediakan. Ianya menggunakan http request secara GET atau POST. Data yang dihantar pula di dalam format JSON.

 

 

Cipta akaun

Pergi ke Favoriot -> Tekan Sign Up

 

Lengkapkan maklumat profile -> Pilih jenis akaun -> Tekan Submit

 

Favoriot memberikan hanya 500 API request setiap hari bagi pengguna akaun jenis Free. 

 

Login akaun

Pergi ke Favoriot -> Login akaun yang anda telah cipta tadi

 

 

Cipta Projek 

Tekan Auto Create  

 

 

Auto Create akan mencipta Application, Device dan Group secara automatik.

 

 

Lengkapkan maklumat projek anda -> Tekan Add

 

 

Device

Edit maklumat Device

 

Pergi ke Hierarchy -> Tekan Devices -> Tekan butang edit -> Tukarkan device menjadi active -> Tekan Update.

 

 

 

API key

Untuk mendapatkan API key, pergi ke Setting -> Copy API key -> Paste API key ke dalam code.

 

 


Developer ID

Untuk mendapatkan Developer ID, pergi ke Hierarchy -> Tekan Project -> Copy Project Developer Id -> Paste ke dalam code.

 

 

 

Komponen 

Komponen yang diperlukan

 

 

Litar 

Ultrasonic Sensor

 

 

Code 

#include <ESP8266WiFi.h>

 

char ssid[] = "Nama wifi anda";      

char pass[] = "Password wifi anda";  

const String myDevice = "Device ID"; 

String apikey = "API KEY akaun anda";

char server[] = "apiv2.favoriot.com";

 

int status = WL_IDLE_STATUS;

WiFiClient client;

 

#define triggerPin 13

#define echoPin    15

long duration;

int distance;

 

unsigned long dataMillis = 0;

 

void setup() {

  Serial.begin (115200);

  pinMode(triggerPin, OUTPUT);

  pinMode(echoPin, INPUT);

  

  WiFi.disconnect();

  Serial.println("Connecting...");

  WiFi.begin(ssid,pass);

  

  while((!(WiFi.status() == WL_CONNECTED))){

    delay(300);

    Serial.print(".");

  }

  

  Serial.println(WiFi.status());

  Serial.println("Connected!");

  Serial.println("");

   

delay(3000);

}

 

void loop() {

  

  getDistance();

 

//DELAY UNTUK TIDAK FLOODING SERVER 

 if (millis() - dataMillis > 5000)

    {

    dataMillis = millis();

 

    sendData();

    }  

}

 

void getDistance(){

  digitalWrite(triggerPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(triggerPin, LOW);

  duration = pulseIn(echoPin, HIGH);

  distance = (duration/2)/29.1;

 

  Serial.print(distance);

  Serial.println(" cm");

}

  

 

  

void sendData(){

  //=========================json favoriot data send ==================================================

  String json = "{\"device_developer_id\":\""+myDevice+"\",\"data\":{\"Distance\":\""+distance+"\"}}";

  Serial.println(json);

  if (client.connect(server, 80)) {

    client.println("POST /v2/streams HTTP/1.1");

    client.println("Host: apiv2.favoriot.com");

 

    client.print(String("apikey: "));

    client.println(apikey);

    client.println("Content-Type: application/json");

    client.println("cache-control: no-cache");

    client.print("Content-Length: ");

    int thisLength = json.length();

    client.println(thisLength);

    client.println("Connection: close");

    client.println();

    client.println(json);

  }

  while (client.available()) {

    char c = client.read();

    Serial.write(c);

  }

  if (!client.connected()) {

    client.stop();

  }

  delay(5000);

}

 

Peringatan

Jangan lupa tukarkan maklumat ini

char ssid[] = "Nama wifi anda";      

char pass[] = "Password wifi anda";  

const String myDevice = "Device ID"; 

String apikey = "API KEY akaun anda";

 

Output

Setelah code diupload, output pada Serial Monitor dan data streams pada Favoriot memaparkan data jarak.

 

Output Serial Monitor

 

Output Data Streams

 

Sekiranya anda ingin menambah widget, anda perlu upload code terlebih dahulu bagi menambah data pada data streams. Ini adalah untuk mencipta parameter data anda pada platform.

 

Dashboard

Favoriot menyediakan widget seperti graf, teks, jam dan button pada dashboard. 

 

Pergi ke Dashboards -> Tekan Create Dashboard -> Lengkapkan maklumat -> Tekan Create 

 

 

Widget graf

Tekan dashboard anda cipta tadi -> Tekan Add Widget -> Pilih graf.

 

 

 

Lengkapkan maklumat widget graf seperti di bawah.

 

 

 

 

Rules

Favoriot menyediakan rules untuk pengguna menghantar notifikasi contohnya pada Telegram, Email, HTTP post dan sebagainya.

 

Notifikasi melalui email

 

Pergi ke Rules -> Tekan Create Rule 

 

 

Lengkapkan maklumat Rules seperti di bawah

 

 

 

Output

Setelah code diupload, output graf pada dashboard, data streams dan Serial Monitor memaparkan jarak.

 

 

Apabila jarak objek kurang 10 cm dari sensor, notifikasi amaran akan dihantar melalui email.

 

Output Serial Monitor

 

Output Data Streams

 

Output Dashboard

 

Output notifikasi pada email

 

Jika anda suka dengan perkongsian tutorial dalam blog kami ni, jangan lupa untuk follow Facebook dan Instagram kami, kat situ ada bermacam info dan update terkini yang akan kami kongsikan kepada anda. Itu sahaja untuk tutorial kami. Stay update dan selamat mencuba!

 

Unsure Whether You Need Our Help?

Have you got an awesome new idea or project that you want to talk about? We're here to talk you through it. Flick us an email or give us a call to get started.