在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服务器拒绝服务攻击代码
Jan 16 Python
python控制台显示时钟的示例
Feb 24 Python
Python实现的石头剪子布代码分享
Aug 22 Python
python+mysql实现简单的web程序
Sep 11 Python
Python中matplotlib中文乱码解决办法
May 12 Python
代码实例讲解python3的编码问题
Jul 08 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
在python3中实现更新界面
Feb 21 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
OpenCV 图像梯度的实现方法
Jul 25 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乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
php封装的smarty类完整实例
2016/10/19 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python使用sorted排序的方法小结
2017/07/28 Python
python保存网页图片到本地的方法
2018/07/24 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
事业单位请假制度
2014/01/13 职场文书
腾讯广告词
2014/03/19 职场文书
企业文明单位申报材料
2014/05/16 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
国庆庆典邀请函
2015/02/02 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
《落花生》教学反思
2016/02/16 职场文书
golang正则之命名分组方式
2021/04/25 Golang
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL