U serviziu GSM Location di moduli SIM800x è u so funziunamentu cù l'API Yandex.Locator

U serviziu GSM Location di moduli SIM800x è u so funziunamentu cù l'API Yandex.Locator

Google, sfurtunatamenti per parechji utilizatori di moduli GSM, 2-3 mesi fa bluccatu è trasfirìu à una basa pagata l'API per a determinazione di u locu basatu nantu à e coordenate di e torre di cellula visibili à u modulu. Per via di questu, nantu à i moduli di a serie SIM800 pruducia Soluzioni wireless SIMCom, A funziunalità di u cumandimu AT + CIPGSMLOC hà cessatu di travaglià. In questu articulu vi dicu cumu pudete risolve stu prublema usendu un serviziu simili furnitu da Yandex - Yandex.Locator.

Saltamu cumu Yandex riceve e coordenate di e torre di cellula, u principale hè chì pudemu usà stu serviziu gratuitu è ​​uttene e seguenti dati: Latitudina, Longitudine, Altitudine, è ancu l'errore apprussimativu per ogni paràmetru. U scopu principale di l'articulu hè di dà un brevi tutoriale per passà rapidamente à l'API Yandex, invece di u serviziu micca più dispunibule da Google.

Sottu, cum'è un esempiu, mustraremu solu a latitudina è a longitudine di u locu di u modulu.

Allora cuminciamu

Prima avete bisognu di leghje l'accordu d'utilizatore situatu à: yandex.ru/legal/locator_api. Una attenzione particulare deve esse pagata à a clause 3.6. stu accordu d'utilizatore, chì dice chì Yandex si riserva u dirittu di cambià / currezzione o aghjurnà l'API Yandex.Locator in ogni mumentu, senza avvisu previ..

Andate à l'indirizzu yandex.ru/dev/locator/keys/get è aghjunghje u vostru contu Yandex creatu prima à u gruppu di sviluppu. Questi passi vi permettenu di ottene una chjave per accede à stu serviziu.

U serviziu GSM Location di moduli SIM800x è u so funziunamentu cù l'API Yandex.Locator
Scrivite o altrimente guardate a chjave chì avete ricevutu.

Dopu à compie sti passi, vi tuccherà à accede à a pagina yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage induve l'infurmazioni basi nantu à u mecanismu di funziunamentu di u serviziu Yandex.Locator hè furnitu.

Per generà una dumanda XML in u formatu cURL à i servizii Yandex.Locator, avete bisognu di ottene infurmazioni nantu à e torre di cellula "visibili" da u modulu:

  • codice di paese - codice di paese
  • operatorid - codice di rete mobile
  • cellid - identificatore di cellula
  • lac - codice di locu

Sta infurmazione pò esse acquistata da u modulu mandendu u cumandamentu 'AT + CNETSCAN'.

Informazioni ricevute da u modulu

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>

Hè impurtante à nutà chì più tardi vi tuccherà à cunvertisce i dati da a risposta Cellid è Lac di u modulu da hexadecimal à decimali.

Avà avemu bisognu di generà dati XML per cuntattà u servitore Yandex, chì dopu serà cumminatu in un elementu.

Tavola di dati

dati
cumentu

xml=<ya_lbs_request><common><version>1.0</version><api_key>

...
Questu deve cuntene a chjave di 88 cifre ricevuta da Yandex

</api_key></common>
<gsm_cells>
<cell><countrycode>
250

Codice di paese (MCC)

</countrycode><operatorid>
2

Codice operatore (MNC)

</operatorid><cellid>
8453

Cellid di a prima torre da a lista ricevuta da u modulu è cunvertita da un numeru cù basa 16 à un numeru cù basa 10 (u valore ricevutu da u modulu hè 2105)

</cellid><lac>
7838

Lac di a prima torre, ancu cunvertita da un numeru di basa 16 à un numeru di basa 10 (u valore ricevutu da u modulu hè 1E9E)

</lac></cell>
...

Un gruppu unitu da a cell tag pò esse ripetuta quante volte necessariu per aumentà l'affidabilità di un locu specificu

</gsm_cells>
<ip><address_v4>
10.137.92.60

L'indirizzu IP assignatu à u modulu da a reta dopu l'apertura di u cuntestu GPRS pò esse acquistatu mandendu u cumandimu "AT + SAPBR = 2,1" à u modulu - vede quì sottu.

</address_v4></ip></ya_lbs_request>

Questu generà un missaghju XML di 1304 caratteri longu cum'è seguitu:

missaghju

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>

Stu missaghju hè generatu nantu à a basa di dati nantu à e torri cellulari di l'operatore Megafon, pò esse cumplementatu cù dati, cumprese: nantu à l'altri torri visibili à u modulu ricivutu usendu u cumandamentu 'AT + CNETSCAN' per aumentà l'affidabilità di e coordenate emesse.

U travagliu cù u modulu è ottene coordenate attuali

AT-log di travagliu cù u modulu

>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

Cusì, avemu ricevutu e coordenate attuali di u modulu: 60.0330963, 30.2484304.
Quandu u numeru di dati mandati via e torre di cellula aumenta, a precisione di a determinazione di u locu aumenterà proporzionalmente.

L'infurmazione più dettagliata nantu à u cuntenutu di a risposta da u serviziu Yandex.Locator è a selezzione di e dati chì avete bisognu pò esse leghje in u ligame: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, in a sezione API->XML->Response

cunchiusioni

Spergu chì stu materiale serà un bonu aiutu à i sviluppatori. Sò prontu à risponde à e vostre dumande in i cumenti.

Source: www.habr.com

Add a comment