示例#1
0
    def __init__(self):
        """
    ##############################################################################
    #
    # __init__()
    #
    ##############################################################################
    """
        global client
        global wdt
        try:
            log.debug('Sensor.__init__() BEGIN')

            #from machine import WDT
            #wdt = WDT()
            #del WDT
            #collect()
            from umqtt.simple import MQTTClient
            client = MQTTClient('FIXME',
                                config.MQTT_HOST,
                                user=config.MQTT_USER_ID,
                                password=config.MQTT_API_KEY,
                                port=config.MQTT_PORT)
            del MQTTClient
            client.DEBUG = True
            client.set_callback(self.on_message)
            client.connect(clean_session=True)
            client.subscribe("#")
        except Exception as e:
            log.error('Sensor.__init__() caught e={}'.format(e))
        finally:
            log.debug('Sensor.__init__() END')
示例#2
0
def mqtt_reconnect():
    global client
    try:
        client = MQTTClient(
            config.CONFIG['MQTT_CLIENT_ID'],
            config.CONFIG['MQTT_BROKER'],
            # user=config.CONFIG['MQTT_USER'],
            # password=config.CONFIG['MQTT_PASSWORD'],
            port=config.CONFIG['MQTT_PORT'])

        client.DEBUG = True
        client.set_callback(on_message)
        client.connect(clean_session=True)
        if config.CONFIG['DEVICE_ID'] == config.CONFIG['DEVICE_ID_USE']:
            client.subscribe(use_topic + "#")
            print("ESP8266 is Connected to %s and subscribed to %s topic" %
                  (config.CONFIG['MQTT_BROKER'], use_topic + "#"))
        else:
            client.subscribe(device_topic + "#")
            print("ESP8266 is Connected to %s and subscribed to %s topic" %
                  (config.CONFIG['MQTT_BROKER'], device_topic + "#"))

        client.publish(
            device_topic + "info/", "%s" % [
                config.CONFIG['DEVICE_TYPE'], config.CONFIG['DEVICE_PLACE'],
                config.CONFIG['DEVICE_PLACE_NAME'], config.CONFIG['DEVICE_ID']
            ])
    except Exception as e:
        print("Error in MQTT reconnection: [Exception] %s: %s" %
              (type(e).__name__, e))
示例#3
0
    def _umqtt_connect(self):
        mqtt = MQTTClient(self.settings.DEVICE_ID,
                          self.settings.MQTT_BROKER,
                          port=self.settings.MQTT_PORT,
                          user=self.settings.MQTT_USERNAME,
                          password=self.settings.MQTT_PASSWORD,
                          keepalive=self.settings.MQTT_KEEPALIVE,
                          ssl=self.settings.MQTT_SSL,
                          ssl_params=self.settings.MQTT_SSL_PARAMS)

        mqtt.DEBUG = True

        mqtt.set_callback(self.sub_cb)  # for all callbacks
        mqtt.set_last_will(self.topic + b'/$online',
                           b'false',
                           retain=True,
                           qos=1)

        mqtt.connect()

        # subscribe to device topics
        mqtt.subscribe(self.topic + b'/$stats/interval/set')
        mqtt.subscribe(self.topic + b'/$broadcast/#')

        self.mqtt = mqtt
示例#4
0
    def _umqtt_connect(self):
        mqtt = MQTTClient(
            self.settings.DEVICE_ID,
            self.settings.MQTT_BROKER,
            port=self.settings.MQTT_PORT,
            user=self.settings.MQTT_USERNAME,
            password=self.settings.MQTT_PASSWORD,
            keepalive=self.settings.MQTT_KEEPALIVE,
            ssl=self.settings.MQTT_SSL,
            ssl_params=self.settings.MQTT_SSL_PARAMS,
        )

        mqtt.DEBUG = True

        mqtt.set_callback(self.sub_cb)  # for all callbacks
        mqtt.set_last_will(b"/".join((self.topic, b"$state")),
                           b"lost",
                           retain=True,
                           qos=1)

        mqtt.connect()
        self.mqtt = mqtt
示例#5
0
        sys.print_exception(e)
        strip.blink(2, colors['RED'])


def connect():
    while True:
        try:
            mqtt_client.connect(clean_session=True)
            mqtt_client.subscribe(settings.MQTT_TOPIC)
            break
        except Exception as e:
            sys.print_exception(e)
            time.sleep(1)


mqtt_client = MQTTClient(ubinascii.hexlify(machine.unique_id()),
                         settings.MQTT_HOST)
mqtt_client.DEBUG = True
mqtt_client.set_callback(on_message)

connect()

while True:
    try:
        mqtt_client.wait_msg()
    except Exception as e:
        sys.print_exception(e)
        connect()

mqtt_client.disconnect()