| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- -- LuaTools需要PROJECT和VERSION这两个信息
- PROJECT = "paid_lbs"
- VERSION = "1.0.0"
- -- 使用合宙iot平台时需要这个参数
- PRODUCT_KEY = "xxx" -- 到 iot.openluat.com 创建项目,获取正确的项目id
- -- 引入必要的库文件(lua编写), 内部库不需要require
- sys = require("sys")
- sysplus = require("sysplus")
- libnet = require "libnet"
- log.info("main", PROJECT, VERSION)
- if wdt then
- -- 添加硬狗防止程序卡死,在支持的设备上启用这个功能
- wdt.init(20000) -- 初始化watchdog设置为9s
- sys.timerLoopStart(wdt.feed, 3000) -- 3s喂一次狗
- end
- local airlbs = require "airlbs"
- local timeout = 60 -- 扫描基站/wifi 做 基站/wifi定位 的超时时间,最小5S,最大60S
- -- 此为收费服务,需自行联系销售申请
- local airlbs_project_id = ""
- local airlbs_project_key = ""
- -- --多基站定位
- -- sys.taskInit(function()
- -- sys.waitUntil("IP_READY") -- 等待底层上报联网成功
- -- socket.sntp() -- 进行NTP授时,放置部分联通卡没有基站授时
- -- sys.waitUntil("NTP_UPDATE", 1000)
- -- while 1 do
- -- if airlbs_project_id and airlbs_project_key then
- -- local result, data = airlbs.request({
- -- project_id = airlbs_project_id,
- -- project_key = airlbs_project_key,
- -- timeout = timeout * 1000 -- 实际的超时时间(单位:ms)
- -- })
- -- if result then
- -- log.info("airlbs多基站定位返回的经纬度数据为", json.encode(data))
- -- end
- -- else
- -- log.warn("请检查project_id和project_key")
- -- end
- -- sys.wait(20000)
- -- end
- -- end)
- -- wifi/基站混合定位
- sys.taskInit(function()
- sys.waitUntil("IP_READY")
- -- 如需wifi定位,需要硬件以及固件支持wifi扫描功能
- local wifi_info = nil
- if wlan then
- sys.wait(3000) -- 网络可用后等待一段时间才再调用wifi扫描功能,否则可能无法获取wifi信息
- wlan.init()
- wlan.scan()
- sys.waitUntil("WLAN_SCAN_DONE", timeout * 1000)
- wifi_info = wlan.scanResult()
- log.info("scan", "wifi_info", #wifi_info)
- end
- socket.sntp()
- sys.waitUntil("NTP_UPDATE", 1000)
- while 1 do
- local result, data = airlbs.request({
- project_id = airlbs_project_id,
- project_key = airlbs_project_key,
- wifi_info = wifi_info,
- timeout = timeout * 1000
- })
- if result then
- local data_str = json.encode(data)
- log.info("airlbs多基站定位返回的经纬度数据为", data_str)
- -- 解析经纬度
- local lat = data_str:match("\"lat\":([0-9.-]+)")
- log.info("airlbs", "lat", lat)
- local lng = data_str:match("\"lng\":([0-9.-]+)")
- log.info("airlbs", "lng", lng)
- else
- log.warn("请检查project_id和project_key")
- end
- sys.wait(20000) -- 循环20S一次wifi定位
- end
- end)
- -- 用户代码已结束---------------------------------------------
- -- 结尾总是这一句
- sys.run()
- -- sys.run()之后后面不要加任何语句!!!!!
|