GSM staðsetningarþjónusta SIM800x eininga og vinna hennar með Yandex.Locator API

GSM staðsetningarþjónusta SIM800x eininga og vinna hennar með Yandex.Locator API

Google, því miður, fyrir marga notendur GSM-eininga, lokaði fyrir 2-3 mánuðum síðan og færði API til að ákvarða staðsetningu á gjaldskyldum grunni á grundvelli hnita farsímaturna sem eru sýnilegir einingunni. Vegna þessa, á SIM800 röð einingar framleiddar SIMCom þráðlausar lausnir, virkni AT+CIPGSMLOC skipunarinnar hætti að virka. Í þessari grein mun ég segja þér hvernig þú getur leyst þetta vandamál með því að nota svipaða þjónustu sem Yandex veitir - Yandex.Locator.

Við skulum sleppa því hvernig Yandex tekur á móti hnitum farsímaturna, aðalatriðið er að við getum notað þessa ókeypis þjónustu og fengið eftirfarandi gögn: Breidd, Lengdargráðu, Hæð, auk áætlaðrar villu fyrir hverja færibreytu. Megintilgangur greinarinnar er að gefa stutta kennslu um að skipta fljótt yfir í Yandex API, í stað þjónustunnar sem ekki er lengur tiltæk frá Google.

Hér að neðan, sem dæmi, munum við sýna aðeins breiddar- og lengdargráðu staðsetningar einingarinnar.

Svo skulum við byrja

Fyrst þarftu að lesa notendasamninginn sem staðsettur er á: yandex.ru/legal/locator_api. Sérstaklega ber að huga að ákvæði 3.6. þessum notendasamningi, sem segir að Yandex áskilur sér rétt til að breyta/leiðrétta eða uppfæra Yandex.Locator API hvenær sem er, án fyrirvara..

Farðu á heimilisfang yandex.ru/dev/locator/keys/get og bættu áður stofnuðum Yandex reikningi þínum við þróunarhópinn. Þessi skref gera þér kleift að fá lykil til að fá aðgang að þessari þjónustu.

GSM staðsetningarþjónusta SIM800x eininga og vinna hennar með Yandex.Locator API
Skrifaðu niður eða geymdu á annan hátt lykilinn sem þú færð.

Eftir að hafa lokið þessum skrefum hefurðu aðgang að síðunni yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage þar sem grunnupplýsingar um rekstur Yandex.Locator þjónustunnar eru veittar.

Til að búa til XML-beiðni á cURL sniði til Yandex.Locator þjónustu þarftu að fá upplýsingar um farsímaturna „sýnilega“ af einingunni:

  • landsnúmer – landsnúmer
  • operatorid – farsímakerfiskóði
  • cellid – frumuauðkenni
  • lac – staðsetningarkóði

Þessar upplýsingar er hægt að fá úr einingunni með því að senda 'AT+CNETSCAN' skipunina.

Upplýsingar sem berast frá einingunni

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>

Það er mikilvægt að hafa í huga að seinna þarftu að umbreyta gögnum úr Cellid og Lac svörun einingarinnar úr sextánstafi í aukastaf.

Nú þurfum við að búa til XML gögn til að hafa samband við Yandex netþjóninn, sem verður síðan sameinuð í einn þátt.

gagnatöflu

Gögn
Athugasemd

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

...
Þetta ætti að innihalda 88 stafa lykilinn sem barst frá Yandex

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

Landskóði (MCC)

</countrycode><operatorid>
2

Rekstrarkóði (MNC)

</operatorid><cellid>
8453

Hringur fyrsta turnsins af listanum sem fékkst frá einingunni og breytt úr tölu með grunni 16 í tölu með grunni 10 (gildið sem er móttekið frá einingunni er 2105)

</cellid><lac>
7838

Lac fyrsta turnsins, einnig breytt úr grunntölu 16 í grunntölu 10 (gildið sem berast frá einingunni er 1E9E)

</lac></cell>
...

Hóp sem sameinað er með frumumerkinu má endurtaka eins oft og nauðsynlegt er til að auka áreiðanleika ákveðins staðsetningar

</gsm_cells>
<ip><address_v4>
10.137.92.60

IP-tölu sem netið hefur úthlutað einingunni eftir að GPRS samhengið er opnað er hægt að fá með því að senda skipunina 'AT+SAPBR=2,1' til einingarinnar - sjá hér að neðan

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

Þetta mun búa til XML skilaboð sem eru 1304 stafir að lengd sem hér segir:

Skilaboð

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>

Þessi skilaboð eru búin til á grundvelli gagna um farsímaturna Megafon símafyrirtækisins, það er hægt að bæta við gögnum, þar á meðal: á öðrum turnum sem eru sýnilegir einingunni sem er móttekin með því að nota 'AT+CNETSCAN' skipunina til að auka áreiðanleika útgefinna hnita.

Vinna með eininguna og fá núverandi hnit

AT-skrá yfir vinnu með einingunni

>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

Þannig fengum við núverandi hnit einingarinnar: 60.0330963, 30.2484304.
Eftir því sem gögnum sem send eru um farsímaturna fjölgar mun nákvæmni staðsetningarákvörðunar aukast hlutfallslega.

Nánari upplýsingar um innihald svarsins frá Yandex.Locator þjónustunni og val á gögnum sem þú þarft má lesa á hlekknum: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, í API->XML->Response hlutanum

Ályktun

Ég vona að þetta efni verði góð hjálp fyrir þróunaraðila. Ég er tilbúinn að svara spurningum þínum í athugasemdunum.

Heimild: www.habr.com

Bæta við athugasemd