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()

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值