OneNET物联网MQTT协议之平台接入

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议是即时通信协议,是物联网的重要组成部分。

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

1. 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2. 对负载内容屏蔽的消息传输;
3. 使用 TCP/IP 提供网络连接;
4. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
5. 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;
6. 有三种消息发布服务质量:

a.“至多一次”,消息至多发送一次。
b.“至少一次”,确保消息到达,但消息重复可能会发生。
c.“只有一次”,确保消息到达一次。




OneNET物联网MQTT协议接入

我们首先登录进入OneNET开发者中心


“多协议接入” ==》 “MQTT(旧版)”

点击“添加产品”按钮

填写相关的信息,点击“确定按钮”

点击“立即添加设备”来添加一个新的测试设备

点击“添加设备”

填写相关的信息(其中鉴权信息可以随便填写,但是要注意产品内唯一),然后点击“添加”按钮。

可以看到,我们已经成功添加了一个设备。

我们点击“详情”,去查看一些开发需要的参数。


我们点击“添加APIKey”来添加设备自己的Key,

输入Key的内容(内容可以随便填写),然后点击“提交”。

可以看到已经生成了加密后的Key,我们把``设备IDAPIKey`复制一下,后面会需要。

设备ID:610170361

点击左侧的产品概况,进入产品概况。

产品ID复制,后面也会用到。

产品ID:360633

接下来,我们使用工具和编写Python代码使用TCP方式连接进行MQTT通信。

从官方文档中,可以获取到使用TCP方式连接时的服务器地址端口号分别是:

服务器地址:183.230.40.39
服务器端口号:6002

用Python3进行测试

用Python3进行测试,MQTT框架用的是赫赫有名的paho.mqtt.python

创建一个新的文件夹OneNET,并编写mqtt_connect_tcp.py,内容如下:

import paho.mqtt.client as mqtt


BrokerHost = '183.230.40.39'    # OneNET使用TCP方式连接时的主机地址
BrokerPort = 6002               # OneNET使用TCP方式连接时的主机端口号

DeviceId = '610170361'          # 设备ID
ProductId = '360633'            # 产品ID
APIKey = "J0UL5YvdDB3=20qE9ByeLGYctcI="    # 可以是设备单独的APIKey,也可以是产品的MasterAPIKey


# 连接结果
def on_connect(client, userdata, flags, rc):
    if rc != 0:
        print("连接失败:" + mqtt.connack_string(rc))
        return
    print("连接成功")


# 从服务器接收发布消息时的回调
def on_message(client, userdata, msg):
    print("***** 接收到消息 *****")
    print(msg.topic + ":" + msg.payload.decode("utf-8"))


# 当broker响应订阅请求时被调用
def on_subscribe(client, userdata, mid, granted_qos):
    print("***** Broker响应订阅请求*****")
    print(granted_qos)


# 消息发送回调
def on_publish(client, userdata, mid):
    print("[on_publish] mid:" + str(mid))


def main():
    mqtt_broker_host = BrokerHost
    mqtt_broker_port = BrokerPort
    mqtt_user_name = ProductId
    mqtt_password = APIKey
    mqtt_client_id = DeviceId
    client = mqtt.Client(client_id=mqtt_client_id, protocol=mqtt.MQTTv311)
    client.on_connect = on_connect
    client.on_publish = on_publish
    client.on_message = on_message
    client.on_subscribe = on_subscribe
    client.username_pw_set(username=mqtt_user_name, password=mqtt_password)
    client.connect(host=mqtt_broker_host, port=mqtt_broker_port, keepalive=60)
    client.loop_forever()


if __name__ == "__main__":
    main()


运行程序

可以看到已经成功连接至服务器。

我们再试试在控制台下发命令:


可以看到python收到了指令。

当然你可以再多添加几个设备测试订阅、发布等更多的功能。

学习来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容