Example #1
0
# input and output sockets
r_socks = [mqtt_sock, esp_sock]

esp_write_queue = Queue()

esp_lib.initialize_esp(esp_write_queue, mqtt_client)
mqtt_lib.initialize_mqtt(mqtt_client, esp_lib.get_esp_list())

inputs = []
outputs = []

# main select loop
while r_socks:
    w_socks = []
    if mqtt_client.want_write():
        w_socks += [mqtt_sock]
    if not esp_write_queue.empty():
        w_socks += [esp_sock]
    inputs, outputs, errors = select.select(r_socks, w_socks, r_socks, 0.01)
    if len(errors) > 0:
        logging.error("Socket error while executing select")

    if mqtt_sock in inputs:
        rc = mqtt_client.loop_read()
        mqtt_lib.read()
        if rc or mqtt_sock is None:
            logging.error("mqtt read error")

    if mqtt_sock in outputs:
        rc = mqtt_client.loop_write()