Google, deja, daugeliui GSM modulių vartotojų prieš 2-3 mėnesius užblokavo ir perkėlė į mokamą pagrindą API, skirtą vietai nustatyti pagal moduliui matomas mobiliojo ryšio bokštų koordinates. Dėl šios priežasties gaminami SIM800 serijos moduliai
Praleiskime, kaip „Yandex“ gauna mobiliojo ryšio bokštų koordinates, svarbiausia, kad galėtume naudotis šia nemokama paslauga ir gauti šiuos duomenis: Platuma, Ilguma, Aukštis, taip pat apytikslę kiekvieno parametro paklaidą. Pagrindinis straipsnio tikslas – pateikti trumpą pamoką, kaip greitai pereiti prie „Yandex“ API, o ne į nebepasiekiamą „Google“ paslaugą.
Žemiau, kaip pavyzdį, parodysime tik modulio vietos platumą ir ilgumą.
Taigi pradėkime
Pirmiausia turite perskaityti vartotojo sutartį, esančią adresu:
Eiti į adresą
Užsirašykite arba kitaip išsaugokite gautą raktą.
Atlikę šiuos veiksmus turėsite prieigą prie puslapio
Norėdami sugeneruoti XML užklausą cURL formatu Yandex.Locator paslaugoms, turėsite gauti informaciją apie modulio „matomus“ mobiliojo ryšio bokštus:
- countrycode – šalies kodas
- operatorid – mobiliojo ryšio tinklo kodas
- cellid – ląstelės identifikatorius
- lac – vietos kodas
Šią informaciją galima gauti iš modulio išsiuntus komandą „AT+CNETSCAN“.
Informacija gauta iš modulio
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>
Svarbu pažymėti, kad vėliau reikės konvertuoti duomenis iš modulio Cellid ir Lac atsako iš šešioliktainės į dešimtainę.
Dabar turime sugeneruoti XML duomenis, kad susisiektume su „Yandex“ serveriu, kuris vėliau bus sujungtas į vieną elementą.
duomenų lentelė
Duomenys
Komentuoti
xml=<ya_lbs_request><common><version>1.0</version><api_key>
...
Jame turėtų būti 88 skaitmenų raktas, gautas iš „Yandex
</api_key></common>
<gsm_cells>
<cell><countrycode>
250
Šalies kodas (MKC)
</countrycode><operatorid>
2
Operatoriaus kodas (MNC)
</operatorid><cellid>
8453
Pirmojo bokšto langelis iš sąrašo, gautas iš modulio ir konvertuotas iš skaičiaus su 16 baze į skaičių su baze 10 (iš modulio gauta reikšmė yra 2105)
</cellid><lac>
7838
Pirmojo bokšto lakas, taip pat konvertuotas iš 16 bazinio skaičiaus į 10 bazinį skaičių (iš modulio gauta reikšmė yra 1E9E)
</lac></cell>
...
Grupė, kurią vienija langelio žyma, gali būti kartojama tiek kartų, kiek reikia, kad padidėtų konkrečios vietos patikimumas
</gsm_cells>
<ip><address_v4>
10.137.92.60
Tinklo moduliui priskirtą IP adresą atidarius GPRS kontekstą galima gauti moduliui atsiuntus komandą 'AT+SAPBR=2,1' - žr.
</address_v4></ip></ya_lbs_request>
Taip bus sukurtas 1304 simbolių XML pranešimas:
Žinutė
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>
Šis pranešimas yra sugeneruotas remiantis Megafon operatoriaus mobiliojo ryšio bokštų duomenimis, jis gali būti papildytas duomenimis, įskaitant: kitiems moduliams matomiems bokštams, gautiems naudojant komandą 'AT+CNETSCAN', siekiant padidinti išduodamų koordinačių patikimumą.
Darbas su moduliu ir esamų koordinačių gavimas
AT-logas apie darbą su moduliu
>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
Taip gavome esamas modulio koordinates: 60.0330963, 30.2484304.
Didėjant duomenų, siunčiamų per mobiliojo ryšio bokštus, skaičiui, vietos nustatymo tikslumas proporcingai padidės.
Išsamesnę informaciją apie atsakymo iš „Yandex.Locator“ tarnybos turinį ir jums reikalingų duomenų pasirinkimą galite perskaityti nuorodoje:
išvada
Tikiuosi, kad ši medžiaga bus gera pagalba kūrėjams. Esu pasirengęs atsakyti į jūsų klausimus komentaruose.
Šaltinis: www.habr.com