最近這兩天,微博、微信、抖音、知乎等網絡平臺都上線了IP屬地功能,用戶的個人主頁,或者在發表視頻、博文、評論、投票時,會顯示用戶當前的IP屬地,國內用戶顯示省份/地區,國外用戶顯示國家/地區。IP屬地的上線讓很多國外、本地博主現出了原形,出現了IP屬地和資料地址不符的情況。

IP屬地來了,不讓物聯網設備“裸泳”,給你的設備加個自動獲取IP屬地的功能吧!
對于嵌入式物聯網設備,除了一些特殊場合,比如環境監測、路徑規劃、定位追蹤等,需要通過GPS模塊獲取精確的地理位置,對于一些天氣預報、疫情數據相關的設備來說,地理位置要求沒那么精確,只需要基本的時區、國家、城市/省份信息即可。本文介紹,如何基于已有的WiFi/4G/5G聯網功能,添加一個自動獲取IP屬地功能。共分為以下三個步驟:
- 接口獲取
- 接口訪問
- JSON數據解析
1.獲取API接口
IP定位需要使用公網IP,比如123.105.127.111,而不能是局域網IP,比如192.169.1.100。常用的IP定位接口有兩種:- 一種是不需要知道當前設備的IP地址,直接訪問接口,接口會返回設備的IP地址。
- 一種是已知設備的IP地址,在訪問接口時傳入IP地址參數,接口會返回傳入IP地址的經緯度、時區、國家、省份、城市等信息。
遠程服務器地址:103.205.5.249 遠程服務器端口號:80 API接口:http://api.k780.com/?app=ip.local&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json 返回的JSON數據:
{ "success":"1", "result":{ "ip":"102.212.134.15", "proxy":"1", "att":"中國,北京", "operators":"聯通" } } 先用網絡調試助手測試一下:

API接口沒問題,下一步使用嵌入式設備來完成自動獲取IP地址。
2.嵌入式訪問接口
聯網模塊主要有WiFi或移動網絡4G模塊,這里以比較常用的ESP8266 WiFi模塊+STM32為例,來演示通過串口AT指令來訪問IP定位接口,下面是我使用STM32配置ESP8266的過程:

3.JSON數據解析
嵌入式設備可以使用的JSON解析庫,常用的JSON解析庫有cJSON和Jansson等。如果你覺得使用解析庫會額外的增加程序大小,你也可以使用字符串操作的一些函數,從返回的JSON字符串中提取出你想要的數據,這樣會節省一部分微控制器的ROM空間。下面直接給出基于cJSON庫,對以上IP定位接口返回數據進行解析的函數:#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原始數據 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;//中國,北京 net=cJSON_GetObjectItem(result,"operators")->valuestring;//聯通 printf("ip:%s loc:%s net:%s ",ip,loc,net); } else { printf("JSONformaterror:%s ",cJSON_GetErrorPtr());//輸出json格式錯誤信息 return1; } cJSON_Delete(root); return0; }
4.商用API接口
還有一些其他的免費接口:/*返回IP地址,地區、時序、國家等信息,默認是英文的*/ http://ip-api.com/json/ /*可選中文*/ http://ip-api.com/json/?lang=zh-CN /*SOHU接口,非標準JSON*/ http://pv.sohu.com/cityjson /*國內的PCOnline提供的接口,定位不準確*/ http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=14.16.139.216 /*國外geoplugin公司提供的接口,包括經緯度、時區、貨幣單位、對美元匯率等信息*/ http://www.geoplugin.net/json.gp以上免費接口都有隨時關停的可能,如果用于商業用途,建議還是選擇第三方商業公司提供的接口,或者自己開發API接口。本文推薦使用三大地圖提供商的IP定位服務,一般支持自動定位,或查詢指定IP地址對應的地址,返回信息一般包括國家,省份/城市,行政區劃代碼,經緯度等信息,數據格式一般支持JSON或XML,請求方式為GET或POST,可以進入官方網站查看詳細的API文檔,根據需求來選擇:
- 騰訊位置服務
- 百度地圖開放平臺
- 高德開放平臺
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
嵌入式
+關注
關注
5198文章
20449瀏覽量
334074 -
物聯網設備
+關注
關注
1文章
249瀏覽量
21044
原文標題:嵌入式設備如何顯示IP屬地?
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
什么是嵌入式應用開發?
、實現和部署,還包括硬件選擇、軟件設計、測試、集成和維護等流程?。
定義和背景
嵌入式應用開發是指將軟件部署到嵌入式系統中,這些系統廣泛應用于消費電子和工業自動化中。嵌入式系統通常被嵌入
發表于 01-12 16:13
什么是嵌入式操作系統?
、嵌入式操作系統的定義
嵌入式操作系統是專門為資源受限的嵌入式設備(比如 STM32 單片機、物聯網模塊、工業控制器)設計的微型操作系統,核心作用是:管理硬件資源、調度多任務、提供標
發表于 12-09 10:33
C語言在嵌入式開發中的應用
。C 語言可以利用 Socket 編程等技術,實現嵌入式設備與服務器之間的 TCP/IP 通信,確保數據的可靠傳輸。同時,C 語言還可以結合輕量級的 TCP/IP 協議棧,如 lwIP
發表于 11-21 08:09
Ethernet ip轉SPI嵌入式板卡-讓機器人與單片機互相聯動
發那科機器人通過EtherNet/IP主站與SPI嵌入式板卡聯動,實現遠程控制SPI設備與數據采集,涵蓋硬件連接、IP配置、數據映射及通信驗證,適用于機器人工作站集成SPI傳感器/執行
嵌入式需要掌握哪些核心技能?
/網絡設備)、中斷底半部處理,適用于高端嵌入式設備。 企業需求:RTOS是60%崗位的核心要求,Linux開發需求隨項目復雜度增長。 4)通信協議與接口 基礎協議:UART、SPI、I2C、CAN總線
發表于 10-21 16:25
入行嵌入式應該怎么準備?
任務調度的代碼是非常重要的。此外,了解操作系統內核的工作原理以及與硬件交互的方式也是必須的。
四、通信協議嵌入式系統通常需要與其他設備或系統進行通信。了解常見的通信協議(如UART、SPI、I2C
發表于 08-06 10:34
MicroBlaze處理器嵌入式設計用戶指南
*本指南內容涵蓋了在嵌入式設計中使用 MicroBlaze 處理器、含存儲器 IP 核的設計、IP integrator 中的復位和時鐘拓撲結構。獲取完整版《 MicroBlaze 處理器嵌入
嵌入式工業顯示器如何提升自動化設備的操作效率??
在工業 4.0 的浪潮下,自動化設備在各行業中的應用愈發廣泛,而嵌入式工業顯示器作為自動化設備的關鍵人機交互界面,其性能優劣直接影響著設備的
Linux嵌入式和單片機嵌入式的區別?
Linux嵌入式與單片機嵌入式在多個方面存在顯著的區別,以下是詳細的比較和歸納:
一、基本概念
1. Linux嵌入式:
定義:將Linux操作系統運行在嵌入式
發表于 06-20 09:46
嵌入式開發入門指南:從零開始學習嵌入式
特定功能的計算機系統,廣泛應用于智能家居、工業控制、醫療設備、車載系統等領域。 2. 學習嵌入式開發的前置知識熟悉C語言編程掌握基本的數據結構與算法了解數字電路與微控制器原理熟悉Linux操作系統
發表于 05-15 09:29
MAXQ1061/MAXQ1062用于嵌入式設備的DeepCover加密控制器技術手冊
DeepCover?嵌入式安全方案采用多重先進的物理安全機制保護敏感數據,提供最高等級的密鑰存儲安全保護。
DeepCover加密控制器(MAXQ1061)保護軟件IP、通信和盈利模式的保密性、真實性和完整性。它是用于連接嵌入式
飛凌嵌入式2025嵌入式及邊緣AI技術論壇圓滿結束
飛凌嵌入式「2025嵌入式及邊緣AI技術論壇」在深圳深鐵皇冠假日酒店盛大舉行,此次活動邀請到了200余位嵌入式技術領域的技術專家、企業代表和工程師用戶,共享嵌入式及邊緣AI技術的盛宴!
飛凌嵌入式「2025嵌入式及邊緣AI技術論壇」議程公布
4月22日,飛凌嵌入式“2025嵌入式及邊緣AI技術論壇”將在深圳舉行,論壇以“新生態,智未來”為主題,旨在匯聚行業智慧,探討嵌入式技術與邊緣AI的深度融合與創新應用。
嵌入式設備如何顯示IP屬地?
評論