SIM800x модулиудын GSM байршлын үйлчилгээ ба түүний Yandex.Locator API-тай ажилладаг

SIM800x модулиудын GSM байршлын үйлчилгээ ба түүний Yandex.Locator API-тай ажилладаг

Харамсалтай нь Google GSM модулийн олон хэрэглэгчдийн хувьд модульд харагдах үүрэн цамхагийн координат дээр үндэслэн байршлыг тодорхойлох API-г 2-3 сарын өмнө хааж, төлбөртэй болгон шилжүүлсэн. Үүнээс болж SIM800 цуврал модулиудыг үйлдвэрлэсэн SIMCom утасгүй шийдэл, AT+CIPGSMLOC командын функц ажиллахаа больсон. Энэ нийтлэлд би Yandex-ээс өгсөн ижил төстэй үйлчилгээг ашиглан энэ асуудлыг хэрхэн шийдвэрлэх талаар танд хэлэх болно. Yandex.Locator.

Yandex үүрэн цамхагийн координатыг хэрхэн хүлээн авч байгааг алгасацгаая, гол зүйл бол бид энэхүү үнэ төлбөргүй үйлчилгээг ашиглаж дараах өгөгдлийг авах боломжтой: Өргөрөг, Уртраг, Өндөр, түүнчлэн параметр бүрийн ойролцоо алдаа. Өгүүллийн гол зорилго нь Google-ээс ашиглах боломжгүй болсон үйлчилгээний оронд Yandex API руу хурдан шилжих талаар товч заавар өгөх явдал юм.

Доор жишээ болгон бид зөвхөн модулийн байршлын өргөрөг, уртрагыг харуулах болно.

Ингээд эхэлцгээе

Эхлээд та дараах хаягаар байрлах хэрэглэгчийн гэрээг унших хэрэгтэй. yandex.ru/legal/locator_api. 3.6-д онцгой анхаарал хандуулах хэрэгтэй. гэж заасан энэхүү хэрэглэгчийн гэрээ Yandex нь Yandex.Locator API-г ямар ч үед урьдчилан мэдэгдэлгүйгээр өөрчлөх/засах, шинэчлэх эрхтэй..

хаяг руу оч yandex.ru/dev/locator/keys/get мөн өмнө нь үүсгэсэн Yandex дансаа хөгжүүлэлтийн бүлэгт нэмнэ үү. Эдгээр алхамууд нь танд энэ үйлчилгээнд нэвтрэх түлхүүрийг авах боломжийг олгоно.

SIM800x модулиудын GSM байршлын үйлчилгээ ба түүний Yandex.Locator API-тай ажилладаг
Хүлээн авсан түлхүүрээ бичнэ үү эсвэл өөр хэлбэрээр хадгална уу.

Эдгээр алхмуудыг хийсний дараа та хуудас руу нэвтрэх эрхтэй болно yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage Yandex.Locator үйлчилгээний үйл ажиллагааны механизмын талаархи үндсэн мэдээллийг энд оруулав.

Yandex.Locator үйлчилгээнд cURL форматаар XML хүсэлт гаргахын тулд модулийн "харагдах" үүрэн цамхагийн мэдээллийг авах шаардлагатай.

  • улсын код - улсын код
  • operatorid - гар утасны сүлжээний код
  • cellid - эсийн тодорхойлогч
  • lac - байршлын код

Энэ мэдээллийг модулиас 'AT+CNETSCAN' командыг илгээж авах боломжтой.

Модульээс хүлээн авсан мэдээлэл

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>

Дараа нь та модулийн Cellid болон Lac хариултаас өгөгдлийг XNUMX-аас аравтын тоо руу хөрвүүлэх шаардлагатай болно гэдгийг анхаарах нь чухал юм.

Одоо бид Yandex сервертэй холбогдохын тулд XML өгөгдлийг үүсгэх хэрэгтэй бөгөөд үүнийг дараа нь нэг элемент болгон нэгтгэх болно.

өгөгдлийн хүснэгт

мэдээ
сэтгэгдэл

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

...
Энэ нь Yandex-ээс хүлээн авсан 88 оронтой түлхүүрийг агуулсан байх ёстой

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

Улсын код (MCC)

</countrycode><operatorid>
2

Операторын код (MNC)

</operatorid><cellid>
8453

Жагсаалтаас эхний цамхагийн целлид нь модулиас хүлээн авч, 16 суурьтай тооноос 10 суурьтай тоо руу хөрвүүлэв (модульээс хүлээн авсан утга нь 2105)

</cellid><lac>
7838

Эхний цамхагийн лак, мөн үндсэн 16 тооноос үндсэн 10 тоо руу хөрвүүлсэн (модульээс хүлээн авсан утга нь 1E9E)

</lac></cell>
...

Тодорхой байршлын найдвартай байдлыг нэмэгдүүлэхийн тулд нүдний тэмдэглэгээгээр нэгтгэсэн бүлгийг шаардлагатай бол олон удаа давтаж болно.

</gsm_cells>
<ip><address_v4>
10.137.92.60

GPRS контекстийг нээсний дараа сүлжээнээс модульд өгсөн IP хаягийг модуль руу 'AT+SAPBR=2,1' командыг илгээснээр олж авах боломжтой - доороос үзнэ үү.

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

Энэ нь 1304 тэмдэгтийн урттай XML мессежийг дараах байдлаар үүсгэнэ.

Зурвас

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>

Энэхүү мессежийг Megafon операторын үүрэн холбооны цамхагуудын мэдээлэлд үндэслэн үүсгэсэн бөгөөд үүнийг дараах мэдээллээр нэмж болно. 'AT+CNETSCAN' командыг ашиглан хүлээн авсан модульд харагдахуйц бусад цамхаг дээр өгөгдсөн координатын найдвартай байдлыг нэмэгдүүлэх.

Модультай ажиллах, одоогийн координатыг авах

Модультай ажиллах AT-лог

>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

Тиймээс бид модулийн одоогийн координатыг хүлээн авлаа: 60.0330963, 30.2484304.
Үүрэн цамхгаар дамжуулж буй мэдээллийн тоо нэмэгдэхийн хэрээр байршлыг тодорхойлох нарийвчлал пропорциональ нэмэгдэх болно.

Yandex.Locator үйлчилгээний хариултын агуулга, шаардлагатай өгөгдлийн сонголтын талаарх дэлгэрэнгүй мэдээллийг дараах холбоосоос уншиж болно. yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, API->XML->Хариулт хэсэгт

дүгнэлт

Энэ материал нь хөгжүүлэгчдэд сайн тус болно гэж найдаж байна. Би таны асуултанд сэтгэгдэл дээр хариулахад бэлэн байна.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх