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
  • 相关阅读:
    自定义ViewGroup基础巩固2---onMeasure()学习及综合实现圆形菜单
    Django自定义模板函数
    django迁移:全局、局部
    setup.py
    企鹅去北极熊家里玩
    python插入记录后获取最后一条数据的id
    清除浮动和解决塌陷
    html知识代码
    django模型:为已存在的表建立模型
    django模型:字段和选项
  • 原文地址:https://www.cnblogs.com/shengs/p/12131817.html
Copyright © 2011-2022 走看看