Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Sistema de notificaciones via mail provisional
#1
Hola!!!, bueno, despues de unas semanas en las que no he podido dedicar el tiempo que se merece tanto a la instalacion como al foro por temas de curro hoy he podido sacar algo de tiempo y ponerme a cacharrear que es lo que me gusta.

Comentar tambien que la instalacioin sigue sin darme ni un solo problema ni cuelgue, ya lleva 25 dias encendida sin interrupcion y no he observado ningun problema ni degradacion de ningun tipo.

Como no sé estarme quieto cuando dispongo de algo de tiempo pues se me ha ocurrido hacer una chapuza (no se le puede llamar de otra forma) a modo de solucion provisional hasta que dispongamos de dicha funcionalidad integrada en DOMUINO.

Se trata de un sistema de alarma por notificaciones via email ante la presencia de un evento predefinido. Bien, para ello he utilizado un modulo ESP8266 autonomo que es quien se encarga de enviar la notificacion, ¿como lo hace? pues lo que he echo o mejor dicho lo que se me ocurrio es conectar una salida del MEGA a uno de los pines GPIO (definido como entrada) del ESP8266 y en funcion del estado de esta que tome la decision que tenga configurada. Muchos estareis diciendo............¿estas loco? si el ESP8266 trabaja a 3.3V y el MEGA a su salida da valores aproximados de 4,5V!!!!!!!! ....por eso mismo empece a buscar en nuestro amigo de siempre (google) para tratar de buscar la forma de poder interconectarlos y no achicarrar el ESP8266.

Como casi siempre suele pasar, alguien ya ha tenido este mismo problema y por tanto tras realizar la busqueda rapida, me encontré el siguiente esquema de conexionado:

[Imagen: esp8266_gas_sensor.png]

El lugar que el sensor de Gas ocupa en el esquema es la parte correspondiente a la salida del MEGA, de esta forma ya tenia solucionado el problema de los voltajes, el resto era simple configuracion en DOMUINO y obviamente configurar el ESP8266 para que se conecte al servidor remoto en caso de cambio de estado en su entrada predefinida. Este es el codigo utilizado en el ESP8266, obviamente este es muy muy mejorable, pero como digo esto es solo una solucion provisional fruto de la inquietud:

Código:
       /*
        *  This sketch sends data via HTTP GET requests to data.sparkfun.com service.
        *
        *  You need to get streamId and privateKey at data.sparkfun.com and paste them
        *  below. Or just customize this script to talk to other HTTP servers.
        *
        */
       #include <SPI.h>
       #include <ESP8266WiFi.h>
       #define INPUT_PIN         2
       
       const char* ssid     = "PONER VUESTRA RED ENTRE LAS COMILLAS";
       const char* password = "VUESTRA PASSWORD ENTRE COMILLAS";
       const String APIKEY = "VUESTRA API KEY"; // Replace with your Carriots apikey
       const String DEVICE = "VUESTRO DEVICE"; // Replace with the id_developer of your device
       const char* host = "api.carriots.com";
       const int httpPort = 80;
       WiFiClient client;
       
       // Send stream to Carriots
       void sendStream()
       {
         String txt = "Alarma Activada!!!";          // Text to send
         Serial.println(txt);      // For debugging purpose only
       
         if (client.connect(host, httpPort)) {   // If there's a successful connection
           Serial.println(F("connected"));
           // Build the data field
           String json = "{\"protocol\":\"v2\",\"device\":\""+DEVICE+"\",\"at\":1356390000,\"data\":{\"light\":\""+txt+"\"}}";
       
           // Make a HTTP request
           client.println("POST /streams HTTP/1.1");
           client.println("Host: api.carriots.com");
           client.println("Accept: application/json");
           client.println("User-Agent: Arduino-Carriots");
           client.println("Content-Type: application/json");
           client.print("carriots.apikey: ");
           client.println(APIKEY);
           client.print("Content-Length: ");
           int thisLength = json.length();
           client.println(thisLength);
           client.println("Connection: close");
           client.println();
       
           client.println(json);
         }
         else {
           // If you didn't get a connection to the server:
           Serial.println(F("connection failed"));
         }
       }
       
       void setup() {
         pinMode(INPUT_PIN, INPUT);
         Serial.begin(115200);
         delay(10);
       
         // We start by connecting to a WiFi network
       
         Serial.println();
         Serial.println();
         Serial.print("Connecting to ");
         Serial.println(ssid);
         
         WiFi.begin(ssid, password);
         
         while (WiFi.status() != WL_CONNECTED) {
           delay(500);
           Serial.print(".");
         }
       
         Serial.println("");
         Serial.println("WiFi connected");  
         Serial.println("IP address: ");
         Serial.println(WiFi.localIP());
       }
       
       void loop() {
         int inputState = digitalRead(INPUT_PIN);
         Serial.println(inputState);
         if (inputState == LOW){    
           sendStream();
         }
         else{
          client.stop();
         }
       }

Por tanto, en DOMUINO he creado en el esclavo ICSC que tiene conectado el PIR una salida remota en el MEGA, dicha salida remota es la que esta conectada a traves del circuito anterior a la entrada del ESP8266, de tal forma que cuando el PIR detecta movimiento activa la salida remota del MEGA con un pulso de 1 segundo y esto hace que la entrada del ESP8266 cambie de estado y actue en consecuencia.

Voy a pegar aqui parte del tutorial que hice en su dia para configurar el servidor externo asi como el sistema de alarmas:

Entramos en http://www.carriots.com y nos creamos una cuenta free pulsando en el boton naranja que pone FREE ACOUNT (esto es como siempre...user, pass, email etc).

Una vez creada nos logamos y vamos a la parte de arriba donde pone My acount:

[Imagen: 1_zpsd241aee2.png]

Hay podemos ver ademas de los datos de nuestra cuenta el AIPKE que debemos introducir en la pestaña de notificaciones:

[Imagen: 2_zps62c8cd4d.png]

A continuacion creamos un dispositivo, pinchamos en device y luego en NEW:

[Imagen: 3_zps54f4d1ff.png]

[Imagen: 4_zps294c857f.png]

Y rellenamos con los datos de nuestro sensor, a destacar el apartado ID_DEVELOPER que es el otro dato que tenemos que introducir en la pestaña notificaciones:

[Imagen: 5_zpsa0e4c3af.png]

Y listo... con eso ya deberiamos recibir datos en nuestro servidor cuando se produzca un evento, los podemos ver dentro del apartado Data Streams:

[Imagen: 6_zps6b44443b.png]

Solo nos queda configurar las notificaciones, para ellos vamos a Wizard Create Listener y pinchamos en la opcion que queramos:

[Imagen: 7_zpsca572063.png]

Y seguimos el asistente, selecionamos Device y el dispositivo que acabamos de crear:

[Imagen: 8_zps4b9712eb.png]

Por ultimo rellenamos la informacion que queramos que nos llegue y nos aseguramos que esta habilitado:

[Imagen: 9_zps47c162f1.png]

Y eso es todo, espero que os sirva de ayuda, siento la parrafada

Un saludo a todos.
Responder
#2
Photo 
una pasada ,que tipo de transistor lleva el  circuito.
se me ocurre que si usamos el de 12 pines  podriamos contemplar mas sensores .


[Imagen: NodeMCU_DEVKIT_1.0.jpg]

y una cosa que creo que es implosible pero habra que darle una vuelta ,se podria hacer que esa  esp8266 puedar dal la conectividad a domuino haciendo de router.

buena ydea eso de interconectar  varios proyectos juntoss eme ha encendido lbombilla. Idea
Responder
#3
Yo he utilizado como transistor un bc547 que es el que tenia a mano supongo que cualquiera que soporte un minimo de voltaje de 5v valdra igualmente. No hay ningun impedimento en utilizar otro modelo de ESP que disponga de mas pines para dotarle de mas funcionalidades, yo he utilizado el ESP8266-01 porque como es algo provisional para salir del paso solo lo utilizare a modo de alarma junto con el PIR, en cuanto este integrado en DOMUINO lo eliminaré de la instalacion.
Responder
#4
Muy buen aporte, yo llevo un tiempo con la instalación inicial sin añadir nada más, funciona perfecta. Pero creo que es hora de darle una vuelta de tuerca y seguir añadiendo funcionalidades tan buenas como esta.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)