大象笔记 > 标签 > MQTT
2021-05-08 · 阅读 4160 · 字数 357
MQTT 的使用场景 例如典型的物联网场景,在一台联网硬件设备被扫码支付之后,需要能及时的解锁使用。最常见的应用场景就是停车场扫码缴费,自动起竿。 MQTT 介绍 MQTT(MQ Telemetry Transport,消息队列遥测传输)是近年来出现的一种新型协议,物联网领域会将其作为标准协议。该协议构建于TCP/IP协议上(同样有基于UDP的版本,叫做MQTT-SN)。MQTT原本是IBM公司开发的协议,现在则开源了,被人们不断开发着。MQTT是一种能实现一对多通信(人们称之为发布或订阅型)的协议。它由3种功能构成,分别是中介(broker)、发布者(publisher)和订阅者(subsc ...
2021-07-05 · 阅读 7036 · 字数 627
在查看腾讯云 MQTT 相关接口时,看到一个参数 Qos: 服务质量等级,取值为0或1 什么是 QoS Quality of Service,即服务质量。 看上去比较晦涩,找了本专门介绍 MQTT 的书《Hands-On Internet of Things with MQTT》才理解了。 QoS 给终端带来了一项重要的能力,即,可以接收自己离线时,对方发送的消息。例如,Facebook Messager 也是基于 MQTT 实现的消息机制。所以,本质上 MQTT 还是一个消息队列,MQ 已暴露了一切。。。 MQTT QoS 等级 MQTT 设计了 3 个 QoS 等级。 QoS 0:F ...
2021-12-01 · 阅读 4179 · 字数 564
需求场景 例如,用户要出停车场,进行扫码支付,但是需要在支付之前判断一下起杆设备是否在线。 如果不在线需要给出提示,防止收了钱,但是没有起杆。 TODO [x] 腾讯云 MQTT 接口 [x] golang api [x] controller 更名为 mqtt.go, 把 mqtt 相关的操作都放在这个 controller 里,方便共用一些配置 [x] 封装 DescribeDevice。参数为 deviceId,获取 device,从而得到设备名,然后 mqtt 查询在线状态 [x] 线上测试 [x] 小程序端:预支付这里调用了两个 http 微信接口,可能等待时间有点长,导致用户点两 ...
2021-12-14 · 阅读 4022 · 字数 892
设备调试中发现 4G 模块进行 MQTT 通信总是出问题,即 QoS 为 1 的情况下,总是收到重复的 Publish Message。即便回复了正确的 Pub ACK 包,也依旧会收到重复的 Publish Message。但是 Wifi 模块下就没有这个问题。 之前 Wifi 模块是通过笔记本 Wifi 共享,在笔记本上使用 Wireshark 进行抓包调试的。但是 4G 模块由于是直连腾讯云 MQTT 服务器,所以没法使用这种方案调试。后来想了个方案就是在自己的公网服务器上设置个转发服务,本地设备通过这个转发服务跟腾讯云 MQTT 服务器通信。这样就能在服务器上对数据包用 tcpdump ...
2022-06-09 · 阅读 3452 · 字数 850
密码过期问题 登录腾讯云管理后台,物联网通信,设备调试。可以看到提示: 以下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} ...
2022-07-12 · 阅读 3540 · 字数 848
想使用 EMQX 的根本原因是,蓝牙网关上报数据推荐使用 MQTT 协议。 而这个消息量巨大,我担心扛不住腾讯云的费用。 使用 MQTT 协议的优势 MQTT 协议自带了账号密码验证机制,以及主题订阅权限 蓝牙网关默认支持 MQTT 协议 TCP 需要自己处理数据粘包问题,而 MQTT 则不需要 UDP 无法保证数据到达的顺序,对于时序数据来说,比较致命。而终端的时间戳我觉得不太可靠 但是首先,我还是想把 EMQX 的文档过一遍。之前虽然在一个项目中用过 MQTT, 可那是基于腾讯云 MQTT 实现的,担心很多概念并不清晰,还是需要看一遍文档。 EMQX 5.0 的文档地址 https: ...
2022-07-12 · 阅读 3498 · 字数 260
为了方便客户端测试,搭建好 EMQX 服务之后,需要用 golang 写一个发布消息的测试程序。 用于向指定主题推送消息,这样客户端可以提前测试 MQTT 相关的功能。 安装 Eclipse Paho MQTT Go Client > go get github.com/eclipse/paho.mqtt.golang go: downloading github.com/eclipse/paho.mqtt.golang v1.4.1 go: downloading github.com/gorilla/websocket v1.4.2 go: added github.com/ecl ...
2022-07-26 · 阅读 4558 · 字数 278
mqtt 主题名字规范 大小写敏感。推荐使用小写 utf-8 至少一个字符,不要使用空格 结构化名字,以斜杠分隔。例如:house/room1/main-light 主题名长度上限 https://github.com/emqx/emqx/issues/3727 65535 内置的 $SYS 主题 只读 可以查询 broker 版本号,例如,$SYS/broker/version 查询当前时间 查询运行时间 主体何时被创建 当有订阅或者发布时自动创建。但是发布需要主题配置了 retained message 只有当有客户端订阅时,topic 才会被保留,否则会被销毁 订阅多个主题 ...
2022-07-18 · 阅读 2352 · 字数 358
MQTT Message payload 的类型 可以看到 payload 函数返回 byte slice 类型。 var f mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { fmt.Printf("TOPIC: %s\n", msg.Topic()) fmt.Printf("MSG: %s\n", msg.Payload()) } type Message interface { Duplicate() bool Qos() byte Retained() ...
2022-09-02 · 阅读 2191 · 字数 107
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 ...
2022-09-24 · 阅读 9278 · 字数 441
为何要配置 WSS 证书 原本用 EMQX 内置的 8083 端口,就可以实现 mqtt over websocket。 例如,地址: ws://www.sunzhongwei.com:8083/mqtt 但是,由于我又需要在微信小程序里使用 mqtt over websocket,而微信小程序只允许使用 WSS 和 HTTPS 协议。所以不得不配置证书。 WSS 与 WS 的区别 WSS 全称是 Web Socket Secure, 即 WebSocket 的加密版本。类似与 HTTPS 之于 HTTP。 WSS 与 WS 类似于 HTTPS 和 HTTP,不同之处在于是不同的通信协议,都 ...
2023-06-15 · 阅读 4165 · 字数 562
需要实时拉取的数据 远程设备当前运行状态。比如,是运行中,还是已暂停 设备运行时长 设备上传感器的实时数值 如果通过微信小程序端定时轮询,例如,每 10 秒拉取一次,体验上不够好,因为有肉眼可见的延迟。特殊是设备运行状态这里,点击开始,如果不能立即看已启动状态,那就太 low 了。而 MQTT 协议可以实现实时推送的效果。 小程序后台配置可信域名 在 socket 合法域名里填写。例如: wss://www.sunzhongwei.com 这里是一个大坑,配置时候是 wss,用的时候是 wxs。 配置 WSS 证书 参考EMQX MQTT 服务配置 WSS 证书,由于 WSS 默认是使 ...
2022-10-17 · 阅读 2565 · 字数 446
是不是叫 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 ...
生活 | 跑步 清单 足球 鲁班 探索 孤独的美食家 驾驶 电视剧 收纳 奶爸 健康 game 电影 周末 joke |
---|---|
Geek | 健身 Laravel Git Vim MySQL Linux UI Windows SVN 纪录片 管理 Shell 游记 工具 手机 BackboneJS 自建博客 Mac DNS Tornado CDN Django Python AngularJS 理财 前端 Nginx 爬虫 Redis Javascript Browser 浏览器 推广 OAuth CSS PHP Social Networks 安全 运维 创业 杂记 VueJS Android Image IDE Java ReactJS 数据分析 SQLite RESTful 读书笔记 家电 ecshop Vagrant wordpress docker SEO GTD magento mongodb nodejs weex 冷知识 ruby iOS 微信小程序 AI CMS 快应用 backpack 广告联盟 OA 短信 UWP Win CSharp Tampermonkey graphviz 钉钉 WPS 数据字典 微信公众号 Fuchsia Adobe XD SQL Server thinkphp 代码规范 商业模式 Flutter 头痛的问题 serverless 视频制作 国际化 golang 服务器 Kotlin 网站建设 5G 笔记本 图片 spark spring 物联网 InfluxDB 图像识别 postgre rust |
成长的烦恼 | 闲言碎语 待产 不睡觉 写作 程序员 孙心然语录 原则 大鸿语录 |
地球 | 植物 时间 中文 赚钱 国家地理 烟台 一生伏首拜阳明 emoji 弟子规 英文 国际贸易 |