''' ____ _ ____ _ / ___| / \ | _ \ / \ \___ \ / _ \ | |_) | / _ \ ___) / ___ \| _ < / ___ \ |____/_/ \_\_| \_\/_/ \_\ Script to see if the SARA-R410 is running ex: python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 ATI 2 ex 1 (get SIM infos) python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+CCID? 2 ex 2 (turn on blue light): python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+UGPIOC=16,2 2 ex 3 (reconnect network) python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+COPS=1,2,20801 20 ex 4 (get HTTP Profiles) python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+UHTTP? 2 ex 5 (get IP addr) python3 /var/www/nebuleair_pro_4g/SARA/sara.py ttyAMA2 AT+CGPADDR=1 2 ''' import serial import time import sys import json parameter = sys.argv[1:] # Exclude the script name #print("Parameters received:") port='/dev/'+parameter[0] # ex: ttyAMA2 command = parameter[1] # ex: AT+CCID? timeout = float(parameter[2]) # ex:2 # Access the shared variables baudrate = 115200 try: ser = serial.Serial( port=port, #USB0 or ttyS0 baudrate=baudrate, #115200 ou 9600 parity=serial.PARITY_NONE, #PARITY_NONE, PARITY_EVEN or PARITY_ODD stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout = timeout ) ser.write((command + '\r').encode('utf-8')) #ser.write(b'ATI\r') #General Information #ser.write(b'AT+CCID?\r') #SIM card number #ser.write(b'AT+CPIN?\r') #Check the status of the SIM card #ser.write(b'AT+CIND?\r') #Indication state (last number is SIM detection: 0 no SIM detection, 1 SIM detected, 2 not available) #ser.write(b'AT+UGPIOR=?\r') #Reads the current value of the specified GPIO pin #ser.write(b'AT+UGPIOC?\r') #GPIO select configuration #ser.write(b'AT+COPS=?\r') #Check the network and cellular technology the modem is currently using #ser.write(b'AT+COPS=1,2,20801') #connext to orange #ser.write(b'AT+CFUN=?\r') #Selects/read the level of functionality #ser.write(b'AT+URAT=?\r') #Radio Access Technology #ser.write(b'AT+USIMSTAT?') #ser.write(b'AT+IPR=115200') #Check/Define baud rate #ser.write(b'AT+CMUX=?') # Read lines until a timeout occurs response_lines = [] start_time = time.time() while (time.time() - start_time) < timeout: line = ser.readline().decode('utf-8', errors='ignore').strip() if line: response_lines.append(line) # Check if we received any data if not response_lines: print(f"ERROR: No response received from {port} after sending command: {command}") sys.exit(1) # Print the response for line in response_lines: print(line) except serial.SerialException as e: print(f"ERROR: Serial communication error: {e}") sys.exit(1) except Exception as e: print(f"ERROR: Unexpected error: {e}") sys.exit(1) finally: # Close the serial port if it's open if 'ser' in locals() and ser.is_open: ser.close()