zoukankan      html  css  js  c++  java
  • 应用Python 实现MQTT Client

    #coding:utf-8

    #!/usr/bin/python3
    import json
    import os
    import binascii
    import asn1tools
    import sys
    import paho.mqtt.client as mqtt
    import requests
    import logging
    from enum import Enum
    from queue import Queue
     
    __all__ = ["MQTTClient"]
     
    class MQTTClient:
     
        def __init__(self,host, port, qos, timeout, log):
            self.host = host
            self.port = port
            self.qos = qos
            self.queue = Queue()
            self.mqtt_client = None
            self.timeout = timeout
            self.log = log
     
        def on_message(self, client, userdata, msg):
            self.log.debug('get a message: %s' % msg)
            self.queue.put(msg)
     
        def subscribe(self, topic):
            self.mqtt_client.subscribe(topic, self.qos)
            self.log.debug('subscribe to %s' % topic)
     
        def unsubscribe(self, topic):
            self.mqtt_client.unsubscribe(topic)
            self.log.debug('unsubscribe %s' % topic)
     
        def receive_msg(self, timeout=None):
            self.log.debug('waiting for message.')
            if timeout is None:
            timeout = self.timeout
            return self.queue.get(timeout=timeout)
     
        def publish(self, topic, blob):
            self.mqtt_client.publish(topic, blob)
     
        def loop_start(self):
            if self.mqtt_client is None:
            self.mqtt_client = mqtt.Client()
            self.mqtt_client.on_message = self.on_message
            self.mqtt_client.connect(self.host, self.port, self.timeout)
            self.mqtt_client.loop_start()
     
        def loop_stop(self):
            if self.mqtt_client is not None:
            self.mqtt_client.loop_stop()
            self.mqtt_client.disconnect()
            self.mqtt_client = None
  • 相关阅读:
    Spring源码:Spring IoC容器加载过程(1)
    Spring源码:Spring IoC容器加载过程(2)
    logback日志异步打印
    Spring Boot学到的内容
    JavaScript——数组的indexOf()方法在IE8中的兼容性问题
    聊聊字符串拼接的哪一些事儿
    C# LINQ学习笔记五:LINQ to XML
    聊聊多线程那一些事儿(task)之 三 异步取消和异步方法
    C# 中的IComparable和IComparer
    .net core 简单定时程序
  • 原文地址:https://www.cnblogs.com/shengs/p/12131817.html
Copyright © 2011-2022 走看看