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
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:
Gaan na adres
Skryf die sleutel wat jy ontvang, neer of stoor dit anders.
Nadat u hierdie stappe voltooi het, sal u toegang tot die bladsy hê
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:
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