物联网

分类下相关文章

无人机控制的一些基础概念

周末听人讨论了半天的无人机控制,各种名词都是头一回听闻,于是搜索了一番,记录一下。 陌生的新名词 mission planner。地面控制站的一种。 QGroundControl。地面控制站的一种。 Pixhawk:飞行控制器的一种,即飞控。 mavlink。控制协议。 地面站 (Ground Control Station) QGroundControl QGroundControl(QGC)是一个开源无人机地面站(Ground Control Station)系统。由 Qt 开发的界面部分,可以运行在 Windows、Mac OS、Linux 及 Android 和iOS 等主流操作系 ...

阅读全文...

修改 EMQX 最大文件句柄数

是不是叫 EMQX 系统参数调优更合适?因为不但 max open files 需要配置,其他 TCP 参数也需要配置。 主要参考官方的配置: https://www.emqx.io/docs/zh/v5.0/deploy/tune.html 清单 done:ulimit -n 1048576 done: /etc/security/limits.conf done: /etc/sysctl.conf done: /etc/systemd/system.conf done: 重启 emqx 服务:ulimit -n 1048576; ./emqx stop; ./emqx start don ...

阅读全文...

mqtt websocket

MQTT WebSocket URI ws(s)://host:8083/mqtt ws 还是 wss ws (非加密)、wss(SSL 加密) 作为协议标识。 在 HTTPS 下使用非加密的 WebSocket 连接: Google 等机构在推进 HTTPS 的同时也通过浏览器约束进行了安全限定, 即 HTTPS 连接下浏览器会自动禁止使用非加密的 ws 协议发起连接请求; 参考 https://www.emqx.io/docs/zh/v3.0/guide.html#mqtt-websocket-%E8%BF%9E%E6%8E%A5 浏览器 https://www.emqx.com/z ...

阅读全文...

蓝牙网关 MQTT 的多设备接入及多型号兼容

多设备接入需求 多个设备接入 MQTT 多种设备型号的兼容。考虑到蓝牙网关/体征监测设备商可能停产,或升级。造成蓝牙协议变化。 MQTT Client ID 规范 终端类型 整机设备标识 DeviceID 座位标识 SeatIndex 例如:1/2/3 ...。以密封舱内多设备为例。 例如: - 蓝牙网关:gateway_<DeviceID>_<SeatIndex> - Pad: pad_<DeviceID>_<SeatIndex> 主要是为了防止 client id 冲突。 TOPIC 规范 mqtt 订阅回调函数中可以获取到消息的来 ...

阅读全文...

通过蓝牙网关下发指令,过滤掉蓝牙设备高频率的波形数据

问题 蓝牙设备默认会以每秒钟 350 次的频率向蓝牙网关发送实时波形数据(心电波形、血氧波形、呼吸波形), 然后蓝牙网关再将这些数据转发到服务器。 这些波形数据是没有记录价值的 蓝牙设备数量不可控,在数量多时,对服务器产生巨大的并发请求压力。我在开发机上 WSL Ubuntu 里部署的 EMQX 偶尔会扛不住挂掉。。。原因不明。 高频造成的数据黏包严重。例如蓝牙网关协议的数据包部分,能频繁看到多个蓝牙数据包拼接,且被截断的情况 蓝牙设备虽然支持禁用波形数据输出,但是每次重启都恢复原配置 过滤掉波形数据的方案 服务器端每十秒向蓝牙网关下发一次禁用波形数据的控制指令。 emqx 限速 http ...

阅读全文...

mqtt topic

mqtt 主题名字规范 大小写敏感。推荐使用小写 utf-8 至少一个字符,不要使用空格 结构化名字,以斜杠分隔。例如:house/room1/main-light 主题名长度上限 https://github.com/emqx/emqx/issues/3727 65535 内置的 $SYS 主题 只读 可以查询 broker 版本号,例如,$SYS/broker/version 查询当前时间 查询运行时间 主体何时被创建 当有订阅或者发布时自动创建。但是发布需要主题配置了 retained message 只有当有客户端订阅时,topic 才会被保留,否则会被销毁 订阅多个主题 ...

阅读全文...

蓝牙网关未收到蓝牙设备数据的问题定位

排查思路 [X] 先确定蓝牙设备是否有问题。手机连接蓝牙设备,查看是否能收到推送数据。 [X] 关闭蓝牙网关 [X] Android APP 工具 “BLE调试助手”。确实可以收到数据,需要订阅。 [X] 蓝牙网关调试助手,通过 UDP 接收蓝牙数据,方便调试 [X] 查看蓝牙网关实用手册。了解如何自动配对。果然里面的蓝牙通信测试工具里需要填写服务和特性的 UUID,以及 handle 和 cccd。 [X] 可以建立连接,但是无法收到数据。 最终还是咨询官方技术支持得到了解决。 原因是,我只填写了服务的 UUID,而没有修改默认的特性 UUID,导致获取的是无效的 handl ...

阅读全文...

1883 端口被占用,导致 EMQX 无法启动

在生产环境服务器部署了 EMQX 之后,发现执行 ./emqx start 没有任何响应。即,长时间没有返回: EMQX 5.0.3 is started successfully! 就是卡在那里,任何输出都没有。访问 18083 端口也没有页面展示。 查看日志 查看安装目录下的 log/emqx.log.1,可以看到具体的错误日志: 2022-07-11T15:43:16.254775+08:00 [error] tcp:default failed to listen on 1883 - eaddrinuse (address already in use) 查看端口被哪个进程占 ...

阅读全文...

MQTT Broker 的开源实现 EMQX

想使用 EMQX 的根本原因是,蓝牙网关上报数据推荐使用 MQTT 协议。 而这个消息量巨大,我担心扛不住腾讯云的费用。 使用 MQTT 协议的优势 MQTT 协议自带了账号密码验证机制,以及主题订阅权限 蓝牙网关默认支持 MQTT 协议 TCP 需要自己处理数据粘包问题,而 MQTT 则不需要 UDP 无法保证数据到达的顺序,对于时序数据来说,比较致命。而终端的时间戳我觉得不太可靠 但是首先,我还是想把 EMQX 的文档过一遍。之前虽然在一个项目中用过 MQTT, 可那是基于腾讯云 MQTT 实现的,担心很多概念并不清晰,还是需要看一遍文档。 EMQX 5.0 的文档地址 https: ...

阅读全文...

腾讯云 MQTT 由服务器生成长期的设备密码

密码过期问题 登录腾讯云管理后台,物联网通信,设备调试。可以看到提示: 以下MQTT三元组仅用于调试,将于2022-09-05 12:00:00后失效,正式设备请按算法生成 Client ID xxx MQTT Username yyy MQTT Password zzz 由于嵌入式硬件不方便接入腾讯云的 MQTT SDK,所以改成硬件从服务器获取 Username 和 Password。 然后将密码过期时间设置成 50 年,因为硬件设备的寿命大概也不会超过 10 年。虽然不严谨,但是满足目前的需求场景。 Client ID 格式 ${productId}${deviceName} ...

阅读全文...

烟台招聘 Android 开发工程师为什么这么难

年后可能要基于 Android 平板开发个蓝牙控制 APP 接入物联网平台,目前团队里没有一个 Android 开发工程师。 而公司招聘 Android 开发已经 3 个多月了,至今没有一个人来面试。 拒绝的理由 领导在招聘平台上估计付费下载了一些简历,逐个电话问询,全部都是拒绝的。 理由如下: 一、距离太远。确实,公司在烟台开发区八角,基本到了最西面。而大部分 Android 程序员集中在最东部的莱山区。通勤接近两小时。能忍受这个路途折磨的都是超人。 二、暂不考虑换工作。我换位思考了一下,烟台本身做 Android 开发的就少,能招聘这个岗位的,通常是有一定规模的公司,薪资也不会太差。 在薪 ...

阅读全文...

小爱音箱实现语音交互 APP

https://post.smzdm.com/p/aqnl4x3v/ 小米小爱开放平台 https://developers.xiaoai.mi.com/ 注册开发者账号 类型推荐企业,因为接口频率限额更高一些。 无法使用设备调测问题 https://blog.csdn.net/yummry/article/details/113664907 体验真垃圾啊。 担忧 感觉上想 app 上架小爱音箱非常难,一共就那么多个 app,得多严格才能上架。 ...

阅读全文...

单片机 4G 模块进行 MQTT 通信的抓包方法

设备调试中发现 4G 模块进行 MQTT 通信总是出问题,即 QoS 为 1 的情况下,总是收到重复的 Publish Message。即便回复了正确的 Pub ACK 包,也依旧会收到重复的 Publish Message。但是 Wifi 模块下就没有这个问题。 之前 Wifi 模块是通过笔记本 Wifi 共享,在笔记本上使用 Wireshark 进行抓包调试的。但是 4G 模块由于是直连腾讯云 MQTT 服务器,所以没法使用这种方案调试。后来想了个方案就是在自己的公网服务器上设置个转发服务,本地设备通过这个转发服务跟腾讯云 MQTT 服务器通信。这样就能在服务器上对数据包用 tcpdump ...

阅读全文...

物联网设备 ID 初始化方案

由于物联网设备上报数据时需要一个设备 ID 来唯一标识自己,所以需要一套 ID 下发方案。 量产需求 控制屏获取设备 ID (即腾讯云 MQTT 用到的设备名),写入本地,并缓存 屏上要能线上这个 ID,方便现场人员查看。用于设备维护,生产测试 小程序通过蓝牙获取控制屏的设备 id,用于拉取设备传感器历史数据 TODO [x] TCP 获取新设备 ID 的接口 [x] 更新协议文档 [x] 生成随机 Id,并写入数据库 [ ] MQTT 客户端订阅主题也需要账号密码?是的 https://cloud.tencent.com/document/product/634/32546 [ ] 腾 ...

阅读全文...

微信小程序支付前,使用 MQTT 检测设备是否在线

需求场景 例如,用户要出停车场,进行扫码支付,但是需要在支付之前判断一下起杆设备是否在线。 如果不在线需要给出提示,防止收了钱,但是没有起杆。 TODO [x] 腾讯云 MQTT 接口 [x] golang api [x] controller 更名为 mqtt.go, 把 mqtt 相关的操作都放在这个 controller 里,方便共用一些配置 [x] 封装 DescribeDevice。参数为 deviceId,获取 device,从而得到设备名,然后 mqtt 查询在线状态 [x] 线上测试 [x] 小程序端:预支付这里调用了两个 http 微信接口,可能等待时间有点长,导致用户点两 ...

阅读全文...