Blog

Cara Kerja Teknis Baby Monitor Timmy

WebRTC, Firebase, dan perlindungan end-to-end, dijelaskan tanpa istilah teknis yang membingungkan.

Tiga Komponen Utama, Satu Tujuan

Di balik layar, Timmy dibuat dengan pendekatan yang cukup praktis: Flutter untuk aplikasinya, WebRTC untuk audio dan video waktu nyata, serta Firebase untuk koordinasi. Saya tidak ingin membangun platform besar yang mengalirkan semuanya melalui cloud. Setiap bagian seharusnya mengetahui sesedikit mungkin, tetapi tetap bekerja andal bersama bagian lainnya.

WebRTC: Koneksi Langsung, Terenkripsi Secara Bawaan

WebRTC (Web Real-Time Communication) mengirimkan audio dan video antara perangkat bayi dan perangkat orang tua. Dalam kondisi terbaik, data mengalir langsung di antara kedua perangkat, secara peer-to-peer, tanpa server media di tengahnya.

Setiap koneksi WebRTC menggunakan DTLS-SRTP secara bawaan. Jika seseorang menangkap paket jaringan, mereka tidak akan mendapatkan audio atau video yang dapat dibaca. Enkripsi ini merupakan bagian dari protokol dan tidak bisa begitu saja dimatikan di WebRTC.

Bagi saya, ini poin yang penting: media dari kamar bayi tidak seharusnya berada di server saya. Media itu tetap berada di antara perangkat Anda.

Pensinyalan melalui Firebase Firestore

Sebelum WebRTC dapat dimulai, perangkat perlu saling menemukan dan menegosiasikan cara untuk terhubung. Bagian ini disebut pensinyalan. Timmy menggunakan Firebase Firestore, database cloud milik Google, untuk proses ini.

Hanya data koneksi teknis yang dipertukarkan:

Audio dan video tidak masuk ke Firebase. Firestore hanya mengirimkan data koneksi teknis. Timmy juga mengenkripsi lapisan pensinyalan ini, sehingga Firestore tidak menjadi titik temu tempat data SDP dan ICE tersimpan sebagai teks biasa.

Server TURN: Saat Jalur Langsung Tidak Berhasil

Beberapa jaringan memblokir koneksi langsung, misalnya firewall yang ketat atau operator seluler tertentu. Dalam kondisi ini, WebRTC memerlukan relay TURN (Traversal Using Relays around NAT).

Timmy lebih dulu mencoba server TURN lokal, lalu menggunakan Cloudflare sebagai cadangan jika relay lokal tidak tersedia atau kelebihan beban. Relay meneruskan paket terenkripsi. Relay tidak memperoleh kunci untuk audio atau video; enkripsi WebRTC tetap utuh.

Kredensial TURN berasal dari Firebase Cloud Function dan hanya berlaku selama 24 jam. Kredensial permanen dalam aplikasi monitor bayi terasa terlalu berisiko bagi saya.

Nearby Connections: Perangkat Saling Menemukan Secara Otomatis

Agar pengaturan antara perangkat bayi dan perangkat orang tua tidak merepotkan, Timmy menggunakan Nearby Connections. Google menyediakan lapisan penemuan ini melalui Bluetooth dan WiFi.

Penyandingan otomatis di Timmy berjalan tanpa memasukkan kode secara manual: perangkat saling menemukan dan menemukan titik pertemuan yang sama untuk pertukaran kunci. Jika gagal, tersedia kode 4 karakter yang dapat Anda ketikkan. Kode penyandingan tidak pernah meninggalkan perangkat; Firestore hanya melihat hash kriptografis (SHA-256) sebagai pengenal dokumen.

Autentikasi Anonim

Timmy menggunakan Firebase Anonymous Authentication. Saat pertama kali dijalankan, setiap perangkat mendapatkan ID anonim sementara. Tidak ada akun, alamat email, maupun kata sandi. ID ini hanya digunakan untuk menerapkan aturan Firestore: hanya perangkat yang terautentikasi yang boleh membaca atau menulis data sesi.

Arsitektur: Siapa yang Mengirim, Siapa yang Menerima

Timmy memiliki dua mode:

Kontrol seperti push-to-talk dan menyalakan/mematikan kamera menggunakan DataChannel, saluran WebRTC lain yang mengirim pesan terenkripsi kecil secara langsung antarperangkat.

Mengapa Flutter?

Flutter adalah framework Google untuk aplikasi di berbagai platform. Bagi Timmy, ini berarti saya dapat menulis sebagian besar logika satu kali, lalu menggunakannya di Android dan iOS. Timmy tersedia di Android, dan versi iOS hampir siap dirilis. Lebih sedikit kode duplikat berarti lebih sedikit tempat bagi bug untuk muncul.

Ringkasan

Aturan teknisnya sederhana: Timmy seharusnya hanya menangani data yang benar-benar dibutuhkannya. WebRTC melindungi media, Firebase mengoordinasikan penyiapan koneksi, TURN hanya melihat paket terenkripsi, dan Nearby Connections membuat proses penyandingan lebih mudah.

Teknologi yang baik seharusnya tidak terlalu terasa dalam kehidupan sehari-hari. Teknologi itu bekerja tanpa mengubah kamar bayi menjadi proyek cloud.


Artikel Lainnya