"""Small MicroPython MQTT example for ESP32.

Edit BROKER_HOST so it points to the broker machine IP address.
Do not use localhost from the ESP32.
"""

from shared.mqtt import BrokerClient


BROKER_HOST = "192.168.50.1"
TOPIC = b"smartwave/demo"
CA_FILE = "/certs/ca.crt"


def on_message(message):
    print("received:", message)


def main():
    client = BrokerClient(
        host=BROKER_HOST,
        client_id="smartwave-esp32-demo",
        use_tls=True,
        cafile=CA_FILE,
        keepalive=30,
    )

    client.set_callback(on_message)
    client.connect()
    client.subscribe(TOPIC, qos=2)
    client.publish(TOPIC, b"hello from MicroPython", qos=2, retain=False)

    for _ in range(30):
        client.poll()

    client.close()


main()
