最近這兩天,微博、微信、抖音、知乎等網(wǎng)絡(luò)平臺(tái)都上線(xiàn)了IP屬地功能,用戶(hù)的個(gè)人主頁(yè),或者在發(fā)表視頻、博文、評(píng)論、投票時(shí),會(huì)顯示用戶(hù)當(dāng)前的IP屬地,國(guó)內(nèi)用戶(hù)顯示省份/地區(qū),國(guó)外用戶(hù)顯示國(guó)家/地區(qū)。IP屬地的上線(xiàn)讓很多國(guó)外、本地博主現(xiàn)出了原形,出現(xiàn)了IP屬地和資料地址不符的情況。
IP屬地來(lái)了,不讓物聯(lián)網(wǎng)設(shè)備“裸泳”,給你的設(shè)備加個(gè)自動(dòng)獲取IP屬地的功能吧!
對(duì)于嵌入式物聯(lián)網(wǎng)設(shè)備,除了一些特殊場(chǎng)合,比如環(huán)境監(jiān)測(cè)、路徑規(guī)劃、定位追蹤等,需要通過(guò)GPS模塊獲取精確的地理位置,對(duì)于一些天氣預(yù)報(bào)、疫情數(shù)據(jù)相關(guān)的設(shè)備來(lái)說(shuō),地理位置要求沒(méi)那么精確,只需要基本的時(shí)區(qū)、國(guó)家、城市/省份信息即可。本文介紹,如何基于已有的WiFi/4G/5G聯(lián)網(wǎng)功能,添加一個(gè)自動(dòng)獲取IP屬地功能。共分為以下三個(gè)步驟:
- 接口獲取
- 接口訪(fǎng)問(wèn)
- JSON數(shù)據(jù)解析
1.獲取API接口
IP定位需要使用公網(wǎng)IP,比如123.105.127.111,而不能是局域網(wǎng)IP,比如192.169.1.100。常用的IP定位接口有兩種:- 一種是不需要知道當(dāng)前設(shè)備的IP地址,直接訪(fǎng)問(wèn)接口,接口會(huì)返回設(shè)備的IP地址。
- 一種是已知設(shè)備的IP地址,在訪(fǎng)問(wèn)接口時(shí)傳入IP地址參數(shù),接口會(huì)返回傳入IP地址的經(jīng)緯度、時(shí)區(qū)、國(guó)家、省份、城市等信息。
API接口沒(méi)問(wèn)題,下一步使用嵌入式設(shè)備來(lái)完成自動(dòng)獲取IP地址。
2.嵌入式訪(fǎng)問(wèn)接口
聯(lián)網(wǎng)模塊主要有WiFi或移動(dòng)網(wǎng)絡(luò)4G模塊,這里以比較常用的ESP8266 WiFi模塊+STM32為例,來(lái)演示通過(guò)串口AT指令來(lái)訪(fǎng)問(wèn)IP定位接口,下面是我使用STM32配置ESP8266的過(guò)程:
3.JSON數(shù)據(jù)解析
嵌入式設(shè)備可以使用的JSON解析庫(kù),常用的JSON解析庫(kù)有cJSON和Jansson等。如果你覺(jué)得使用解析庫(kù)會(huì)額外的增加程序大小,你也可以使用字符串操作的一些函數(shù),從返回的JSON字符串中提取出你想要的數(shù)據(jù),這樣會(huì)節(jié)省一部分微控制器的ROM空間。下面直接給出基于cJSON庫(kù),對(duì)以上IP定位接口返回?cái)?shù)據(jù)進(jìn)行解析的函數(shù): #include"cJSON.h" uint8_tparse_api_data(char*jsonstr) { cJSON*root; cJSON*result; char*ip; char*loc; char*net; //printf("recvdata:%d-%s ",strlen((constchar*)jsonstr),jsonstr);//JSON原始數(shù)據(jù) root=cJSON_Parse((constchar*)USART2_RX_BUF); if(root!=0) { printf("---JSONformatok--- "); result=cJSON_GetObjectItem(root,"result"); ip=cJSON_GetObjectItem(result,"ip")->valuestring;//164.123.44.15 loc=cJSON_GetObjectItem(result,"att")->valuestring;//中國(guó),北京 net=cJSON_GetObjectItem(result,"operators")->valuestring;//聯(lián)通 printf("ip:%s loc:%s net:%s ",ip,loc,net); } else { printf("JSONformaterror:%s ",cJSON_GetErrorPtr());//輸出json格式錯(cuò)誤信息 return1; } cJSON_Delete(root); return0; }4.商用API接口
還有一些其他的免費(fèi)接口: /*返回IP地址,地區(qū)、時(shí)序、國(guó)家等信息,默認(rèn)是英文的*/ http://ip-api.com/json/ /*可選中文*/ http://ip-api.com/json/?lang=zh-CN /*SOHU接口,非標(biāo)準(zhǔn)JSON*/ http://pv.sohu.com/cityjson /*國(guó)內(nèi)的PCOnline提供的接口,定位不準(zhǔn)確*/ http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=14.16.139.216 /*國(guó)外geoplugin公司提供的接口,包括經(jīng)緯度、時(shí)區(qū)、貨幣單位、對(duì)美元匯率等信息*/ http://www.geoplugin.net/json.gp以上免費(fèi)接口都有隨時(shí)關(guān)停的可能,如果用于商業(yè)用途,建議還是選擇第三方商業(yè)公司提供的接口,或者自己開(kāi)發(fā)API接口。本文推薦使用三大地圖提供商的IP定位服務(wù),一般支持自動(dòng)定位,或查詢(xún)指定IP地址對(duì)應(yīng)的地址,返回信息一般包括國(guó)家,省份/城市,行政區(qū)劃代碼,經(jīng)緯度等信息,數(shù)據(jù)格式一般支持JSON或XML,請(qǐng)求方式為GET或POST,可以進(jìn)入官方網(wǎng)站查看詳細(xì)的API文檔,根據(jù)需求來(lái)選擇:- 騰訊位置服務(wù)
- 百度地圖開(kāi)放平臺(tái)
- 高德開(kāi)放平臺(tái)
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
嵌入式
+關(guān)注
關(guān)注
5096文章
19206瀏覽量
308403 -
物聯(lián)網(wǎng)設(shè)備
+關(guān)注
關(guān)注
1文章
235瀏覽量
19866
原文標(biāo)題:嵌入式設(shè)備如何顯示IP屬地?
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式機(jī)器學(xué)習(xí)的應(yīng)用特性與軟件開(kāi)發(fā)環(huán)境
作者:DigiKey Editor 在許多嵌入式系統(tǒng)中,必須采用嵌入式機(jī)器學(xué)習(xí)(Embedded Machine Learning)技術(shù),這是指將機(jī)器學(xué)習(xí)模型部署在資源受限的設(shè)備(如微控制器、物聯(lián)網(wǎng)
![<b class='flag-5'>嵌入式</b>機(jī)器學(xué)習(xí)的應(yīng)用特性與軟件開(kāi)發(fā)環(huán)境](https://file1.elecfans.com/web3/M00/05/AF/wKgZO2eCM96AYfoXAAC2esU07bU956.png)
ARM架構(gòu)嵌入式主板特點(diǎn)
嵌入式主板可以理解為嵌入在設(shè)備中用于控制和數(shù)據(jù)處理的CPU板,也就是設(shè)備的“大腦”。當(dāng)主板嵌入到設(shè)備
![ARM架構(gòu)<b class='flag-5'>嵌入式</b>主板特點(diǎn)](https://file1.elecfans.com/web2/M00/EB/A1/wKgZomZe5fWAXs4EAABHp9zbA6E074.png)
新手怎么學(xué)嵌入式?
新手怎么學(xué)嵌入式? 在科技飛速發(fā)展的今天,嵌入式技術(shù)已經(jīng)滲透到我們生活的各個(gè)角落,從智能手機(jī)到智能家居,從汽車(chē)電子到醫(yī)療設(shè)備。對(duì)于新手而言,嵌入式技術(shù)就像是一座充滿(mǎn)神秘和機(jī)遇的寶藏,等
發(fā)表于 12-12 10:51
什么是嵌入式人工智能
嵌入式人工智能是指將人工智能技術(shù)應(yīng)用于嵌入式系統(tǒng)中的一種技術(shù)。嵌入式系統(tǒng)是嵌入到其他設(shè)備或系統(tǒng)中的計(jì)算機(jī)系統(tǒng),通常用于控制、監(jiān)測(cè)或執(zhí)行特定任
![什么是<b class='flag-5'>嵌入式</b>人工智能](https://file1.elecfans.com/web2/M00/8D/79/wKgaomS7KZ-AY3GzAAArJzrUg1c443.png)
android如何獲取本機(jī)ip地址及ip歸屬地
# 前言 # 本篇文章主要介紹android如何獲取本機(jī)ip地址及ip歸屬地。 ? # 定義 # ip地址是指手機(jī)在連接到互聯(lián)網(wǎng)時(shí)所獲得的唯一網(wǎng)絡(luò)地址。
什么是嵌入式?一文讀懂嵌入式主板
在現(xiàn)代科技浪潮中,嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運(yùn)行的核心力量。那么,究竟什么是嵌入式?嵌入式系統(tǒng),顧名思義,是將計(jì)算機(jī)的硬件和軟件嵌入
嵌入式主板是什么意思?嵌入式主板全面解析
嵌入式主板,通常被稱(chēng)為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計(jì)算機(jī)硬件,其設(shè)計(jì)旨在嵌入特定設(shè)備中執(zhí)行專(zhuān)門(mén)任務(wù)。嵌入式主板如同是
各大平臺(tái)如何展示全網(wǎng)的IP歸屬地
小紅薯、某音、塊手等APP陸續(xù)開(kāi)始展示IP歸屬地,那么,各大平臺(tái)是如何做到這一點(diǎn)的呢?
嵌入式工控主板在金融智能設(shè)備行業(yè)應(yīng)用
嵌入式工控主板在金融智能設(shè)備行業(yè)的應(yīng)用廣泛且深入,其重要性不言而喻。以下是從幾個(gè)關(guān)鍵方面來(lái)闡述嵌入式工控主板在金融智能設(shè)備行業(yè)的應(yīng)用:
如何提升嵌入式編程能力?
和使用。 9. 網(wǎng)絡(luò)編程:嵌入式設(shè)備越來(lái)越多地連接到網(wǎng)絡(luò),因此學(xué)習(xí)TCP/IP、UDP、HTTP等網(wǎng)絡(luò)協(xié)議是必要的。 10. 關(guān)注安全性:了解嵌入式系統(tǒng)的安全問(wèn)題,學(xué)習(xí)如何編寫(xiě)安全的代
發(fā)表于 06-21 10:01
入門(mén)嵌入式系統(tǒng)這些知識(shí)你知道嗎?
嵌入式系統(tǒng)是一種專(zhuān)用的計(jì)算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。事實(shí)上,所有帶有數(shù)字接口的
發(fā)表于 05-03 09:54
?653次閱讀
嵌入式主板,你了解多少?
嵌入式主板,也稱(chēng)為嵌入式計(jì)算機(jī)主板,是一種專(zhuān)門(mén)設(shè)計(jì)用于嵌入式系統(tǒng)的計(jì)算機(jī)主板。與臺(tái)式機(jī)和筆記本電腦中使用的常規(guī)主板不同,嵌入式主板設(shè)計(jì)用于集成到更大的電子
嵌入式fpga是什么意思
嵌入式FPGA是指將FPGA技術(shù)集成到嵌入式系統(tǒng)中的一種解決方案。嵌入式系統(tǒng)是一種為特定應(yīng)用而設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它通常包括處理器、內(nèi)存、外設(shè)接口等組件,并且被嵌入到更大的
fpga是嵌入式嗎
FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)不是嵌入式系統(tǒng),但FPGA在嵌入式系統(tǒng)中有著重要的應(yīng)用。
嵌入式系統(tǒng)發(fā)展前景?
嵌入式系統(tǒng)發(fā)展前景? 嵌入式系統(tǒng),從定義上來(lái)說(shuō),是一種專(zhuān)用的計(jì)算機(jī)系統(tǒng),它被設(shè)計(jì)用來(lái)控制、監(jiān)視或者幫助操作一些設(shè)備、裝置或機(jī)器。在過(guò)去的幾年里,嵌入式系統(tǒng)已經(jīng)取得了顯著的進(jìn)步,而未來(lái),
發(fā)表于 02-22 14:09
評(píng)論