Generation

language from codeTue, 28 Feb 2023

//MASTER SERVIDOR //EL SOCKET SE DESCONECTA SI EL SERVIDOR VNO RECIVE NADA EN 5 MINUTOS import websockets.*; WebsocketServer ws; Dispo dispo1; Dispo dispo2; Dispo dispo3; Dispo dispo4; int puerto; String idServer; String dato[], paquete, sensores; String idDispo; String modo=""; // Creo que esto no esta haciendo nada String ESP32Hab = "ESP32 Habitacion"; String ESP32Sal = "ESP32 Salon"; String ESP32Est = "ESP32 Estudio"; String ESP32Ext = "ESP32 Exterior"; void setup() { puerto = 9453; idServer = "A345cXsE57657c3@dfrRW"; idDispo = "Al.00.1"; ws = new WebsocketServer(this, puerto, "/" + idServer); dispo1 = new Dispo(); dispo2 = new Dispo(); dispo3 = new Dispo(); dispo4 = new Dispo(); } void draw() { dispo1.envio(ESP32Hab); dispo2.envio(ESP32Sal); dispo3.envio(ESP32Est); dispo4.envio(ESP32Ext); } void webSocketServerEvent(String msg) { // Recivimos los mensajes entrantes paquete = msg; dato = split(msg, ","); derivacionMsg(); } class Dispo { int tDMsg = 0; // Tipo de mensaje determina si el mensaje que provienede la app movil es de inicio para poder mandar mensaje de refresco y adquirir los datos existentes en el servidor boolean mRecivido = false; // Indica si se ha recibido un mensaje válido String HORA; // Variable en la que guardamos la hora, el objetivo es de depuraciòn. si es necesario reducir recursos se puede quitar String salida1; // Aqui las salidas en el servidor las dejamos en String ya que solo las nesesitamos para saber los estados en la AppDroid y en microC las pasamos a enteros. String salida2; String salida3; String salida4; String salida5; String salida6; String salida7; String salida8; String salida9; String salida10; ////////ENTRADAS////// float sensor1 = 0; // float sensor2 = 0; // float sensor3 = 0; // float sensor4 = 0; // float sensor5 = 0; // float sensor6 = 0; // ////////////////////// void escucha() { // Si el mensaje recibido tiene más de 4 caracteres (es decir, es válido) if (dato.length >= 4) { // Cuidado acá ago un cambio el numer original es 2 y lo cambio por 4 tDMsg = int(dato[4]); // Obtiene el tipo de mensaje a partir del quinto carácter y lo convertimos a entero para manejar los datos if (dato.length == 16 ) { // Verificamos que el mensaje de almasenado es para salidas if (tDMsg == 2) { // Si es un mensaje tDMsg == 2 es un mensaje provinente de la app para cabiar estado de las salidas salida1 = dato[6]; salida2 = dato[7]; salida3 = dato[8]; salida4 = dato[9]; salida5 = dato[10]; salida6 = dato[11]; salida7 = dato[12]; salida8 = dato[13]; salida9 = dato[14]; salida10 = dato[15]; } mRecivido = true; // Indica que se ha recibido un mensaje válido } else if (dato.length == 11) { // Verificamos que el mensaje de almasenado es para sensores if (float(dato[8]) != 0.57 ) { // Si el valor del noveno carácter no es 0.57 sensor1 = float(dato[6]); // Obtiene los valores de los sensores a partir del sexto carácter sensor2 = float(dato[7]); sensor3 = float(dato[8]); sensor4 = float(dato[9]); sensor5 = float(dato[10]); } mRecivido = true; // Indica que se ha recibido un mensaje válido } // Imprime el paquete y la hora, seguidos de los valores de las salidas HORA = "->" + hour() + ":" + minute() + ":" + second(); println(paquete + HORA); println(salida1 + salida2 + salida3 + salida4 + salida5 + salida6 + salida7 + salida8 + salida9 + salida10 ); } } void envio(String dMsg ) { // Si se ha recibido un mensaje en el servidor lo renviamos if (mRecivido ) { // Si hay algo en el paquete if (paquete != null) { // && tDMsg == 2 // renviamos el paquete a través del protocolo WebSocket ws.sendMessage( paquete ); // Imprimimos en consola el paquete enviado println(paquete + " Enviado"); // Reiniciamos la variable booleana que indica si se ha recibido un mensaje mRecivido = false; // Reiniciamos la variable que contiene el paquete paquete = null; } } // Si el tipo de mensaje es igual a 1 !! Acá tendrimos que mirar si lo anidamos en el if ded mensaje recivido if (tDMsg == 1 ) { // || modo.equals("cliente") // Enviamos dos mensajes a través del protocolo WebSocket // El primer mensaje contiene la información de salida del dispositivo // El segundo mensaje contiene la información de los sensores del dispositivo // dMsg = "berna"; ws.sendMessage(idDispo +","+ dMsg +","+ "Server" +","+ modo+","+ tDMsg +","+ "" +","+ salida1 +","+ salida2 +","+ salida3 +","+ salida4 +","+ salida5 +","+ salida6 +","+ salida7 +","+ salida8 +","+ salida9 +","+ salida10); ws.sendMessage(idDispo + "," + dMsg + "," + "Server" + "," + modo + "," +tDMsg+ "," + "" + "," + sensor1 + "," + sensor2 + "," + sensor3 + "," + sensor4 + "," + sensor5); // Reiniciamos el tipo de mensaje a 0 tDMsg = 0; // Imprimimos en consola un mensaje indicando que se ha enviado el primer mensaje de reenvío de datos println ("primermensaje Renvio de datos"); } } } void derivacionMsg(){ // Acá manegamos los mensagjes para saver de donde vienen y aque dispositivo coresponden if (idDispo.equals(dato[0])) { // Aca verificamos el grupo de dispositivos if ( ESP32Hab.equals(dato[2]) || ESP32Hab.equals(dato[1]) ) { // Verificamos la identidad id = dato[2] o la direccion de el mensaje dMsg = dato[1]; dispo1.escucha(); } else if (ESP32Sal.equals(dato[2]) || ESP32Sal.equals(dato[1])) { dispo2.escucha(); } else if ( ESP32Est.equals(dato[2]) || ESP32Est.equals(dato[1])) { dispo3.escucha(); } else if ( ESP32Ext.equals(dato[2]) || ESP32Ext.equals(dato[1])) { dispo4.escucha(); } if (dato[3].equals("cliente")) { // } } }

### Contacto Para cualquier duda sobre procesing, Android Studio, como configurar los archivos de proyecto de Android Studio, como configurar los archivos de proyecto de processing, como configurar Android Studio con el plugin de processing, cualquier cambio que se quiera hacer en el codigo o algun otro tipo de duda relacionada con estos temas puede consultarlo a traves del correo:

Questions about programming?Chat with your personal AI assistant