首页 > 其他分享 >跟我学!物联网服务器心跳那些事!

跟我学!物联网服务器心跳那些事!

时间:2024-12-06 19:43:14浏览次数:5  
标签:跟我学 模组 联网 服务器 心跳 4G 设备

本文让大家了解的是物联网服务器心跳那些事,所谓的心跳包就是(探测性的)数据包,之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。
事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。

最大的作用就一句话,就是告诉服务器:
我还活着,别给我踢下线了。

01.为什么需要心跳?

4G物联网设备受限于自身工作环境的影响,极有可能发生网络不稳定的情况。

例如:
人多的环境中,为了保证人联网的及时性,物联网设备的通讯优先级会被运营商调低,极有可能出现多个物联网设备互相竞争4G通讯通道,或者与手机等人联网设备竞争网络通道的情况。

再比如:
野外环境下,本身就人烟罕至的地方,运营商基站覆盖弱。

又或者:
半夜运营商降低基站发射功率来省电,或者半夜进行基站的维护。

还有可能:
服务器遇到特殊情况进行维护升级,没有及时通知物联网设备,导致设备一直进行重连/数据重传等操作,耗尽了物联网卡的流量。

以上等等诸如此类的意外情况,都会使本来正常环境下能联网的4G物联网设备,突然断网,导致服务器长期收不到模组发过来的数据或者模组收不到服务器发过来的数据,进而导致数据延迟、丢失,最终导致用户资产受损。

所以在客户端/服务器设计之初,都会设计一个心跳机制,用来处理服务器/网络异常的情况。

▼ 4G模组心跳设置 ▼

如果使用AT固件:
可以参考如下指令设置心跳:

1)AT+CIPTKA

2)AT^HEARTCONFIG

具体的参数参考合宙的AT指令集,可以设置心跳内容、心跳周期等。

如果使用LuatOS固件:

可以使用socket.config接口:

接口参数设置详见:
https://wiki.luatos.com/api/socket.html

也可以使用sys.timerLoopStart函数:
创建一个定时器,进行心跳包的传输。

02.推荐的心跳间隔

一般来说,人联网的设备,对实时性要求较高,所以一般人联网的设备,根据实际业务的实时性不同,一般心跳间隔时间也从5秒~40秒不等。

物联网设备的实时性要求大多数都不是很高,所以一般来说1分钟/2分钟/3分钟/5分钟也就够用了,可以根据真实的使用场景,以及服务器能够承载的冗余链路数量决定具体的心跳间隔。

如果你使用的是阿里云/腾讯云等可靠的物联网平台,也可以适当拉长自己的心跳周期。例如:阿里云物联网平台推荐的心跳为300秒以上,最长为1200秒。

值得一提的是,心跳间隔时间越短,同等时间内,模组耗电越多。为了节约流量和省电,对大多数物联网设备来说,并不是真的会在用户设定的心跳间隔时间时给服务器发送心跳——真正发送心跳包的间隔时间,往往是用户设置的1.5倍时长,这是心跳机制决定的。

03.如果不用心跳,服务器怎么设计

一般来说,用户使用的是TCP协议或者基于TCP的MQTT这种长连接协议。

如果客户对功耗比较看重,既希望能保持长连接,又不希望在没有数传的时候发送心跳数据导致功耗上升,可以与服务器进行协商,将定时的数据报文,当作应用层心跳报文。

如果上下两包数据接收时间小于设置的应用层心跳时间,则在下一包数据收到以后,检测心跳周期的定时器事件重置。注意:此种方式仅限于数传间隔较小(15分钟内)的情况。

当然,如果对数据传输的完整性不做严格要求,也可以将自己通讯协议改为UDP。

04.不用心跳方式的弊端

TCP协议层是有默认两小时的心跳机制,但是这会造成服务器有时需要处理大量的TCP冗余链接,所以一般服务器都会和客户端协商,启用应用层心跳。

如果没有服务器心跳,4G模组和4G基站之间也是需要一个心跳机制的——因为4G模组不是直接跟服务器连接的,而是通过NAT(即网络地址转换)与服务器连接,NAT就是网络地址转换。

NAT会维护一个映射表,这个映射表会定时检查。如果10分钟内这路socket跟服务器没任何数据往来,就会回收这路的地址,10分钟后应用上再发数据就找不到路由地址了,也就是常说的和服务器断开了链接;如果10分钟内有数据更新,计时器会重新置为10分钟。

如果不需要和模组保持长连接,且不怎么需要和服务器进行交互,半小时甚至更久:

那么可以考虑使用HTTP等链接方式,或者参考4G模组【PSM+超低功耗】教程。

标签:跟我学,模组,联网,服务器,心跳,4G,设备
From: https://www.cnblogs.com/luatos/p/18583837

相关文章

  • linux服务器常用的命令
    1、服务器间交互命令#连接远程服务器ssh-p22root@192.168.5.49#从本地上传文件到远程服务器scp本地文件路径用户名@ip:远程文件路径scp/home/test/1.txtroot@192.168.5.49:/home/test/1.txt#从远程服务器下载到本地scp用户名@ip:远程文件路径本地文件路径sc......
  • 【服务器监控】grafana+Prometheus+node exporter详细部署文档
    我们在进行测试时,不可能一直手动看着服务器的性能消耗,这时候就需要有个工具替我们监控服务器的性能消耗。这里记录下grafana+Prometheus+nodeExporter的组合用于监控服务器。简单介绍:grafana:看板工具,所有采集的性能数据都会展示在这个看板上,官网:linkPrometheus:监控系......
  • 智慧园区算法视频分析服务器垃圾桶溢满检测算法:DDNS动态域名解析在安防场景中有哪些应
    随着互联网技术的不断进步,动态域名解析(DDNS)曾经是安防视频监控领域中一个不可或缺的技术。尽管在今天,DDNS的使用频率有所下降,尤其是在P2P技术逐渐普及的背景下,但它仍然在某些场景下发挥着重要作用。本文将带您回顾DDNS的定义、原理以及它在安防领域的应用,帮助您理解这项技术如何......
  • 街面环卫算法视频分析服务器占道广告牌检测算法:智慧城管系统有哪些潜在的改进空间?
    在当今城市化进程不断加速的背景下,智慧城管系统作为城市管理的重要支撑,正发挥着日益重要的作用。它如同城市的“智慧大脑”,通过集成先进的信息技术和管理理念,有效提升了城市管理的效率和质量。然而,随着城市规模的扩大和管理需求的多样化,智慧城管系统也面临着诸多挑战和潜在的改进......
  • OPCUA 探讨(二)——服务器节点初探
    一、回顾前文中我们获取到了一份现成的OPCUA客户端代码,通过该客户端和ProsysOPCUA服务器建立了连接,并浏览了其中服务器上的内容(多层的树状节点结构)。OPCUA探讨(一)二、服务器节点结构以下是对OPCUA服务器节点结构的简要讨论。2.1根目录结构前文中我们建立会话连接后,首次点......
  • 一个api接口从请求数据到请求结束共与服务器进行了几次交互?
    一个API接口从请求数据到请求结束,前端与服务器通常进行两次交互:请求(Request):前端发送请求到服务器。这是第一次交互。请求中包含了请求方法(例如GET,POST,PUT,DELETE等),URL,以及任何必要的请求数据(例如表单数据,JSON数据等)。响应(Response):服务器处......
  • 抖音服务器带宽有多大,才能供上亿人同时刷?
    每天无数人拿起手机,打开抖音,滑动指尖,短视频接踵而来。你是否想过,当我们尽情刷视频时,抖音的服务器背后在经历怎样的“狂风暴雨”?一个平台同时支撑上亿用户实时访问,服务器的带宽需求究竟有多夸张?抖音究竟是如何实现如此庞大的并发支持?它的服务器带宽究竟有多大,才能确保每个人在......
  • 智慧工地算法视频分析服务器区域入侵检测:如何确保算法在恶劣天气下也能准确识别?
    在现代视频监控系统中,算法的准确性和稳定性至关重要,尤其是在面对恶劣天气条件时。恶劣天气如雨、雪、雾等,往往会对图像质量造成严重影响,从而降低监控系统的效能。为了确保在这些条件下算法依然能够准确识别目标,采取一系列先进的技术和策略显得尤为重要。本文将介绍几种提高算法在......
  • pycharm通过ssh连接服务器并上传项目
    pycharm通过ssh连接服务器并上传项目1.首先得保证pycharm是professional版的,不能是免费的community版。2.首先通过ssh连接服务器File->settingtools->SSHconfigurations,然后点击+新建一个SSH连接具体意思如下然后可以改下名字,要不然默认名太长然后可以通过pychar......
  • 物料堆放检测视频分析服务器违规生产检测:安防摄像机里的视频采集参数有什么意义
    在安防领域,摄像机的图像质量是衡量其性能的关键指标之一。一个高质量的摄像机不仅需要优质的硬件基础,如高性能的DSP处理器和高灵敏度的图像传感器,还需要通过精细的调整和优化来发挥其最大潜力。本文将深入探讨如何通过理解和调整摄像机的关键视频图像采集参数,来提升摄像机的图像效......