# Conjunto de comandos Hayes

El conjunto de comandos Hayes es un lenguaje desarrollado por la compañía Hayes Communications que prácticamente se convirtió en estándar abierto de comandos para configurar y parametrizar módems. Los caracteres «AT», que preceden a todos los comandos, significan «Atención», e hicieron que se conociera también a este conjunto de comandos como comandos AT.
Un aparato que implemente el conjunto de comandos Hayes se considera compatible Hayes. Parte del conjunto de comandos Hayes fue incluido por la ITU-T en el protocolo V.25ter, actual V.250. La adopción de este estándar hizo el desarrollo de controladores específicos para distintos módems superfluo.
A partir de la versión 3.x de Windows el sistema operativo contaba con una implementación de controlador para módems compatibles con Hayes. Sin embargo, a partir de Windows 95 se desarrollaron controladores específicos para cada módem, así que la compatibilidad con Hayes dejó de ser importante y por esta razón cada vez menos módems la implementaron. Esto dificultó su uso en otros sistemas operativos, pues no resulta frecuente que haya controladores disponibles.

## Comandos

En la especificación de los comandos, se especifica que deberán ser enviados en mayúsculas, aunque actualmente, casi todos los proveedores de módulos GSM admiten comandos en minúsculas

### Básicos 123
#### AT

Este es el comando base de los comandos Hayes. Con él, comprobamos la disponibilidad del dispositivo, es una manera de conseguir comprobar que todo vaya bien
AT+CGMI=?

#### vta

Para contestar una llamada, también se configura en respuesta automática. Si no hay ninguna llamada entrante, respondería así:

#### ATB

Para elegir el estándar de comunicación, a la hora de iniciar la conexión. En un principio se diseñó para elegir la velocidad, 300 o 1200bps y más tarde los vendedores, al introducir mayores velocidades, lo utilizaron para establecer el máximo de velocidad. En la actualidad, la mayoría del los módems ignoran este campo, respondiendo OK para compatibilizar.

#### ATD

Este Comando se usa típicamente para realizar una llamada.
ATDXXXXXXXXXXX;
Ejemplo:
ATD04261164440; (esta sería una llamada a un número móvil en Venezuela)
OK

#### ATE

Activación/Desactivación del eco del módem
ATE0 desactiva el eco del módem
ATE1 activa el eco del módem

#### ATH

Permite colgar la llamada actual

#### ATL

Controla el volumen del altavoz del dispositivo. Los dispositivos con botones de volumen no disponen de este comando.

#### ATO
### Extendidos
#### AT+CBC

Batery Charge. Sirve para conocer el estado de la batería del teléfono, devolviendo los valores de estado y los niveles de batería.

#### AT+CBST

El comando de escritura AT + CBST selecciona el servicio portador <nombre>, la velocidad de datos <velocidad> y el elemento de conexión <ce> que se utilizará cuando se originan llamadas de datos.
Test Command AT+CBST=? Response(s): +CBST: (list of supported<speed>s), (list of supported<name>s), (list of supported<ce>s) OK
Read Command AT+CBST? Response(s): +CBST: <speed>, <name>, <ce> OK
Write Command AT+CBST=<speed>[, <name>[, <ce>]] Response(s): OK ERROR

#### AT+CGMI

Para solicitar información sobre el fabricante del módem.

#### AT+CGMM

Para solicitar información sobre el número de modelo del módem.

#### AT+CGMR

Para solicitar información sobre la versión del firmware.

#### AT+CGSN

Para solicitar el IMEI

#### AT+CCLK

Con este comando AT se consulta la fecha y hora en el módem o teléfono. Saldrá en el siguiente formato: YYYY/MM/DD,HH:MM:SS. El comando no posee parámetros.

#### AT+CMGL

Listar todos los mensajes
AT+CMGL="ALL"

#### AT+CMGS

Nos permite indicar el número de teléfono al que se va a enviar el SMS o mensaje de texto.

#### AT+CPIN

Este comando vale para introducir el pin, para saber si la SIM está a la espera del PIN, PUK O PH-PIN (Bloqueo del terminal a un móvil)

#### AT+CSCS

Para definir la codificación de caracteres a usar.

#### AT+CSQ

Este comando sirve para conocer la calidad del nivel de señal recibida por el dispositivo. Tabla equivalencias entre rangos CSQ y niveles de recepción en expresados en dBm.
Para no tener que llevar la tabla, se consigue mediante la siguiente fórmula: (Nivel CSQ x 2) - 113. El resultado es el nivel de recepción en dBm.
Nivel CSQ / Nivel de señal (dBm)