在Django中使用MQTT的方法


Posted in Python onMay 10, 2021

安装MQTT

Python环境下安装MQTT也很简单,需要注意的就是不要输错命令
在Python3环境下安装Python MQTT的命令是:

pip3 install paho-mqtt

使用Python MQTT

编写Python MQTT脚本
代码如下:

# 为了能在外部脚本中调用Django ORM模型,必须配置脚本环境变量,将脚本注册到Django的环境变量中
import os, sys
import django
# 第一个参数固定,第二个参数是工程名称.settings
os.environ.setdefault('DJANGO_SETTING_MODULE', 'my_django.settings')
django.setup()

# 引入mqtt包
import paho.mqtt.client as mqtt
# 使用独立线程运行
from threading import Thread
from app名 import models
import time
import json

# 建立mqtt连接
def on_connect(client, userdata, flag, rc):
    print("Connect with the result code " + str(rc))
    client.subscribe('test/#', qos=2)

# 接收、处理mqtt消息
def on_message(client, userdata, msg):
    out = str(msg.payload.decode('utf-8'))
    print(msg.topic)
    print(out)
    out = json.loads(out)

    # 收到消息后执行任务
    if msg.topic == 'test/newdata':
        print(out)

# mqtt客户端启动函数
def mqttfunction():
    global client
    # 使用loop_start 可以避免阻塞Django进程,使用loop_forever()可能会阻塞系统进程
    # client.loop_start()
    # client.loop_forever() 有掉线重连功能
    client.loop_forever(retry_first_connection=True)

client = mqtt.Client(client_id="test", clean_session=False)

# 启动函数
def mqtt_run():
    client.on_connect = on_connect
    client.on_message = on_message
    # 绑定 MQTT 服务器地址
    broker = '192.168.1.88'
    # MQTT服务器的端口号
    client.connect(broker, 1883, 62)
    client.username_pw_set('user', 'user')
    client.reconnect_delay_set(min_delay=1, max_delay=2000)
    # 启动
    mqttthread = Thread(target=mqttfunction)
    mqttthread.start()

# 启动 MQTT
# mqtt_run()

if __name__ == "__main__":
    mqtt_run()

在Django项目中启动脚本

在Django2.1下,只需要在 wsgi.py 中引入要执行的脚本文件,然后执行启动函数即可。
如:

from 存放MQTT脚本的模块 import 脚本名
# 假如脚本名是:mqtt_functions
mqtt_functions.mqtt_run()

到此这篇关于在Django中使用MQTT的方法的文章就介绍到这了,更多相关Django使用MQTT内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python ljust rjust center输出
Sep 06 Python
使用python加密自己的密码
Aug 04 Python
使用Python对MySQL数据操作
Apr 06 Python
Python3学习urllib的使用方法示例
Nov 29 Python
python队列queue模块详解
Apr 27 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
在python中修改.properties文件的操作
Apr 08 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
十个Python自动化常用操作,即拿即用
May 10 #Python
Django开发RESTful API实现增删改查(入门级)
May 10 #Python
Python中X[:,0]和X[:,1]的用法
May 10 #Python
Python Django搭建文件下载服务器的实现
详解python的内存分配机制
May 10 #Python
python-for x in range的用法(注意要点、细节)
May 10 #Python
Django显示可视化图表的实践
You might like
php中对2个数组相加的函数
2011/06/24 PHP
php的一个简单加密解密代码
2014/01/14 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
python显示生日是星期几的方法
2015/05/27 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
语文教育专业推荐信范文
2013/11/25 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers