Blog

Si funksionon Baby Monitor Timmy nga ana teknike

WebRTC, Firebase dhe mbrojtje nga skaji në skaj, të shpjeguara pa mjegull termash.

Tri blloqe ndërtuese, një qëllim

Në prapaskenë, Timmy është ndërtuar në mënyrë mjaft praktike: Flutter për aplikacionin, WebRTC për audio dhe video në kohë reale, dhe Firebase për koordinim. Nuk doja të ndërtoja një platformë gjigante që kalon gjithçka përmes cloud-it. Çdo pjesë duhet të dijë sa më pak të jetë e mundur dhe prapë të funksionojë me besueshmëri me të tjerat.

WebRTC: lidhje e drejtpërdrejtë, e enkriptuar si parazgjedhje

WebRTC (Web Real-Time Communication) përcjell audion dhe videon mes pajisjeve të bebit dhe prindit. Në rastin më të mirë, të dhënat kalojnë drejtpërdrejt mes dy pajisjeve, nga njëra pajisje te tjetra, pa server media në mes.

Çdo lidhje WebRTC përdor DTLS-SRTP si parazgjedhje. Nëse dikush kap paketat e rrjetit, nuk merr audio ose video të lexueshme. Ky enkriptim është pjesë e protokollit dhe nuk mund të çaktivizohet thjesht në WebRTC.

Kjo ishte pika e rëndësishme për mua: media e dhomës së bebit nuk i përket serverit tim. Ajo mbetet mes pajisjeve tuaja.

Sinjalizimi përmes Firebase Firestore

Para se WebRTC të mund të nisë, pajisjet duhet të gjejnë njëra-tjetrën dhe të negociojnë mënyrën si mund të lidhen. Kjo pjesë quhet sinjalizim. Timmy përdor Firebase Firestore, bazën e të dhënave cloud të Google, për këtë.

Shkëmbehen vetëm të dhëna teknike të lidhjes:

Audioja dhe videoja nuk përfundojnë në Firebase. Firestore transporton vetëm të dhënat teknike të lidhjes. Timmy gjithashtu e enkripton këtë shtresë sinjalizimi, që Firestore të mos bëhet një vendtakim me tekst të qartë për SDP dhe ICE.

Serverët TURN: kur rruga e drejtpërdrejtë nuk funksionon

Disa rrjete bllokojnë lidhjet e drejtpërdrejta, për shembull firewall-e të rrepta ose disa operatorë celularë. Atëherë WebRTC ka nevojë për një server ndërmjetësues TURN (Traversal Using Relays around NAT).

Timmy provon fillimisht serverin lokal TURN dhe përdor Cloudflare si alternativë kur serveri ndërmjetësues lokal nuk është i disponueshëm ose është i mbingarkuar. Serveri ndërmjetësues përcjell paketa të enkriptuara. Ai nuk merr çelësat e audios apo të videos; enkriptimi WebRTC mbetet i paprekur.

Kredencialet TURN vijnë nga një Firebase Cloud Function dhe vlejnë vetëm për 24 orë. Kredencialet e përhershme në një aplikacion për monitorimin e bebit do të ishin tepër të rrezikshme për shijen time.

Nearby Connections: pajisjet e gjejnë njëra-tjetrën automatikisht

Për të shmangur hapat e bezdisshëm të konfigurimit mes pajisjes së bebit dhe asaj të prindit, Timmy përdor Nearby Connections. Google e ofron këtë shtresë zbulimi përmes Bluetooth dhe WiFi.

Çiftimi automatik në Timmy funksionon pa futje manuale të kodit: pajisjet zbulojnë njëra-tjetrën dhe gjejnë të njëjtën pikë takimi për shkëmbimin e çelësave. Nëse kjo dështon, ka një kod me 4 karaktere që mund ta shkruani. Kodi i çiftimit nuk del kurrë nga pajisja; Firestore sheh vetëm një hash kriptografik (SHA-256) si identifikues dokumenti.

Autentikim anonim

Timmy përdor Firebase Anonymous Authentication. Në nisjen e parë, çdo pajisje merr një ID të përkohshme dhe anonime. Nuk ka llogari, adresë emaili apo fjalëkalim. ID-ja shërben vetëm për zbatimin e rregullave të Firestore: vetëm pajisjet e autentikuara mund të lexojnë ose shkruajnë të dhëna sesioni.

Arkitektura: kush dërgon, kush merr

Timmy ka dy mënyra:

Kontrollet si push-to-talk dhe ndezja/fikja e kamerës përdorin një DataChannel, një kanal tjetër WebRTC që dërgon drejtpërdrejt mes pajisjeve mesazhe të vogla të enkriptuara.

Pse Flutter?

Flutter është framework-u i Google për krijimin e aplikacioneve në shumë platforma. Për Timmy, kjo do të thotë se mund të shkruaj një pjesë të madhe të logjikës një herë dhe ta përdor në Android dhe iOS. Timmy është i disponueshëm në Android dhe versioni për iOS është pranë publikimit. Më pak kod i përsëritur do të thotë më pak vende ku mund të futen gabime.

Përmbledhje

Rregulli teknik është i thjeshtë: Timmy duhet të prekë vetëm të dhënat që i nevojiten vërtet. WebRTC mbron median, Firebase koordinon krijimin e lidhjes, TURN sheh vetëm paketa të enkriptuara dhe Nearby Connections e bën çiftimin më të thjeshtë.

Teknologjia e mirë zhduket paksa në jetën e përditshme. Ajo funksionon pa e kthyer dhomën e bebit në një projekt cloud.


Më shumë artikuj