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
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:
Iet uz adresi
Pierakstiet vai citādi saglabājiet saņemto atslēgu.
Pēc šo darbību veikšanas jums būs piekļuve lapai
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ē:
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