使用Python连接华为云物联网服务器与服务器完成数据交互
创始人
2024-11-05 20:15:08
0

一、前言

随着物联网技术的快速发展,越来越多的设备和系统需要通过网络进行连接和数据交换,以实现智能化管理和控制。华为云物联网平台作为业界领先的物联网解决方案提供商,提供了稳定可靠的MQTT服务器,使得设备能够轻松接入云端,实现数据的实时上传和下发。

当前决定开发一个基于Python的MQTT客户端项目,利用paho-mqtt库与华为云物联网MQTT服务器进行通信。该项目实现设备数据的定时上传功能,确保设备状态和数据能够及时被云端系统获取并处理。同时,项目还具备接收服务器下发消息的能力,使得设备能够根据云端指令进行相应的操作或响应。

通过本项目,能够构建一个高效、稳定的物联网通信框架,为设备的远程监控、控制和管理提供有力支持。通过定时上传数据,可以实时了解设备的运行状态、环境参数等关键信息,从而及时发现并解决潜在问题。同时,接收服务器下发消息的功能也使得设备能够灵活响应云端指令,实现更加智能化的控制和管理。

本项目通过Python的paho-mqtt库与华为云物联网MQTT服务器进行通信,实现设备数据的定时上传和服务器消息的接收处理,为物联网设备的远程监控、控制和管理提供可靠的技术支持。

image-20240612142441300

二、Python代码编写

2.1 安装Paho MQTT库

打开自己电脑的Python安装目录。

如果不知道自己的Python安装目录在哪里。

可以使用 whichwhere 命令

  • 在Linux或macOS上,打开终端并输入:

    which python3 
  • 在Windows上,打开命令提示符并输入:

    where python 

这些命令会显示Python可执行文件的路径。

例如:

C:\Users\11266>where python C:\Users\11266\AppData\Local\Programs\Python\Python311\python.exe C:\Users\11266\AppData\Local\Microsoft\WindowsApps\python.exe 

找到pip.exe文件的路径。

image-20240612140125093

在文件路径里输入cmd按下回车键,打开命令行。

image-20240612140255011

在命令行输入pip install paho-mqtt 安装 paho-mqtt 库。

例如:

C:\Users\11266\AppData\Local\Programs\Python\Python311\Scripts>pip install paho-mqtt Collecting paho-mqtt   Downloading paho_mqtt-2.1.0-py3-none-any.whl (67 kB)      ---------------------------------------- 67.2/67.2 kB 1.2 MB/s eta 0:00:00 Installing collected packages: paho-mqtt Successfully installed paho-mqtt-2.1.0  [notice] A new release of pip is available: 23.1.2 -> 24.0 [notice] To update, run: python.exe -m pip install --upgrade pip  C:\Users\11266\AppData\Local\Programs\Python\Python311\Scripts> 

image-20240612140328300

2.2 paho-mqtt库介绍

paho-mqtt 是一个Python客户端库,用于与MQTT代理服务器进行通信。MQTT(Message Queuing Telemetry Transport)是一种轻量级的、发布-订阅模式的消息传输协议,常用于物联网(IoT)应用和实时数据传输。paho-mqtt 库提供了在Python中实现MQTT客户端的功能,使你可以连接到MQTT代理服务器、订阅主题、发布消息等。

特性

  • 支持MQTT 3.1和3.1.1版本的协议规范。
  • 提供同步和异步的消息发布和订阅功能。
  • 支持TLS/SSL加密连接,以确保安全的通信。
  • 具有遗嘱消息和保持活动功能,以增强连接的稳定性。
  • 可以设置用户名和密码进行连接认证。
  • 提供灵活的回调函数机制,用于处理连接、订阅和接收消息等事件。

安装

可以使用pip来安装 paho-mqtt 库:

pip install paho-mqtt 

总结

paho-mqtt 库提供了一个方便的方式来在Python应用程序中实现MQTT客户端功能。它支持多种MQTT特性,并且易于使用。通过这个库,你可以轻松地构建与MQTT代理服务器进行通信的应用程序,从而实现实时数据传输、远程控制和监控等功能。

2.3 我的华为云MQTT服务器信息

MQTT服务器IP地址: 117.78.5.125 MQTT端口号:  1883 客户端ID:65ec636771d845632aff9496_dev1_0_0_2024052901 用户名:65ec636771d845632aff9496_dev1 登录密码:a6e312275a031e7629e3133fefeac555dbce6dc06b56c039dd8a224084ee5b44 订阅主题:$oc/devices/65ec636771d845632aff9496_dev1/sys/messages/down 发布主题:$oc/devices/65ec636771d845632aff9496_dev1/sys/properties/report 发布的消息:{"services": [{"service_id": "stm32","properties":{"MQ135":60,"DHT11_T":24,"DHT11_H":60,"SOIL_H":50,"motor":1,"FLAME":0,"GPS":{"lon":120.21,"lat":30.19}}}]} 

2.4 实现代码

import paho.mqtt.client as mqtt import json import time from threading import Timer  # MQTT 配置信息 MQTT_SERVER = "117.78.5.125" MQTT_PORT = 1883 CLIENT_ID = "65ec636771d845632aff9496_dev1_0_0_2024052901" USERNAME = "65ec636771d845632aff9496_dev1" PASSWORD = "a6e312275a031e7629e3133fefeac555dbce6dc06b56c039dd8a224084ee5b44" SUBSCRIBE_TOPIC = "$oc/devices/65ec636771d845632aff9496_dev1/sys/messages/down" PUBLISH_TOPIC = "$oc/devices/65ec636771d845632aff9496_dev1/sys/properties/report" PUBLISH_INTERVAL = 10  # 定时器间隔,单位:秒  # 要发布的消息内容 message_payload = {     "services": [         {             "service_id": "stm32",             "properties": {                 "MQ135": 60,                 "DHT11_T": 24,                 "DHT11_H": 60,                 "SOIL_H": 50,                 "motor": 1,                 "FLAME": 0,                 "GPS": {                     "lon": 120.21,                     "lat": 30.19                 }             }         }     ] }  # 回调函数 - 当连接到服务器时被调用 def on_connect(client, userdata, flags, rc):     print(f"Connected with result code {rc}")     client.subscribe(SUBSCRIBE_TOPIC)  # 回调函数 - 当收到服务器下发的消息时被调用 def on_message(client, userdata, msg):     print(f"Received message from topic '{msg.topic}': {msg.payload.decode()}")  # 定时发布消息 def publish_message():     client.publish(PUBLISH_TOPIC, json.dumps(message_payload))     print(f"Published message: {json.dumps(message_payload)}")     # 设置定时器,以继续定期发布消息     Timer(PUBLISH_INTERVAL, publish_message).start()  # 创建MQTT客户端并设置回调函数 client = mqtt.Client(CLIENT_ID, protocol=mqtt.MQTTv311) client.username_pw_set(USERNAME, PASSWORD) client.on_connect = on_connect client.on_message = on_message  # 连接到MQTT服务器 client.connect(MQTT_SERVER, MQTT_PORT, 60)  # 启动网络循环 client.loop_start()  # 启动定时发布消息 publish_message()  # 主线程保持运行状态 try:     while True:         time.sleep(1) except KeyboardInterrupt:     print("Disconnecting from MQTT server...")     client.loop_stop()     client.disconnect()  

代码说明

  1. 配置部分:设置了MQTT服务器信息、客户端ID、用户名、密码、订阅主题和发布主题等。
  2. 回调函数:
    • on_connect: 在连接成功后订阅指定的主题。
    • on_message: 收到消息时打印消息内容。
  3. 定时发布消息:使用 Timer 类定时发布消息到指定的主题。
  4. 主程序:创建并配置MQTT客户端,连接到MQTT服务器,启动网络循环和定时发布消息的功能。

运行代码

运行此代码后,将:

  • 连接到指定的MQTT服务器。
  • 订阅 $oc/devices/65ec636771d845632aff9496_dev1/sys/messages/down 主题。
  • 每10秒钟向 $oc/devices/65ec636771d845632aff9496_dev1/sys/properties/report 主题发布一次消息。
  • 打印所有从服务器接收到的消息。

相关内容

热门资讯

妙计辅助!创思维激k有挂吗(辅... 妙计辅助!创思维激k有挂吗(辅助挂)切实存在有辅助脚本(果真有挂)创思维激k有挂吗辅助器是一种具有地...
记者获悉!aapoker破解侠... 记者获悉!aapoker破解侠是真的吗,来玩app破解版,练习教程(有挂讲解)1、很好的工具软件,可...
学习辅助!新道游辅助软件下载(... 学习辅助!新道游辅助软件下载(辅助挂)竟然真的有辅助方法(有挂透视)1、打开软件启动之后找到中间准星...
黑科技代打!wepoker模拟... 黑科技代打!wepoker模拟器哪个,wepoker可以免费玩吗,绝活教程(有挂细节)wepoker...
办法辅助!wepoker修改工... 办法辅助!wepoker修改工具(辅助挂)都是真的有辅助工具(有挂教程)1、在wepoker修改工具...
明白辅助挂!佛手在线有挂吗,w... 明白辅助挂!佛手在线有挂吗,wepoker透视功能下载,积累教程(有挂猫腻)1、完成wepoker透...
要领辅助!老友辅助工具下载(辅... 要领辅助!老友辅助工具下载(辅助挂)果然真的有辅助技巧(真实有挂)1、完成老友辅助工具下载辅助器v3...
此事迅速冲上热搜!sohoo ... 此事迅速冲上热搜!sohoo poker辅助,来玩app破解版,指南书教程(有挂攻略)1、金币登录送...
举措辅助!牛总管辅助神器(辅助... 举措辅助!牛总管辅助神器(辅助挂)确实确实有辅助软件(有挂透明挂)进入游戏-大厅左侧-新手福利-激活...
值得注意的是!wepoker透... 值得注意的是!wepoker透视脚本免费,sohoo开挂辅助,诀窍教程(有挂教程)wepoker透视...