main.lua 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "my_test"
  3. VERSION = "1.2"
  4. PRODUCT_KEY = " " --自己iot平台下的PRODUCT_KEY
  5. -- sys库是标配
  6. _G.sys = require("sys")
  7. _G.sysplus = require("sysplus")
  8. --[[本demo实现了jt808协议的基本框架,可以通过tcp上报位置信息和心跳包,后续功能可按照此框架添加即可;
  9. 使用前需修改下tcp的ip地址和端口;
  10. 如果是780eg模块,可以直接烧录,如果是780e外挂定位模块,需要注意串口号!]]--
  11. ----------------------------------------
  12. -- 报错信息自动上报到平台,默认是iot.openluat.com
  13. -- 支持自定义, 详细配置请查阅API手册
  14. -- 开启后会上报开机原因, 这需要消耗流量,请留意
  15. if errDump then
  16. errDump.config(true, 600)
  17. end
  18. ----------------------------------------
  19. -- Air780E的AT固件默认会为开机键防抖, 导致部分用户刷机很麻烦
  20. if rtos.bsp() == "EC618" and pm and pm.PWK_MODE then
  21. pm.power(pm.PWK_MODE, false)
  22. end
  23. -- 如果运营商自带的DNS不好用,可以用下面的公用DNS
  24. -- socket.setDNS(nil,1,"223.5.5.5")
  25. -- socket.setDNS(nil,2,"114.114.114.114")
  26. -- socket.sntp()
  27. --socket.sntp("ntp.aliyun.com") --自定义sntp服务器地址
  28. --socket.sntp({"ntp.aliyun.com","ntp1.aliyun.com","ntp2.aliyun.com"}) --sntp自定义服务器地址
  29. -- sys.subscribe("NTP_UPDATE", function()
  30. -- log.info("sntp", "time", os.date())
  31. -- end)
  32. -- sys.subscribe("NTP_ERROR", function()
  33. -- log.info("socket", "sntp error")
  34. -- socket.sntp()
  35. -- end)
  36. -----------------------------------------------------------------------------------------------------------------
  37. sys.taskInit(function()
  38. -- 检查一下当前固件是否支持fskv
  39. if not fskv then
  40. while true do
  41. log.info("fskv", "this demo need fskv")
  42. sys.wait(1000)
  43. end
  44. end
  45. -- 初始化kv数据库
  46. fskv.init()
  47. fskv.set("authCode", " ") --注册成功后的鉴权码
  48. fskv.set("heartFreq",60) --心跳上报间隔,单位秒
  49. fskv.set("tcpSndTimeout",10) --TCP等待应答超时时间,单位秒
  50. fskv.set("tcpResendMaxCnt", 3) --TCP重传次数
  51. fskv.set("locRptStrategy", 0) --位置汇报策略,0:定时汇报;1:定距汇报;2:定时和定距汇报
  52. fskv.set("locRptMode",0) --位置汇报方案,0:根据 ACC 状态; 1:根据登录状态和 ACC 状态,先判断登录状态,若登录再根据 ACC 状态
  53. fskv.set("sleepLocRptFreq", 60) --休眠时位置汇报时间间隔,单位为秒
  54. fskv.set("alarmLocRptFreq",5) --紧急报警时位置汇报时间间隔,单位为秒
  55. fskv.set("wakeLocRptFreq", 20) --缺省位置汇报时间间隔,单位为秒
  56. fskv.set("sleepLocRptDistance", 500) --休眠时汇报距离间隔,单位为米
  57. fskv.set("alarmLocRptDistance", 5) --紧急报警时位置汇报时间间隔,单位为米
  58. fskv.set("wakeLocRptDistance", 50) --缺省位置汇报时间间隔,单位为米
  59. fskv.set("fenceRadis", 100) --电子围栏半径,单位为米
  60. fskv.set("alarmFilter",0) --报警屏蔽字,与位置汇报消息中的报警标志相对应,相应位为 1,则相应报警被屏蔽
  61. fskv.set("keyFlag", 0) --关键标志,与位置信息汇报消息中的报警标志相对应,相应位为 1 则对相应报警为关键报警
  62. fskv.set("speedLimit", 100) --最高速度,单位为公里每小时(km/h)
  63. fskv.set("speedExceedTime", 60) --超速持续时间,单位为秒(s)
  64. end)
  65. -------------------------------------------------------------------------------------------------------------
  66. local gpsMng = require "gpsMng"
  67. require "JT808Prot"
  68. require "socket_demo"
  69. -- dtuDemo("112.125.89.8",35960)
  70. -- 用户代码已结束---------------------------------------------
  71. -- 结尾总是这一句
  72. sys.run()
  73. -- sys.run()之后后面不要加任何语句!!!!!