文件交换

图像缩略图

MATLAB中的MQTT

连接到MQTT代理并发布/订阅代理上的主题。
3.5
15级

94下载

更新2019年7月29日

查看许可证

通过TCP或websocket协议连接到符合MQTT的代理。连接后,订阅代理上的主题或通配符。定义自定义函数以在接收订阅主题上的消息时进行评估。将消息发布到代理上的主题。发布和订阅函数都支持所有QoS级别。万博1manbetx

您还可以通过TCP和websocket使用TLS v1.2建立到代理的安全连接。

引用为

MathWorks物联网团队(2020年)。MATLAB中的MQTT(//www.tianjin-qmedu.com/matlabcentral/fileexchange/64303-mqtt-in-matlab),MATLAB中心文件交换.

评论和评级(37)

编码问题:我正在从另一个客户端传输uint8值数组,并希望在Matlab中获取数字数据。请注意,我正在传输“原始”整数,而不是字符串。在Matlab上收到的消息是字符串。如何将其正确解码为数字值?

double(char(message))的输出对于128以下和159以上的值都能很好地工作,我相信这是由于matlab使用编码(例如UTF-8)解释了这些数字。我只想访问原始数据。请给我一些建议。

这里是预期数据(左)和获得数据(右)的摘录。
125 125
126 126
127 127
128 8364
129 65533
130 8218
131 402
132 8222
133 8230
134 8224
135 8225
136 710
137 8240
138 352
139 8249
140 338
141 65533
142 381
143 65533
144 65533
145 8216
146 8217
147 8220
148 8221
149 8226
150 8211
151 8212
152 732
153 8482
154 353
155 8250
156 339
157 65533
158 382
159 376
160 160
161 161
162 162

处理起来非常简单,您需要知道您的IP地址(不确定是否识别“localhost”)。当然,您需要知道您的代理的端口

如果您需要阅读您所引用的主题,请确保在阅读该主题之前至少暂停一段时间(使用暂停(0.1))
我使用Arduino UNO在我的MQTT代理上以2Hz的频率发布一个窦房结,所以数据是一致生成的。我在一个while循环中使用MATLAB中的suscribe函数(与动画线条结合)。
总的来说,它部分完成了这项工作。脚本完成后,它似乎会继续运行,并冻结MATLAB。

如何实时接收MSG?

我使用此工具与AWS IoT通信,问题是当我尝试使用MQTT()函数创建MQTT对象时,它与代理断开连接,因此无法使用publish()函数。

请不要提供p代码。。。
需要将程序编译为.exe。。。。

您好,我已经使用了publish,它正在工作,但是我在使用[mySub=subscribe(myMQTT,/topic/out')时遇到了订阅问题;
readall(mySub);}它返回了一条评论(没有消息),为什么?有什么建议吗?

您好,是否可以在与代理断开连接后取消重新连接,而不必调用mqtt(代理ip)创建命令,这样就不必再次执行主题子约定

您好。是否可以使用“回调”函数将发布的消息保存到结构变量中?
是否可以只读取一定数量的旧消息(例如:仅读取10条最新消息),以及如何使用“msgArrivedEvent”功能和“notify”功能

您好,感谢您的客户端。我可以使用thingsboard.com进行设置,但订阅主题时遇到问题。我基本上使用了Sven提供的示例<-Thank!Error msg是“代理返回的无效QoS值128”。订阅失败。”非常感谢您的帮助。

我刚刚就我的问题联系了MathWorks支持人员,并按照他们的万博1manbetx提示解决了问题。
解决方案是将“MQTT in Matlab”工具箱中的每个文件(参见下面的屏幕截图)都包含在Matlab编译器中。
编译器在打包期间可能会显示警告标志,但编译后的程序工作正常。
我希望如果有人有同样的问题,会发现它有帮助。

各位好,,
我使用的是R2018b,我还得到了“未定义变量”com或类“com.mathworks.mqttclient.client.client”的错误。在我的例子中,我尝试在GUIDE制作的GUI中使用这个MQTT,但不知何故,它只在普通的Matlab中工作,而在编译的独立版本中不工作(Matlab中MQTT中的所有.p文件都是手动添加的)。
在编译它们之前,我还试图包含这两个.jar文件,但它不起作用,Matlab会抱怨这两个文件已经被指定。
是否有人可能有详细步骤的解决方案?
提前谢谢你!

我在文档中找不到如何设置连接到MQTT代理时的最后遗嘱(LWT)。支持此功能吗?万博1manbetx

是否有人使用RabbitMQ代理测试过工具箱,这是否有效?

我解决了“未定义变量”com或类“com.mathworks.mqttclient.client.client”,方法是将以下路径添加到我的javaclasspath(我有R2018a,但它不起作用):
javaaddpath(“\mqtt\mqttasync.jar”);
javaaddpath(“\mqtt\jar\org.eclipse.paho.client.mqttv3-1.1.0.jar”);
第二个可能不需要。

我安装了MatlabR2018A,但仍然出现以下错误:未定义的变量“com”或类“com.mathworks.mqttclient.client.client”

斯文

只是一个如何使用回调的小示例。。。

%回调函数
函数myMQTT_回调(主题,msg)
fprintf('MQTT回调主题“%s”:“%s”\n',主题,消息)
结束

%连接到代理并注册回调函数的代码:
myMQTT=mqtt('tcp://broker.hivemq.com');
mySub=subscribe(myMQTT,'myTopic','QoS',2)
%方法(mySub)
%readall(mySub)
mySub.Callback=@myMQTT_Callback;
%发送测试消息以检查回调
发布(myMQTT,'myTopic','testMessage03');

仅供参考:我的问题解决了。我使用的是MatlabR207B,我得到的错误显示在我之前的评论中。我安装了MatlabR2018A,现在该工具工作正常。

同样的问题,我不断得到以下错误:
未定义的变量“com”或类“com.mathworks.mqttclient.client.client”。

我调查了一些文档,检查了函数的源代码,第三部分软件文档,社区主题,论坛,其他问题。不幸的是,这一特定错误毫无帮助。

嗨,我可以知道如何定义subscribe的回调函数吗?我尝试过函数句柄和函数文件,但都出现了错误“使用输入参数类型“string”定义的无效函数”

你好,Adarsh,我们能期待R2015a的支持吗万博1manbetx?由于这是一个封闭源代码的项目,很遗憾,我只能问,但也许您愿意共享代码,因为它似乎只是java客户机的接口。请尽快与我联系。

请注意,此功能仅在MATLAB R2017b及更高版本中受支持。谢谢万博1manbetx

嗨,托比亚斯,谢谢你的反馈。关于使用选项输入进行实例化,mqtt函数确实接受您提到的参数。请参阅函数帮助中的示例-您可以通过在MATLAB中评估“help mqtt”或访问“Functions”选项卡来访问该示例。谢谢

大家好。

最近还安装了“MATLAB中的MQTT”附加组件。
不幸的是,我一直遇到以下错误:
>>myMQTT=mqtt('tcp://broker.hivemq.com')
错误:文件:Mqtt.p行:127列:0
不平衡或意外的括号或括号。

看来这个软件包对其他人都有效,所以我应该是做错了。
您能支持吗?我正在使用Matlab万博1manbetx2014b
谢谢,祝你周末愉快

嗨,到目前为止,我能找到的唯一有用的MQTT客户机是使用MQTT开箱即用。在R2017b上运行良好。

请求:最好不使用函数mqtt()直接实例化该类。另外,使用单独或可选的输入(如protocoll、端口、qos、用户名、pw、客户端id等)进行实例化也会很有帮助。

提姆

您好,我最近在MATLAB中安装了MQTT,但遗憾的是总是收到以下错误消息:
>>myMQTT=mqtt('tcp://broker.hivemq.com');
错误:文件:Mqtt.p行:127列:0
意外的MATLAB表达式。

你能帮助我吗?

嗨,如何实时获取订阅消息?

您好,请使用订阅上的read或readall函数从订阅中检索消息。例如:mySub=subscribe(myMQTT,'TestTopic');阅读(mySub)

您好。一切正常,但如何从订阅中检索邮件?邮件发布后计数器会增加,但我找不到邮件本身

此MQTT工具箱是否支持旧版本的Matlab(万博1manbetx例如R2016a)?

更新

1.4

此版本包含帮助文档的更新。

1.3

增加了对MA万博1manbetxTLAB在线工作流的支持。

1.2.0.0

更新了描述中的图像。

1.1.0.0

添加了文档。

MATLAB版本兼容性
使用R2019a创建
与任何版本兼容
平台兼容性
窗户 马科斯 Linux
标签添加标签