{"id":84024,"date":"2020-06-04T19:42:32","date_gmt":"2020-06-04T17:42:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/ble-pod-mikroskopom-atty-gatty"},"modified":"2020-06-04T19:42:32","modified_gmt":"2020-06-04T17:42:32","slug":"ble-pod-mikroskopom-atty-gatty","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ble-pod-mikroskopom-atty-gatty","title":{"rendered":"BLE mikroskoobi all (ATT-d ja GATT-id&#8230;)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"BLE mikroskoobi all (ATT-d GATT-id...)\" src=\"\/wp-content\/uploads\/2020\/06\/d8587bf897b27457b354549b99399bcc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>BLE mikroskoobi all (ATT-d ja GATT-id&#8230;)<\/h2>\n<p> <b>Osa 1, \u00fclevaade<\/b><\/p>\n<p>On m\u00f6\u00f6dunud juba \u00fcsna kaua aega, sellest ajast, kui ilmus esimene spetsifikatsioon Bluetooth 4.0. Ja kuigi BLE teema on v\u00e4ga huvitav, t\u00f5ukab see paljusid arendajaid siiski tagasi, oma keerukuse t\u00f5ttu. Oma varasemates artiklites olen peamiselt vaadanud k\u00f5ige madalamat taset Link Layer ja Physical Layer. See v\u00f5imaldas mitte tegeleda selliste keeruliste ja segaste m\u00f5istetega nagu atribuudi protokoll (ATT) ja \u00fcldine atribuutide profiil (GATT). Kuid ilma nendeta ei ole v\u00f5imalik arendada \u00fchilduvaid seadmeid. T\u00e4na soovin jagada teiega neid teadmisi. Oma artiklis tuginen <noindex><a rel=\"nofollow\" href=\"https:\/\/devzone.nordicsemi.com\/nordic\/short-range-guides\/b\/bluetooth-low-energy\/posts\/ble-characteristics-a-beginners-tutorial\">\u00f5pikule<\/a><\/noindex> algajatele Nordic-i veebisaidilt. Nii et liikume edasi.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Miks on k\u00f5ik nii keeruline?<\/h3>\n<p>\nMinu arvates oli kohe selge, et seadmete juhtimine nutitelefonide kaudu on v\u00e4ga perspektiivikas ja kestlik teema. Seet\u00f5ttu otsustati see kohe maksimaalselt struktureerida. Et tootjad ei leiutaks erinevaid protokolle, mis hiljem ei ole \u00fchilduvad. Sealt ka keerukus. Juba esimesel etapil p\u00fc\u00fcti BLE protokolli mahutada k\u00f5ik, mis v\u00f5imalik. Ja pole t\u00e4htis, kas see osutub hiljem vajalikuks v\u00f5i mitte. Lisaks kaaluti tulevikus seadmete nimekirja laiendamise v\u00f5imalust.<\/p>\n<p>Vaadakem pilti, kus on kujutatud BLE protokolli skeemi. See koosneb mitmest kihist. Alumine, f\u00fc\u00fcsiline kiht (PHY) vastutab seadme raadiosignaali eest. Link Layer (LL) sisaldab k\u00f5iki edastatava s\u00f5numi baitide j\u00e4rjestusi. Eelnevates artiklites uurisime just seda. Host Controller Interface (HCI) on protokoll kihtide v\u00f5i BLE kiipide vahelise suhtluse jaoks, kui Controller ja Host on erinevatel kiipidel. Pakkide vormimise, kaadrite jagamise, vigade kontrollimise ja pakkide kogumise eest vastutab Logical Link Control and Adaptation Protocol (L2CAP). Pakkide kr\u00fcpteerimise eest vastutab Security Manager Protocol (SMP). \u00dcldkasutatava profiili (GAP) \u00fclesanne on algne andmevahetus seadmete vahel, et m\u00e4\u00e4rata \u201eKes on kes\u201c. Selle alla kuuluvad ka skaneerimine ja reklaamimine. Selles artiklis peatuge kahes \u00fclej\u00e4\u00e4nud protokolli osas \u2014 GATT ja ATT. GATT on ATT-i kohal, seega on nad omavahel tihedalt seotud.<\/p>\n<p><img decoding=\"async\" alt=\"BLE mikroskoobi all (ATT-d GATT-id...)\" src=\"\/wp-content\/uploads\/2020\/06\/8060076152cfe3ae648eca362889e571.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKuna jutustamist lihtsustada, tahaksin kasutada analoogiat. Olen seda kuskil kuulnud ja sooviksin toetada. Kujutage ette BLE seadet kui raamaturiiulit, kus on mitu riiulit. Iga riiul on eraldi teema. N\u00e4iteks, meil on riiulid ulmekirjanduse, matemaatika, ents\u00fcklopeediate jaoks. Igal riiulil on raamatud, mis k\u00e4sitlevad selle eraldi teema. M\u00f5nes raamatus on isegi paberist j\u00e4rjehoidjad m\u00e4rkmete tegemiseks. Lisaks on meil v\u00e4ike paberite kataloog, kus on kirja pandud k\u00f5ik raamatud. Kui m\u00e4letate kooli raamatukogusid \u2014 see on kitsas sahtel paberist kaardiendanitega. Selles analoogias on kapp meie seadme profiil. Riiulid on teenused, raamatud on omadused ja kataloog on atribuutide tabel. J\u00e4rjehoidjad raamatutes on deskriptorid, millest r\u00e4\u00e4gin hiljem, p\u00f5hjalikumalt.<\/p>\n<p>Keenud, kes on seadmeid arendanud, teavad, et paljudes projektides on sarnased koodil\u00f5igud. Asi on selles, et paljud seadmed omavad sarnast funktsionaalsust. N\u00e4iteks, kui seadmed t\u00f6\u00f6tavad akude pealt, siis laadimise ja nende taseme kontrollimise probleem on \u00fcks ja sama. Sama kehtib ka andurite kohta. Tegelikult on objektorienteeritud l\u00e4henemine programmeerimisel <i>\u201epakub v\u00f5imaluse luua objekte, mis \u00fchendavad omadused ja k\u00e4itumise iseseisvaks liiduks, mida saab seej\u00e4rel korduvkasutada\u201c<\/i>. Minu arvates on BLE-s p\u00fc\u00fcdnud sarnast l\u00e4henemist. Bluetooth Special Interest Group (SIG) on v\u00e4lja t\u00f6\u00f6tanud profiilid. Erinevate tootjate seadmed, mis omavad sama profiili, peavad \u00fcksteisega h\u00f5lpsasti t\u00f6\u00f6tama. Profiilid koosnevad omakorda teenustest, teenused omadustest, mida t\u00e4iustatakse deskriptoritega. \u00dcldiselt v\u00f5ib see v\u00e4lja n\u00e4ha nii:<\/p>\n<p><img decoding=\"async\" alt=\"BLE mikroskoobi all (ATT-d GATT-id...)\" src=\"\/wp-content\/uploads\/2020\/06\/34cbbeee142d40e56dff7626ef752d42.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e4iteks vaatame s\u00fcdame l\u00f6\u00f6gisageduse monitori profiili diagrammi (fitness randmevara). See koosneb kahest teenusest ja mitmest omadusest. Selgub koheselt profiili hierarhia. Kontrollpunkti omadus nullib kalorikulu koguarv. <\/p>\n<p>1. S\u00fcdame l\u00f6\u00f6gisageduse teenus sisaldab kolme omadust (0x180D):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;a) Kohustuslik s\u00fcdame l\u00f6\u00f6gisageduse omadus (0\u04452A37)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;b) Valikuline kehaanduri positsiooni omadus (0x2A38)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;c) Tingimuslik s\u00fcdame l\u00f6\u00f6gisageduse kontrollpunkti omadus (0x2A39)<br \/>\n2. Aku teenus (0x180F):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;a) Kohustuslik aku taseme omadus (0x2A19)<\/p>\n<h3>UUID<\/h3>\n<p>\nKuna me peame \u00fchem\u00f5tteliselt viitama profiilielementidele (teenused, omadused ja descriptorid), tuleb need kuidagi nummerdada. Selleks tutvustatakse m\u00f5istet Universally Unique ID (UUID) ehk \u00dcksikasjalik Unikaalne Identifikaator. Iga rea sulgudes ongi m\u00e4rgitud UUID. Siin on \u00fcks erip\u00e4ra. UUID-de jaoks otsustati kasutada 16- ja 128-bitiseid koode. Miks, k\u00fcsite? BLE protokollis allub k\u00f5ik energiakokkuhoiule. Seet\u00f5ttu on 16-bitine m\u00f5\u00f5t t\u00f5en\u00e4oliselt m\u00f5istlik. V\u00e4ga t\u00f5en\u00e4oliselt ei tule tulevikus \u00fcle 65 tuhande erilise teenuse ja omaduse loomist. Praegu on k\u00f5ik, mis suudeti, juba arvesse v\u00f5etud (m\u00e4letate kust see tuleb \u2014 \u201eta on ka teid arvesse v\u00f5tnud\u201c :-)) Nummerdatud elemendid. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bluetooth.com\/specifications\/gatt\/\">profiilidest<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bluetooth.com\/specifications\/gatt\/services\/\">teenustest<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bluetooth.com\/specifications\/gatt\/characteristics\/\">omadustest<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bluetooth.com\/specifications\/gatt\/descriptors\/\">descriptoritest<\/a><\/noindex> v\u00f5ite vaadata linkide kaudu.<\/p>\n<p>Kuid ma arvan, et k\u00f5ik m\u00e4letavad lugu 4-byte IP aadressidest internetis. Alguses arvasime, et see on piisav, aga n\u00fc\u00fcd ei suuda me kuidagi 6-byte aadressile \u00fcle minna. Et v\u00e4ltida selle vea kordamist ja anda ruumi nokitsejatele, otsustas SIG kohe tutvustada ka 128-bitiseid UUID-sid. See meenutab mulle litsentseerimata 433MHz sagedust, mis anti erinevate Kuliibinite suva kasutada. Meie puhul anti 128-bitine teenuste ja omaduste identifikaator samuti kellegi k\u00e4tesse. See t\u00e4hendab, et v\u00f5ime oma teenuste ja seadmete jaoks kasutada praktiliselt mis tahes 128-bitist v\u00e4\u00e4rtust. Samas on t\u00f5en\u00e4osus sarnase UUID genereerimiseks olematu.<\/p>\n<p>Tegelikult on l\u00fchikestel 16-bitistel UUID-del oma laiendus 128-bitistele v\u00e4\u00e4rtustele. Spetsifikatsioonis nimetatakse seda laiendust Bluetooth Base UUID-ks ja selle v\u00e4\u00e4rtus on 00000000-0000-1000-8000-00805F9B34FB. N\u00e4iteks kui 16-bitise atribuutide UUID v\u00e4\u00e4rtus on 0x1234, siis vastav 128-bitine UUID on 00001234-0000-1000-8000-00805F9B34FB. Ja toimetatakse ka vastav valem:<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID<\/p>\n<p>Kust see maagiline number p\u00e4rineb, ei ole mulle teada. Kui m\u00f5ni lugejatest teab \u2014 kirjutage kommentaaridesse (kasutaja nimega Sinopteek on juba seda teinud. Vaata kommentaare). Mis puutub 128-bitiste UUID-de genereerimisse, siis p\u00f5him\u00f5tteliselt saab kasutada spetsiaalset <noindex><a rel=\"nofollow\" href=\"https:\/\/www.famkruithof.net\/uuid\/uuidgen\">generaatorit<\/a><\/noindex>, mis see teie eest teeb.<\/p>\n<h3>ATT\u044b GATT\u044b\u2026<\/h3>\n<p>\n Kuna edasi algab k\u00f5ige huvitavam osa. Meenutan, et ATT p\u00f5hineb kliendi-serveri suhtlemisel. Praegu vaatame serveri seadmeid. See sisaldab teavet, nagu anduri v\u00e4\u00e4rtused, valguse l\u00fcliti olek, asukohateave jne. N\u00fc\u00fcd, kui k\u00f5ik meie \u201eparaadi osalised\u201c on nummerdatud, tuleb need s\u00e4ttida seadme m\u00e4llu. Selleks paigutame nad tabelisse, mida nimetatakse atribuutide tabeliks. Pidage seda meeles. See on BLE s\u00fcdameasukoht. Just seda me edaspidi uurime. N\u00fc\u00fcd nimetame iga rida atribuudiks. See tabel asub protokolli s\u00fcgavustes ja tavaliselt pole meil sellele otsest ligip\u00e4\u00e4su. Me algatame selle ja p\u00f6\u00f6rdume selle poole, kuid mis seal sees toimub, on meie silmade eest seitsme pitseri taga. <\/p>\n<p>Vaatame pilti spetsifikatsioonist, kuid enne seda tahan kohe t\u00e4helepanu juhtida terminite sagedasele segadusele, nimelt descriptors. Deskriptorite roll on t\u00e4iendada omaduse kirjeldust. Kui on vaja laiendada selle v\u00f5imalusi, siis kasutatakse deskriptorit. Need on samuti atribuudid ja koos teenuste ja omadustega asuvad need atribuutide tabelis. Me k\u00e4sitleme neid \u00fcksikasjalikult artikli teises osas. Kuid m\u00f5nikord kutsutakse deskriptoriteks atribuutide tabelis rida number. Seda tuleb silmas pidada. Et mitte segadusse minna, kasutame nende eesm\u00e4rkide jaoks m\u00f5istet \u201eatribuutide n\u00e4idik\u201c.<br \/>\n<img decoding=\"async\" alt=\"BLE mikroskoobi all (ATT-d GATT-id...)\" src=\"\/wp-content\/uploads\/2020\/06\/6df836477b153c396bdba9068129bb6f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNii et atribuut on diskreetne v\u00e4\u00e4rtus, millel on j\u00e4rgmised omadused, millega see on seotud:<br \/>\n1. Atribuudi n\u00e4idik (Attribute Handle) \u2014 see on tabeli indeks, mis vastab atribuudile. <br \/>\n2. Atribuudi t\u00fc\u00fcp (Attribute Type) \u2014 see on UUID, mis kirjeldab selle t\u00fc\u00fcpi. <br \/>\n3. Atribuudi v\u00e4\u00e4rtus (Attribute Value) \u2014 need on andmed, mida indekseeritakse atribuudi n\u00e4idiku j\u00e4rgi. <br \/>\n4. Atribuutide lubad (Attribute Permissions) \u2014 see on atribuudi osa, lubad, mis ei &nbsp;&nbsp;&nbsp;&nbsp;saab protokollide kaudu lugeda v\u00f5i kirjutada.<\/p>\n<p>Kuidas seda m\u00f5ista? Atribuudi n\u00e4idik on, tinglikult \u00f6eldes, selle number meie tabelis.<br \/>\nSee lubab kliendil viidata atribuudile lugemis- v\u00f5i kirjutamissoovides. Me saame numereerida oma read (atribuudid) vahemikus 0x0001 kuni 0xFFFF. Meie seoses raamaturiidaga on see kaardi number paberkatkestustes. Sarnaselt raamatukogu kataloogiga on kaardid paigutatud numbrite kasvava j\u00e4rjestuse j\u00e4rgi. Iga j\u00e4rgmise rea number peab olema suurem kui eelmine. Nagu raamatukogus, v\u00f5ivad m\u00f5ned kaardid vahel kaduma minna, nii et ka meie ridade numeraatsioonis v\u00f5ivad olla vahed. See on lubatud. Peamine on, et need l\u00e4heksid kasvavas j\u00e4rjekorras.<\/p>\n<p>Atribuudi t\u00fc\u00fcp m\u00e4\u00e4rab, mis see atribuut endast kujutab. Sarnaselt C-keelele,<br \/>\nkus on boolean, numbrilised muutujad ja stringid, nii ka siin. Atribuudi t\u00fc\u00fcbi p\u00f5hjal saame teada, <br \/>\nmillega on tegu ja kuidas me selle atribuudiga edasi t\u00f6\u00f6tame. Allpool vaatleme m\u00f5nda spetsiifilist atribuudi t\u00fc\u00fcpi. N\u00e4iteks \"teenuse deklaratsioon\" (0x2800), \"omaduste deklaratsioon\" (0x2803), \"deskriptorite deklaratsioon\" (0x2902).<\/p>\n<p>Atribuudi v\u00e4\u00e4rtus on tegelikult tema v\u00e4\u00e4rtus, vabandust tautoloogia p\u00e4rast. Kui atribuudi t\u00fc\u00fcp on string, siis v\u00f5ib atribuudi v\u00e4\u00e4rtus olla n\u00e4iteks lause \"Tere maailm!!!\". Kui atribuudi t\u00fc\u00fcp on \"teenuse deklaratsioon\", siis on tema v\u00e4\u00e4rtuseks teenus ise. Ja vahel on see teave selle kohta, kust leida teisi atribuute ja nende omadusi.<\/p>\n<p>Atribuutide \u00f5igused v\u00f5imaldavad serveril m\u00f5ista, kas lugemine v\u00f5i kirjutamine on lubatud. <br \/>\nPange t\u00e4hele, et need \u00f5igused kehtivad ainult atribuudi v\u00e4\u00e4rtusele, mitte viitamisele, t\u00fc\u00fcbile ja iseendale \u00f5iguste v\u00e4ljal. See t\u00e4hendab, et kui atribuudi kirjutamine on lubatud, v\u00f5ime n\u00e4iteks muuta rida \"Tere maailm!!!\" read \"Tere hommikust\". Kuid me ei saa keelata uue rea kirjutamist ega muuta atribuudi t\u00fc\u00fcpi ja t\u00e4histada rida kui \"teenuse deklaratsioon\". Kui klient p\u00f6\u00f6rdub serveri poole, k\u00fcsib klient tema atribuute. See v\u00f5imaldab kliendil teada saada, mida server saab pakkuda. Kuigi pole tingimata vajalik lugeda ja kirjutada v\u00e4\u00e4rtusi.<\/p>\n<h3>Kuidas see v\u00e4lja n\u00e4eb<\/h3>\n<p>\nGATTi kontseptsioon seisneb attribuutide r\u00fchmitamises atribuutide tabelis v\u00e4ga spetsiifilisel ja loogilisel viisil. Vaatame l\u00e4hemalt s\u00fcdame l\u00f6\u00f6gisageduse profiili, mis on toodud allpool. Selle tabeli k\u00f5ige vasakpoolne veerg on valikuline. See lihtsalt kirjeldab, millega see rida (attribuut) on. K\u00f5ik \u00fclej\u00e4\u00e4nud veerud on meile juba tuttavad.<\/p>\n<p><img decoding=\"async\" alt=\"BLE mikroskoobi all (ATT-d GATT-id...)\" src=\"\/wp-content\/uploads\/2020\/06\/110813482dacb0f19cb49e735f4a9e34.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIga grupi \u00fclaosas on meil alati teenuse deklareerimise atribuut. Selle t\u00fc\u00fcp on alati 0x2800 ja viide s\u00f5ltub sellest, kui palju atribuute tabelis juba on. Selle lubamise \u00f5igused on alati ainult lugemiseks, ilma igasuguse autentimise v\u00f5i volituse kontrollita. Nendest m\u00f5istetest r\u00e4\u00e4gime natuke hiljem. V\u00e4\u00e4rtus on veel \u00fcks UUID, mis m\u00e4\u00e4ratleb, mis teenus see on. Tabelis on v\u00e4\u00e4rtus 0x180D, mida Bluetooth SIG m\u00e4\u00e4ratleb kui s\u00fcdame l\u00f6\u00f6gisageduse teenust. <\/p>\n<p>Teenuse deklareerimist j\u00e4rgib omaduse deklareerimine. Selle vorm on sarnane teenuse deklareerimisele. Selle UUID on alati 0x2803 ja lubamise \u00f5igused on samuti alati ainult lugemiseks, ilma igasuguse autentimise v\u00f5i volituse kontrollita. Vaatame atribuudi v\u00e4\u00e4rtuse v\u00e4lja, mis sisaldab teatud andmeid. See sisaldab alati viidet, UUID-d ja omaduste kogumit. Need kolm elementi kirjeldavad j\u00e4rgmise omaduse v\u00e4\u00e4rtuse deklareerimist. Viide t\u00e4histab loomulikult omaduse v\u00e4\u00e4rtuse deklareerimise asukohta atribuutide tabelis. UUID kirjeldab, millist t\u00fc\u00fcpi teavet v\u00f5i v\u00e4\u00e4rtust me oodata v\u00f5ime. N\u00e4iteks temperatuuri v\u00e4\u00e4rtus, valgusl\u00fcliti olek v\u00f5i muu suvaline v\u00e4\u00e4rtus. Ja l\u00f5puks omadused, mis kirjeldavad, kuidas saab omaduse v\u00e4\u00e4rtusega suhelda. <\/p>\n<p>Siin ootab meid veel \u00fcks konks. See on seotud atributide \u00f5iguste ja omaduste omadustega. Vaatame pilti bitiv\u00e4lja omadustest spetsifikatsioonist.<\/p>\n<p><img decoding=\"async\" alt=\"BLE mikroskoobi all (ATT-d GATT-id...)\" src=\"\/wp-content\/uploads\/2020\/06\/7397f7f69e573ae3084cbacdcd318829.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNagu n\u00e4ete, on siin olemas ka v\u00e4ljadel lugemise ja kirjutamise v\u00f5imalused. Te v\u00f5ite k\u00fcsida, miks meil on atribuudile ja omadusele lugemise\/kirjutamise \u00f5igused. <br \/>\nKas on omaduse v\u00e4\u00e4rtuse lugemise \/ kirjutamise reeglid? Kas need ei peaks alati olema \u00fchesugused? Asi on selles, et omaduste v\u00e4\u00e4rtuse omadused on tegelikult lihtsalt soovitused kliendile, mida kasutatakse GATT-is ja rakendustasandil. Need on lihtsalt vihjed, mida klient v\u00f5ib omaduse kuulutamisest oodata. Uurime seda l\u00e4hemalt. Milliseid \u00f5igusi atribuudi juures on? <\/p>\n<p>1. Access rights:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 lugemine<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 kirjutamine<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 lugemine ja kirjutamine<br \/>\n2. Authentication rights:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 autentimine vajalik<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 autentimine ei ole vajalik<br \/>\n3. Authorization rights:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 autoriseerimine vajalik<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; \u2014 autoriseerimine ei ole vajalik<\/p>\n<p>Peamine erinevus atribuudi \u00f5iguste ja omaduste vahel on see, et esimesed k\u00e4ivad serverite kohta, teised aga klientide kohta. Serveril v\u00f5ib olla lubatud lugeda omaduse v\u00e4\u00e4rtust, kuid samas v\u00f5ib olla n\u00f5ue autentimise v\u00f5i autoriseerimise osas. Seet\u00f5ttu, kui klient k\u00fcsib omaduste kohta, saame teada, et lugemine on lubatud. Kuid lugemise katse korral saame vea. Seega v\u00f5ib julgelt \u00f6elda, et \u00f5igused on omadustest prioriteetsed. Me ei saa teada, millised \u00f5igused atribuudi juures on, kliendi poolt.<\/p>\n<h3>Deskriptor<\/h3>\n<p>\nNaaseme meie tabelisse. P\u00e4rast omaduse v\u00e4\u00e4rtuse kuulutamist v\u00f5ivad j\u00e4rgneda j\u00e4rgmised atribuudi kuulutused: <br \/>\n1. Uus omaduse kuulutamine (teenuses v\u00f5ib olla palju omadusi)<br \/>\n2. Uue teenuse deklaratsioon (tabelis v\u00f5ib neid olla palju)<br \/>\n3. Deskriptorite kuulutamine <\/p>\n<p>Juhul, kui r\u00e4\u00e4gime s\u00fcdame l\u00f6\u00f6gisageduse m\u00f5\u00f5tmisest, kaasneb meie tabelis parameetri v\u00e4\u00e4rtuse v\u00e4ljakuulutamisega ka kirjelduse v\u00e4ljakuulutamine. Kirjeldus on atribuuti, mis sisaldab t\u00e4iendavat teavet parameetri kohta. On olemas mitu t\u00fc\u00fcpi kirjeldusi. Nendest r\u00e4\u00e4gime l\u00e4hemalt artikli teises osas. Praegu keskendume vaid kliendi parameetri konfiguratsiooni kirjeldusele (Client Characteristic Configuration Descriptor \u2014 CCCD), mille UUID on 0x2902. Selle kirjelduse abil saab klient serveris aktiveerida n\u00e4itamise v\u00f5i teavitamise. Nende kahe vahel on v\u00e4ike, kuid siiski oluline erinevus. Teavitamine ei n\u00f5ua kliendi poolt vastuv\u00f5tmise kinnitust. N\u00e4itamine n\u00f5uab seda k\u00fcll, kuid toimub GATT tasemel, j\u00f5udmata rakenduse tasemele. Miks nii, v\u00f5ite te k\u00fcsida? Kahjuks ei tea ma sellele vastust. \u00dctlen vaid, et Nordic'i spetsialistid soovitavad kasutada teavitamist. Eriti, et paketi terviklikkuse kontroll (CRC abil) toimub m\u00f5lemas juhtumis.<\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p>\nArtikli l\u00f5pus tahaksin r\u00e4\u00e4kida \u00fchest asjast. Viimane tabel on natuke segane. Kuid ma peatun sellel, kuna see on toodud <noindex><a rel=\"nofollow\" href=\"https:\/\/devzone.nordicsemi.com\/nordic\/short-range-guides\/b\/bluetooth-low-energy\/posts\/ble-characteristics-a-beginners-tutorial\">artiklis<\/a><\/noindex>, millele p\u00f5hinen. Artikli teises osas kavatsema s\u00fcveneda BlueTooth 4.0 spetsifikatsiooni. Seal ootavad meid t\u00e4psemad skeemid ja joonised. Artikli kolmandas osas tahaksin anal\u00fc\u00fcsida logi, mis on saadud Wireshark programmi abil \u00fchelt seadmel ja n\u00e4ha \u201eotse\u201c kogu seda teooriat, mida koos uurime.<\/p>\n<p>R\u00fchma ettev\u00f5tte t\u00f6\u00f6taja <noindex><a rel=\"nofollow\" href=\"https:\/\/www.csat.ru\/\">\u201eCaesar Satellite\u201c<\/a><\/noindex><br \/>\nVladimir Pecherski<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/505078\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>BLE \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c (ATT\u044b GATT\u044b&#8230;) \u0427\u0430\u0441\u0442\u044c 1, \u043e\u0431\u0437\u043e\u0440\u043d\u0430\u044f \u0423\u0436\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0448\u043b\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 Bluetooth 4.0. \u0418, \u0445\u043e\u0442\u044f \u0442\u0435\u043c\u0430 BLE \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u043e\u043d\u0430 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0438\u0437-\u0437\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0412 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0430\u043c\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c Link Layer \u0438 Physical Layer. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84025,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-84024","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"BLE \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c (ATT\u044b GATT\u044b...) \u0427\u0430\u0441\u0442\u044c 1.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ble-pod-mikroskopom-atty-gatty\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47BLE \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c (ATT\u044b GATT\u044b\u2026) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"BLE \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c (ATT\u044b GATT\u044b...) \u0427\u0430\u0441\u0442\u044c 1.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ble-pod-mikroskopom-atty-gatty\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-04T17:42:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-04T17:42:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47BLE mikroskoobi all (ATT-d GATT-id\u2026) | ProHoster","description":"BLE mikroskoobi all (ATT-d GATT-id...) Osa 1.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ble-pod-mikroskopom-atty-gatty","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47BLE \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c (ATT\u044b GATT\u044b\u2026) | ProHoster","og:description":"BLE \u043f\u043e\u0434 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u043e\u043c (ATT\u044b GATT\u044b...) \u0427\u0430\u0441\u0442\u044c 1.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/ble-pod-mikroskopom-atty-gatty","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-04T17:42:32+00:00","article:modified_time":"2020-06-04T17:42:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84024","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:06:38","updated":"2022-09-28 11:11:59","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/84024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=84024"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/84024\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/84025"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=84024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=84024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=84024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}