49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
"""Small CPython MQTT example.
|
|
|
|
Publish a QoS 2 message and then subscribe to the same topic.
|
|
Set MQTT_BROKER_HOST to the broker IP address, not localhost.
|
|
"""
|
|
|
|
import os
|
|
import time
|
|
from pathlib import Path
|
|
|
|
from shared.mqtt import BrokerClient
|
|
|
|
|
|
BROKER_HOST = os.getenv("MQTT_BROKER_HOST", "localhost")
|
|
TOPIC = "smartwave/demo"
|
|
USE_TLS = os.getenv("MQTT_CLIENT_TLS", "true").lower() in {"1", "true", "yes", "on"}
|
|
CA_FILE = os.getenv(
|
|
"MQTT_CA_FILE",
|
|
str(Path(__file__).resolve().parents[2] / "orchestrateur" / "mqtt" / "certs" / "ca.crt"),
|
|
)
|
|
|
|
|
|
def main():
|
|
client = BrokerClient(
|
|
host=BROKER_HOST,
|
|
client_id="smartwave-cpython-demo",
|
|
use_tls=USE_TLS,
|
|
cafile=CA_FILE,
|
|
keepalive=30,
|
|
)
|
|
|
|
client.connect()
|
|
client.subscribe(TOPIC, qos=2)
|
|
client.publish(TOPIC, "hello from CPython", qos=2, retain=False)
|
|
|
|
deadline = time.time() + 3
|
|
while time.time() < deadline:
|
|
client.poll(0.1)
|
|
message = client.get_message()
|
|
if message is not None:
|
|
print("received:", message)
|
|
break
|
|
|
|
client.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|