MQTT连接阿里云

目录

阿里云上创建产品及设备的教程

创建账号并登录

创建产品及设备

创建产品

 添加设备

添加自定义功能 

MQTT.fx的使用

windows下载MQTT.fx

MQTT.fx的具体使用

相关的登陆设置

Broker Address 

Client ID的设置

User Credentials

连接成功

通信测试

下行通信测试

测试发送数据 

上行通信测试


基于上篇博客(树莓派3B配置MQTT环境)我们介绍了如何在树莓派3B环境下安装和配置使用MQTT,接下来我们介绍一下如何在windows环境下使用MQTT.fx来连接自己在阿里云创建的设备。

  • 阿里云上创建产品及设备的教程

  • 创建账号并登录

阿里云官网:阿里云官网

  • 创建产品及设备

点击左侧的栏目找到“产品与服务”,在里面继续找到“应用与服务下面的”“物联网平台”,依次找到《设备管理》《产品》,然后“创建产

品”。

  • 创建产品

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  •  添加设备

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  • 添加自定义功能 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

选择好之后,点击发布上线

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

到此为止,我们的产品及设备都已经创建完毕。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  • MQTT.fx的使用

  • windows下载MQTT.fx

MQTT.fx下载

  • MQTT.fx的具体使用

将MQTT.fx安装完成之后,打开MQTT.fx,并且设置相关属性。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  • 相关的登陆设置

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  • Broker Address 

连接域名。

您购买的实例的连接域名请在物联网平台控制台实例管理 > 实例设置页面,单击查看终端节点查看。

公共实例的连接域名格式:${YourProductKey}.iot-as-mqtt.${region}.aliyuncs.com。其中,${region}请参见地域和可用区替换为您的Region ID。。如:alxxxxxxxxx.iot-as-mqtt.cn-shanghai.aliyuncs.com

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

 只需将里面的ProductKey替换为我们之前一键复制保存的ProductKey就可以了。

  • Client ID的设置

填写mqttClientId,用于MQTT的底层协议报文。

格式固定:${clientId}|securemode=3,signmethod=hmacsha1|

完整示例:12345|securemode=3,signmethod=hmacsha1|

其中:

${clientId}为设备的ID信息。可取任意值,长度在64字符以内。建议使用设备的MAC地址或SN码。

securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2

signmethod为算法类型,支持hmacmd5和hmacsha1。

设置问Client ID后,千万别点击Generate

  • User Credentials

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  •  User Name & Password
User Name由设备名DeviceName、符号(&)和产品ProductKey组成。

固定格式:${YourDeviceName}&${YourProductKey}

完整示例如:device&alxxxxxxxxx

Password密码由参数值拼接加密而成。

说明 如果您使用的MQTT.fx版本,在粘贴Password后不显示具体的字符串,只要光标已从输入框的前部移至了后部,则表示粘贴成功,请勿重复粘贴。

您可以使用物联网平台提供的生成工具自动生成Password,也可以手动生成Password。

  • 单击下载Password生成小工具。解压缩下载包后,双击sign文件,即可使用。

    使用Password生成小工具的输入参数:

    • productKey:设备所属产品Key。可在控制台设备详情页查看。
    • deviceName:设备名称。可在控制台设备详情页查看。
    • deviceSecret:设备密钥。可在控制台设备详情页查看。
    • timestamp:(可选)时间戳。
    • clientId:设备的ID信息,与Client ID中${clientId}一致。
    • method:选择签名算法类型,与Client ID中signmethod确定的加密方法一致。
  • 手动生成方法如下:
    1. 拼接参数。

      提交给服务器的clientId、deviceName、productKey和timestamp(timestamp为非必选参数)参数及参数值依次拼接。

      本例中,clientId值为12345,deviceName值为device,productKey值为alxxxxxxxxx,拼接结果为:clientId12345deviceNamedeviceproductKeyalxxxxxxxxx

    2. 加密。

      通过Client ID中确定的加密方法,使用设备deviceSecret,将拼接结果加密。

      假设设备的deviceSecret值为abc123,加密计算格式为hmacsha1(abc123,clientId12345deviceNamedeviceproductKeyalxxxxxxxxx)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

把这些基本的信息设置完成之后就点击ok。

  • 连接成功

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

MQTT.fx的相关登陆设置大家可以参考阿里云的官方文档设置。

参考链接:MQTT.fx的相关登陆设置

  • 通信测试

  • 下行通信测试

首先在MQTT.fx中添加一个可以订阅的topic:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

我们先在平台上进行调试,想MQTT.fx发送消息:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70 watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  • 测试发送数据 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

  • 上行通信测试

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MDQ1MzM4,size_16,color_FFFFFF,t_70

首先查看发送前的状态:

20200725230010268.png

 

发送数据

20200725225812959.png

 

发送数据后设备状态

2020072523025641.png

至此,我们的设备创建与通信测试都已成功完成。 

 

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
连接阿里云MQTT需要以下步骤: 1. 在阿里云控制台创建一个MQTT实例,并获取实例的连接信息,包括Broker地址、端口号、用户名和密码等。 2. 在Qt项目中使用paho.mqtt.c库或MQTT-C++库实现MQTT连接,需要在项目中添加对应的头文件和库文件。 3. 在代码中设置MQTT连接参数,包括Broker地址、端口号、用户名和密码等。 4. 实现MQTT回调函数,处理MQTT消息的接收和发送。 以下是一个使用MQTT-C++库连接阿里云MQTT的示例代码: ```cpp #include <iostream> #include <mqtt/async_client.h> const std::string SERVER_ADDRESS("tcp://<your-broker-address>:<your-broker-port>"); const std::string CLIENT_ID("<your-client-id>"); const std::string TOPIC("<your-topic>"); const int QOS = 1; class mqtt_callback : public virtual mqtt::callback { public: virtual void connection_lost(const std::string& cause) { std::cout << "Connection lost: " << cause << std::endl; } virtual void message_arrived(mqtt::const_message_ptr msg) { std::cout << "Message arrived: " << msg->get_payload_str() << std::endl; } virtual void delivery_complete(mqtt::delivery_token_ptr token) { std::cout << "Delivery complete for token: " << token->get_message_id() << std::endl; } }; int main(int argc, char* argv[]) { mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID); mqtt::connect_options conn_opts; conn_opts.set_keep_alive_interval(20); conn_opts.set_clean_session(true); conn_opts.set_user_name("<your-username>"); conn_opts.set_password("<your-password>"); mqtt_callback cb; client.set_callback(cb); try { mqtt::token_ptr conntok = client.connect(conn_opts); conntok->wait(); mqtt::token_ptr subtok = client.subscribe(TOPIC, QOS); subtok->wait(); while (true) { mqtt::message_ptr pubmsg = mqtt::make_message(TOPIC, "Hello, world!"); pubmsg->set_qos(QOS); mqtt::token_ptr pubtok = client.publish(pubmsg); pubtok->wait(); } mqtt::token_ptr unsubtok = client.unsubscribe(TOPIC); unsubtok->wait(); mqtt::token_ptr disctok = client.disconnect(); disctok->wait(); } catch (const mqtt::exception& exc) { std::cerr << "MQTT Exception: " << exc.what() << std::endl; return 1; } return 0; } ``` 在这个例子中,我们使用了mqtt::async_client类来创建MQTT连接,设置连接参数并订阅一个主题。在主循环中,我们发送一个消息并等待回复。当程序退出时,我们取消订阅并断开连接。 注意:在实际使用中,需要将<your-broker-address>、<your-broker-port>、<your-client-id>、<your-username>和<your-password>替换为阿里云MQTT实例的具体信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XiaoCheng'Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值