GSM lokalizačná služba modulov SIM800x a jej práca s API Yandex.Locator

GSM lokalizačná služba modulov SIM800x a jej práca s API Yandex.Locator

Google, nanešťastie pre mnohých používateľov GSM modulov, pred 2-3 mesiacmi zablokoval a preniesol na platenú základňu API na určovanie polohy na základe súradníc mobilných veží viditeľných pre modul. Z tohto dôvodu sa vyrábajú moduly série SIM800 Bezdrôtové riešenia SIMCom, funkčnosť príkazu AT+CIPGSMLOC prestala fungovať. V tomto článku vám poviem, ako môžete tento problém vyriešiť pomocou podobnej služby poskytovanej spoločnosťou Yandex - Yandex.Locator.

Preskočme, ako Yandex prijíma súradnice mobilných veží, hlavnou vecou je, že môžeme použiť túto bezplatnú službu a získať nasledujúce údaje: zemepisná šírka, dĺžka, nadmorská výška, ako aj približná chyba pre každý parameter. Hlavným účelom článku je poskytnúť krátky návod na rýchle prepnutie na Yandex API namiesto už nedostupnej služby od Google.

Nižšie ako príklad ukážeme iba zemepisnú šírku a dĺžku umiestnenia modulu.

Tak poďme na to

Najprv si musíte prečítať používateľskú zmluvu na adrese: yandex.ru/legal/locator_api. Osobitná pozornosť by sa mala venovať článku 3.6. tejto užívateľskej zmluvy, v ktorej sa uvádza, že Yandex si vyhradzuje právo kedykoľvek zmeniť/opraviť alebo aktualizovať API Yandex.Locator bez predchádzajúceho upozornenia..

Choďte na adresu yandex.ru/dev/locator/keys/get a pridajte svoj predtým vytvorený účet Yandex do vývojovej skupiny. Tieto kroky vám umožnia získať kľúč na prístup k tejto službe.

GSM lokalizačná služba modulov SIM800x a jej práca s API Yandex.Locator
Zapíšte si alebo inak uložte kľúč, ktorý dostanete.

Po dokončení týchto krokov budete mať prístup na stránku yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage kde sú uvedené základné informácie o mechanizme fungovania služby Yandex.Locator.

Ak chcete vygenerovať požiadavku XML vo formáte cURL pre služby Yandex.Locator, budete musieť získať informácie o mobilných vežiach „viditeľných“ modulom:

  • countrycode – kód krajiny
  • operatorid – kód mobilnej siete
  • cellid – identifikátor bunky
  • lac – kód lokality

Tieto informácie je možné získať z modulu odoslaním príkazu 'AT+CNETSCAN'.

Informácie získané z 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>

Je dôležité poznamenať, že neskôr budete musieť previesť údaje z odozvy Cellid a Lac modulu zo šestnástkovej na desiatkovú.

Teraz musíme vygenerovať údaje XML na kontaktovanie servera Yandex, ktoré sa následne spoja do jedného prvku.

Tabuľka údajov

Dáta
Komentár

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

...
Toto by malo obsahovať 88-miestny kľúč prijatý od spoločnosti Yandex

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

kód krajiny (MKC)

</countrycode><operatorid>
2

Kód operátora (MNC)

</operatorid><cellid>
8453

Bunka prvej veže zo zoznamu prijatého z modulu a prevedená z čísla so základom 16 na číslo so základom 10 (hodnota prijatá z modulu je 2105)

</cellid><lac>
7838

Lac prvej veže, tiež prevedený z čísla so základom 16 na číslo so základom 10 (hodnota prijatá z modulu je 1E9E)

</lac></cell>
...

Skupina spojená bunkovým tagom sa môže opakovať toľkokrát, koľkokrát je potrebné, aby sa zvýšila spoľahlivosť konkrétneho miesta

</gsm_cells>
<ip><address_v4>
10.137.92.60

IP adresu pridelenú modulu sieťou po otvorení GPRS kontextu je možné získať odoslaním príkazu 'AT+SAPBR=2,1' do modulu - viď nižšie

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

Toto vygeneruje správu XML s dĺžkou 1304 znakov takto:

Správa

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>

Táto správa je generovaná na základe údajov o mobilných vežiach operátora Megafon, môže byť doplnená údajmi vrátane: na iných vežiach viditeľných pre modul prijatý pomocou príkazu 'AT+CNETSCAN' na zvýšenie spoľahlivosti vydaných súradníc.

Práca s modulom a získavanie aktuálnych súradníc

AT-log práce s 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

Takto sme dostali aktuálne súradnice modulu: 60.0330963, 30.2484304.
So zvyšujúcim sa počtom údajov odosielaných cez mobilné veže sa úmerne zvýši presnosť určenia polohy.

Podrobnejšie informácie o obsahu odpovede zo služby Yandex.Locator a výbere údajov, ktoré potrebujete, si môžete prečítať na odkaze: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, v sekcii API->XML->Odpoveď

Záver

Dúfam, že tento materiál bude dobrou pomôckou pre vývojárov. Som pripravený odpovedať na vaše otázky v komentároch.

Zdroj: hab.com

Pridať komentár