Blogu

Jinsi Baby Monitor Timmy inavyofanya kazi kiufundi

WebRTC, Firebase na ulinzi kutoka mwanzo hadi mwisho, vikielezwa bila mkanganyiko wa misamiati ya kitaalamu.

Vipengele Vitatu vya Msingi, Lengo Moja

Kwa ndani, Timmy imeundwa kwa njia rahisi na ya vitendo: Flutter kwa ajili ya programu, WebRTC kwa sauti na video ya wakati halisi, na Firebase kwa uratibu. Sikutaka kujenga mfumo mkubwa unaopitisha kila kitu kwenye wingu. Kila sehemu inapaswa kupata taarifa chache kadiri iwezekanavyo huku ikiendelea kufanya kazi kwa uhakika pamoja na sehemu nyingine.

WebRTC: Muunganisho wa Moja kwa Moja, Umesimbwa kwa Chaguomsingi

WebRTC (Web Real-Time Communication) husafirisha sauti na video kati ya kifaa cha mtoto na kifaa cha mzazi. Katika hali nzuri zaidi, data hutiririka moja kwa moja kati ya vifaa viwili, yaani moja kwa moja kutoka kifaa kimoja hadi kingine, bila seva ya kupitishia sauti na video katikati.

Kila muunganisho wa WebRTC hutumia DTLS-SRTP kwa chaguomsingi. Mtu akinasa pakiti za mtandao, hawezi kupata sauti inayoweza kusikilizwa wala video inayoweza kuonekana. Usimbaji huu ni sehemu ya itifaki na hauwezi tu kuzimwa katika WebRTC.

Hilo ndilo lilikuwa jambo muhimu kwangu: sauti na video za chumba cha mtoto hazipaswi kuwa kwenye seva yangu. Zinabaki kati ya vifaa vyako.

Uashiriaji kupitia Firebase Firestore

Kabla WebRTC haijaanza, vifaa vinahitaji kutambuana na kujadiliana kuhusu jinsi vitakavyounganishwa. Sehemu hiyo huitwa uashiriaji. Timmy hutumia Firebase Firestore, hifadhidata ya wingu ya Google, kwa kazi hiyo.

Ni data za kiufundi za muunganisho pekee zinazobadilishwa:

Sauti na video haziwekwi kwenye Firebase. Firestore husafirisha tu data za kiufundi za muunganisho. Timmy pia husimba kwa njia fiche taarifa hizi za uashiriaji, hivyo Firestore haiwi mahali ambapo data za SDP na ICE zinaweza kuonekana kama maandishi yasiyosimbwa.

Seva za TURN: Wakati Njia ya Moja kwa Moja Haifanyi Kazi

Baadhi ya mitandao huzuia miunganisho ya moja kwa moja, kwa mfano kwa kutumia ngome kali za mtandao (firewall), na baadhi ya watoa huduma za simu pia hufanya hivyo. Hapo WebRTC huhitaji seva ya kati ya TURN (Traversal Using Relays around NAT).

Timmy hujaribu kwanza seva yake ya TURN na hutumia Cloudflare kama mbadala wakati seva hiyo ya kati haipatikani au imelemewa. Seva hiyo hupitisha pakiti zilizosimbwa kwa njia fiche. Haipati funguo za sauti au video; usimbaji fiche wa WebRTC unabaki salama.

Taarifa za uthibitishaji za TURN hutolewa na Firebase Cloud Function na huwa halali kwa saa 24 pekee. Kwangu, kuweka taarifa za kudumu za uthibitishaji katika programu ya kufuatilia mtoto kungekuwa hatari sana.

Nearby Connections: Vifaa vinatambuana kiotomatiki

Ili kuepuka hatua ngumu za kusanidi kati ya kifaa cha mtoto na cha mzazi, Timmy hutumia Nearby Connections. Google hutoa teknolojia hii ya kugundua vifaa kupitia Bluetooth na Wi-Fi.

Kuunganisha vifaa kiotomatiki kwenye Timmy hufanya kazi bila kuingiza msimbo mwenyewe: vifaa hugunduana na kupata sehemu ileile ya kukutana kwa ajili ya kubadilishana funguo. Hilo lisipofaulu, kuna msimbo wa vibambo 4 unaoweza kuandika. Msimbo wa kuunganisha vifaa hautoki kamwe kwenye kifaa; Firestore huona alama ya kriptografia (hashi ya SHA-256) pekee kama kitambulisho cha hati.

Uthibitishaji Bila Kutambulisha Mtumiaji

Timmy hutumia Firebase Anonymous Authentication. Kila kifaa kinapofunguliwa kwa mara ya kwanza, hupokea kitambulisho cha muda kisichohusishwa na utambulisho wa mtumiaji. Hakuna akaunti, anwani ya barua pepe wala nenosiri. Kitambulisho hiki kinatumika tu kutekeleza sheria za Firestore: ni vifaa vilivyothibitishwa pekee vinavyoweza kusoma au kuandika data za kipindi.

Muundo: Nani Hutuma, Nani Hupokea

Timmy ina hali mbili:

Vidhibiti kama push-to-talk na kuwasha/kuzima kamera hutumia DataChannel, njia nyingine ya WebRTC inayotuma jumbe fupi zilizosimbwa kwa njia fiche moja kwa moja kati ya vifaa.

Kwa Nini Flutter?

Flutter ni mfumo wa Google wa kutengeneza programu kwa majukwaa mengi. Kwa Timmy, hiyo inamaanisha ninaweza kuandika sehemu kubwa ya mantiki mara moja na kuitumia kwenye Android na iOS. Timmy inapatikana kwenye Android, na toleo la iOS linakaribia kutolewa. Kupunguza kurudiwa kwa msimbo kunamaanisha kupunguza sehemu ambazo hitilafu zinaweza kujipenyeza.

Muhtasari

Kanuni ya kiufundi ni rahisi: Timmy inapaswa kushughulikia tu data inayohitaji kweli. WebRTC hulinda sauti na video, Firebase huratibu usanidi wa muunganisho, TURN huona pakiti zilizosimbwa kwa njia fiche pekee, na Nearby Connections hurahisisha kuunganisha vifaa.

Teknolojia nzuri huwa karibu kutoonekana katika maisha ya kila siku. Hufanya kazi bila kugeuza chumba cha mtoto kuwa mradi wa wingu.


Makala Zaidi