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
- Ultrasonic Sensor
- NodeMCU ESP8266 dan USB
- Breadboard
- Jumper wire
Litar
Ultrasonic Sensor
- VCC → pin Vin ESP8266
- TRIG → pin D7 ESP8266
- ECHO → pin D8 ESP8266
- GND → GND ESP8266
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!