Layanan Lokasi GSM modul SIM800x dan kerjanya dengan API Yandex.Locator

Layanan Lokasi GSM modul SIM800x dan kerjanya dengan API Yandex.Locator

Google, sayangnya bagi banyak pengguna modul GSM, 2-3 bulan yang lalu memblokir dan mentransfer API berbasis berbayar untuk menentukan lokasi berdasarkan koordinat menara seluler yang terlihat oleh modul. Karena itu, modul seri SIM800 diproduksi Solusi Nirkabel SIMCom, fungsi perintah AT+CIPGSMLOC berhenti bekerja. Pada artikel ini saya akan memberi tahu Anda bagaimana Anda dapat mengatasi masalah ini dengan menggunakan layanan serupa yang disediakan oleh Yandex - Yandex.Pencari Lokasi.

Mari kita lewati bagaimana Yandex menerima koordinat menara seluler, yang utama adalah kita dapat menggunakan layanan gratis ini dan mendapatkan data berikut: Lintang, Bujur, Ketinggian, serta perkiraan kesalahan untuk setiap parameter. Tujuan utama artikel ini adalah untuk memberikan tutorial singkat tentang cara beralih cepat ke Yandex API, alih-alih layanan yang tidak lagi tersedia dari Google.

Di bawah ini, sebagai contoh, kami hanya akan menampilkan garis lintang dan garis bujur dari lokasi modul.

Jadi mari kita mulai

Pertama, Anda perlu membaca perjanjian pengguna yang terletak di: yandex.ru/legal/locator_api. Perhatian khusus harus diberikan pada pasal 3.6. perjanjian pengguna ini, yang menyatakan bahwa Yandex berhak mengubah/memperbaiki atau memperbarui API Yandex.Locator kapan saja, tanpa pemberitahuan sebelumnya..

Pergi ke alamat yandex.ru/dev/locator/keys/get dan tambahkan akun Yandex yang Anda buat sebelumnya ke grup pengembangan. Langkah-langkah ini akan memungkinkan Anda mendapatkan kunci untuk mengakses layanan ini.

Layanan Lokasi GSM modul SIM800x dan kerjanya dengan API Yandex.Locator
Catat atau simpan kunci yang Anda terima.

Setelah menyelesaikan langkah-langkah ini, Anda akan memiliki akses ke halaman tersebut yandex.ru/dev/locator/doc/dg/api/geolocation-api-docpage di mana informasi dasar tentang mekanisme pengoperasian layanan Yandex.Locator disediakan.

Untuk menghasilkan permintaan XML dalam format cURL ke layanan Yandex.Locator, Anda perlu mendapatkan informasi tentang menara seluler yang “terlihat” oleh modul:

  • kode negara – kode negara
  • operatorid – kode jaringan seluler
  • cellid – pengidentifikasi sel
  • lac – kode lokasi

Informasi ini dapat diperoleh dari modul dengan mengirimkan perintah 'AT+CNETSCAN'.

Informasi yang diterima dari modul

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>

Penting untuk dicatat bahwa nanti Anda perlu mengonversi data dari respons modul Cellid dan Lac dari heksadesimal ke desimal.

Sekarang kita perlu membuat data XML untuk menghubungi server Yandex, yang selanjutnya akan digabungkan menjadi satu elemen.

tabel data

Data
Komentar

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

...
Ini harus berisi kunci 88 digit yang diterima dari Yandex

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

Kode negara (MCC)

</countrycode><operatorid>
2

Kode operator (MNC)

</operatorid><cellid>
8453

Cellid menara pertama dari daftar yang diterima dari modul dan diubah dari bilangan dengan basis 16 menjadi bilangan dengan basis 10 (nilai yang diterima dari modul adalah 2105)

</cellid><lac>
7838

Lac menara pertama, juga diubah dari bilangan berbasis 16 menjadi bilangan berbasis 10 (nilai yang diterima dari modul adalah 1E9E)

</lac></cell>
...

Grup yang disatukan oleh tag sel dapat diulang sebanyak yang diperlukan untuk meningkatkan keandalan lokasi tertentu

</gsm_cells>
<ip><address_v4>
10.137.92.60

Alamat IP yang ditetapkan ke modul oleh jaringan setelah membuka konteks GPRS dapat diperoleh dengan mengirimkan perintah 'AT+SAPBR=2,1' ke modul - lihat di bawah

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

Ini akan menghasilkan pesan XML sepanjang 1304 karakter sebagai berikut:

Pesan

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>

Pesan ini dihasilkan berdasarkan data menara seluler operator Megafon, dapat dilengkapi dengan data, antara lain: di menara lain yang terlihat oleh modul yang diterima menggunakan perintah 'AT+CNETSCAN' untuk meningkatkan keandalan koordinat yang dikeluarkan.

Bekerja dengan modul dan mendapatkan koordinat saat ini

AT-log pekerjaan dengan modul

>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

Jadi, kami mendapatkan koordinat modul saat ini: 60.0330963, 30.2484304.
Ketika jumlah data yang dikirim melalui menara seluler meningkat, keakuratan penentuan lokasi akan meningkat secara proporsional.

Informasi lebih detail mengenai isi respon dari layanan Yandex.Locator dan pemilihan data yang Anda butuhkan dapat dibaca di link: yandex.ru/dev/locator/doc/dg/api/xml-reply-docpage, di bagian API->XML->Respon

Kesimpulan

Saya harap materi ini dapat membantu para pengembang. Saya siap menjawab pertanyaan Anda di komentar.

Sumber: www.habr.com

Tambah komentar