Bila pada artikel sebelumnya kami telah membahas artikel mengenai kendali relay melalui jaringan Wi-Fi Mengendalikan Relay dengan DST-ESP8266 melalui Web Server dengan Wifi Manager maka kali ini kami akan membahas mengendalikan relay dari mana saja dengan menggunakan Firebase. Apabila dengan menggunakan jaringan Wi-Fi kita hanya terbatas pada area dalam jangkauan hotspot Wi-Fi yang kita gunakan maka kali ini kita akan dapat mengendalikan relay-relay tersebut dari mana saja selama ada jaringan internet.
Biasanya untuk mengakses rangkaian elektronik dari mana saja menggunakan jaringan internet dibutuhkan:
- Koneksi internet baik di sisi pengendali maupun perangkat yang dikendalikan
- Server dengan ip public di mana script yang berfungsi sebagai backend bekerja
- Database yang ada di dalam server dan berfungsi memetakan kondisi output relay agar dapat mengatur on / offnya dengan mudah
Dengan adanya Firebase yang merupakan mobile application development platform buatan google yang telah menyediakan hosting dengan ip public, otentikasi dan real time database maka point 2 dan 3 di atas telah tersedia sehingga pengembang dapat jauh lebih mudah dalam membuat backend.

Dengan menggunakan Firebase dan DST-ESP8266 ini maka berikut adalah proses yang terjadi:
- DST-ESP8266 melakukan otorisasi username dan password dengan menggunakan email untuk mengakses real time database
- Database yang ada dilindungi oleh rule database sehingga hanya user yang terotentikasi yang dapat mengakses
- Database memiliki beberapa titik yang mewakili GPIO dari DST-ESP8266 status. Di sini kita kendalikan 2 buah relay yang terhubung pada GPIO12 dan GPIO13. Anda dapat menambah atau mengurangi dengan mudah hanya dengan mengubah tabel yang ada di database
- Kondisi relay dapat diubah dengan mudah hanya dengan mengubah logika yang ada di database atau dapat juga dilakukan dengan menggunakan web aplikasi yang selain memiliki tombol untuk pengendali juga dapat menampilkan status relay

Berikut adalah langkah-langkah yang perlu dilakukan
- Buat Project Firebase
- Masuk ke firebase dan sign in dengan menggunakan akun google anda
- Klik Get Started lalu Add Project untuk membuat Project baru
- Beri nama untuk Project yang baru tersebut, contohnya: DST-ESP8266 Relay

- Disable Google analytics karena fungsi ini tidak kita perlukan

- Dibutuhkan proses selama beberapa saat sebelum database siap terbentuk


- Klik Continue dan anda akan diarahkan ke halaman console dari Project
- Set metode otentikasi, untuk keamanan data yang ada di project yang sedang dibuat ini anda dibutuhkan proses otentikasi yang metodenya perlu diatur terlebih dahulu pada langkah-langkah berikut
- Klik Authentication pada bilah samping di sebelah kiri dan klik Get Started

- Pilih email dan password sebagai metode otentikasi

- Aktifkan otentikasi dengan klik enable dan non aktifkan email link (passwordless sign-in) dengan klik disable kemudian klik save

- Kemudian klik Add New Provider

- Kemudian klik bagian Authentication lalu pilih Add User

- Masukkan email dan password anda dan simpan password tersebut beserta user UIDnya di dalam text file untuk dipakai nanti di proses selanjutnya

- Di sini UID user telah terbentuk dan dapat digunakan sebagai otentikasi untuk mengakses project ini. Juga terdapat kolom yang menampilkan kapan terakhir user melakukan sign in
- Klik Authentication pada bilah samping di sebelah kiri dan klik Get Started
- Get Project API Key, untuk menghubungkan DST-ESP8266 dengan Project yang sedang dibuat dibutuhkan API Key yang dapat diperoleh dengan langkah-langkah berikut
- Klik Project Setting pada bilah samping kiri

- Copy Web API Key dan simpan di teks file karena nanti akan dibutuhkan

- Klik Project Setting pada bilah samping kiri
- Setup Realtime Database, pada bagian ini kita akan membuat dan mensetup database dari project yang sedang dibuat
- Pada bilah samping kiri klik build lalu Realtime Database dan kemudian klik Create Database


- Pilih lokasi database dengan lokasi yang terdekat dengan tempat anda

- Atur aturan keamanan database pada Test Mode dengan klik Start in Test Mode kemudian klik enable

- Saat ini database telah terbentuk dan anda dapat meng-copy URL yang terbentuk dan simpan dalam text file agar dapat digunakan pada saat membuat source code di DST-ESP8266.

- Pada bilah samping kiri klik build lalu Realtime Database dan kemudian klik Create Database
- Setup Database Security Rules, selanjutnya kita perlu membuat rule yang dibutuhkan untuk mengakses database ini. Hal ini dapat dilakukan dengan klik di Realtime Database, pilih tab Rules pada bagian atas lalu Edit Rules dan akan tampil rule seperti ini
- Edit rule menjadi seperti di bawah ini dengan mengganti dengan auth.uid yang artinya otentikasi dilakukan dengan verifikasi UID.

- Lalu replace UID ke bagian yang dikotak merah di bawah ini dan klik publish

- Untuk mendapatkan UID bisa dilihat dengan klik Authentication di bilah samping kiri lalu lihat di bagian yang ada kotak merah di bawah ini dan klik copy

- Sesudah tahap ini, hanya pengguna yang memiliki UID tersebut yang dapat membaca dan menulis pada Realtime Database yang ada di project ini
- Edit rule menjadi seperti di bawah ini dengan mengganti dengan auth.uid yang artinya otentikasi dilakukan dengan verifikasi UID.
6. Atur Database Nodes anda, semua data yang tersimpan dalam Firebase Realtime Database ini akan tersimpan dalam obyek JSON sehingga anda dapat membayangkan bahwa strukturnya tersusun dalam bentuk percabangan JSON. Saat kita menambahkan data pada percabangan JSON maka ada node yang terbentuk dalam Struktur JSON yang ada. Struktur ini bentuknya tergantung dari project yang kita buat.
Pada contoh kali ini yang kita buat adalah struktur untuk project mengendalikan relay pada DST-ESP8266 di mana kita dapat dengan mudah menambahkan/mengurangi I/O atau menambah perangkat baru selain DST-ESP8266 pertama hanya dengan mengedit database.
- board 1
- output
- digital
- 12:0
- 13:0
- digital
- output
Pada database di atas mempresentasikan board 1 dalam hal ini DST-ESP8266 memiliki output digital sebanyak 2 dan didefinisikan di digital 12 dan digital 13 dengan nilai awal 0 atau logika LOW. Karena Relay pada DST-ESP8266 active LOW maka pada kondisi awal kedua relay akan ON
Bentuk database ini akan menghasilkan format JSON sebagai berikut:
{
"board1": {
"outputs": {
"digital": {
"12": 0,
"13": 0 }
}
}
}
Membuat Node Database
Anda dapat membuat Node Database ini dengan cara manual di console Firebase, menggunakan Web App atau dapat juga dari DST-ESP8266. Namun kali ini akan saya bahas yang cara manual
- Klik pada Realtime Database untuk memulai membuat node

- Tekan tanda (+) pada database untuk menambahkan node secara manual

- Untuk menghindari typo, kami telah menyediakan file JSON yang dapat didownload di link berikut:
- Kemudian kembali ke console dan klik tiga garis di bagian atas kanan lalu pilih Import JSON
- Arahkan ke file yang baru saja didownload tadi dan saat semua node dibuka, database akan tampak seperti berikut

- Arahkan ke file yang baru saja didownload tadi dan saat semua node dibuka, database akan tampak seperti berikut
- Pada proses ini database telah siap untuk digunakan dan selanjutnya kita masuk ke bagian DST-ESP8266 yang berfungsi sebagai client yang selalu memantau perubahan status pada database dan menampilkannya pada bagian output yaitu dalam hal ini 2 channel relaynya.
7. DST-ESP8266 memantau perubahan database dan menampilkan pada output relaynya
Pada bagian ini, kita akan memprogram DST-ESP8266 agar dapat menjalankan proses-proses berikut:
- Otentikasi user dengan email dan password seperti yang telah didaftarkan sebelumnya
- Memantau perubahan status pada database dan menampilkan hasilnya pada output relay
Untuk itu berikut adalah langkah-langkah yang harus dilakukan
- Install Firebase ESP Client Library yang menyediakan berbagai contoh antarmuka ESP8266 dengan layanan Firebase.
-
- Masuk ke Sketch -> Include Library -> Library Manager dan ketik Firebase ESP Client di kolom pencarian
-


-
- Download source code yang ada pada link berikut dan buka menggunakan Arduino IDE anda
- File source code ini tidak dapat langsung digunakan melainkan terlebih dahulu ada beberapa parameter yang harus diatur yaitu sebagai berikut:
- Username dan Password Wi-Fi anda
- Project API Key
- URL dari Database
- Email dan password yang digunakan untuk otorisasi sebagai user di project ini

- Setelah parameter-parameter tersebut ditentukan barulah upload file ke DST-ESP8266 dengan menggunakan DST Uni Downloader atau FTDI to Serial
- Penjelasan untuk source code / sketch adalah sebagai berikut:
- Includekan library-library yang digunakan dan juga parameter-parameter yang dibutuhkan agar DST-ESP8266 terhubung dengan Project anda yang ada di Firebase

Screen Shot Arduino IDE + screen shot2 Project di Console Firebase 
- Selanjutnya kita masuk di bagian Setup yang merupakan proses yang pertama kali dijalankan saat DST-ESP8266 pertama kali reset.

- Pada bagian function InitWiFi berikut proses yang dilakukan dalam function ini



- Sekarang kita coba lihat lebih detail pada bagian fungsi streamCallback dan bagaimana proses yang terjadi di dalamnya. Pada saat fungsi streamCallback dipanggil maka obyek data dengan tipe FirebaseStream diinputkan pada saat fungsi ini dipanggil. Dari obyek ini maka akan kita peroleh Stream path, data path, data type dan event type.

- Includekan library-library yang digunakan dan juga parameter-parameter yang dibutuhkan agar DST-ESP8266 terhubung dengan Project anda yang ada di Firebase

- Pada bagian loop hanya ada fungsi refreshToken yang dipanggil saat time out yang fungsinya untuk mereload kondisi GPIO sesuai dengan data yang ada di RTDB setelah beberapa saat untuk sinkronisasi.
Hal-hal yang dibutuhkan:
- Software Arduino IDE
- Modul DST-ESP8266 sebagai Sistem Minimum ESP8266
- Modul DST Uni Downloader atau FTDI USB to Serial sebagai downloader
- Source code DST-ESP8266
- JSON file
Disclaimer:
Artikel ini saya tulis dengan menggunakan sumber dari https://randomnerdtutorials.com/firebase-control-esp8266-nodemcu-gpios/ dengan gaya bahasa dan konstruksi hardware yang saya sesuaikan dengan produk kami.
DELTA ELECTRONIC
Paulus Andi Nalwan, ST