Google, për fat të keq për shumë përdorues të moduleve GSM, 2-3 muaj më parë bllokoi dhe transferoi në një bazë të paguar API-në për përcaktimin e vendndodhjes bazuar në koordinatat e kullave celulare të dukshme për modulin. Për shkak të kësaj, në seritë SIM800 prodhohen module
Le të kalojmë se si Yandex merr koordinatat e kullave celulare, gjëja kryesore është që ne mund të përdorim këtë shërbim falas dhe të marrim të dhënat e mëposhtme: Gjerësia, Gjatësia, Lartësia, si dhe gabimi i përafërt për secilin parametër. Qëllimi kryesor i artikullit është të japë një mësim të shkurtër për kalimin e shpejtë në API Yandex, në vend të shërbimit të padisponueshëm nga Google.
Më poshtë, si shembull, do të tregojmë vetëm gjerësinë dhe gjatësinë e vendndodhjes së modulit.
Pra, le të fillojmë
Së pari ju duhet të lexoni marrëveshjen e përdoruesit të vendosur në:
Shkoni në adresë
Shkruani ose ruani ndryshe çelësin që merrni.
Pas përfundimit të këtyre hapave, do të keni akses në faqe
Për të gjeneruar një kërkesë XML në formatin cURL për shërbimet Yandex.Locator, do t'ju duhet të merrni informacion mbi kullat celulare "të dukshme" nga moduli:
- kodi i shtetit - kodi i shtetit
- operatorid – kodi i rrjetit celular
- cellid – identifikues i qelizës
- lac - kodi i vendndodhjes
Ky informacion mund të merret nga moduli duke dërguar komandën 'AT+CNETSCAN'.
Informacioni i marrë nga moduli
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:59,Cellid:2105,Arfcn:96,Lac:1E9E,Bsic:31<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:54,Cellid:2107,Arfcn:18,Lac:1E9E,Bsic:3A<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:45,Cellid:10A9,Arfcn:97,Lac:1E9E,Bsic:11<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:41,Cellid:2108,Arfcn:814,Lac:1E9E,Bsic:1F<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:43,Cellid:5100,Arfcn:13,Lac:1E9E,Bsic:2B<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:39,Cellid:5102,Arfcn:839,Lac:1E9E,Bsic:1A<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:38,Cellid:2106,Arfcn:104,Lac:1E9E,Bsic:0A<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:37,Cellid:0FE7,Arfcn:12,Lac:1E9E,Bsic:24<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:44,Cellid:14C8,Arfcn:91,Lac:1E9E,Bsic:24<CR><LF>
Operator:"MegaFon",MCC:250,MNC:02,Rxlev:37,Cellid:04B3,Arfcn:105,Lac:1E9E,Bsic:3A<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:47,Cellid:29A0,Arfcn:70,Lac:39BA,Bsic:09<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:43,Cellid:0FDD,Arfcn:590,Lac:39BA,Bsic:09<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:44,Cellid:29A1,Arfcn:84,Lac:39BA,Bsic:10<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:40,Cellid:8F95,Arfcn:81,Lac:39BA,Bsic:03<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:43,Cellid:0FDF,Arfcn:855,Lac:39BA,Bsic:24<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:37,Cellid:299C,Arfcn:851,Lac:39BA,Bsic:17<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:37,Cellid:0FDE,Arfcn:852,Lac:39BA,Bsic:1B<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:35,Cellid:299F,Arfcn:72,Lac:39BA,Bsic:10<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:33,Cellid:28A5,Arfcn:66,Lac:396D,Bsic:25<CR><LF>
Operator:"Bee Line GSM",MCC:250,MNC:99,Rxlev:33,Cellid:2A8F,Arfcn:71,Lac:39BA,Bsic:23<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:46,Cellid:39D2,Arfcn:865,Lac:4D0D,Bsic:14<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:36,Cellid:09EE,Arfcn:866,Lac:4D0D,Bsic:25<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:28,Cellid:09ED,Arfcn:869,Lac:4D0D,Bsic:22<CR><LF>
Operator:"MOTIV",MCC:250,MNC:20,Rxlev:28,Cellid:09EF,Arfcn:861,Lac:4D0D,Bsic:17<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:66,Cellid:58FE,Arfcn:1021,Lac:00EC,Bsic:0A<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:50,Cellid:58FD,Arfcn:1016,Lac:00EC,Bsic:08<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:49,Cellid:58FF,Arfcn:1023,Lac:00EC,Bsic:09<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:46,Cellid:F93B,Arfcn:59,Lac:00EC,Bsic:20<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:50,Cellid:381B,Arfcn:1020,Lac:00EC,Bsic:0A<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:37,Cellid:3819,Arfcn:42,Lac:00EC,Bsic:08<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:34,Cellid:4C0F,Arfcn:43,Lac:00EC,Bsic:0A<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:33,Cellid:0817,Arfcn:26,Lac:00EC,Bsic:27<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:34,Cellid:3A5D,Arfcn:1017,Lac:00E9,Bsic:34<CR><LF>
Operator:"MTS",MCC:250,MNC:01,Rxlev:33,Cellid:3D05,Arfcn:1018,Lac:00EC,Bsic:1F<CR><LF>
Është e rëndësishme të theksohet se më vonë do t'ju duhet të konvertoni të dhënat nga përgjigja Cellid dhe Lac e modulit nga heksadecimal në dhjetor.
Tani duhet të gjenerojmë të dhëna XML për të kontaktuar serverin Yandex, i cili më pas do të kombinohet në një element.
Tabela e të dhënave
Të dhëna
Koment
xml=<ya_lbs_request><common><version>1.0</version><api_key>
...
Ky duhet të përmbajë çelësin 88-shifror të marrë nga Yandex
</api_key></common>
<gsm_cells>
<cell><countrycode>
250
Kodi i Shtetit (MCC)
</countrycode><operatorid>
2
Kodi i operatorit (MNC)
</operatorid><cellid>
8453
Cellidi i kullës së parë nga lista e marrë nga moduli dhe e konvertuar nga një numër me bazën 16 në një numër me bazën 10 (vlera e marrë nga moduli është 2105)
</cellid><lac>
7838
Lac i kullës së parë, i konvertuar gjithashtu nga një numër bazë 16 në një numër bazë 10 (vlera e marrë nga moduli është 1E9E)
</lac></cell>
...
Një grup i bashkuar nga etiketa e qelizave mund të përsëritet aq herë sa është e nevojshme për të rritur besueshmërinë e një vendndodhjeje specifike
</gsm_cells>
<ip><address_v4>
10.137.92.60
Adresa IP e caktuar në modul nga rrjeti pas hapjes së kontekstit GPRS mund të merret duke dërguar komandën 'AT+SAPBR=2,1' tek moduli - shih më poshtë
</address_v4></ip></ya_lbs_request>
Kjo do të gjenerojë një mesazh XML 1304 karaktere të gjatë si më poshtë:
Mesazh
xml=<ya_lbs_request><common><version>1.0</version><api_key>{здесь необходимо указать свой ключ}</api_key></common><gsm_cells><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8453</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8455</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>4265</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8456</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>20736</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>20738</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>8454</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>4071</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>5320</cellid><lac>7838</lac></cell><cell><countrycode>250</countrycode><operatorid>2</operatorid><cellid>1203</cellid><lac>7838</lac></cell></gsm_cells><ip><address_v4>10.137.92.60</address_v4></ip></ya_lbs_request>
Ky mesazh gjenerohet në bazë të të dhënave për kullat celulare të operatorit Megafon, ai mund të plotësohet me të dhëna, duke përfshirë: në kullat e tjera të dukshme për modulin e marrë duke përdorur komandën 'AT+CNETSCAN' për të rritur besueshmërinë e koordinatave të lëshuara.
Puna me modulin dhe marrja e koordinatave aktuale
AT-log i punës me modulin
>AT+SAPBR=3,1,”Contype”,”GPRS” // конфигурирование профиля доступа в Интернет
<OK
>AT+SAPBR=3,1,”APN”,”internet” // конфигурирование APN
<OK
>AT+SAPBR=1,1 // запрос на открытие GPRS контекста
<OK // контекст открыт
>AT+SAPBR=2,1 // запрос текущего IP адреса присвоенного оператором сотовой связи
<+SAPBR: 1,1,”10.137.92.60” // данный IP адрес потребуется вставить в XML-сообщение
<
<OK
>AT+HTTPINIT
<OK
>AT+HTTPPARA=”CID”,1
<OK
>AT+HTTPPARA=”URL”,”http://api.lbs.yandex.net/geolocation”
<OK
>AT+HTTPDATA=1304,10000 // первое число – длина сформированного XML-сообщения
<DOWNLOAD // приглашение к вводу XML-сообщения
< // вводим сформированное нами XML-сообщение
<OK
>AT+HTTPACTION=1
<OK
<
<+HTTPACTION: 1,200,303 // 200 – сообщение отправлено, 303 – получено 303 байт данных
>AT+HTTPREAD=81,10
<+HTTPREAD: 10
<60.0330963 // широта на которой расположен модуль
<OK
>AT+HTTPREAD=116,10
<+HTTPREAD: 10
<30.2484303 // долгота на которой расположен модуль
>AT+HTTPTERM
<OK
Kështu, morëm koordinatat aktuale të modulit: 60.0330963, 30.2484304.
Ndërsa numri i të dhënave të dërguara përmes kullave celulare rritet, saktësia e përcaktimit të vendndodhjes do të rritet proporcionalisht.
Informacion më të detajuar në lidhje me përmbajtjen e përgjigjes nga shërbimi Yandex.Locator dhe zgjedhjen e të dhënave që ju nevojiten mund të lexoni në lidhjen:
Përfundim
Shpresoj se ky material do të jetë një ndihmë e mirë për zhvilluesit. Unë jam gati t'u përgjigjem pyetjeve tuaja në komente.
Burimi: www.habr.com