in test.py [0:0]
def main():
session = boto3.Session(profile_name = 'default')
client = session.client('iot')
test_MQTTClient = None
event_loop_group = io.EventLoopGroup(1)
host_resolver = io.DefaultHostResolver(event_loop_group)
client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
ENDPOINT = "a3m15yqfy6j3pe-ats.iot.us-west-2.amazonaws.com"
CLIENT_ID = "LSH14J4C4KA097058"
PATH_TO_CERT = "certs/LSH14J4C4KA097083/production-certificate.pem.crt"
PATH_TO_KEY = "certs/LSH14J4C4KA097083/csr-bootstrap.key"
PATH_TO_ROOT = "certs/root.ca.pem"
MESSAGE = "Hello World"
TOPIC = "test"
RANGE = 20
test_MQTTClient = mqtt_connection_builder.mtls_from_path(
endpoint=ENDPOINT,
cert_filepath=PATH_TO_CERT,
pri_key_filepath=PATH_TO_KEY,
client_bootstrap=client_bootstrap,
ca_filepath=PATH_TO_ROOT,
client_id=CLIENT_ID,
clean_session=False,
on_connection_interrupted=on_connection_interrupted,
on_connection_resumed=on_connection_resumed,
keep_alive_secs=6)
print("Connecting with Prod certs to {} with client ID '{}'...".format(ENDPOINT,CLIENT_ID))
connect_future = test_MQTTClient.connect()
# Future.result() waits until a result is available
connect_future.result()
print("Connected with Prod certs!")
#time.sleep(10)
new_cert_topic = "dt/cvra/{deviceid}/cardata".format(deviceid=CLIENT_ID)
#new_cert_topic = TOPIC
print("Subscribing to topic '{}'...".format(new_cert_topic))
mqtt_topic_subscribe_future, _ = test_MQTTClient.subscribe(
topic=new_cert_topic,
qos=mqtt.QoS.AT_LEAST_ONCE,
callback=on_message_received)
# Wait for subscription to succeed
mqtt_topic_subscribe_result = mqtt_topic_subscribe_future.result()
print("Subscribed with {}".format(str(mqtt_topic_subscribe_result['qos'])))
publish_count = 1
while (publish_count <= 10):
message = "{} [{}]".format("test", publish_count)
print("Publishing message to topic '{}': {}".format(new_cert_topic, message))
test_MQTTClient.publish(
topic=new_cert_topic,
payload=message,
qos=mqtt.QoS.AT_LEAST_ONCE)
time.sleep(1)
publish_count += 1
# Wait for all messages to be received.
# This waits forever if count was set to 0.
if not received_all_event.is_set():
print("Waiting for all messages to be received...")
received_all_event.wait()
print("{} message(s) received.".format(received_count))
# Disconnect
print("Disconnecting...")
disconnect_future = test_MQTTClient.disconnect()
disconnect_future.result()
print("Disconnected!")