问题一:python 如何 实现 mqtt 接入阿里
环境:
测试地点: 北京
测试主机: 公网测试主机
语言: python
目标:
计划用 python
实现 mqtt 接入
前期准备:
1. 参考: 建立 topic 相关资源
1. 已经可以通过 web 控制台, 创建 topic
1. 文档有 java/.net/c++
的样例, 但是没有 python 的样例程序, 自己测试
问题:
在控制台无法看到 任何 消费者/生产者
连接
测试输出:
1. 消费者输出
Connected with result code 0
1. 生产者输出
Connection returned 0 publish success, msg = 2016-11-12 14:58:43.454239
测试:
下面是我写的测试连接程序
订阅
#!/usr/bin/env python # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt user = "user0001" pwd = "user0001password" mqtt_svr = "mqtt-test.cn-qingdao.aliyuncs.com" port = 1883 # endpoint端口 topic = "testtopic" # 订阅的主题内容 def on_connect(client, userdata, flags, rc): print("Connected with result code " + str(rc)) client.subscribe(topic, qos=0) def on_message(client, userdata, msg): print("topic:" + msg.topic + " Message:" + str(msg.payload)) client = mqtt.Client( client_id="CID_test0001", clean_session=True, userdata=None, protocol='MQTTv31' ) client.username_pw_set(user, pwd) client.on_connect = on_connect client.on_message = on_message client.connect(mqtt_svr, port, 60) client.loop_forever()
发布
import time import paho.mqtt.client as mqtt import datetime def on_publish(msg, rc): # 成功发布消息的操作 if rc == 0: print("publish success, msg = " + msg) def on_connect(client, userdata, flags, rc): # 连接后的操作 0为成功 print("Connection returned " + str(rc)) client = mqtt.Client( client_id="PID_test0001", clean_session=True, userdata=None, protocol='MQTTv311' ) user = "user0001" pwd = "user0001password" mqtt_svr = "mqtt-test.cn-qingdao.aliyuncs.com" port = 1883 topic = "testtopic" client.username_pw_set(user, pwd) client.connect(endpoint, port, 60) client.on_connect = on_connect client.loop_start() time.sleep(2) count = 0 while count < 1: count = count + 1 msg = str(datetime.datetime.now()) rc, mid = client.publish(topic, payload=msg, qos=0) on_publish(msg, rc) time.sleep(1)
参考回答:
可能是签名相关的错误,参考这里https://help.aliyun.com/document_detail/54274.html?spm=5176.doc54225.6.630.Hzvyqq
问题二:SIM7020 MQTT接入aliyun时设置参数错误
按SIMCOM AT指令顺序来,第一条连接成功(AT+CMQNEW),返回0(MQTT-ID)。
接着开始设置参数, AT+CMQALICFG=0,"productKey","deviceName","deviceSecret" ,就是这一条不行。
问题三:SDK移植到设备时采用MQTT接入是否必须实现SSL接口
SDK移植到mcu环境,使用MQTT接入,是否必须实现SSL接口才可以使用?接口实现起来比较麻烦
如下接口:
HAL_SSL_Destroy
HAL_SSL_Establish
HAL_SSL_Read
HAL_SSL_Write
参考回答:
官方的demo程序有虚拟的实现例子,可以参考.只要移植到对应类型的mcu就可以了.
问题四:STM32F103GPRS模组如何通过mqtt接入物理网平台
如题,现在了解到2种方案 1,通过Linux的C-SDK编译 进行平台移植 ;2 ,通过Alink协议进行mqtt直连。请问哪种方案比较合适我这边的设备平台。希望大家讨论讨论,拜谢
参考回答:
ReSTM32F103GPRS模组如何通过mqtt接入物理网平台
我就是用的方案2,也是STM32F103芯片方案
问题五:使用自由协议MQTT接入IOT平台,想动态注册,在登录完成后,订阅/ext/register订阅不上
如上是程序订阅部分的截图,下面的截图是这两个的打印,
下图是mqtt动态注册的流程图,按照流程图我需要完成登录动作之后,再订阅这个topic拿到返回的设备秘钥,但是这个topic总是订阅不了,求解答,谢谢!
参考回答:
agentLite 证书校验失败,请检查证书是否配置正确,证书一般是放置在demo中的conf目录下的rootcert.pem 文件,如果该目录下已经存在证书文件,请点击下载更换证书