diff --git a/loop/SARA_send_data_v2.py b/loop/SARA_send_data_v2.py index 7990d61..93ad5f9 100755 --- a/loop/SARA_send_data_v2.py +++ b/loop/SARA_send_data_v2.py @@ -437,71 +437,107 @@ def modem_complete_reboot_and_reinitialize(modem_version, aircarto_profile_id): if send_uSpot: print('🔧 Resetting uSpot HTTP Profile') - #2. Set uSpot URL (profile id = 1) - print('➡️Set uSpot URL') uSpot_profile_id = 1 uSpot_url="api-prod.uspot.probesys.net" security_profile_id = 1 #step 1: import the certificate - print("****") + print("➡️ import certificate") certificate_name = "e6" with open("/var/www/nebuleair_pro_4g/SARA/SSL/certificate/e6.pem", "rb") as cert_file: certificate = cert_file.read() size_of_string = len(certificate) - print("➡️ Import certificate") # AT+USECMNG=0,,, # type-> 0 -> trusted root CA command = f'AT+USECMNG=0,0,"{certificate_name}",{size_of_string}\r' ser_sara.write((command + '\r').encode('utf-8')) - response_SARA_1 = read_complete_response(ser_sara) + response_SARA_1 = read_complete_response(ser_sara, wait_for_lines=[">"]) print(response_SARA_1) time.sleep(0.5) - - print("➡️Add certificate") + + print("➡️ add certificate") ser_sara.write(certificate) - response_SARA_2 = read_complete_response(ser_sara) + response_SARA_2 = read_complete_response(ser_sara, wait_for_lines=["OK"]) print(response_SARA_2) time.sleep(0.5) - # SECURITY PROFILE - # op_code: 3 -> trusted root certificate internal name + # op_code: 0 -> certificate validation level + # param_val : 0 -> Level 0 No validation; 1-> Level 1 Root certificate validation + print("➡️Set the security profile (params)") + certification_level=0 + command = f'AT+USECPRF={security_profile_id},0,{certification_level}\r' + ser_sara.write((command + '\r').encode('utf-8')) + response_SARA_5b = read_complete_response(ser_sara, wait_for_lines=["OK"]) + print(response_SARA_5b) + time.sleep(0.5) + + # op_code: 1 -> minimum SSL/TLS version + # param_val : 0 -> any; server can use any version for the connection; 1-> LSv1.0; 2->TLSv1.1; 3->TLSv1.2; + print("➡️Set the security profile (params)") + minimum_SSL_version = 0 + command = f'AT+USECPRF={security_profile_id},1,{minimum_SSL_version}\r' + ser_sara.write((command + '\r').encode('utf-8')) + response_SARA_5bb = read_complete_response(ser_sara, wait_for_lines=["OK"]) + print(response_SARA_5bb) + time.sleep(0.5) + + #op_code: 2 -> legacy cipher suite selection + # 0 (factory-programmed value): a list of default cipher suites is proposed at the beginning of handshake process, and a cipher suite will be negotiated among the cipher suites proposed in the list. + print("➡️Set cipher") + cipher_suite = 0 + command = f'AT+USECPRF={security_profile_id},2,{cipher_suite}\r' + ser_sara.write((command + '\r').encode('utf-8')) + response_SARA_5cc = read_complete_response(ser_sara, wait_for_lines=["OK"]) + print(response_SARA_5cc) + time.sleep(0.5) + + # op_code: 3 -> trusted root certificate internal name print("➡️Set the security profile (choose cert)") command = f'AT+USECPRF={security_profile_id},3,"{certificate_name}"\r' ser_sara.write((command + '\r').encode('utf-8')) - response_SARA_5c = read_complete_response(ser_sara, wait_for_lines=["OK"]) + response_SARA_5c = read_complete_response(ser_sara, wait_for_lines=["OK"]) print(response_SARA_5c) time.sleep(0.5) + # op_code: 10 -> SNI (server name indication) + print("➡️Set the SNI") + command = f'AT+USECPRF={security_profile_id},10,"{uSpot_url}"\r' + ser_sara.write((command + '\r').encode('utf-8')) + response_SARA_5cf = read_complete_response(ser_sara, wait_for_lines=["OK"]) + print(response_SARA_5cf) + time.sleep(0.5) + #step 4: set url (op_code = 1) + print("➡️SET URL") command = f'AT+UHTTP={uSpot_profile_id},1,"{uSpot_url}"\r' - ser_sara.write(command.encode('utf-8')) - response_SARA_2 = read_complete_response(ser_sara, wait_for_lines=["OK"]) - print(response_SARA_2) + ser_sara.write((command + '\r').encode('utf-8')) + response_SARA_5 = read_complete_response(ser_sara, wait_for_lines=["OK"]) + print(response_SARA_5) time.sleep(1) #step 4: set PORT (op_code = 5) - print("➡️set port 443") - command = f'AT+UHTTP={uSpot_profile_id},5,443\r' + print("➡️SET PORT") + port = 443 + command = f'AT+UHTTP={uSpot_profile_id},5,{port}\r' ser_sara.write((command + '\r').encode('utf-8')) response_SARA_55 = read_complete_response(ser_sara, wait_for_lines=["OK"]) print(response_SARA_55) time.sleep(1) - + #step 4: set url to SSL (op_code = 6) (http_secure = 1 for HTTPS)(USECMNG_PROFILE = 2) print("➡️SET SSL") http_secure = 1 command = f'AT+UHTTP={uSpot_profile_id},6,{http_secure},{security_profile_id}\r' - #command = f'AT+UHTTP={profile_id},6,{http_secure}\r' ser_sara.write(command.encode('utf-8')) - response_SARA_5 = read_complete_response(ser_sara, wait_for_lines=["OK"]) - print(response_SARA_5) + response_SARA_5fg = read_complete_response(ser_sara, wait_for_lines=["OK"]) + print(response_SARA_5fg) time.sleep(1) + # Step 5: For SARA-R5, reset the PDP connection pdp_reset_success = True if modem_version == "SARA-R500":