SIM800x moduluen GSM Kokapen zerbitzua eta Yandex.Locator APIarekin egiten duen lana

SIM800x moduluen GSM Kokapen zerbitzua eta Yandex.Locator APIarekin egiten duen lana

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 SIMCom Haririk gabeko Soluzioak, AT+CIPGSMLOC komandoaren funtzionaltasunak funtzionatzeari utzi zion. Artikulu honetan Yandex-ek eskaintzen duen antzeko zerbitzu bat erabiliz arazo hau nola konpondu dezakezun esango dizut - Yandex.Locator.

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: yandex.ru/legal/locator_api. Arreta berezia jarri behar zaio 3.6 klausulari. erabiltzaile-hitzarmen honek, hau dioen Yandex-ek edozein unetan Yandex.Locator APIa aldatzeko/zuzentzeko edo eguneratzeko eskubidea du, aldez aurretik jakinarazi gabe..

Joan helbidera yandex.ru/dev/locator/keys/get eta gehitu aurretik sortutako Yandex kontua garapen taldean. Urrats hauei esker, zerbitzu honetara sartzeko gakoa lortuko duzu.

SIM800x moduluen GSM Kokapen zerbitzua eta Yandex.Locator APIarekin egiten duen lana
Idatzi edo bestela gorde jasotzen duzun giltza.

Urrats hauek bete ondoren, orrialderako sarbidea izango duzu yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage non Yandex.Locator zerbitzuaren funtzionamendu mekanismoari buruzko oinarrizko informazioa ematen den.

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: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, API->XML->Erantzun atalean

Ondorioa

Material hau garatzaileentzako laguntza ona izatea espero dut. Iruzkinetan zure galderei erantzuteko prest nago.

Iturria: www.habr.com

Gehitu iruzkin berria