时间函数:与时间相关那些事。。。

news/2024/10/14 7:05:42

在LuatOS中,获取时间函数用得最多的就是os.time()函数。

应很多同学要求,今天,我会讲一些与这个函数以及其他时间函数相关的知识。

一、时间戳相关

os.time()这个函数,只能获取当前时间戳;如果客户希望获取的是当前时间,即相应的年月日时分秒,可以使用os.date()函数。

参考下面的示例

 

图片

关于位数:
比较遗憾的是,Lua只有秒级时间戳,没有毫秒以及微秒级时间戳,暂时没有什么好的办法解决该问题。

二、时间同步

理论上4G模块在驻网(链接基站成功)以后,基站会发送当前时间给4G模块(此过程被称为基站授时)。也就是说,只要模块驻网成功,内部时间是没有问题的,

但是,通过大量的事实验证下来,某运营商部分卡无法与基站进行授时操作,部分基站同步给4G模块的时间也有极小概率出错。

所以,除了基站授时,预备情况下,还准备了NTP授时服务器对模块进行授时操作。此处专网卡客户需要注意——如果时间参数对你比较重要,需要将NTP授时服务器的域名加入运营商白名单中。

2.1 基站时间同步:

除上述某运营商的部分卡以外,多数情况下,只要驻网成功内部就会更新时间。

如果驻网不成功,那么4G模块会从2000年00时00分00秒进行计时。所以用户需要获取时间的应用场景下,尽量等到联网成功,有时间同步信息发出来再进行。

LuatOS版本示例:

 

图片

AT版本:
可以查看开机的打印,开机打印如下。

 

图片

注:此处时间为格林尼治时间,需要+8才是中国区时间。

2.2 NTP服务器授时:

如果用户对基站授时的准确性有疑虑(之前也出现过基站授时比实际时间差了16天的情况),可以关闭基站授时,转而使用NTP授时服务器去给模块进行授时。

现在有一些免费公开的NTP授时服务器,如阿里云、腾讯云。

当然,如果对授时要求比较高,需要稳定可靠的时间同步机制——建议自建NTP授时服务器。

LuatOS版本示例:

 

图片

三、基础应用

定时休眠定时唤醒:

在一些对功耗要求比较严格,但是只需要定时数传的场景下,时间应用的重要性就出来了。

用户可以使用合宙自研低功耗模式,定时唤醒模块进行数传,数传后又进入休眠模式。具体实现可以参考下方链接。

 

四、进阶应用 

获取当前时间的后一天凌晨零点到一点随机时间戳:

多数情况下,需要对系统留有OTA的余地。为了让用户无感升级,需要对OTA的时间进行限制,比如凌晨0点。但是如果所有设备都在凌晨0点对设备进行升级,升级服务器无法处理高并发,可能会导致各种异常出现。

所以就需要在用户指定的一个时间段内进行升级,最为稳妥。

接下来的LuatOS脚本,就获取到了当前时间的后一天凌晨零点到凌晨一点的随机时间戳,并与当前时间戳进行计算,好给休眠模式下的OTA应用做出一个具体的休眠时间(秒数)设置。

LuatOS版本示例:

 

图片


 

今天就分享到这里了~如果你对时间应用有其他疑问,欢迎来找合宙,咱们一起学习一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

异常重启怎么破?多方排查后,原因竟然是。。。

​ 又是异常重启。。。让人摸不到头脑。 这几天,看到客户上报了重启问题,说是查不出原因。 重启现象是——有极个别设备在工作中不定时反复异常重启,大部分设备正常;反复重启设备,有时候又能持续正常工作。 沟通中很明显感觉到了客户的着急和无奈,必须找出背后原因,解决…

超实用!阿里云应用——Air780EP低功耗4G模组AT开发示例

​ Air780EP是合宙推出的一款低功耗4G全网通模组,兼容模组行业1618经典封装,支持OpenCPU开发及全功能数传AT开发,可广泛应用于多样化的物联网终端。 针对客户朋友需求反馈,本期特别推出基于Air780EP模组AT开发的阿里云应用指南。 一、相关准备工作 ​1.1 硬件准备合宙Air78…

基站定位与Wi-Fi定位?看这篇就够了

​ 同学们纷纷发出需求,要求特别讲解Air780EP模组AT开发基站定位与Wi-Fi定位应用示例。 本文同样适用于以下型号:Air700ECQ/Air700EAQ/Air700EMQAir780EQ/Air780EPS/Air780EXAir780E/Air724UG… 一、定位原理 1.1 应用概述 当手机在插入SIM卡后开机,便需要搜索周围的基站信…

宝塔面板创建Python项目并使用Flask框架搭建api接口

上传源代码文件 main.py from flask import Flask, request, jsonify from flask_cors import CORSapp = Flask(__name__) CORS(app) # 允许所有来源的跨域请求@app.route(/calculate, methods=[POST]) def calculate():data = request.get_json()num1 = data.get(num1)num2 =…

读数据工程之道:设计和构建健壮的数据系统08主要架构概念

主要架构概念1. 域和服务 1.1. 域是你正在为其构建的现实世界主题区域 1.2. 服务是一组功能,其目标是完成一项任务 1.3. 一个域可以包含多个服务 1.4. 确定领域中应包含的内容1.4.1. 确定领域应该包含什么以及要包括哪些服务时,最好的建议是简单地去与用户和利益相关者交谈,…

LoadBalancer for bare metal Kubernetes cluster-MetalLB

在 Kubernetes 中,对于 LoadBalancer 类型的 Service,k8s 并没有为裸机集群实现负载均衡器,因此我们只有在以下 IaaS 平台(GCP, AWS, Azure)上才能使用 LoadBalancer 类型的 service。 因此裸机集群只能使用 NodePort 或者 externalIPs service 来对面暴露服务,然而这两种…

01-k8s集群搭建 安装KubeSphere

前言 旧游无处不堪寻,无寻处,未有少年心 1.k8s简介 简介 Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。 中文官网:https://kubernetes.io/zh/ 中文社区:https://www.kubernetes.org.cn/ 官方文档:https://kubernetes.io/zh/docs/home/ 社区…

DockerCompose部署环境

前言 道阻且长,行则将至 1.安装docker 如果系统中已经存在旧的Docker,则先卸载 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine首先要安装一个yum工具 yum install -y y…