Aws-iot-device-sdk-python-v2: рд▓рдЧрд╛рддрд╛рд░ рд╕рддреНрд░ рдХреЗ рд╕рд╛рде AWS IOT MQTT = рд╕рд╣реА рд▓реЗрдХрд┐рди рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдлрд▓

рдХреЛ рдирд┐рд░реНрдорд┐рдд 31 рдордИ 2020  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aws/aws-iot-device-sdk-python-v2

рдкреНрд░рд┐рдп рд╕рд╛рдерд┐рдпреЛ,

рд▓рдЧрд╛рддрд╛рд░ рд╕рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдЖрдИрдУрдЯреА рдПрдордХреНрдпреВрдЯреАрдЯреА рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдмреНрд░реЛрдХрд░ рдХрдиреЗрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ 'рд╕реЗрд╢рди_рдкреНрд░реЗрдЬреЗрдВрдЯ = рдЯреНрд░реВ' рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 'рдХреНрд▓реАрди_рд╕реЗрд╢рди = рдЧрд▓рдд' рд╣реЛрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ AWS рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ 60 рдорд┐рдирдЯ рдХреЗ рднреАрддрд░ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ (рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ 5 рдорд┐рдирдЯ рд╕реЗ рдХрдо рдерд╛)

рдореБрджреНрджрд╛ :
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ 'session_present = True' рд╣реИ рддреЛ рдмреНрд░реЛрдХрд░ рдкрд┐рдЫрд▓реЗ рд╕рддреНрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд╡рд┐рд╖рдп рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ? рдХреНрдпрд╛ рдореБрдЭреЗ 'session_present = True' рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ aws-iot-рдбрд┐рд╡рд╛рдЗрд╕-sdk-рдЕрдЬрдЧрд░-v2

def conenct_mqtt(mqtt_connection):
    connect_future = mqtt_connection.connect()

    excep_count = 0
    while True:
        print(f"[{datetime.now()}]Connecting......")
        try:
            # Future.result() waits until a result is available
            result = connect_future.result(timeout=30)
            print(f"Connected! session persistent = {result['session_present']}")
            return result['session_present']

        except Exception as exc:
            print(f"[{datetime.now()}]Error while connecting {exc}")
            time.sleep(10)
            excep_count=excep_count+1
            if excep_count > 5 :
                print(f"[{datetime.now()}]Exiting Script.....")
                quit()
bug guidance needs-triage

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдирдорд╕реНрддреЗ @GauravPatni

рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

   if not is_session_persistent:
        XXX
   else:
        mqtt_connection.on_message(on_message_received) #register your callback
        print("-----------Session is Persistent---------")

рдЖрдкрдХрд╛ рдХрдиреЗрдХреНрд╢рди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА on_message рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _Connection_ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдкрдирд╛ рдХреЙрд▓рдмреИрдХ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирдорд╕реНрддреЗ,
рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рд╕рддреНрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
pubsub.py рдирдореВрдиреЗ рдореЗрдВ, рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ mqtt_conneciton рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _Connection_ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреЙрд▓рдмреИрдХ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ 'session_present = True' рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ _Connection_ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП on_message рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдЖрдк рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╢реБрдХреНрд░рд┐рдпрд╛!

рдирдорд╕реНрддреЗ @TingDaoK
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдлрд┐рд░ рднреА, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдБред
рдХреНрдпрд╛ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдирд┐рдореНрди рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрд░реЗ рдХрджрдо:
рд╕рджрд╕реНрдпрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ
рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ
// рд╕рджрд╕реНрдпрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢
рдЕрдм рджреЛрдиреЛрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
рдПрдХ рдорд┐рдирдЯ рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
рд╕рджрд╕реНрдпрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ
// рдХрдиреЗрдХреНрд╢рди рднрд╡рд┐рд╖реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ .... рдкрд░рд┐рдгрд╛рдо ['session_present'] = рд╕рдЪред рдЗрд╕рд▓рд┐рдП рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рд▓реВрдк рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ
// рдореБрджреНрджрд╛: рд╕рджрд╕реНрдпрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ

def conenct_mqtt(mqtt_connection):
    connect_future = mqtt_connection.connect()

    excep_count = 0
    while True:
        print(f"[{datetime.now()}]Connecting......")
        try:
            # Future.result() waits until a result is available
            result = connect_future.result(timeout=30)
            print(f"[{datetime.now()}]Connected! session persistent = {result['session_present']}")
            return result['session_present']

        except Exception as exc:
            print(f"[{datetime.now()}]Error while connecting {exc}")
            time.sleep(10)
            excep_count=excep_count+1
            if excep_count > 5 :
                print(f"[{datetime.now()}]Exiting Script.....")
                quit()

if __name__ == '__main__':
    # Spin up resources
    event_loop_group = io.EventLoopGroup(1)
    host_resolver = io.DefaultHostResolver(event_loop_group)
    client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)


    mqtt_connection = mqtt_connection_builder.mtls_from_path(
        endpoint=host,
        cert_filepath=certificatePath,
        pri_key_filepath=privateKeyPath,
        client_bootstrap=client_bootstrap,
        ca_filepath=rootCAPath,
        on_connection_interrupted=on_connection_interrupted,
        on_connection_resumed=on_connection_resumed,
        client_id=clientId,
        clean_session=False, # set as persistent sessions
        keep_alive_secs=60, # 1 min as any data communication or PINGREQ . x1.5 to detect disconenct
        reconnect_min_timeout_secs=2,
        reconnect_max_timeout_secs =300,
        ping_timeout_ms = 10000, # wait for 6 secs for ping response
        )

    print(f"[{datetime.now()}]Connecting with client ID '{clientId}'...")
    is_session_persistent = conenct_mqtt(mqtt_connection)

    # subscribe to topics only if previous session was lost 
    if not is_session_persistent:
        topic_index = 0
        excep_count = 0
        while topic_index < 2:
            # Subscribe
            topic = topic_list[topic_index]
            print(f"[{datetime.now()}]Subscribing to topic '{topic}'...")
            subscribe_future, packet_id = mqtt_connection.subscribe(
                topic=topic,
                qos=mqtt.QoS.AT_LEAST_ONCE,
                callback=on_message_received)


            try:
                subscribe_result = subscribe_future.result()
                print(f"[{datetime.now()}]Subscribed with {str(subscribe_result['qos'])}")
                topic_index+=1
                excep_count = 0
            except Exception as exc:
                print(f"Error:Subscribe: {exc}")
                excep_count+=1
                if excep_count > 3 :
                    print(f"[{datetime.now()}]Exiting Script.....")
                    quit()
                time.sleep(10)
    else:
        print("-----------Session is Persistent---------")




    # Wait for all messages to be received.
    # This waits forever if count was set to 0.
    if max_count != 0 and 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))

рдирдорд╕реНрддреЗ @GauravPatni

рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

   if not is_session_persistent:
        XXX
   else:
        mqtt_connection.on_message(on_message_received) #register your callback
        print("-----------Session is Persistent---------")

рдЖрдкрдХрд╛ рдХрдиреЗрдХреНрд╢рди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА on_message рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _Connection_ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдкрдирд╛ рдХреЙрд▓рдмреИрдХ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж

рдирдорд╕реНрддреЗ @GauravPatni

рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

   if not is_session_persistent:
        XXX
   else:
        mqtt_connection.on_message(on_message_received) #register your callback
        print("-----------Session is Persistent---------")

рдЖрдкрдХрд╛ рдХрдиреЗрдХреНрд╢рди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА on_message рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _Connection_ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдкрдирд╛ рдХреЙрд▓рдмреИрдХ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @TingDaoK

рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж
mqtt_connection.on_message(on_message_received) #рдЕрдкрдирд╛ рдХреЙрд▓рдмреИрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ
рдорд╕рд▓рд╛ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ !!

рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж !!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Sanrro10 picture Sanrro10  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

satay99 picture satay99  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

victorct-pronto picture victorct-pronto  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

qcabrol picture qcabrol  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mkozjak picture mkozjak  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ