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