GSM-liggingdiens van SIM800x-modules en die werking daarvan met die Yandex.Locator API

GSM-liggingdiens van SIM800x-modules en die werking daarvan met die Yandex.Locator API

Google het ongelukkig vir baie gebruikers van GSM-modules 2-3 maande gelede die API geblokkeer en na 'n betaalde basis oorgedra vir die bepaling van ligging gebaseer op die koördinate van selfoontorings wat vir die module sigbaar is. As gevolg hiervan, op SIM800-reeks modules vervaardig SIMCom draadlose oplossings, het die funksionaliteit van die AT+CIPGSMLOC-opdrag opgehou werk. In hierdie artikel sal ek jou vertel hoe jy hierdie probleem kan oplos deur 'n soortgelyke diens te gebruik wat deur Yandex verskaf word - Yandex.Locator.

Kom ons slaan oor hoe Yandex die koördinate van selfoontorings ontvang, die belangrikste ding is dat ons hierdie gratis diens kan gebruik en die volgende data kan kry: Breedtegraad, Lengtegraad, Hoogte, sowel as die benaderde fout vir elke parameter. Die hoofdoel van die artikel is om 'n kort tutoriaal te gee oor vinnig oorskakel na die Yandex API, in plaas van die nie meer beskikbare diens van Google nie.

Hieronder, as 'n voorbeeld, sal ons slegs die breedte- en lengtegraad van die module-ligging wys.

So kom ons begin

Eerstens moet u die gebruikersooreenkoms lees wat geleë is by: yandex.ru/legal/locator_api. Spesifieke aandag moet aan klousule 3.6 gegee word. hierdie gebruikersooreenkoms, wat dit bepaal Yandex behou die reg voor om die Yandex.Locator API te eniger tyd te verander/korrigeer of by te werk sonder vooraf kennisgewing..

Gaan na adres yandex.ru/dev/locator/keys/get en voeg jou voorheen geskepte Yandex-rekening by die ontwikkelingsgroep. Hierdie stappe sal jou toelaat om 'n sleutel te kry om toegang tot hierdie diens te verkry.

GSM-liggingdiens van SIM800x-modules en die werking daarvan met die Yandex.Locator API
Skryf die sleutel wat jy ontvang, neer of stoor dit anders.

Nadat u hierdie stappe voltooi het, sal u toegang tot die bladsy hê yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage waar basiese inligting oor die werkingsmeganisme van die Yandex.Locator-diens verskaf word.

Om 'n XML-versoek in cURL-formaat na Yandex.Locator-dienste te genereer, sal jy inligting moet kry oor selfoontorings wat deur die module "sigbaar" is:

  • landkode – landkode
  • operateurid – mobiele netwerkkode
  • sellid – selidentifiseerder
  • lac – liggingkode

Hierdie inligting kan van die module verkry word deur die 'AT+CNETSCAN' opdrag te stuur.

Inligting ontvang van die module

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>

Dit is belangrik om daarop te let dat jy later die data van die module se Cellid- en Lac-reaksie van heksadesimale na desimale sal moet omskakel.

Nou moet ons XML-data genereer om die Yandex-bediener te kontak, wat daarna in een element gekombineer sal word.

Data tabel

Data
Lewer kommentaar

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

...
Dit moet die 88-syfer sleutel bevat wat van Yandex ontvang is

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

Landkode (MCC)

</countrycode><operatorid>
2

Operator kode (MNC)

</operatorid><cellid>
8453

Sellid van die eerste toring uit die lys wat van die module ontvang is en omgeskakel word van 'n getal met basis 16 na 'n getal met basis 10 (die waarde wat van die module ontvang word is 2105)

</cellid><lac>
7838

Lac van die eerste toring, ook omgeskakel van 'n basis 16-getal na 'n basis 10-getal (die waarde ontvang van die module is 1E9E)

</lac></cell>
...

'n Groep wat deur die selmerker verenig word, kan soveel keer herhaal word as wat nodig is om die betroubaarheid van 'n spesifieke ligging te verhoog

</gsm_cells>
<ip><address_v4>
10.137.92.60

Die IP-adres wat deur die netwerk aan die module toegeken is nadat die GPRS-konteks oopgemaak is, kan verkry word deur die opdrag 'AT+SAPBR=2,1' na die module te stuur - sien hieronder

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

Dit sal 'n XML-boodskap van 1304 karakters genereer soos volg:

Boodskap

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>

Hierdie boodskap word gegenereer op grond van data oor selfoontorings van die Megafon-operateur, dit kan aangevul word met data, insluitend: op ander torings sigbaar vir die module ontvang met behulp van die 'AT+CNETSCAN' opdrag om die betroubaarheid van die uitgereikte koördinate te verhoog.

Werk met die module en kry huidige koördinate

AT-log van werk met die 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

Ons het dus die huidige koördinate van die module ontvang: 60.0330963, 30.2484304.
Soos die aantal data wat via selfoontorings gestuur word toeneem, sal die akkuraatheid van liggingbepaling proporsioneel toeneem.

Meer gedetailleerde inligting oor die inhoud van die antwoord van die Yandex.Locator-diens en die keuse van die data wat u benodig, kan by die skakel gelees word: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, in die API->XML->Responsafdeling

Gevolgtrekking

Ek hoop dat hierdie materiaal 'n goeie hulp vir ontwikkelaars sal wees. Ek is gereed om jou vrae in die kommentaar te beantwoord.

Bron: will.com

Voeg 'n opmerking