zoukankan      html  css  js  c++  java
  • 定时发布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 

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

     

  • 相关阅读:
    mybatis之@Select、@Insert、@Delete、@Param
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value:...
    fasterxml.jackson 将对象转换为json报错处理
    JPA之@Transient
    JPA之@OneToMany、@ManyToOne、@JoinColumn
    JPA之@Entity、@Table、@Column、@Id
    @EnableAutoConfiguration和@SpringbootApplication注解
    Spring JdbcTemplate详解
    网页上播放音频、视频Mp3,Mp4
    编码转换 Native / UTF-8 / Unicode
  • 原文地址:https://www.cnblogs.com/wzhqzm/p/14384479.html
Copyright © 2011-2022 走看看