定时发布MQTT消息,Python订阅

最近做项目,为了简单操作,代替人工手动pub和sub。自己设计的一个机器代替人工完成重复无聊的工作脚本。【实战项目】

MQTT订阅

首先Python写好一个订阅程序如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/2/5 17:15
# @Author  : Administrator
# @File    : base.py

# 时间戳程序
import time

def local_time():
    times = time.time()
    local_time = time.localtime(times)
    print("运行时间戳:", time.strftime("%Y-%m-%d %H:%M:%S", local_time))
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/2/5 14:28
# @Author  : Administrator
# @File    : test_sub.py

# 盒子broker收到mqtt消息
import paho.mqtt.client as mqtt
import json
from base import local_time

# 服务器地址
host = '要订阅的ip' # 通信端口 默认端口1883 port = 1883 username = 'your username' password = 'your password' # 订阅主题名 topic = '订阅主题' # 连接后事件 def on_connect(client, userdata, flags, respons_code): local_time() if respons_code == 0: # 连接成功 print('Connection Succeed!') else: # 连接失败并显示错误代码 print('Connect Error status {0}'.format(respons_code)) # 订阅信息 client.subscribe(topic) # 接收到数据后事件 def on_message(client, userdata, msg): # 打印订阅消息主题 print("topic", msg.topic) # 打印消息数据 print("msg payload", json.loads(msg.payload)) def main_demo(): client = mqtt.Client() # 注册事件 client.on_connect = on_connect client.on_message = on_message # 设置账号密码(如果需要的话) client.username_pw_set(username, password=password) # 连接到服务器 client.connect(host, port=port, keepalive=60) # 守护连接状态 client.loop_forever() if __name__ == '__main__': main_demo()

 MQTT定时发布

shell脚本实现mqtt的发布,写在/home/目录下myshell.sh

#! /bin/bash
mosquitto_pub -p 1883 -t 主题 -m "发布内容" -u 用户名 -P 密码 -h 192.168.0.90

利用Ubuntu的定时周期性执行脚本

应用场景:设置执行频率为8-23点每小时的第5分钟执行一次 //////// 每 30 分钟运行一次 cron 任务 ////////每10分钟执行一次cron任务(0,10,20,30,40,50 * * * * /home/myshell.sh)当然我这里后来改为每10分钟执行一下脚本

首先切换至root权限:sudo su

crontab -e

# 注意:这里会让你选择编辑器,若选错了不好用记得执行:
select-editor 
# (针对crontab的一个命令), 可以让你重新选一次

 根据具体业务实现定时执行脚本效果

# 启动任务
/etc/init.d/cron start

# 查看设置的定时任务
crontab -l

# 删除定时任务
crontab -r

# 重启cron:新加入的定时任务不会马上执行,一般要等一会儿,除非你重启服务器

sudo service cron restart 

到这里就实现了 定时执行脚本的任务。。。

 

原文地址:https://www.cnblogs.com/wzhqzm/p/14384479.html