SIM800x модульдерінің GSM Location қызметі және оның Yandex.Locator API-мен жұмысы

SIM800x модульдерінің GSM Location қызметі және оның Yandex.Locator API-мен жұмысы

Google, өкінішке орай, GSM модульдерінің көптеген пайдаланушылары үшін 2-3 ай бұрын модульге көрінетін ұяшық мұнараларының координаталары негізінде орналасқан жерді анықтауға арналған API интерфейсін бұғаттап, ақылы негізде ауыстырды. Осыған байланысты SIM800 сериялы модульдер шығарылды SIMCom сымсыз шешімдері, AT+CIPGSMLOC пәрменінің функционалдығы жұмысын тоқтатты. Бұл мақалада мен сізге Яндекс ұсынған ұқсас қызметті пайдалану арқылы бұл мәселені қалай шешуге болатынын айтамын - Yandex.Locator.

Яндекс ұялы мұнаралардың координаттарын қалай алатынын өткізіп жіберейік, ең бастысы, біз бұл тегін қызметті пайдалана аламыз және келесі деректерді ала аламыз: ендік, бойлық, биіктік, сондай-ақ әрбір параметр үшін шамамен қате. Мақаланың негізгі мақсаты - Google-дан қолжетімсіз қызметтің орнына Яндекс API-ге жылдам ауысу бойынша қысқаша оқулық беру.

Төменде мысал ретінде модуль орналасқан жердің ендігі мен бойлығын ғана көрсетеміз.

Ендеше, бастайық

Алдымен сіз мына жерде орналасқан пайдаланушы келісімін оқып шығуыңыз керек: yandex.ru/legal/locator_api. 3.6-тармаққа ерекше назар аудару керек. бұл пайдаланушы келісімі Яндекс алдын ала ескертусіз Yandex.Locator API интерфейсін кез келген уақытта өзгерту/түзету немесе жаңарту құқығын өзіне қалдырады..

Мекенжайға өтіңіз yandex.ru/dev/locator/keys/get және әзірлеу тобына бұрын жасалған Яндекс тіркелгіңізді қосыңыз. Бұл қадамдар сізге осы қызметке кіру кілтін алуға мүмкіндік береді.

SIM800x модульдерінің GSM Location қызметі және оның 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 жауаптарындағы деректерді он алтылықтан ондыққа түрлендіру қажет болатынын ескеру маңызды.

Енді Яндекс серверімен байланысу үшін XML деректерін жасау керек, ол кейіннен бір элементке біріктіріледі.

деректер кестесі

мәліметтер
Пікір

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

...
Бұл Яндекстен алынған 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.ru/dev/locator/doc/dg/api/xml-reply-docpage, API->XML->Жауап бөлімінде

қорытынды

Бұл материал әзірлеушілерге жақсы көмек болады деп үміттенемін. Мен сіздің сұрақтарыңызға түсініктемелерде жауап беруге дайынмын.

Ақпарат көзі: www.habr.com

пікір қалдыру