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
  • 相关阅读:
    P2009 跑步
    P3916 图的遍历
    P2865 [USACO06NOV]路障Roadblocks
    P2820 局域网
    P2176 [USACO14FEB]路障Roadblock
    讨伐!数论
    网络流入门——EK算法
    最被低估的特质
    我的天哪我有博客了!
    Area POJ
  • 原文地址:https://www.cnblogs.com/shengs/p/12131817.html
Copyright © 2011-2022 走看看