Lokacijska storitev GSM modulov SIM800x in njeno delo z API-jem Yandex.Locator

Lokacijska storitev GSM modulov SIM800x in njeno delo z API-jem Yandex.Locator

Google je na žalost za mnoge uporabnike modulov GSM pred 2-3 meseci blokiral in prenesel na plačljivo osnovo API za določanje lokacije na podlagi koordinat celičnih stolpov, ki so vidni modulu. Zaradi tega so izdelani moduli serije SIM800 Brezžične rešitve SIMCom, je funkcija ukaza AT+CIPGSMLOC prenehala delovati. V tem članku vam bom povedal, kako lahko rešite to težavo z uporabo podobne storitve Yandex - Yandex.Locator.

Preskočimo, kako Yandex prejme koordinate mobilnih stolpov, glavna stvar je, da lahko uporabimo to brezplačno storitev in dobimo naslednje podatke: zemljepisno širino, dolžino, nadmorsko višino, pa tudi približno napako za vsak parameter. Glavni namen članka je podati kratko vadnico o hitrem preklopu na Yandex API, namesto na Googlovo storitev, ki ni več na voljo.

Spodaj bomo kot primer prikazali le zemljepisno širino in dolžino lokacije modula.

Pa začnimo

Najprej morate prebrati uporabniško pogodbo, ki se nahaja na: yandex.ru/legal/locator_api. Posebno pozornost je treba nameniti klavzuli 3.6. to uporabniško pogodbo, ki določa, da Yandex si pridržuje pravico, da spremeni/popravi ali posodobi API Yandex.Locator kadar koli in brez predhodnega obvestila..

Pojdi na naslov yandex.ru/dev/locator/keys/get in dodajte svoj predhodno ustvarjen račun Yandex v razvojno skupino. Ti koraki vam bodo omogočili pridobitev ključa za dostop do te storitve.

Lokacijska storitev GSM modulov SIM800x in njeno delo z API-jem Yandex.Locator
Prejeti ključ si zapišite ali kako drugače shranite.

Ko opravite te korake, boste imeli dostop do strani yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage kjer so navedene osnovne informacije o mehanizmu delovanja storitve Yandex.Locator.

Če želite ustvariti zahtevo XML v formatu cURL za storitve Yandex.Locator, boste morali pridobiti informacije o baznih postajah, ki jih modul »vidi«:

  • koda države – koda države
  • operatorid – koda mobilnega omrežja
  • cellid – identifikator celice
  • lac – koda lokacije

Te informacije je mogoče pridobiti iz modula s pošiljanjem ukaza 'AT+CNETSCAN'.

Informacije, prejete iz modula

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>

Pomembno je upoštevati, da boste pozneje morali pretvoriti podatke iz odziva Cellid in Lac modula iz šestnajstiškega v decimalno.

Zdaj moramo ustvariti podatke XML za stik s strežnikom Yandex, ki bodo pozneje združeni v en element.

podatkovna tabela

Podatki
Komentar

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

...
To mora vsebovati 88-mestni ključ, prejet od Yandex

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

Koda države (MCC)

</countrycode><operatorid>
2

Koda operaterja (MNC)

</operatorid><cellid>
8453

Cellid prvega stolpa s seznama, prejetega iz modula in pretvorjenega iz števila z osnovo 16 v število z osnovo 10 (vrednost, prejeta iz modula, je 2105)

</cellid><lac>
7838

Lac prvega stolpa, prav tako pretvorjen iz števila z osnovo 16 v število z osnovo 10 (vrednost, prejeta iz modula, je 1E9E)

</lac></cell>
...

Skupina, združena z oznako celice, se lahko ponovi tolikokrat, kot je potrebno, da se poveča zanesljivost določene lokacije

</gsm_cells>
<ip><address_v4>
10.137.92.60

Naslov IP, ki ga je modulu dodelilo omrežje po odprtju konteksta GPRS, lahko dobite tako, da modulu pošljete ukaz 'AT+SAPBR=2,1' - glejte spodaj

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

To bo ustvarilo sporočilo XML, dolgo 1304 znakov, kot sledi:

Sporočilo

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>

To sporočilo je ustvarjeno na podlagi podatkov o celičnih stolpih operaterja Megafon, lahko ga dopolnite s podatki, vključno z: na drugih stolpih, ki so vidni modulu, prejetem z ukazom 'AT+CNETSCAN', da se poveča zanesljivost izdanih koordinat.

Delo z modulom in pridobivanje trenutnih koordinat

AT-log dela z modulom

>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

Tako smo prejeli trenutne koordinate modula: 60.0330963, 30.2484304.
Z naraščanjem števila podatkov, poslanih prek celičnih stolpov, se bo sorazmerno povečala tudi natančnost določanja lokacije.

Podrobnejše informacije o vsebini odgovora storitve Yandex.Locator in izbiri podatkov, ki jih potrebujete, lahko preberete na povezavi: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, v razdelku API->XML->Response

Zaključek

Upam, da bo to gradivo v dobro pomoč razvijalcem. Pripravljen sem odgovoriti na vaša vprašanja v komentarjih.

Vir: www.habr.com

Dodaj komentar