物联网

分类下相关文章

微信小程序 BLE 蓝牙数据包粘包

今天发现 Android 手机微信小程序中收到的 BLE 蓝牙数据包出现了粘包的情况。 确认校验失败的数据包实际长度 校验失败的数据包: ab0002a20800a8ba ab0002a21a02b8ba ab0002a2 ab00022638100cba ab000628380bb80b b80bb8a5 ab000212380820ba ab00021338052cba ab000214 长度均为 20 个字节(MTU 的默认大小,也是最小值); 02 包对应的长度为 8 个字节。 单个包,以 ab 开始,ba 结束。可以看到明显的两个/甚至三个包的粘包现象。 校验成功的 ab000 ...

阅读全文...

SNMP - 简单网络管理协议

SNMP(Simple Network Management Protocol), 即,简单网络管理协议。用于网络设备的远程管理。 为不同厂商的各式网络设备提供了统一的远程管理接口。 使用场景 监控。例如,与 Nagios, Cacti 集成,对服务器系统指标(CPU,内存,硬盘容量等)进行监控。也可以对单片机、一个进程,网络设备路由器、交换机等进行监控。国内外大量的网络设备(如路由器、交换机)都支持SNMP协议,并作为一项标配。 设备的远程初始化配置 设备上的传感器数据异常上报 版本 目前有三个版本:v1, v2, v3 兼容性:v3 版本对 v1,v2 兼容。 系统组成 NMS(Ne ...

阅读全文...

TR069 - 用户终端设备广域网管理协议

TR069 协议 TR069 (Technical Report 069), 即 CPE 用户终端设备广域网管理协议(CPE WAN Management Protocol, CWMP)。用于实现终端的自动配置。 CPE / ACS TR069 里有两个重要的名词: 用户终端设备(Customer Premise Equipment,CPE)。在宽带接入中,CPE 指的就是家庭网关。any equipment used by customers which can be managed by the ACS (set-top boxes, VoIP-phones but also modem ...

阅读全文...

Wi-Fi Direct 与 Wi-Fi ad-hoc 的区别

最近在调研基于局域网的语音对讲方案。看到 Android 官方文档提到了 Wi-Fi Direct,于是收集了一下相关的资料。 Wi-Fi Direct Wi-Fi Direct (也被称为 WiFi peer-to-peer 或者 WiFi P2P) ,可以简单理解为对标蓝牙的技术规范,也是用于快速发现附近的设备,进行数据交互。但是传输距离上要优于蓝牙。本质上是 WiFi 产业链图谋完全取代蓝牙技术。 使用 Wi-Fi Direct 则无需连接到网络 (Network) 或热点 (hotspot),即可建立设备间的通信连接。 两台设备可以直接建立 TCP/IP 链接,而不需要 AP (介绍在 ...

阅读全文...

经典蓝牙接口规范 HFP HSP A2DP 的区别

Profile 可以理解为接口规范。 经典蓝牙 Profiles 包括 HFP, HSP, A2DP, AVRCP, PBAP, MAP 等。 HFP HFP 英文全称是 Hands-Free Profile。 定义了与 Hands-Free 设备通信的最小功能集。 Hands-Free 设备举例: 车载控制屏: 例如,在开车时使用中控屏连接手机拨打电话,整个通话过程就是基于 HFP。 头戴式耳机 补充: 音频通过同步的 SCO 通道传输 独立的数据通道用于控制音频流 音频延迟在 20 ~ 30 毫秒 支持的音频编码:CVSD,mSBC AT 指令可以用于控制手机 HSP HSP 的 ...

阅读全文...

BLE Indications 与 Notifications 的区别

BLE 的一个特性可能包含五种 property: Read Write Write No Response Notify Indicate Notify 和 Indicate 都是订阅蓝牙设备的推送消息。 但是 Indications 与 Notifications 有什么需求呢? indication (指示、标示) 需要客户端收到消息后,进行回应。类似 TCP。 notification (通知,通告,告示) 不需要客户端的回应。类似 UDP。例如,BLE 语音对讲服务基本都是用的 notification。 补充 由于 indication 需要应答,所以相对而言,效率会低一 ...

阅读全文...

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

周末听人讨论了半天的无人机控制,各种名词都是头一回听闻,于是搜索了一番,记录一下。 陌生的新名词 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: ...

阅读全文...