edwinspire

Edwin De La Cruz

Programación PHP Y C# Multiplataforma (Linux y Windows)

Desarrollo de aplicaciones SMS basados en Erika SMS Server.
Instalación de Sistemas de Alarma residenciales y comerciales.
Instalación y servicio de Sistemas de Alarma Comunitarias por SMS.

Website recomendado:


Design-css.com is a new great French website dedicated to XHTML and CSS!





Software Libre

Al igual que miles de personas en el mundo he decidido usar software libre, libre de patentes, licencias y parches de seguridad por las que hay que pagar.
Uso GNU/Linux Debian, que tiene cientos de paquetes de software libre para la mayoría de las necesidades actuales.

Puede visitar:
Debian.org
GNU.org
Linux.org

Espacio Libre

Espacio Libre



ERIKA SMS SERVER

Servidor de mensajes de texto (SMS) desarrollado en C# compatible con Windows y Linux.
Utiliza modem GSM o Telefonos móviles con Modem GSM para envio y recepción de mensajes de texto.


Características Principales

Sus características principales son:
- Multiplataforma (corre en Linux con MONO).
- Almacena los mensajes directamente en una Base de datos MySQL,
- Envio programado por fecha y hora.
- Soporta modem por puerto Serial o USB.
- Reintento de envio en caso de falla.
- Soporta modo Texto y PDU.
- Envio de SMS según prefijo del número (Selecciona la operadora)
- Verifica la carga de bateria y calidad de señal permanentemente.
- Puede correr un programa externo en forma paralela y automática.
- Envio de test de prueba cada cierto tiempo programado.
- Configuración almacenada en MySQL lo que permite configuracion remota.
- Lista para números permitidos (lista blanca) y nùmeros bloqueados (lista negra)
- Etc...


Posibles aplicaciones

Los mensajes de texto actualmente se han difundido extensamente, lo que permite acaparar un gran número de usuarios y aplicaciones posibles basadas en un servidor de mensajes.

Aplicaciones:
- Sistemas de encuestas.
- Toma de pedidos.
- Consulta de productos.
- Guía comercial
- Sistemas de alerta
- Implementación de servicio de SMS para Cybernets
- Publicidad por SMS
- Sistemas de respuesta automática según el contenido del mensaje
- Avisos programados
- Más aplicaciones:
        Sistema de toma de turno en hospitales o cunsultorios médicos.
        Consultas en bases de datos, mercadería, productos, stock, etc.
        Consultas de horarios de examenes, notas, etc.
        Consultas de horarios de atención, teléfonos, direcciones, etc, etc, etc...

Las posibilidades son amplias, recuerde que hoy en día la mayoría de las personas disponen un teléfono móvil con capacidad para enviar y recibir Mensajes de texto SMS.

Gracias a la posiblidad de poder correr un programa externo usted podría desarrollar un programa que leea el contenido de los mensajes almacenados en MySQL y según esto devuelva automáticamente una respuesta con la información solicitada.

OBTENER Erika SMS Server

Erika SMS Server no está disponible para descarga en ninguna pagina web.
Para obtener una copia envíe un email a edwinspire@live.com o a edwin_dlca@hotmail.com con los siguientes datos:

ASUNTO: ERIKA SMS SERVER

País y ciudad desde donde escribe.
Tipo de aplicación o motivo por el cual requiere una copia.
Tipo de modem GSM que utilizará con el software.

Sería de gran utilidad una vez haya probado el software informe que resultados ha obtenido.

El software está aún en etapa de desarrollo, algunas funciones más serán implementadas, será de gran ayuda que reporte problemas o funciones que deberian ser implementadas en el software, todos los comentarios serán tomados en cuenta.

Si requiere soporte técnico o desea implementar alguna aplicación basada en él no dude en escribir al mismo email.

Configuración

Antes de correr Erika SMS Server debe disponder de un modem GSM o un teléfono con modem GSM.

Si pretende correr el software en Linux debe tener instalado mínimo Mono 2.0.

Tambíen debe tener instalado MySQL, haber creado una cuenta que permita crear tablas y vistas, ademas que la cuenta del usuario puede leer, modificar, eliminar, registros en las tablas.

La configuración de MySQL no se aborda aquí ya que en internet puede encontrar un gran número de tutoriales al respecto.

Puede descargar MySQL gratuitamente en:
http://dev.mysql.com/downloads/

Aquí descargue:
MySQL es software de uso libre.

Una vez tenga configurado MySQL procedemos a descomprimir erika.tar en un archivo local, en windows puede ser por ejemplo en el disco C:/.

Para descomprimir puede usar:
http://www.7-zip.org/download.html

También es de uso libre.

Una vez descomprimido obtendrá una carpeta llamada erika, varios archivos .dll, un .phpr, una carpeta conf y un ejecutable erika.exe


ARCHIVO DE CONFIGURACION

Ingrese en la carpeta conf, encontrará un archivo llamado acceso.conf
Abra el archivo, debe tener el siguiente contenido:

[MySQLHost]: localhost
[MySQLUsuario]: user
[MySQLPassword]: 1234
[MySQLMaxConexion]: 20
[ProgramaExterno]:

Son las lineas de configuración para acceso a MySQL y el nombre del programa externo que correrá paralelamente a Erika SMS Server.

[MySQLHost]
Host, nombre de la máquina o dirección IP donde se encuentra corriendo MySQL, si está corriendo en la misma máquina que Erika SMS Server puede dejar el host como localhost.

[MySQLUsuario]
Usuario de MySQL, este usuario debe poder crear tablas, vistas y poder trabajar con ellas.
Cuando crea un usuario por lo general ya tiene estos privilegios.

[MySQLPassword]
Password o clave de acceso a MySQL

[MySQLMaxConexion]
Número máximo de conexiones simultaneas a MySQL.
Puede dejarla en 20, como mínimo 5.

[ProgramaExterno]
Erika SMS Server puede correr un programa en forma paralela, aquí coloque el nombre completo con la extensión del programa.
El programa debe durar no más de 60 segúndos corriendo caso contrario Erika SMS Server lo cerrara si excede este tiempo.
Puede incluir como programa alguno basado en scripts, como php, phyton, etc. Debe asociar la extensíon del archivo al interprete que vaya a usar.
Por ejemplo si va a correr un scripts desarrollado en php puede crear un archivo con extensión .phpr

Si no va a correr ningún programa externo o tiene dudas de como hacerlo deje este espacio en blanco.


CORRER ERIKA SMS SERVER POR PRIMERA VEZ

Para poder visualizar mejor lo que ocurre en el programa corralo desde un terminal,  hágalo de la misma forma en Linux o en Windows.
La salida en pantalla de los terminales son similares.

Desde el terminal ingrese a la carpeta donde se encuentra erika.exe



Ahora ejecutamos erika.exe.

Si está usando Linux recuerde que debe tener instalado mínimo MONO 2.1 y tiene que ejecutar con el siguiente comando: mono erika.exe

Obtenemos la siguiente pantalla:


Si no obtuvo algún error y la salida es similar a la mostrada entonces se habrán creado en MySQL la Base de datos sms_server con las siguientes tablas:

- administrador
- adtelf
- listablanca
- listanegra
- modem
- prefijos
- proveedor
- puertos
- smsin
- smsout
- status
- administradores (es una vista basada en administrador y amdtelf)

Para verificar que esto haya sucedido utilice MySQL Query Browser y obtendrá una ventana como la siguiente:



En el area donde dice Schema puede ver que esta creada sms_server con sus tablas.


CONFIGURACION DE ERIKA SMS SERVER EN MySQL

Ahora vamos a configurar el servidor usando el mismo MySQL Query Browser.
Empezamos por la tabla

- administrador

En esta tabla agragamos todos los datos de los administradores del sistema.
Tenemos los siguientes campos:
    IdAdministrador:   
Número de identificación del administrador
    ADMPassword:     
Clave de acceso para el administrador
    ADMNombre
    ADMApellido
    ADMNivel:             
Nivel de acceso
    ADMEmail
    ADMNota

- adtelf
Configura los número telefónicos de los administradores del sistema y habilita algunas funciones de avisos o reporte.
    IdAdministrador:
Id del administrador, designado en la anterior tabla.
Vea la tabla administrador para configurar este dato.
    ADMNumero:
Número telefónico del administrador
    IdProveedor:
Id del Proveedor de telefonía del número del administrador, puede dejarlo en 0 si lo desconoce.
Vea la tabla proveedores para configurar este dato.
    ADMLogHabilitado:       
Habilita el envío de reportes del sistema a este número del adminitrador.
    ADMNivelLog
Nivel de eventos del sistema que se enviará al administrador, alta prioridad = 1, mínima prioridad = 10
    ADMNumHabilitado
Habilita el envio de eventos del sistema a este número del administrador.
Habilitado = 1, Deshabilitado = 0.
    ADMReporteSistema
Habilita el envío de un reporte de prueba periodico del sistema a este núumero del administrador
    ADMNota

- listablanca
Esta tabla permite configurar la lista de números que no tendrán restricción para enviar Mensajes de Texto para cada modem.
    IMEI*
IMEI  o puerto del modem
    LBNumero*
Número telefónico
    LBHabilitado
Habilita o deshabilita el uso de este número.
Habilitado = 1, Deshabilitado = 0.
    LBNota

- listanegra
Idéntico a la tabla listablanca pero en esta tabla lista los números bloqueados y que no se podrá enviar Mensajes de Texto.

- modem
Configura los modem a usar y las distintas opciones.
    IMEI*
IMEI del modem, el IMEI es un número único de cada dispositivo GSM en el mundo, consulte el manual de su modem GSM para obtenerlo. Si desconoce el IMEI o por alguna razón no puede obtenerlo coloque en este campo la dirección del puerto donde esta conectado el modem.
    ModemHabilitado
Habilita el uso de este modem.
Habilitado = 1, Deshabilitado = 0.
    ModemNombre
Nombre que quiera darle al modem.
    ModemDescripcion
Descripción breve del modem o característica.
    ModemBaudRate*
Baudrate del modem, consulte el manual del modem y coloque el máximo valor soportado, si desconoce este dato déjelo en 9600.
    ModemBitsDatos*
Bits de datos del modem, consulte el manual del modem y coloque el valor recomendado, si desconoce esta dato coloque 8 que es el valor usado generalmente.
    ModemParidad*
Paridad, consulte el manual del modem y coloque el valor recomendado. Los valores aceptados son: Odd, Even, Mark, Space, None.
SI desconoce que valor colocar aquí déjelo en None.
    ModemBitParada*
Bit de parada, los valores aceptados son: None, Two, OnePointFive y One.
SI desconoce que valor colocar aquí déjelo en One.
    ModemMaxIndexSMS*
Número máximo de indices que usará el modem para leer los sms de uno en uno en caso de que no pueda lista unicamente los almacenados en la memoria.  Mínimo recomendado 128.
    ModemBorrarSMS*
Habilita o Deshabilita el borrado de los sms después de almacenarlos en la base de datos.
Habilitado = 1, Deshabilitado = 0.
    ModemEnviarSMS
Habilita o Deshabilita el envío de sms por este modem GSM.
Habilitado = 1, Deshabilitado = 0.
    ModemSMSRecUnread
Obtiene los mensajes recibidos que no han sido aún leidos.
Habilitado = 1, Deshabilitado = 0.
    ModemSMSRecRead
Obtiene los mensajes recibidos que ya han sido leidos.
Habilitado = 1, Deshabilitado = 0.
    ModemSMSStoUnSent
Obtiene los mensajes almacenados que aún no han sido enviados.
Habilitado = 1, Deshabilitado = 0.
    ModemSMSStoSent
Obtiene los mensajes almacenados que ya han sido enviados.
Habilitado = 1, Deshabilitado = 0.
    ModemSMSAll*
Obtiene todos los mensajes almacenados (recomendado).
Habilitado = 1, Deshabilitado = 0.
    IdProveedor*
Id del proveedor de telefonía que usará este modem para enviar sms.
Si no sabe que colocar aquí deje el valor en 0.
Vea la tabla proveedores para configurar este dato.
    ModemCargaSMS
Número de mensajes consecutivos enviará este modem. Si usa un solo modem puede colocar un valor alto como 10 por ejemplo, si en cambio usa mas de un modem gsm sería recomendable que usara un valor bajo como 3 asi de esta forma mientras un modem esta enviando 3 mensajes y otro se encargará de enviar los restantes, dividiendo el trabajo y acelerando el proceso de envío de mensajes.
    ModemIntentosEnvioSMS
Número de veces que intentará el modem enviar un sms en caso de falla. Recomendado 3.
    ModemAutoTest
Tiempo en minutos en que este modem enviará un reporte de prueba al administrador del sistema. Recomendado 1440, una vez al dia.
Vea también la tabla administrador y admtelf.
    ModemNivelLog
Nivel en el que se almacenarán los eventos del sistema, fallas graves = 1, eventos de menor prioridad = 10.
    ModemNota

- prefijos
Esta tabla configura la lista de prefijos según el proveedor de telefonía, esto permite al software enviar los sms según el proveedor al que pertenesca el modem aprovechando así la reducción de costos que implica enviar sms dentro de una misma red.
Si no desea utilizar esta caracteristica deje esta tabla en blanco.
Vea también la tabla proveedores.
    IdProveedor*
Id del proveedor al que pertenece el prefijo.
Vea también la tabla proveedores.
    Prefijo*
Prefijo a utlizar
    PrefijoHabilitado
Habilita o Deshabilita el uso de este prefijo.
Habilitado = 1, Deshabilitado = 0.
    PrefijoNota


- proveedor
Lista de provedores de telefonía a usar.
    IdProveedor*
Id del proveedor, se genera automáticamente.
    ProveedorNombre*
Nombre del Proveedor.
Algunos modems GSM soportan el comado AT+COPS lo que permite obtener automaticámente el nombre de proveedor que usa dicho modem, ejemplo:
AT+COPS?
+COPS: 0,0,"Movistar"

OK
Si pretende usar esta caracteristica del modem debe colocar en este campo el Nombre exacto devuelto por el comando AT+COPS?, en el ejemplo Movistar.
Use Hyperterminal en windows para enviar este comando AT al modem, en Linux puede usar Minicom.

Si su modem soporta esta característica vea la tabla modem y en IdProveedor coloque 0 para que autodetecte el proveedor, caso contrario coloque el valor del IdProveedor que desea usar.
    ProveedorHabilitado
Habilita o Deshabilita el uso de este proveedor.
Habilitado = 1, Deshabilitado = 0.
    ProveedorNota


- puertos
Lista de los puertos a usar, pueden ser Seriales o USB.
    Puerto*
Nombre del puerto a usar. Ejemplo en windows puede ser COM1, COM2, etc.
En Linux /dev/ttyS0, /dev/ttyACM0, etc.
    PuertoHabilitado
Habilita o Deshabilita el uso de este puerto.
Habilitado = 1, Deshabilitado = 0.
    PuertoNota

- smsin
Esta tabla no es para configurar el sistema, unicamente aquí se almacenan los mensajes obtenidos del modem GSM.
    SMSInLoad
Fecha y hora a la que se almacenó el sms.
    SMSInPort
Puerto del cual se obtuvo el sms.
    SMSInProcess
Número que indica si el sms ya fue procesado. Este campo puede ser usado por un programa externo para indicar si ya se procesó el mensaje, el software deja este valor siempre en 0.
    SMSInStatus
Estado del mensaje, puede ser REC READ, REC UNREAD, STO SENT, STO UNSENT.
    SMSInSender
Número telefónico del remitente.
    SMSInDate
Fecha y hora del mensaje
    SMSInTexto
Texto del mensaje
    SMSInNota


- smsout
Tabla dende se almacenan los sms que serán enviados o que ya fueron enviados. Los campos marcados con * son requeridos para enviar un sms.
    SMSOutLoad
Fecha y hora a la que se almacenó el sms en la base de datos.
    IdModem
Id del modem que procesó el sms.
    SMSOutTipo*
Tipo de sms, los valores utilizados por el sistema son:
0 = Mensaje común.
1 = Reporte de prueba.
2...20 = Reservado para uso futuro.
Puede usar este campo según sus requerimientos desde el 21 en adelante.
Si no sabe que colocar aquí déjelo en 0.
    IdProveedor
Id del proveedor que se usará para enviar el sms. Fuerza al modem a enviar el sms por el proveedor seleccionado. Coloque este valor en 0 para que el proceso sea automático.
Vea tambien la tabla proveedores
    SMSOutIntentos
Número de veces que el software a intentado enviar el sms.
    SMSOutStatus
Estado de envio del sms. Los valores generados son:
0 = Mensaje no enviado
1 = Mensaje enviado completo
2 = Mensaje enviado incompleto
    SMSOutProgram*
Fecha y hora en que está programado enviarse el sms. Por ejemplo:
2009-05-11 11:43:23
    SMSOutDateSend
Fecha y hora a la que el sms se envió.
    SMSOutPort
Puerto por el cual el sms se envió.
    SMSOutReceiver*
Número al cual se enviará el sms.
    SMSOutTexto
Texto del sms, normalmente la longitud de un sms es de 160 caracteres, si usted sobrepasa este valor el mensaje se dividirá automaticamente en varios mensajes de 160 caracteres cada uno.
    SMSOutReport
Pide a la red una confirmación que el mensaje fue recibido. (No implementado al momento y depende de la red).
Habilitado = 1, Deshabilitado = 0.
    SMSOutFlash
Mensaje Flash, permite al mansaje ser mostrado directamente en la pantalla del telefono receptor sin necesidad de ser abierto.
No todos los teléfonos tienen esta capacidad y depende de la red.
Habilitado = 1, Deshabilitado = 0.
    TotalOutSMS
Cantidad de mensajes en que dividió el texto original.
    SendOutSMS
Cantidad de mensajes enviados.
    SMSOutNota

- status
Almacena automaticamente cada cierto tiempo los valores de carga de bateria y calidad de señal de los modem GSM.   

- administradores (es una vista basada en administrador y amdtelf)


Una vez que haya terminado de configurar el software correr nuevamente en el terminal erika.exe.
Si usa Linux utilice mono erika.exe, puede que sea necesario correr el programa como root para tener acceso a los puertos.

En la salida del terminal verá el avance del software.