Download Notificador por whatsapp cuando un server monitoreado esta down

Document related concepts
no text concepts found
Transcript
Programación de Aplicaciones Distribuida
Control de Servidores
mediante Whatsapp
Espeche Maximiliano
Legajo : 35771
Objetivo:
Desarrollar una aplicación Windows que controle que las direcciones I.P. que carguemos
se encuentren encendidas, en caso de que alguna o varias estuvieran apagadas, se
deberá mandar un mensaje por Whatsapp Chat a una persona seleccionada de una
agenda.
Desarrollo del proyecto.
Base de datos
Para el desarrollo del proyecto se utilizó Microsoft SQL Server 2012.
La base de datos deberá contar con la siguiente información:
Máquinas
Codigo - Control interno
Nombre - Nombre de la PC que se desea monitorear
IP - IP de la PC que se desea monitorear
Técnicos
Codigo - Control interno
Nombre - Nombre del técnico
Celular - Celular del técnico
Estado - Permite seleccionar el técnico que será notificado
Se utilizó el siguiente script para la creación:
CREATE DATABASE ServerWhatsapp
GO
USE ServerWhatsapp
GO
CREATE TABLE [Maquina] ([MaquinaId] smallint NOT NULL IDENTITY(1,1),
[MaquinaNombre] char(50) NOT NULL , [MaquinaIp] char(15) NOT NULL , PRIMARY
KEY([MaquinaId]))
CREATE TABLE [Tecnico] ([TecnicoId] smallint NOT NULL IDENTITY(1,1),
[TecnicoNombre] char(100) NULL , [TecnicoCelular] decimal( 10) NULL , [TecnicoEstado]
char(4) NULL , PRIMARY KEY([TecnicoId]))
GO
Tutorial:
Abrir el programa SQL Server Management Studio
Luego abrimos una nueva consulta, haciendo “Alt + O” o haciendo click sobre el Botón
“Nueva Consulta” en mismo puede verse en la foto de arriba.
Copias el Script de la parte superior y lo pegamos en la consulta. Presionamos Ejecutar.
Con esto ya tenemos la base de datos creadas.
Whatsapp.
Para poder utilizar whatsapp en nuestra aplicación .Net debemos poseer lo siguiente:
-Un chip para poder vincularlo a nuestro sistema.
-La api que permite mandar mensaje desde .net.
-Un generador de contraseñas para poder utilizar la api.
Api para Whatsapp
Toda la documentacion podemos encontrarla en:
https://github.com/sanderdriesen/WhatsAPINet
DLL la descargamos desde:
http://www.c-sharpcorner.com/Downloads/801/whatsappapi-dll.aspx
Utilizaremos siempre las version x86.
Generador de clave (WART Master) lo descargamos desde:
https://github.com/mgp25/WART
Para generar la clase debemos, abrir wart.exe e ingresar el número de nuestro chip y
presionar “Request Code”
Se abrirá una ventana emergente con la clave la cual debemos guardar para usarla luego
Aplicacion .NET
Abrimos Visual Studio y creamos un nuevo proyecto del tipo Windows Form Application.
Luego importamos Whatsappapi.dll, mediante una referencia.
En la ventana que se abre presionamos “Browse…” y seleccionamos la dll dentro de la
carpeta x86.
Luego presionamos “OK”
Ahora debemos conectarnos a nuestra base de datos SQL server y crear los DataSet de
nuestras dos tablas.
Para esto en la solapa “Server Explorer” a la izquierda de la ventana, en “Data
Connections” hacemos click derecho y presionamos agregar coneccion.
Luego debemos configurar los datos de nuestros motor de base de datos sql, en mi caso
es (“CACHORRO\SQL2012”) y luego seleccionamos nuestra base de datos
“ServerWhatsapp” creada anteriormente con esto queda realizada la conexión.
Luego entramos en la solapa “Data Source” y hacemos click en el boton “Add New Data
Source”
Se abrirá una ventana y seguiremos la siguiente secuencia.
Presionamos “Siguiente”
Presionamos “Siguiente”
En esta ventana debemos seleccionar la conexión que creamos en el paso anterior.
Por último, en la nueva ventana, dentro de “Tables” elegimos la tabla “Máquina” y
presionamos finalizar.
El proceso en la solapa “Data Source” debe repetirse con la tabla “Técnicos”.
Luego debemos crear 4 Forms.
MenuPrincipal.cs: Nos permitirá desplazarnos entre las diferentes ventanas.
TecnicoForm.cs: Este nos permitirá cargar y seleccionar a quien deseamos mandar el
msj.
MaquinaForm.cs: Esta nos permitirá cargar las direcciones ip, junto con sus nombres, de
las pc que deseamos monitorear.
MonitoreoForm.cs: Este panel será el que deberemos abrir para que se inicie el monitorio,
una vez que lo cerramos el monitoreo se desactiva.
Para crear un nuevo form debemos ir a nuestra solucion en el panel derecho y seleccionar
“Nuevo item”
En la ventana que se abre elegimos Windows Form y colocamos el nombre luego
elegimos “Agregar”.
Una vez creados los 4 forms nombrados arriba comenzaremos con el armado del
programa.
MenuPrincipal.cs
En esta ventanas agregamos 3 botones, uno para actualizar tecnicos, otro para actualizar
máquinas y otro para iniciar el monitoreo. Para esto crearemos una clase la cual nos
permitirá mostrar y esconder ventanas según corresponda.
Para esto agregamos un nuevo item del tipo “Class” que se llamara “Ventanas.cs”.
En el interior de la clase ingresamos lo siguiente
Una vez grabada esta clase, seguimos con el diseño del form MenuPrincipal y la
codificacion de los eventos de los 3 botones.
MaquinaForm.cs y TecnicoForm.cs
Estas 2 ventanas tendrán un funcionamiento muy similar, ya que ambas son ABM de
tablas bases, para la creación de las mismas utilizaremos los DataSet creados
anteriormente.
Una vez dentro del form, ingresamos en la pestaña [Design], en la cual realizaremos el
diseño del form.
Primero arrastramos de la solapa de la izquierda “Data Source”, el dataset
TecnicoDataSet sobre el form. Para editar la información de las columnas de la grilla,
hacemos click derecho sobre la grilla y elegimos “Editar columnas”
En la opción HeaderText cambiamos el nombre de nuestras columnas.
Luego agregamos un boton con la opción Regresar.
El botón Regresar lo codificamos de la siguiente manera
Repetimos la operación de esta ventana con MaquinaForm.cs.
MonitoreoForm.cs
Para este form necesitamos crear 3 clases adicionales que nos ayudaran a conectarnos a
la base de datos, al servidor de whatsapp y recolectar los ips de las máquinas que
deseamos monitorear.
Para esto agregamos un nuevo item del tipo “Class” que se llamará “ConexionSQL.cs”
En la variable cadena debemos editar la dirección de nuestro servidor, el nombre de la db,
como el usuario y la contraseña. A esta clase la invocamos en la siguiente clase y al
momento de enviar el mensaje.
Para saber qué máquinas vamos a monitorear vamos a cargar un array con las ips, para
esto agregamos un nuevo item del tipo “Class” que se llamará “MaquinaSDT.cs”
Ahora está faltando crear la nueva clase “ConexionWP.cs” la que será responsable de
conectarse al servidor de whatsapp y enviar el mensaje al responsable.
En esta clase invocamos a la clase ConexionSQL.cs para conectarnos a la DB y
recuperar cual es el número al que debemos notificarnos, este valor se graba en la
variable “to”.
Luego nos conectaremos al servidor de whatsapp utilizando los datos que generamos con
la aplicación WART, la variable “from1” es igual al numero del chip que estamos
utilizando, la variable “Clave1” es la clave que nos genero el WART.
Por último, creamos un form con nombre “Monitoreo.cs” en el cual agregaremos dos
botones, uno para iniciar el monitoreo y otro para pararlo. En caso de detectar de que
alguna pc este apagada se manda un msj a través de la clase ConexionWP.cs.
Pruebas del sistemas:
Menú principal
ABM Técnicos
ABM Máquinas
Monitoreo
Mensaje Enviado