📤Mengirim Data Dari Hardware Ke CoreX

Bagaimana caranya mengirim data dari hardware ke CoreX.

Bagaimana Alur Data Dari Hardware ke CoreX

Dengan CoreX kamu bisa mengirim data mentah dari sensor apapun atau aktuator yang terhubung ke microcontroller.

Ketika kamu mengirim data ke CoreX maka data tersebut akan dikirim kemudian dimasukan kedalam sebuah Bucket. Data yang lama akan ditimpa oleh data terbaru kecuali kamu melakukan upgrade layanan CoreX dimana data dapat disimpan pada database CoreX.

Bucket adalah tempat ditampungnya data pada server CoreX.

CoreX Dapat Bekerja Dengan Sensor Apapun

CoreX tidak peduli sensor apa yang kamu gunakan, oleh karena itu sensor apapun datanya dapat dikirim menggunakan CoreX.

Pertama, pastikan sensor dapat dibaca datanya oleh microcontroller tanpa menggunakan CoreX.

Ada banyak sekali jenis sensor yang ada di seluruh dunia. Setiap sensor tersebut memiliki cara kerja yang berbeda-beda. Ada yang simple dengan hanya menggunakan Pin Analog, ada juga yang memerlukan library khusus agar data dapat dibaca secara benar.

Sebelum kamu mencoba mengirimkan data ke CoreX maka kamu harus terlebih dahulu mencoba menampilkan data tersebut ke Serial Monitor agar yakin bahwa pembacaan sensor tidak bermasalah.

  • Cari tutorial mengenai bagaimana cara membaca sensor tersebut.

  • Temukan library yang cocok dengan sensor tersebut.

  • Install library untuk sensor yang kamu gunakan di Arduino IDE.

  • Tampilkan nilai sensor di Serial Monitor menggunakan fungsi Serial.println().

Jika kamu tidak bisa membaca nilai sensor tanpa CoreX, maka sudah dipastikan kamu juga tidak akan bisa mengirim data sensor menggunakan CoreX.

Data Disimpan Pada Bucket

Kamu seharusnya sudah paham dengan pin Analog dan Digital yang digunakan pada hardware kamu untuk mentransfer data dari sensor yang sudah terhubung.

Bucket adalah abstraksi yang didesain untuk melakukan pertukaran data antara hardware kamu dengan CoreX dimana data yang terbaru akan disimpan sementara pada sebuah tempat di server yang disebut dengan Bucket. Setiap Bucket memiliki nama sendiri yang berbeda-beda, nama dari Bucket dibuat oleh kamu sendiri.

Apapun yang kamu hubungkan ke hardware maka akan bisa terhubung juga dengan CoreX. Dengan menggunakan Bucket kamu dapat mengirim sesuatu dari aplikasi, memprosesnya di microcontroller, dan mengirimnya kembali ke smartphone. Kamu dapat memicu fungsi, membaca perangkat I2C, mengubah nilai, mengendalikan servo, motor DC, dan lain-lain.

Bucket dapat berinteraksi dengan library lainnya (Servo, LCD, dll) dan mengimplementasikan fungsi custom.

Mengirim Data

Kamu perlu membuat widget terlebih dahulu untuk mulai menggunakan Bucket. Siapkan nama dari Bucket yang ingin kamu gunakan. Nama Bucket dapat terdiri dari huruf dan angka namun tidak boleh menggunakan karakter khusus seperti !, @, #, $, %, ^, &, *, (, ), -, +, {, }, [, ] <, >, ?, /, ~.

Pada CoreX kamu bisa membuat widget terlebih dahulu. Ada 2 (dua) jenis widget yaitu widget yang mengambil data dari Bucket dan widget yang megirimkan data ke Bucket. Silahkan buka pada bagian Mengatur Widget. Kamu perlu membuat widget yang memiliki fungsi menampilkan data dari Bucket, karena data dikirim dari hardware ke Bucket kemudian ditampilkan ke Widget.

Mengatur Widget

Setelah membuat widget, maka kamu dapat menggunakan CoreX Library Firmware API untuk mengirim data menggunakan fungsi send().

sensorData = analogRead(A0);
corex.send(sensorData, "nama_bucket");

Kamu juga dapat mengirim data dengan tipe data lain seperti ini:

corex.send(123, "nama_bucket");
corex.send("abc", "nama_bucket");
corex.send(12.3, "nama_bucket");

Gunakan Timer!

Sangat penting untuk dipahami bahwa jika kita meletakan kode program di void loop() maka data akan dikirim "jutaan kali". Hal ini dapat menyebabkan spam ke server CoreX dengan jutaan data tersebut dari hardware kamu. Jika ini terjadi, CoreX akan memutus koneksi antara hardware dengan server.

Untuk menghindari spam seperti ini, lakukan pengiriman data hanya pada saat dibutuhkan saja (event-based) atau gunakan timer untuk mengirim data setiap interval tertentu. Library CoreX memiliki fitur timer yang dapat kamu gunakan.

Berikut adalah contoh kode program mengenai bagaimana caranya mengirim data setiap 2 (dua) detik sekali dengan menggunakan timer.

// Deklarasikan variabel global untuk data sensor
int dataSensor;

// Buat objek timer. Timer sudah termasuk bagian dari library CoreX
corexTimer timer;

void send(){
    // fungsi ini akan dieksekusi setiap 2 detik sekali
    // lihat pada bagian void setup() untuk memanggil fungsi nya
    corex.send(dataSensor, "nama_bucket");
}

void setup(){
    // Memulai menggunakan CoreX
    corex.begin(net);
    
    // Atur interval untuk mengirim data ke CoreX ke 2000ms.
    // Artinya data akan dikirim setiap 2 detik sekali
    timer.setInterval(2000, send);
}

void loop(){
    // Baca data sensor dari pin Analog A0
    dataSensor = analogRead(A0);
    
    // Jalankan timer
    timer.run();
}

Mengirim Data Ke Bucket Lebih Dari Satu

Untuk mengirim data lebih dari satu sensor di waktu yang bersamaan, cukup tambahkan perintah corex.send() di fungsi yang telah dibuat.

void send(){
    corex.send(sensorSatu, "bucket_satu");
    corex.send(sensorDua, "bucket_dua");
    corex.send(sensorTiga, "bucket_tiga");
}

Mengirim Data Ke Bucket Lebih Dari Satu Dengan Interval Berbeda

Untuk mengirim data lebih dari satu namun perlu dengan interval berbeda, maka cukup dengan buat timer lebih dari satu. Kamu bisa membuat timer sebanyak mungkin yang terpenting adalah microcontroller yang kamu gunakan memiliki spesifikasi yang cukup.

void setup(){
    timer.setInterval(1000, sendSatu);
    timer.setInterval(2000, sendDua);
}

void sendSatu(){
    // sendSatu() akan dieksekusi setiap 1 detik sekali
    corex.send(sensorSatu, "bucket_satu");
    corex.send(sensorDua, "bucket_dua");
}

void sendDua(){
    // sendDua() akan dieksekusi setiap 2 detik sekali
    corex.send(sensorTiga, "bucket_tiga");
}

Mengirim Data Hanya Sekali Setelah Beberapa Detik Perangkat Mulai Dinyalakan

Untuk dapat mengirim data ke Bucket 1 (satu) kali saja setelah beberapa detik perangkat dinyalakan maka dapat menggunakan timer.setTimeout().

void setup(){
    timer.setTimeout();
}

Last updated