SIM800x moduļu GSM atrašanās vietas pakalpojums un tā darbība ar Yandex.Locator API

SIM800x moduļu GSM atrašanās vietas pakalpojums un tā darbība ar Yandex.Locator API

Google diemžēl daudziem GSM moduļu lietotājiem pirms 2-3 mēnešiem bloķēja un uz maksas pamata pārcēla API atrašanās vietas noteikšanai pēc modulim redzamajām mobilo sakaru torņu koordinātām. Sakarā ar to tiek ražoti SIM800 sērijas moduļi SIMCom bezvadu risinājumi, pārstāja darboties komandas AT+CIPGSMLOC funkcionalitāte. Šajā rakstā es jums pastāstīšu, kā jūs varat atrisināt šo problēmu, izmantojot līdzīgu pakalpojumu, ko nodrošina Yandex - Yandex.Locator.

Izlaidīsim, kā Yandex saņem šūnu torņu koordinātas, galvenais, lai mēs varētu izmantot šo bezmaksas pakalpojumu un iegūt šādus datus: platums, garums, augstums, kā arī katra parametra aptuvenā kļūda. Raksta galvenais mērķis ir sniegt īsu pamācību par ātru pāreju uz Yandex API, nevis vairs pieejamo Google pakalpojumu.

Tālāk, piemēram, mēs parādīsim tikai moduļa atrašanās vietas platumu un garumu.

Tātad sāksim

Vispirms jums jāizlasa lietotāja līgums, kas atrodas: yandex.ru/legal/locator_api. Īpaša uzmanība jāpievērš 3.6. šis lietotāja līgums, kurā teikts, ka Yandex patur tiesības jebkurā laikā bez iepriekšēja brīdinājuma mainīt/labot vai atjaunināt Yandex.Locator API..

Iet uz adresi yandex.ru/dev/locator/keys/get un pievienojiet savu iepriekš izveidoto Yandex kontu izstrādes grupai. Šīs darbības ļaus jums iegūt atslēgu, lai piekļūtu šim pakalpojumam.

SIM800x moduļu GSM atrašanās vietas pakalpojums un tā darbība ar Yandex.Locator API
Pierakstiet vai citādi saglabājiet saņemto atslēgu.

Pēc šo darbību veikšanas jums būs piekļuve lapai yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage kur sniegta pamatinformācija par pakalpojuma Yandex.Locator darbības mehānismu.

Lai ģenerētu XML pieprasījumu cURL formātā Yandex.Locator pakalpojumiem, jums būs jāiegūst informācija par modulim “redzamiem” šūnu torņiem:

  • valsts kods – valsts kods
  • operatorid – mobilā tīkla kods
  • cellid – šūnas identifikators
  • lac – atrašanās vietas kods

Šo informāciju var iegūt no moduļa, nosūtot komandu 'AT+CNETSCAN'.

Informācija saņemta no moduļa

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>

Ir svarīgi atzīmēt, ka vēlāk jums būs jāpārvērš dati no moduļa Cellid un Lac atbildes no heksadecimālās uz decimālo.

Tagad mums ir jāģenerē XML dati, lai sazinātos ar Yandex serveri, kas pēc tam tiks apvienoti vienā elementā.

Datu tabula

Dati
Komentēt

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

...
Tajā jāiekļauj 88 ciparu atslēga, kas saņemta no Yandex

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

Valsts kods (KC)

</countrycode><operatorid>
2

Operatora kods (MNC)

</operatorid><cellid>
8453

Pirmā torņa šūna no saraksta, kas saņemta no moduļa un pārveidota no skaitļa ar bāzi 16 uz skaitli ar bāzi 10 (no moduļa saņemtā vērtība ir 2105)

</cellid><lac>
7838

Pirmā torņa Lac, arī pārveidots no 16. bāzes skaitļa uz 10. bāzes skaitli (no moduļa saņemtā vērtība ir 1E9E)

</lac></cell>
...

Grupu, ko apvieno šūnas tags, var atkārtot tik reižu, cik nepieciešams, lai palielinātu konkrētas atrašanās vietas uzticamību

</gsm_cells>
<ip><address_v4>
10.137.92.60

IP adresi, ko tīkls piešķir modulim pēc GPRS konteksta atvēršanas, var iegūt, nosūtot modulim komandu 'AT+SAPBR=2,1' - skatīt zemāk

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

Tas ģenerēs 1304 rakstzīmju garu XML ziņojumu:

Ziņa

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 ziņojums ir ģenerēts, pamatojoties uz Megafon operatora mobilo sakaru torņu datiem, to var papildināt ar datiem, tostarp: uz citiem modulim redzamajiem torņiem, kas saņemti, izmantojot komandu 'AT+CNETSCAN', lai palielinātu izsniegto koordinātu ticamību.

Darbs ar moduli un pašreizējo koordinātu iegūšana

AT-log par darbu ar moduli

>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

Tādējādi saņēmām pašreizējās moduļa koordinātas: 60.0330963, 30.2484304.
Palielinoties ar mobilo sakaru torņiem nosūtīto datu skaitam, proporcionāli palielināsies atrašanās vietas noteikšanas precizitāte.

Sīkāku informāciju par pakalpojuma Yandex.Locator atbildes saturu un nepieciešamo datu atlasi var izlasīt saitē: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, sadaļā API->XML->Atbilde

Secinājums

Es ceru, ka šis materiāls būs labs palīgs izstrādātājiem. Esmu gatavs komentāros atbildēt uz jūsu jautājumiem.

Avots: www.habr.com

Pievieno komentāru