main.lua 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. --[[
  2. demo说明:
  3. 1. 演示wifi联网操作
  4. 2. 演示长连接操作
  5. 3. 演示简易的网络状态灯
  6. ]]
  7. _G.sys = require("sys")
  8. _G.mqtt2 = require("mqtt2")
  9. _G.mine = require("my_demo")
  10. log.info("main", "simple mqtt2 demo")
  11. -- //////////////////////////////////////////////////////////////////////////////////////
  12. -- wifi 相关的代码
  13. if wlan ~= nil then
  14. log.info("mac", wlan.get_mac())
  15. local ssid = mine.wifi_ssid
  16. local password = mine.wifi_passwd
  17. -- 方式1 直接连接, 简单快捷
  18. wlan.connect(ssid, password) -- 直接连
  19. -- 方式2 先扫描,再连接. 例如根据rssi(信号强度)的不同, 择优选择ssid
  20. -- sys.taskInit(function()
  21. -- wlan.scan()
  22. -- sys.waitUntil("WLAN_SCAN_DONE", 30000)
  23. -- local re = wlan.scan_get_info()
  24. -- log.info("wlan", "scan done", #re)
  25. -- for i in ipairs(re) do
  26. -- log.info("wlan", "info", re[i].ssid, re[i].rssi)
  27. -- end
  28. -- log.info("wlan", "try connect to wifi")
  29. -- wlan.connect(ssid, password)
  30. -- sys.waitUntil("WLAN_READY", 15000)
  31. -- log.info("wifi", "self ip", socket.ip())
  32. -- end)
  33. -- 方法3 airkiss配网, 可参考 app/playit/main.lua
  34. end
  35. -- airkiss.auto(27) -- 预留的功能,未完成
  36. -- //////////////////////////////////////////////////////////////////////////////////////
  37. --- 从这里开始, 代码与具体网络无关
  38. -- 联网后自动同步时间
  39. -- sys.subscribe("NET_READY", function ()
  40. -- log.info("net", "!!! network ready event !!! send ntp")
  41. -- sys.taskInit(function()
  42. -- sys.wait(2000)
  43. -- socket.ntpSync()
  44. -- end)
  45. -- end)
  46. gpio.setup(21, 0)
  47. _G.use_netled = 1 -- 启用1, 关闭0
  48. sys.taskInit(function()
  49. while 1 do
  50. --log.info("wlan", "ready?", wlan.ready())
  51. if socket.isReady() then
  52. --log.info("netled", "net ready, slow")
  53. gpio.set(21, 1 * use_netled)
  54. sys.wait(1900)
  55. gpio.set(21, 0)
  56. sys.wait(100)
  57. else
  58. --log.info("netled", "net not ready, fast")
  59. gpio.set(21, 1 * use_netled)
  60. sys.wait(100)
  61. gpio.set(21, 0)
  62. sys.wait(100)
  63. end
  64. --log.info("mem", rtos.meminfo())
  65. end
  66. end)
  67. sys.taskInit(function()
  68. local host, port, selfid = "lbsmqtt.airm2m.com", 1884, wlan.getMac():lower()
  69. local topic_req = string.format("/device/%s/req", selfid)
  70. local topic_report = string.format("/device/%s/report", selfid)
  71. local topic_resp = string.format("/device/%s/resp", selfid)
  72. local sub_topics = {}
  73. sub_topics[topic_req] = 1
  74. local mqttc = mqtt2.new(selfid, 300, "wendal", "123456", 0, host, port, sub_topics, function(pkg)
  75. log.info("mqtt", "Oh", json.encode(pkg))
  76. end)
  77. --log.info("mqtt", json.encode(mqttc))
  78. while not socket.isReady() do sys.waitUntil("NET_READY", 1000) end
  79. sys.wait(3000)
  80. log.info("go", "GoGoGo")
  81. mqttc:start()
  82. end)
  83. sys.run()