WIN10系统下Python获取以MQTT协议广播在EMQ服务器已知主题中的数据并写入MySQL数据库中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了WIN10系统下Python获取以MQTT协议广播在EMQ服务器已知主题中的数据并写入MySQL数据库中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3200字,纯文字阅读大概需要5分钟。
内容图文
![WIN10系统下Python获取以MQTT协议广播在EMQ服务器已知主题中的数据并写入MySQL数据库中](/upload/InfoBanner/zyjiaocheng/869/dbe03591e1bf4e48bcf14f7585f2ec55.jpg)
Python获取以MQTT协议广播在EMQ服务器已知主题中的数据并写入MySQL数据库中
步骤
这个是我用来看EMQ服务器里面数据的工具,MQTTX,挺好用的哦
首先,我们需要这些库,下载起来也很简单,直接百度安装即可,安装好之后import进来
以主题“weight_pub”为例
这个函数表示正常连接到了EMQ服务器的weight_pub主题,并且会进行回显告诉用户成功连上服务器
接下来在on_message_weight(client, userdata, msg) 函数中处理我们获得到的数据
至此数据获取完成,接下来进行数据库操作
这个函数是为了连接上数据库的
最后在我们的main函数里面开线程获取数据之后处理数据
总代码
#*****代表用户自己的数据
total_data = {'WriteEnable':0, 'weight': 0.00, 'diastolicPressure': 0,
'heartRate': 0, 'systolicPressure':0,
'height':0.00, 'bloodOxygen':0.00, 'BMI':0.00,
'idealWeight':0.00, 'temperature':0.00,'id':1000}
def set_value(name, value):
total_data[name] = value
def get_value(name, defValue=None):
try:
return total_data[name]
except KeyError:
return defValue
#获取体重
def GetWeight(str):
var = ''
cnt = 0
for char in str:
cnt = cnt + 1
if char >= '0' and char <= '9' or char == '.':
var += char
return float(var)
def on_connect_weight(client, userdata, flags, rc):
print("Connected with weight result code: " + str(rc))
def on_message_weight(client, userdata, msg):
var = str(msg.payload)
if(get_value('WriteEnable') == 1):
set_value('weight',(GetWeight(var)))
if(get_value('weight') > 10):
total_data['weight'] -= 2.75
# print ( 'wei :%.2f' % total_data['weight'] ,end=':')
def MQTTWeight():
# config._init()
client_weight = mqtt.Client()
client_weight.on_connect = on_connect_weight
client_weight.on_message = on_message_weight
client_weight.connect('**.**.***.***',****, 600) # 600为keepalive的时间间隔
client_weight.subscribe('weight_pub', qos=0)
client_weight.loop_forever() # 保持连接
def get_conn():
conn = pymysql.connect(host='*****', port=*****, user='*****', passwd='*****', db='*****')
return conn
def updateHandPart():
if(get_value('heartRate') > 0):
conn = get_conn()
cur = conn.cursor()
sql = 'UPDATE bodyhealthmonitor SET heartRate=%s WHERE id = %s';
args = (get_value('heartRate'), total_data['id'])
result = cur.execute(sql,args)
total_data['heartRate'] = 0
# print(result,end=';')
sql = 'UPDATE bodyhealthmonitor SET diastolicPressure=%s WHERE id = %s';
args = (get_value('diastolicPressure'), total_data['id'])
result = cur.execute(sql,args)
total_data['diastolicPressure'] = 0
# print(result,end=';')
sql = 'UPDATE bodyhealthmonitor SET systolicPressure=%s WHERE id = %s';
args = (get_value('systolicPressure'), total_data['id'])
total_data['systolicPressure'] = 0
result = cur.execute(sql,args)
# print(result)
conn.commit()
cur.close()
conn.close()
if __name__ == '__main__':
try:
thread_weight = threading.Thread(target=MQTTWeight)
thread_weight.setDaemon(True)
thread_weight.start()
thread_height = threading.Thread(target=MQTTHeight)
thread_height.setDaemon(True)
thread_height.start()
thread_blood = threading.Thread(target=MQTTBoold)
thread_blood.setDaemon(True)
thread_blood.start()
var = 1
while(var == 1):
time.sleep(1)#延时1s查看数据
if(get_value('WriteEnable') == 1):
update()
total_data['WriteEnable'] = 0
else:
updateHandPart()
except KeyboardInterrupt:
stop_thread(thread_weight)
stop_thread(thread_height)
stop_thread(thread_blood)
print('end')
内容总结
以上是互联网集市为您收集整理的WIN10系统下Python获取以MQTT协议广播在EMQ服务器已知主题中的数据并写入MySQL数据库中全部内容,希望文章能够帮你解决WIN10系统下Python获取以MQTT协议广播在EMQ服务器已知主题中的数据并写入MySQL数据库中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。