0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式设备如何显示IP属地?

Q4MP_gh_c472c21 来源:电子电路开发学习 作者:电子电路开发学习 2022-05-05 14:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近这两天,微博、微信、抖音、知乎等网络平台都上线了IP属地功能,用户的个人主页,或者在发表视频、博文、评论、投票时,会显示用户当前的IP属地,国内用户显示省份/地区,国外用户显示国家/地区。IP属地的上线让很多国外、本地博主现出了原形,出现了IP属地和资料地址不符的情况。

b7c56a3e-cc29-11ec-bce3-dac502259ad0.jpg

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地址的经纬度、时区、国家、省份、城市等信息。
还有的是将以上两种接口整合为一个,无需事先知道设备的IP地址,直接使用设备访问接口,就会返回公网IP、经纬度、时区、国家、城市等信息。这里推荐一个免费的API接口:

		远程服务器地址: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":"联通" } } 先用网络调试助手测试一下:
			

b7ef6532-cc29-11ec-bce3-dac502259ad0.jpg

API接口没问题,下一步使用嵌入式设备来完成自动获取IP地址。

2.嵌入式访问接口

联网模块主要有WiFi或移动网络4G模块,这里以比较常用的ESP8266 WiFi模块+STM32为例,来演示通过串口AT指令来访问IP定位接口,下面是我使用STM32配置ESP8266的过程:

b800e726-cc29-11ec-bce3-dac502259ad0.jpg

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文档,根据需求来选择:
  • 腾讯位置服务
https://lbs.qq.com/service/webService/webServiceGuide/webServiceIp
  • 百度地图开放平台
百度地图接口分为两个:普通IP定位和智能硬件定位,可以利用蓝牙WI-FI、基站、GPS等信息,获取定位信息。https://lbsyun.baidu.com/index.php?title=webapi/intel-hardware-apihttps://lbsyun.baidu.com/index.php?title=webapi/ip-api
  • 高德开放平台
https://lbs.amap.com/api/webservice/guide/api/ipconfig如果对于访问次数和访问流量要求不高的话,只需要认证个人开发者/企业用户,就可以免费使用。 IP属地的上线,让人在美国,刚下飞机,这类的社交谎言不攻自破,功能上线的真正目的还是为了维护真实的网络环境,减少恶意造谣、蹭流量的不良行为。也希望大家在社交网络,展现自己真实的一面! 审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328809
  • 物联网设备
    +关注

    关注

    1

    文章

    243

    浏览量

    20900

原文标题:嵌入式设备如何显示IP属地?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C语言在嵌入式开发中的应用

    。C 语言可以利用 Socket 编程等技术,实现嵌入式设备与服务器之间的 TCP/IP 通信,确保数据的可靠传输。同时,C 语言还可以结合轻量级的 TCP/IP 协议栈,如 lwIP
    发表于 11-21 08:09

    Ethernet ip转SPI嵌入式板卡-让机器人与单片机互相联动

    发那科机器人通过EtherNet/IP主站与SPI嵌入式板卡联动,实现远程控制SPI设备与数据采集,涵盖硬件连接、IP配置、数据映射及通信验证,适用于机器人工作站集成SPI传感器/执行
    的头像 发表于 11-10 11:40 632次阅读
    Ethernet <b class='flag-5'>ip</b>转SPI<b class='flag-5'>嵌入式</b>板卡-让机器人与单片机互相联动

    嵌入式需要掌握哪些核心技能?

    /网络设备)、中断底半部处理,适用于高端嵌入式设备。 企业需求:RTOS是60%岗位的核心要求,Linux开发需求随项目复杂度增长。 4)通信协议与接口 基础协议:UART、SPI、I2C、CAN总线
    发表于 10-21 16:25

    MicroBlaze处理器嵌入式设计用户指南

    *本指南内容涵盖了在嵌入式设计中使用 MicroBlaze 处理器、含存储器 IP 核的设计、IP integrator 中的复位和时钟拓扑结构。获取完整版《 MicroBlaze 处理器嵌入
    的头像 发表于 07-28 10:43 785次阅读

    嵌入式工业显示器如何提升自动化设备的操作效率?​

    在工业 4.0 的浪潮下,自动化设备在各行业中的应用愈发广泛,而嵌入式工业显示器作为自动化设备的关键人机交互界面,其性能优劣直接影响着设备
    的头像 发表于 07-14 15:55 456次阅读

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作系统
    发表于 05-15 09:29

    嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用

    嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用。以下是其具体作用的分析: 一、提供交互界面 嵌入式工业级显示器为环保垃圾柜
    的头像 发表于 02-21 11:36 571次阅读
    <b class='flag-5'>嵌入式</b>工业级<b class='flag-5'>显示</b>器在环保垃圾柜<b class='flag-5'>设备</b>中发挥着至关重要的作用

    嵌入式工业级显示器在环保垃圾柜设备中的作用

    嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用。以下是其具体作用的分析: 一、提供交互界面 嵌入式工业级显示器为环保垃圾柜
    的头像 发表于 02-21 11:18 547次阅读
    <b class='flag-5'>嵌入式</b>工业级<b class='flag-5'>显示</b>器在环保垃圾柜<b class='flag-5'>设备</b>中的作用

    小身材大能量:解读小尺寸嵌入式主板

    此前,已经带大家认识了嵌入式主板的尺寸版型,相信大家对此已有了初步印象。在科技日新月异的当下,各类设备都朝着更小体积、更高性能的方向发展。小尺寸嵌入式主板正悄无声息改变着我们的生活与商业模式。今天
    的头像 发表于 02-17 18:02 993次阅读
    小身材大能量:解读小尺寸<b class='flag-5'>嵌入式</b>主板

    嵌入式机器学习的应用特性与软件开发环境

    作者:DigiKey Editor 在许多嵌入式系统中,必须采用嵌入式机器学习(Embedded Machine Learning)技术,这是指将机器学习模型部署在资源受限的设备(如微控制器、物联网
    的头像 发表于 01-25 17:05 1210次阅读
    <b class='flag-5'>嵌入式</b>机器学习的应用特性与软件开发环境

    嵌入式主板的概述与发展

    随着科技的迅猛发展,嵌入式系统在现代电子产品中扮演着越来越重要的角色。嵌入式主板作为嵌入式系统的核心组件之一,承担着控制、处理和通讯等多种功能。本文将对嵌入式主板的基本概念、构成部分、
    的头像 发表于 01-13 16:30 1184次阅读
    <b class='flag-5'>嵌入式</b>主板的概述与发展

    ARM架构嵌入式主板特点

    嵌入式主板可以理解为嵌入设备中用于控制和数据处理的CPU板,也就是设备的“大脑”。当主板嵌入设备
    的头像 发表于 12-31 16:03 1839次阅读
    ARM架构<b class='flag-5'>嵌入式</b>主板特点

    新手怎么学嵌入式?

    新手怎么学嵌入式? 在科技飞速发展的今天,嵌入式技术已经渗透到我们生活的各个角落,从智能手机到智能家居,从汽车电子到医疗设备。对于新手而言,嵌入式技术就像是一座充满神秘和机遇的宝藏,等
    发表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统中的一种技术。嵌入式系统是嵌入到其他设备或系统中的计算机系统,通常用于控制、监测或执行特定任
    的头像 发表于 12-11 09:23 1519次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备中。这些系统的关键特点是它们与硬件的紧密集成,这意味着软件必须为特定的硬件平台量身定制。
    的头像 发表于 12-09 09:38 1466次阅读