Unglücklicherweise für viele Nutzer von GSM-Modulen hat Google vor zwei bis drei Monaten die API zur Standortbestimmung anhand der Koordinaten der für das Modul sichtbaren Mobilfunkmasten blockiert und auf eine kostenpflichtige Basis umgestellt. Aus diesem Grund werden auf der SIM2-Serie Module produziert
Lassen Sie uns überspringen, wie Yandex die Koordinaten von Mobilfunkmasten erhält. Hauptsache, wir können diesen kostenlosen Dienst nutzen und die folgenden Daten erhalten: Breitengrad, Längengrad, Höhe sowie den ungefähren Fehler für jeden Parameter. Der Hauptzweck des Artikels besteht darin, ein kurzes Tutorial für den schnellen Wechsel zur Yandex-API anstelle des nicht mehr verfügbaren Dienstes von Google zu geben.
Im Folgenden zeigen wir beispielhaft nur den Breiten- und Längengrad des Modulstandorts.
Also lasst uns anfangen
Zuerst müssen Sie die Benutzervereinbarung lesen, die sich unter folgender Adresse befindet:
Zur Adresse gehen
Notieren Sie sich den Schlüssel, den Sie erhalten, oder bewahren Sie ihn anderweitig auf.
Nachdem Sie diese Schritte ausgeführt haben, haben Sie Zugriff auf die Seite
Um eine XML-Anfrage im cURL-Format an Yandex.Locator-Dienste zu generieren, müssen Sie Informationen über Mobilfunkmasten erhalten, die für das Modul „sichtbar“ sind:
- Ländercode – Ländercode
- Betreiber-ID – Mobilfunknetzcode
- cellid – Zellkennung
- lac – Standortcode
Diese Informationen können vom Modul durch Senden des Befehls „AT+CNETSCAN“ abgerufen werden.
Vom Modul empfangene Informationen
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>
Es ist wichtig zu beachten, dass Sie später die Daten aus der Cellid- und Lac-Antwort des Moduls von hexadezimal in dezimal konvertieren müssen.
Jetzt müssen wir XML-Daten generieren, um den Yandex-Server zu kontaktieren, die anschließend zu einem Element zusammengefasst werden.
Datentabelle
Daten
Kommentar
xml=<ya_lbs_request><common><version>1.0</version><api_key>
...
Dieser sollte den von Yandex erhaltenen 88-stelligen Schlüssel enthalten
</api_key></common>
<gsm_cells>
<cell><countrycode>
250
Ländercode (MCC)
</countrycode><operatorid>
2
Betreibercode (MNC)
</operatorid><cellid>
8453
Zellen-ID des ersten Turms aus der Liste, die vom Modul empfangen und von einer Zahl mit der Basis 16 in eine Zahl mit der Basis 10 umgewandelt wurde (der vom Modul empfangene Wert ist 2105)
</cellid><lac>
7838
Lac des ersten Turms, ebenfalls von einer Zahl zur Basis 16 in eine Zahl zur Basis 10 umgewandelt (der vom Modul empfangene Wert ist 1E9E)
</lac></cell>
...
Eine durch das Zell-Tag verbundene Gruppe kann beliebig oft wiederholt werden, um die Zuverlässigkeit eines bestimmten Standorts zu erhöhen
</gsm_cells>
<ip><address_v4>
10.137.92.60
Die dem Modul nach dem Öffnen des GPRS-Kontexts vom Netzwerk zugewiesene IP-Adresse kann durch Senden des Befehls „AT+SAPBR=2,1“ an das Modul ermittelt werden – siehe unten
</address_v4></ip></ya_lbs_request>
Dadurch wird eine XML-Nachricht mit 1304 Zeichen wie folgt generiert:
Nachricht
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>
Diese Nachricht wird auf der Grundlage von Daten zu Mobilfunkmasten des Megafon-Betreibers erstellt und kann durch Daten ergänzt werden, darunter: für andere modulsichtbare Türme, die mit dem Befehl „AT+CNETSCAN“ empfangen wurden, um die Zuverlässigkeit der ausgegebenen Koordinaten zu erhöhen.
Mit dem Modul arbeiten und aktuelle Koordinaten abrufen
AT-Protokoll der Arbeit mit dem 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
Somit haben wir die aktuellen Koordinaten des Moduls erhalten: 60.0330963, 30.2484304.
Da die Anzahl der über Mobilfunkmasten gesendeten Daten zunimmt, steigt proportional auch die Genauigkeit der Standortbestimmung.
Nähere Informationen zum Inhalt der Antwort des Yandex.Locator-Dienstes und zur Auswahl der benötigten Daten finden Sie unter folgendem Link:
Abschluss
Ich hoffe, dass dieses Material den Entwicklern eine gute Hilfe sein wird. Ich bin bereit, Ihre Fragen in den Kommentaren zu beantworten.
Source: habr.com