LuatOS扩展库API——【 lbsLoc2】免费版单基站定位

做物联网终端开发的朋友应该对 LuatOS 不陌生,它是面向物联网设备的轻量级嵌入式 Lua 脚本运行框架与实时系统,基于 Lua 5.3 完成深度优化,主要适配 4G-Cat.1、MCU 这类物联网终端。从开发层面来看,LuatOS 采用 Lua 脚本开发模式,核心是协程多任务的设计思路,同时配套了 70 余个核心库、30 余个扩展库,还有 1000 多个应用 demo 示例,能覆盖物联网开发中的各类基础应用场景,开发层面的适配性也比较高。

一、概述

lbsloc2 扩展库是合宙推出的更新版本,专注于提供免费的单基站定位服务。它通过上报单个基站的信息,利用合宙的数据库直接返回对应位置的经纬度,适用于对精度要求不高的场景。如果对精度要求高,可以使用 airlbs 定位服务。

为了更清晰地了解这两个库的特点,下表对比了它们的主要特性:

区别项 airlbs(付费版) lbsloc2(免费版)
定位原理 多基站/Wi-Fi混合定位,上报多个基站或Wi-Fi信息,通过三角定位法计算坐标 单基站定位,上报单一基站信息,服务器根据存储的基站经纬度直接返回位置
定位精度 10-300米(城市环境),郊区/农村可能更低,但显著优于单基站定位 1.5公里内,误差较大,适用于粗略区域定位
请求频率限制 可在套餐内选择(略) 2分钟最多1次,超过频次会返回定位失败
功能特性 支持多基站和Wi-Fi混合定位,定位精度高;适用于对精度要求较高的场景 仅支持单基站定位,无Wi-Fi定位功能;适用于对精度要求不高的场景

lbsloc2 扩展库误差较大,单基站定位误差可能在 1.5 公里内,适合对精度要求不高的场景。如果对定位精度要求较高可以使用 airlbs 扩展库。基于此在进行项目开发的时候可以根据定位精度以及项目费用预算自行选择。

合宙 lbsloc、lbsloc2、airlbs 三个库介绍:

lua 复制代码
-- lbsloc 是异步回调接口,
-- lbsloc2 是是同步接口。
-- lbsloc比lbsloc2多了一个请求地址文本的功能。
-- lbsloc 和 lbsloc2 都是免费LBS定位的实现方式;
-- airlbs 扩展库是收费 LBS 的实现方式。

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

3、更加完整和详细的 demo,请参考 LuatOS 仓库 中各个产品目录下的 demo/lbsloc2

lua 复制代码
local function lbsloc2_task_func()
    sys.waitUntil("IP_READY", 30000)
    -- mobile.reqCellInfo(60)
    -- sys.wait(1000)
    while mobile do -- 没有mobile库就没有基站定位
        mobile.reqCellInfo(15)
        sys.waitUntil("CELL_INFO_UPDATE", 3000)
        local lat, lng, t = lbsLoc2.request(5000)
        -- local lat, lng, t = lbsLoc2.request(5000, "bs.openluat.com")
        log.info("lbsLoc2", lat, lng, (json.encode(t or {})))
        sys.wait(60000)
    end
end
sys.taskInit(lbsloc2_task_func)

三、常量详解

lbsloc2 扩展库没有常量。

四、函数详解

lbsLoc2.request(timeout, host, port, reqTime)

功能

单基站定位

参数

timeout

lua 复制代码
参数含义:请求单基站定位的超时时长,单位毫秒;
数据类型:number;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:15000、20000等;

host

lua 复制代码
参数含义:请求单基站定位的服务器地址
数据类型:string;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:bs.openluat.com;

port

lua 复制代码
参数含义:请求单基站定位的服务器端口;
数据类型:number;
取值范围:暂无;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:12411;

reqTime

lua 复制代码
参数含义:是否要求返回服务器时间;
数据类型:boolean;
取值范围:若要求返回服务器时间填true,若不要求求返回服务器时间可以不填;
是否必选:可选传入此参数;
注意事项:暂无;
参数示例:true;

返回值

local lat, lng, t = lbsLoc2.request(timeout, host, port, reqTime)

有三个返回值 lat, lng, t

lat

lua 复制代码
参数含义:表示lbsloc2定位获得的纬度;
数据类型:number;
取值范围:暂无;
注意事项:暂无;
参数示例:031.143575;

lng

lua 复制代码
参数含义:表示lbsloc2定位获得的经度;
数据类型:number;
取值范围:暂无;
注意事项:暂无;
参数示例:121.5306778;

t

lua 复制代码
参数含义:表示lbsloc2定位获得的东八区时间;
数据类型:table;
取值范围:暂无;
注意事项:暂无;
参数示例:{"year":2024,"min":56,"month":11,"day":12,"sec":44,"hour":14};

示例

lua 复制代码
-- 注意:
-- 1. 仅支持单基站定位, 即当前联网的基站
-- 2. 本服务当前处于测试状态
local lat, lng, t = lbsLoc2.request(5000,nil,nil,true)--需要经纬度和当前时间
log.info("lbsLoc2", lat, lng, (json.encode(t or {})))--打印经纬度和时间
--日志输出内容示例:
--lbsLoc2 031.1435756 121.5306778 {"year":2025,"min":13,"month":8,"day":28,"sec":31,"hour":11}

五、模组支持说明

目前除 8101 系列外,其他合宙主流模组均支持 lbsloc2 扩展库

今天就分享到这里啦 ~~

相关推荐
毛驴赶鹿6 小时前
【金仓数据库征文】KES V9性能调优实战记录:从慢SQL排查到全链路优化
数据库·sql
码农阿豪7 小时前
【金仓数据库征文】Mac开发环境|SpringBoot3 + MyBatisPlus对接KES V9 Docker实战全指南
数据库·macos·docker
杨云龙UP7 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
ZENERGY-众壹7 小时前
500个工商业电站压垮数据库?海量光伏时序数据存储的架构取舍
数据库·架构·influxdb·光伏·光伏运维
mubei-1238 小时前
SpringDAO的用法
java·开发语言·数据库
星蓝_starblue10 小时前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it
三84412 小时前
sqli-labs1-10通关笔记
数据库
老孙讲技术13 小时前
家长端看幼儿园 live:云直播 HLS 嵌入公众号 / H5 的合规要点
后端·物联网
2601_9567436813 小时前
智能硬件互联产业数字化:上海物联网定制开发合作评估思路
物联网·智能硬件·开发经验·上海
智购科技自动售卖机厂家14 小时前
从STM32到RK3588——自动售货机嵌入式主控方案的架构演进~YH
stm32·嵌入式硬件·物联网·架构·lua·零售·symfony