请教一下,如何通过EMQX的API向EMQX的主题推送消息? LeeLv.3修习 发布于 2024-06-17 17:32 最后回复 2024-10-17 08:25:47 问答 收藏 复制链接 新浪微博 微信扫一扫 分享 27 回复2458 浏览 请教一下,如何通过 EMQX 的 API 向 EMQX 的主题推送消息? 请教一下,如何通过 EMQX 的 API 向 EMQX 的主题推送消息?
差不多也是要仔细研究一下了,物联网终端的时间校准需要下发指令,不校准这时间偏差太大了也不行。总不能手动校准吧!!!!
好的我试一下
我试过将鉴权认证放在明道云里不行,自己直接吧用户名和密码用 basic 编码了一下,直接传 Authorization 参数里。
请教一下这里是怎么设置的?![{A0D38594-CD1B-47D8-BCCB-BF873690B20A}.png]()
👍
积分差一点,刷一下
https://bbs.mingdao.net/topic/5690
这是我实现的方式,你参考一下看看
我也买了个科信的 ttl,发送的文本内容是什么呢?直接发汉字貌似不能播放,用他的软件转成 modbus rtu 协议 GB2312 码,也没播放啊。谢谢了
多谢大神指导,现在已经实现了通过 API 向 EMQX 推送数据,并且在昆仑通态触摸屏上实现数据交互,这样在通过 webhok 就可以实现数据双向的流通了,不过触摸屏 MQTT 局限还是传输汉字的时候不能成功,只能传输英语字符和数字,然后 200 块钱买个科星的 TTL 转语音,通过 python 代码块向设备推送文本,实现了语音播报,这样每笔订单都能播报客户某某某,下单什么货多少数量,如果有想这么搞的,可以多交流。
Authoration 可以用明道的组件去获取,也可以自己写代码块实现
另外,这个是 Linux 的命令行去获取的方式,
echo -n "yourusername:yourpassword" | base64方式有很多
通常情况,建议先用 postman 等工具来验证 API,然后再结合 postman 的设置,配置到 mingdao 中,这样效率会更高一些
嗯,你可以看下官网,官网的例子是这样的调用,注意
![image.png]()
-u这个不分上述调用方式,还有另外一种形态,就是把 -u 后面的用户名和密码,用 base64 编码了
![image.png]()
以下是我这边测试的两种调用方式
所以,你可以仿照上述的方式来完成鉴权
![image.png]()
根据你提供的截图,应该是第二种方式,所以,你可以这样去调整
老哥,我试了一下,在 API 接口集成中添加的,但是一直失败,我看了一下调用历史,明道云是把用户名和密码都转换成一个参数传出去了,返回值说是鉴权错误。直接自定义 API 接口也不行,试了两天还没搞定,过来请教一下
![1719296737067.jpg]()
多谢 多谢 我先去试试 API 的吧,改环境还是太麻烦了
这个是 HTTP 的方式,确实比较简单
![image.png]()
先去 MQTT 系统中,创建一个 API
这里用 postman 测试了下,可以正常发送指令
嗯,之前说的方法是基于 MQTT 协议来实现的集成,你也可以参考他提到的方法,使用 HTTP 方式来实现
这个是官方 API 文档,可以参考下,会比 MQTT 的要简单些
https://docs.emqx.com/zh/emqx/v5.7/admin/api-docs.html#tag/Publish/paths/~1publish/post
我这边是可以的,感觉你应该是哪里没有配置正确
![image.png]()
这个是我这边的配置文件
![image.png]()
我这边没有对容器的名字做修改
![image.png]()
不需要这么麻烦的,直接代码块给 emqx 发 payload 消息就完事了。
docker 容器的名字变了,是 script_commandv2_1,进入容器后 npm 命令无效,搞来搞去一个问题接一个问题,头疼啊。持久化修改配置文件的时候,需不需要把配置文件的 command 修改为 script_commandv2_1,
![image.png]()
如果你对容器中的目录不是很确定时,可以登录到容器中,进行查看
docker exec -it script_command_1 bash
ls /usr/local/node-20.11/
是这样的,官方文档,用的例子还是
10.18.0版本,而你用了最新的registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node2011-python312,docker cp 中有一些路径就需要跟着来调整了docker cp $(docker ps | grep command | awk '{print $1}'):/usr/local/node-20.11/lib/node_modules/ /data/mingdao/script/volume/command/package/nodejs-20.11//usr/local/node-20.11/lib/node_modules/这个是你出问题的地方,应更换为新镜像里面的文件路径/data/mingdao/script/volume/command/package/nodejs-20.11/这个结合你实际来调整,是宿主机上进行持久化的目录老哥,还得请教一下,我现在做好了环境的更新,安装了 20.11 的 nodejs,但是在做持久化的时候遇到了问题,做到第二步的时候命令输入不行,之前做持久化的时候可以,现在我把版本号改成 10.18.0 输入命令也无法执行,是不是这个现在找不到镜像导致的?能否指导一下怎么处理吗?纯小白,只会简单的用点 docker。🎉️![1718764709508.png]()
可以现在 nodejs 的环境下进行测试,然后再考虑迁移到 mingdao 代码块的环境
![image.png]()
vscode + nodejs 就可以了
非常感谢大神指导,晚上我去试试,👍 👍 🚀️
升级到 20.11 版本 nodejs,并做了持久化之后,进入容器安装 mqtt 库即可,这个是我这边操作的日志
![image.png]()
嗯,我也是问了 mingdao 的小机器人助理知道的,x86 架构,这个镜像是有的
![image.png]()
参考了如何在 Node.js 项目中使用 MQTT,基本实现了通过按钮控制智能开关的打开和关闭。
在 mingdao 中使用代码块实现上述逻辑,需要引入 mqtt 模块,需要参考 mingdao 的这一篇如何扩展代码块依赖库
还需要注意,下载 mqtt 模块,需要高版本的 nodejs,需要将
registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node1018-python36升级到registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node2011-python312以下是代码块中的代码