栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 使用MQTT协议将硬件端数据传输至微信小程序并呈现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 使用MQTT协议将硬件端数据传输至微信小程序并呈现

最近在做一个课设。大体需求是用运动手环获取用户的心率,体温等数据,然后传输到微信小程序页面上进行呈现。个人负责系统的软件端编写,因为第一次接触MQTT协议,所以来做个简单的记录。

1. MQTT客户端安装

这里参考了1-4 MQTT服务端连接操作 – 太极创客的教程,我选择了款免费的MQTT客户端软件–MQTTfx。MQTTfx的官网地址是:http://mqttfx.org。安装过程不再赘述。

点开mqttfx.exe,进入MQTTfx界面。点击设置按钮。

Profile Name随便取。

Profile Type选择MQTT Broker。

Broker Address 这里我参考了公用MQTT服务器列表 – 太极创客,然也物联的官网地址是:http://www.ranye-iot.net
MQTT服务器地址:test.ranye-iot.net
TCP 端口:1883
TCP/TLS 端口:8883

网上很多教程都是要求手动搭建服务器的,但尝试后发现直接使用第三方服务器更为方便:)

所以Broker Address 填入test.ranye-iot.net即可。

Broker Port 1883。

 填完之后点OK,然后回到主页点击Connect。

2. 数据传输的代码

import time
import paho.mqtt.client as mqtt
import msgpack
from binascii import *
import mysql.connector

def on_subscribe(mosq, obj, mid, granted_qos):
    print("Subscribed: " + str(mid))


def on_message(mosq, obj, msg):
    print(msg.topic+" "+msg.payload.decode("utf-8"))
    
    db = mysql.connector.connect(
        host="localhost",
        port=3306,  # 端口号
        user="myweb",  # 数据库用户
        password="111111",  # 数据库密码
        database="fjtcs_xyz"  # 要连接的数据库名称
    )
    
    cursor=db.cursor()
    sql = "INSERT INTO ppp (temperature,wine,heartrate,bloodpressurehigh,bloodpressurelow) VALUES (%s,%s,%s,%s,%s);"
    
    # 执行SQL语句
    global temperature
    global wine
    global heartrate
    global bloodpressurehigh
    global bloodpressurelow
    

    if msg.topic == "data-of-zcj": #订阅的频道的名称
        print(type(msg.topic), type(msg.payload.decode("utf-8")))
        # 一些数据处理,为了使存入的数据符合数据库里数据的格式
        arr = str(msg.payload).split(",")
        arr[0] = arr[0][2:]
        arr[4] =  arr[4][:2]
        print(arr)
        temperature = float(arr[0])
        wine = float(arr[1]) 
        heartrate = int(arr[2]) 
        bloodpressurehigh = int(arr[3])	
        bloodpressurelow = int(arr[4])

    cursor.execute(sql, [temperature,wine,heartrate,bloodpressurehigh,bloodpressurelow])
    
    db.commit()#提交请求,不然不会插入数据

def on_connect(mosq, obj, flags, rc):
    print("Connected with result code " + str(rc))
    mqttc.subscribe("data-of-zcj", 0) #这里填的是频道的名称
    print("Connected")


mqttc = mqtt.Client('MQTT-sever-of-zcj') #MQTT服务器的名称
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.on_message = on_message
mqttc.connect("test.ranye-iot.net", 1883, 60) #填入服务器地址
mqttc.publish("message-of-zcj", "MQTT star", qos=0, retain=False) # 发布消息(无关紧要,主要内容是接收消息)
mqttc.loop_forever()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号