domingo, 29 de mayo de 2016

Objetivo:

Enviar una solicitud http mediante un modem gprs serial

Actividades:

1. Instalar una version reciente de python.

Url: https://www.python.org/downloads/


D
Descargamos e instalamos la version 3.5.1

Personalizamos la instalacion para incluir el modulo pip

Verificamos que esté instalado el modulo serial:



En caso que no se encuentre instalado, usar pip para instalarlo usando:



Copiar el siguiente script de python, que habilita una sencilla consola para enviar comandos al puerto serial:


# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
    port='com22',
    baudrate=38400,
    
)

ser.isOpen()

print('Enter your commands below.\r\nInsert "exit" to leave the application.')

car=""
while 1 :
    # get keyboard input
    # input = raw_input(">> ")
        # Python 3 users
    car = input(">> ")

    if car == 'zzz':
        car = '\r\n\x1a\r\n'  
        ser.write(car.encode())
    
    if car == 'exit':
        ser.close()
        exit()
    else:
        # send the character to the device
        # (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
        car = car + '\r\n'
        ser.write(car.encode())

        out = ''
        # let's wait one second before reading output (let's give device time to answer)
        time.sleep(1)
        while ser.inWaiting() > 0:
            out += str(ser.read(1),"utf-8")
    
        if out:  # If it isn't a blank line
            print('<< '+out)


Mediante el uso de la terminal que nos proporciona el script ingresamos los comandos:


Comando Significado Respuesta esperada Posibles errores
AT+CPIN? Verifica estatus del SIM +CPIN: READY
OK
AT+CREG? Verifica si el SIM está registrado en la red +CREG: 0,1
OK
AT+CGATT? Verifica estatus de la red GPRS +CGATT:1
OK
AT+CIPSHUT Reestablece la sesión en la red SHUT OK
AT+CIPSTATUS Verifica estatus de la sesión OK
STATE: IP INITIAL
AT+CIPMUX=0 Establece el modo de conexión a 1 OK
AT+CSTT= “APN”, “UNAME”, “PWD” Abre una conexión GPRS al APN indicado, las dobles comillas son requeridas OK
AT+CIICR Habilita la conexión OK
AT+CIFSR Verifica la dirección IP que nos asignó la red (Debemos ver nuestra dirección IP) xxx.xxx.xxx.xxx
AT+CIPSTART="TCP","MIDOMINIO.COM","80" Establece conexión con nuestro servidor, indicar tipo de servidos, url y puerto OK
AT+CIPSEND Envía los parámetros de la solicitud al servidor, en este ejemplo usaré una solicitud HTTP/Get CONNECT OK
Teclear los siguientes parámetros de la solicitud, ajustar de acuerdo a nuestras necesidades específicas
GET http://url.de.mi.pagina HTTP/1.1
User-Agent: mozilla
Host: midominio.com
Connection: keep-alive
Dar enter para enviar una línea en blanco, a continuacion enviar Ctrl-Z para indicar que la solicitud esta completa, si usamos el script de python esto se hace tecleando zzz y damos enter. SEND OK
Debemos ver en la consola la respuesta del servidor HTTP/1.1 200 OK
AT+CIPSHUT Cerramos la conexión SHUT OK