Google-k, zoritxarrez, GSM moduluen erabiltzaile askorentzat, duela 2-3 hilabete blokeatu eta ordaindutako APIa transferitu zuen moduluak ikusgai dauden zelula-dorreen koordenatuetan oinarrituta kokapena zehazteko. Hori dela eta, SIM800 serieko moduluak ekoiztu dira
Salta dezagun Yandex-ek dorre zelularren koordenatuak nola jasotzen dituen, gauza nagusia da doako zerbitzu hau erabil dezakegula eta datu hauek lor ditzakegula: Latitudea, Luzera, Altuera, baita parametro bakoitzeko gutxi gorabeherako errorea ere. Artikuluaren helburu nagusia Yandex APIra azkar aldatzeko tutorial labur bat ematea da, Google-k jada erabilgarri ez dagoen zerbitzuaren ordez.
Jarraian, adibide gisa, moduluaren kokapenaren latitudea eta longitudea soilik erakutsiko dugu.
Beraz, has gaitezen
Lehenik eta behin, helbidean dagoen erabiltzaile-kontratua irakurri behar duzu:
Joan helbidera
Idatzi edo bestela gorde jasotzen duzun giltza.
Urrats hauek bete ondoren, orrialderako sarbidea izango duzu
Yandex.Locator zerbitzuetarako XML eskaera bat cURL formatuan sortzeko, moduluak "ikusgai" dituen zelula-dorreei buruzko informazioa lortu beharko duzu:
- countrycode – country code
- operadorid - sare mugikorren kodea
- cellid – zelula-identifikatzailea
- lac – kokapen kodea
Informazio hau modulutik lor daiteke 'AT+CNETSCAN' komandoa bidaliz.
Modulutik jasotako informazioa
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>
Garrantzitsua da kontutan izan geroago moduluaren Cellid eta Lac erantzuneko datuak hamaseitarretik hamartarra bihurtu beharko dituzula.
Orain XML datuak sortu behar ditugu Yandex zerbitzariarekin harremanetan jartzeko, gero elementu batean konbinatuko direnak.
Datuen taula
Datu
Comment
xml=<ya_lbs_request><common><version>1.0</version><api_key>
...
Honek Yandex-etik jasotako 88 digituko gakoa izan beharko luke
</api_key></common>
<gsm_cells>
<cell><countrycode>
250
Herrialde-kodea (MCC)
</countrycode><operatorid>
2
Operadorearen kodea (MNC)
</operatorid><cellid>
8453
Modulutik jasotako zerrendako lehen dorrearen zelida eta 16 oinarria duen zenbaki batetik 10 oinarri duen zenbaki batera bihurtu da (modulutik jasotako balioa 2105 da)
</cellid><lac>
7838
Lehen dorrearen Lac, 16 oinarriko zenbakitik 10 oinarriko zenbaki batera ere bihurtua (modulutik jasotako balioa 1E9E da)
</lac></cell>
...
Zelula etiketaz batutako talde bat behar adina aldiz errepika daiteke kokapen zehatz baten fidagarritasuna areagotzeko
</gsm_cells>
<ip><address_v4>
10.137.92.60
GPRS testuingurua ireki ondoren sareak moduluari esleitutako IP helbidea lor daiteke 'AT+SAPBR=2,1' komandoa moduluari bidaliz - ikus behean
</address_v4></ip></ya_lbs_request>
Honek 1304 karaktere dituen XML mezu bat sortuko du honela:
Mezua
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>
Mezu hau Megafon operadorearen dorre mugikorrei buruzko datuetan oinarrituta sortzen da, datuekin osa daiteke, besteak beste: Jaulkitako koordenatuen fidagarritasuna areagotzeko 'AT+CNETSCAN' komandoa erabiliz jasotako moduluarentzat ikusgai dauden beste dorre batzuetan.
Moduluarekin lan egitea eta uneko koordenatuak lortzea
Moduluarekin lanaren AT-erregistroa
>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
Horrela, moduluaren egungo koordenatuak jaso ditugu: 60.0330963, 30.2484304.
Zelula-dorreen bidez bidalitako datu-kopurua handitu ahala, kokapena zehazteko zehaztasuna proportzionalki handituko da.
Yandex.Locator zerbitzuaren erantzunaren edukiari eta behar dituzun datuen aukeraketari buruzko informazio zehatzagoa estekan irakur daiteke:
Ondorioa
Material hau garatzaileentzako laguntza ona izatea espero dut. Iruzkinetan zure galderei erantzuteko prest nago.
Iturria: www.habr.com