次说到定位成功后,显示的数据准确性问题。专门查询了下我所在地区的经纬度信息。

MagicBox的显示数据是这样的:

络上查到的经纬度数据是这样的:

以看出定位精度还可以,毕竟我这个查询的数据没有具体到所在的小区。其他的卫星数据暂时不计较。接下来是要将经纬度信息通过MQTT发布到服务器,供其他客户端来订阅。

先要提一点就是MQTT协议虽然是所谓的发布/订阅模式的轻量级通信协议,但依然是建立在TCP/IP之上的。使用它的意义在于低开销,低带宽占用。对于老王这个经纬度数据来说再合适不过了。网络上的一张图很好的说明了它的拓扑:

白了以上内容,那么我们将MagicBox820作为一个客户端,发布消息到服务器,PC上的处理软件作为另一个客户端从服务器订阅820发布的主题,就实现了一条通路。这就是一个小的物联网实例。

常情况下需要搭建一个MQTT服务器(Broker),或是租用一些商业的平台,当然也是有开源的软件可以选择的。老王这里偷了个懒,先用通信猫的小工具调试。

不住再夸一下LuatOS的API,也得益于Lua语言的便捷,MQTT发布主题的代码可以简单到下面这样:

sys.taskInit(function()
while true do
while not socket.isReady() do sys.wait(1000) end
local mqttc = mqtt.client(misc.getImei(), 300, "", "")
while not mqttc:connect(host, port) do sys.wait(2000) end while true do --mqttc:publish("/820msg", "test publish" .. os.time())
mqttc:publish("/820msg", "test publish")
sys.wait(10000) end
end
end)

合工具测试代码运行正常:

信没有问题了,自然是将MQTT的消息负载替换为经纬数据了。在该任务所在的文件中,引入中科微GPS模块,重新定义本文件中使用GPS变量,代码如下:

require "agpsZkw"
local mqtt_gps = require"gpsZkw" module(..., package.seeall) -- 这里请填写修改为自己的IP和端口
--local host, port = "lbsmqtt.airm2m.com", 1884
local host, port = "mq.tongxinmao.com", 18830 -- 测试MQTT的任务代码
sys.taskInit(function()
while true do
while not socket.isReady() do sys.wait(1000) end
local mqttc = mqtt.client(misc.getImei(), 300, "", "")
while not mqttc:connect(host, port) do sys.wait(2000) end while true do
--mqttc:publish("/820msg", "test publish")
mqttc:publish("/820msg", mqtt_gps.getLocation().lngType..mqtt_gps.getLocation().lng..","..mqtt_gps.getLocation().latType..mqtt_gps.getLocation().lat)
sys.wait(10000)
end
end
end)

码是每10秒钟发布一条消息到服务器,通信猫小工具以客户端身份订阅同一服务器的820主题。因为测试,老王又需要拿着Box板卡伸手到窗外去搜星,高处不胜寒,冷风也特别猖狂。不过看到结果符合预期,心里还是美滋滋的。

王顺手也把屏幕显示给改了下

自己安排下,接下来将经纬度信息展示到地图上。同时在这个过程使用Qt的WebEngineView模块。

最新文章

  1. iTestSharp的简单应用
  2. Python学习【第八篇】Set集合
  3. sqlserver 事务日志过大 收缩方法解决方案
  4. MySQL 数据库常用命令
  5. WindowsFormsIntegration.dll
  6. 常用linux命令合集(持续更新中)
  7. Linux CentOS 7 YouCompleteMe相关配置。
  8. centos mysql5.7 二进制包安装
  9. spring boot自定义log4j2日志文件
  10. Eclipse远程调试应用程序
  11. HtmlUnit入门二
  12. SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置
  13. xcode升级至9.0之后,新建xib报错: Safe Area Layout Guide Before IOS 9.0
  14. Mysql增量恢复
  15. 《HTTP - 基于http的认证》
  16. chromium ①
  17. C# 两个datatable中的数据快速比较返回交集或差集
  18. 2017-2018-1 20155317 《信息安全系统设计基础》课堂实践——实现mypwd
  19. CentOS 6.4下安装JIRA6.3.6破解汉化
  20. Sublime删除项目删不掉?

热门文章

  1. Windows 11正式版来了,下载、安装教程、一起奉上!
  2. 【学习转载】MyBatis源码解析——日志记录
  3. jenkins+allure中测试包括为空,没有数据
  4. C#开发BIMFACE系列50 Web网页中使用jQuery加载模型与图纸
  5. 关于 我的博客和Git-hub
  6. 小白自制Linux开发板 七. USB驱动配置
  7. 剑指offer:JZ8 二叉树的下一个结点
  8. LeetCode:链表专题
  9. 【二食堂】Beta - 发布声明
  10. WEB前端工程师如何做职业规划?