Serbisyo ng Lokasyon ng GSM ng mga module ng SIM800x at ang gawain nito sa Yandex.Locator API

Serbisyo ng Lokasyon ng GSM ng mga module ng SIM800x at ang gawain nito sa Yandex.Locator API

Ang Google, sa kasamaang-palad para sa maraming user ng GSM modules, 2-3 buwan na ang nakalipas ay na-block at inilipat sa isang bayad na batayan ang API para sa pagtukoy ng lokasyon batay sa mga coordinate ng mga cell tower na nakikita ng module. Dahil dito, ginawa ang mga module sa serye ng SIM800 SIMCom Wireless Solutions, huminto sa paggana ang functionality ng AT+CIPGSMLOC command. Sa artikulong ito sasabihin ko sa iyo kung paano mo malulutas ang problemang ito sa pamamagitan ng paggamit ng katulad na serbisyo na ibinigay ng Yandex - Yandex.Locator.

Laktawan natin kung paano natatanggap ng Yandex ang mga coordinate ng mga cell tower, ang pangunahing bagay ay magagamit natin ang libreng serbisyong ito at makuha ang sumusunod na data: Latitude, Longitude, Altitude, pati na rin ang tinatayang error para sa bawat parameter. Ang pangunahing layunin ng artikulo ay magbigay ng isang maikling tutorial sa mabilis na paglipat sa Yandex API, sa halip na ang hindi na magagamit na serbisyo mula sa Google.

Sa ibaba, bilang halimbawa, ipapakita lamang namin ang latitude at longitude ng lokasyon ng module.

Kaya simulan na natin

Una kailangan mong basahin ang kasunduan ng gumagamit na matatagpuan sa: yandex.ru/legal/locator_api. Ang partikular na atensyon ay dapat bayaran sa sugnay 3.6. ang kasunduan ng user na ito, na nagsasaad na Inilalaan ng Yandex ang karapatang baguhin/itama o i-update ang Yandex.Locator API anumang oras, nang walang paunang abiso..

Pumunta sa address yandex.ru/dev/locator/keys/get at idagdag ang dati mong ginawang Yandex account sa pangkat ng pagpapaunlad. Ang mga hakbang na ito ay magbibigay-daan sa iyong makakuha ng susi para ma-access ang serbisyong ito.

Serbisyo ng Lokasyon ng GSM ng mga module ng SIM800x at ang gawain nito sa Yandex.Locator API
Isulat o kung hindi man ay iimbak ang susi na iyong natanggap.

Pagkatapos makumpleto ang mga hakbang na ito, magkakaroon ka ng access sa pahina yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage kung saan ibinibigay ang pangunahing impormasyon tungkol sa mekanismo ng pagpapatakbo ng serbisyo ng Yandex.Locator.

Upang makabuo ng isang XML na kahilingan sa cURL na format sa mga serbisyo ng Yandex.Locator, kakailanganin mong kumuha ng impormasyon sa mga cell tower na "nakikita" ng module:

  • countrycode – code ng bansa
  • operatorid – code ng mobile network
  • cellid – cell identifier
  • lac – code ng lokasyon

Maaaring makuha ang impormasyong ito mula sa module sa pamamagitan ng pagpapadala ng command na 'AT+CNETSCAN'.

Impormasyong natanggap mula sa modyul

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>

Mahalagang tandaan na sa ibang pagkakataon kakailanganin mong i-convert ang data mula sa Cellid at Lac tugon ng module mula hexadecimal patungo sa decimal.

Ngayon kailangan naming bumuo ng XML data upang makipag-ugnay sa server ng Yandex, na pagkatapos ay isasama sa isang elemento.

talaan ng mga impormasyon

Data
Puna

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

...
Dapat itong maglaman ng 88-digit na key na natanggap mula sa Yandex

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

Country code (MCC)

</countrycode><operatorid>
2

Operator code (MNC)

</operatorid><cellid>
8453

Cellid ng unang tower mula sa listahan na natanggap mula sa module at na-convert mula sa isang numero na may base 16 sa isang numero na may base 10 (ang halaga na natanggap mula sa module ay 2105)

</cellid><lac>
7838

Lac ng unang tower, na-convert din mula sa base 16 na numero sa isang base 10 na numero (ang halaga na natanggap mula sa module ay 1E9E)

</lac></cell>
...

Ang isang pangkat na pinagsama ng cell tag ay maaaring ulitin nang maraming beses hangga't kinakailangan upang mapataas ang pagiging maaasahan ng isang partikular na lokasyon

</gsm_cells>
<ip><address_v4>
10.137.92.60

Ang IP address na itinalaga ng network sa module pagkatapos buksan ang konteksto ng GPRS ay maaaring makuha sa pamamagitan ng pagpapadala ng command na 'AT+SAPBR=2,1' sa module - tingnan sa ibaba

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

Ito ay bubuo ng isang XML message na 1304 character ang haba gaya ng sumusunod:

Mensahe

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>

Ang mensaheng ito ay nabuo batay sa data sa mga cell tower ng Megafon operator, maaari itong dagdagan ng data, kabilang ang: sa iba pang mga tower na nakikita ng module na natanggap gamit ang command na 'AT+CNETSCAN' upang mapataas ang pagiging maaasahan ng mga ibinigay na coordinate.

Paggawa gamit ang module at pagkuha ng mga kasalukuyang coordinate

AT-log ng trabaho kasama ang module

>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

Kaya, natanggap namin ang kasalukuyang mga coordinate ng module: 60.0330963, 30.2484304.
Habang tumataas ang bilang ng data na ipinadala sa pamamagitan ng mga cell tower, ang katumpakan ng pagtukoy ng lokasyon ay tataas nang proporsyonal.

Ang mas detalyadong impormasyon tungkol sa nilalaman ng tugon mula sa serbisyo ng Yandex.Locator at ang pagpili ng data na kailangan mo ay mababasa sa link: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, sa seksyong API->XML->Tugon

Konklusyon

Umaasa ako na ang materyal na ito ay magiging isang magandang tulong sa mga developer. Handa akong sagutin ang iyong mga katanungan sa mga komento.

Pinagmulan: www.habr.com

Magdagdag ng komento