Sistema Domótico simple con notificaciones Push

En esta entrada, quiero presentaros un sistema de control de 8 Salidas a través del movil, 6 de ellas están destinas a encender y apagar luces de casa, una de ellas a un pulso destinado al control de la puerta de un garaje y la última destinada al control de temperatura, en la que he incluido una notificación push que nos llegará en caso de que la temperatura sea inferior a 15ºC, para que así podamos encender la calefacción en caso de que nos interese tener la casa caliente al llegar. También he añadido 2 sensores PIR, para colocar en dos zonas de casa, en las que recibiremos una notificación Push en caso de detectar movimiento.

Con esto tendremos el control de casa en la palma de la mano.

control domotico

Para este proyecto necesitaremos:

– Placa Arduino Mini Pro o Arduino UNO  4€ / 12€

– Ethernet Shield  9€/18€

– Sensor temperatura LM35  2€

– Placa 8 Relés (Activación por nivel bajo) 10€

– Sensores PIR 10€

Podríamos usar la salidas para lo que deseemos, desde encender las luces ( que es nuestro caso ) hasta activar el riego automático, o subir y bajar persianas.

El esquema es bastante sencillo, y en caso de usar una placa arduino UNO, pues más, ya que la placa ethernet va insertada sobre la UNO, dejando solo para conectar los sensores y los relés.

 

control domotico 8 canales

 

La placa de relés que usado en este proyecto es la siguiente…

placa reles

Que funciona usando nivel bajo, es decir, si le aplicamos 0V a la entrada, el relé se activa y si aplicamos 5v el relé se desactiva.

Para poder realizar el control, necesitaremos 2 aplicaciones en nuestro movil, una de ellas es NetIO, en la que crearemos el entorno de control en nuestro movil, y la otra será Prowl, que la usaremos para poder recibir notificaciones push.

Para cargar el entorno, usaremos el diseñador web, para subir a la web el ejemplo de este proyecto. DESCARGALO DESDE AQUI

Para ello pincharemos en el botón «Upload» y seleccionaremos el archivo control domotico.json que hemos descargado del paquete de archivos.

Captura de pantalla 2014-06-21 a la(s) 17.42.39

 

Captura de pantalla 2014-06-21 a la(s) 17.46.25

Tendréis que registraros en la web para poder hacerlo.

Una vez lo tengáis abierto, deberéis modificar ( si queréis ) la ip configurada por defecto que es 192.168.1.150

Captura de pantalla 2014-06-21 a la(s) 23.18.06

y una vez modificada, solo tenéis que pulsar en el icono de «SAVE ONLINE» y ya podréis descargar el entorno desde el movil, iniciando sesión con vuestro  usuario y contraseña.

Las siguientes capturas, son de las pantallas  que vamos a tener para el control…

Los interruptores:

la foto 1

Las bombillas indican el estado de la luz en cada momento.

 

El acceso a garaje:

la foto 2

 

Al pulsar el botón, generaremos un impulso de 1,5 segundos, para subir o bajar la puerta del garaje.

El control de temperatura:

la foto 3

 

En esta pantalla tenemos mas información, el indicador del botón azul ( para encender o apagar el termostato ) indicará su estado, azul para apagado, o rojo para encendido. El Slider será nuestro selector de temperatura confort. Tenemos el indicador de temperatura y debajo tenemos un indicador verde, que se pondrá rojo, cuando la salida del termostato este activada, y por último, tenemos el botón de reactivación para la notificación de temperatura inferior a 15 ºC, una vez que nos avise, no lo hará de nuevo, si no pulsamos este botón.

En el termostato, está incluida una ventana de 1,5ºC desde que se alcanza la temperatura confort y se desactiva la salida hasta que se activa de nuevo, es decir si seleccionamos 24ºC, hasta que no baje a 22,5ºC no se activará de nuevo.

 

el encendido y apagado de los sensores de movimiento

la foto

 

Para la configuración de las notificaciones Push ,tendréis que registraros y conseguir vuestra API KEY para ponerla en el sketch y que puedan llegaros al movil.

Captura de pantalla 2014-06-19 a la(s) 22.38.16

Esta API KEY tenéis que ponerla en la linea 68 del sketch para la placa Arduino, DESCARGA DESDE AQUI

 

Ahora que ya tenemos, el entorno de control en nuestro movil, y configuradas las notificaciones Push, ya podremos controlar nuestro entorno.

Las salidas están configuradas de la siguiente manera:

Salida 1: Luz Salón

Salida 2: Luz Cocina

Salida 3: Luz Vestidor

Salida 4: Pulsación 1,5 Seg para puerta garaje

Salida 5: Luz Baño

Salida 6: Luz Dormitorio

Salida 7: Luz Terraza

Salida 8: Termostato

 

Si usáis la IP que está configurada, solo habrá conexión estando en la misma red, pero si queréis tener acceso desde el exterior, tendréis que usar una DDNS, como puede ser DynDns o Noip, y redireccionar el puerto 3200 a la ip que tenemos configurada en nuestro arduino «192.168.1.150»

Aqui dejo un video del funcionamiento…

 

 

140 Respuestas a “Sistema Domótico simple con notificaciones Push

  1. Si no poseo la placa de reles, puedo encender 6 leds, los PIR, y el LM35 con una fuente con voltaje de 12v conectado al arduino y a la placa ethernet?.

  2. La única pega que tienes, es que los reles se activan por nivel bajo, es decir, que los led van a estar encendidos siempre , menos cuando actives la salida que se apagaran.
    Siempre puedes cambiar el código y donde esta low, ponerlo high

  3. Tengo muchas dudas, porque soy nuevo en esto:
    1.-Requiero un entorno donde cualquier persona, con mivil (el que sea), tablet (la que sea), computadora (la que sea), pueda entrar a internet y activar o desactivar los espacios ¿como puedo hacer esto?
    2.-Tengo que activar 16 espacios (dos placas de reles optoacoplados), las que tengo funcionan con 5 volts ¿como se que son de nivel bajo?
    3.-Al intentar cargar el sketch en la arduino me marca los siguientes errores: Avviso.begin(); y se sigue con ellos ¿cual es su funcion?
    4.-Para hacer funcionar los 16 reles en las salidas ¿puedo poner en forma directa los pines análogos?
    Mil gracias ed antemano.

  4. me alegro de que te guste el proyecto…
    1º el control de sistema se puede hacer desde cualquier movil o tablet con iOS o android, el sistema NetIO no se puede usar desde un Pc
    2º para controlar dos placas de reles, solo tienes que modificar el código y el control de NetIO y añadirlas…y para saber si son a nivel bajo solo tienes que alimentar la placa de reles, si se activan los reales sin aplicar ninguna tensión a las entradas es que es de nivel bajo.
    3º el error será porque no has copiado la libreria Avviso en la carpeta de librerias de arduino, y se usa para enviar notificaciones push usando la aplicación Prowl.
    4º para configurar un pin analogico como digital, tienes que asignarlo en el código como digital, asignándole el siguiente numero de pin… A0=14, A1=15, A2=16, A3=17, A4=18 y A5=19 pinMode (14,OUTPUT); Asi se comporta como un pin digital

  5. Mil gracias por las respuestas, intentaré hacer algo semejante con algún programa que me funcione en cualquier plataforma porque si nó, corro el riesgo de que si una persona utiliza solo la pc no pueda tener control sobre la instalación.
    Mil gracias nuevamente y estamos en constacto.

  6. hola, me gusta mucho tu proyecto, me podría ayudar, tengo la aplicación netio, la duda que tengo es si el código para arduino lo genera automáticamente, para introducirlo en arduino y si lo hace no encuentro donde esta el código generado para meterlo en arduino. muchas gracias de ante maso.saludos

  7. No, el código no lo genera netIO… En en netIO tienes que configurar lo que se envía y lo que se recibe, y luego lo mismo en el código para arduino…

  8. ok , muchas gracias
    no consigo hacer que me funcione la librería avviso, tengo todo lo de tu proyecto preparado pero las notificaciones , no lo consigo me da error y supongo que es por la librería y no encuentro otra.
    saludos

  9. Tienes que registrarte en prowlapp.com y usar la app prowl para recibir las notificaciones .
    Tienes configurada la apkey de la app prowl en el código de arduino?
    Si no esta bien puesta no funcionara.

  10. Gracias por contestar, la apkey la tengo puesta en el código de arduino, creo que el problema lo tengo con la librería avviso, al verificar el código me dice ‘Avviso’ was not declared in this scope, es la librería?…gracias

  11. si la e copiado en la carpeta de librerías, pero me da ese error, solo hay esa librería? es por probar otra ..gracias

  12. En avvisoapp.com tienes la info , los enlaces y algún ejemplo para probar…
    Comprueba que no se te ha modificado o falta alguna línea de código …
    De todas formas comprueba que te aparece la librería en la lista de arduino… En importar librería…

  13. buenos días , no hay manera no me funciona la librería , los ejemplos de la librería también me dan error , esta instalada en el IDE , e leído y releído todo y no doy con la tecla ,

  14. Una pregunta,.. si abres un proyecto nuevo y en el menú de arduino le das a importar librería… Te aparece en la lista de librerías disponible??
    Usas Windows o MAC?
    En que ruta esta la carpeta de librerías??

  15. si abro el ejemplo de ringtheredpnone me da errores :RingTheRedPhone:9: error: expected unqualified-id before ‘public’

  16. y en tu proyecto me da este error:control_domotico_8_reles.ino: In function ‘void setup()’:

  17. solucionado, muchas gracias , ahora haber si soy capaz de adaptar tu proyecto a lo que quiero hacer , me va a servir para aprender . lo dicho muchas gracias

  18. pues que metia en la carpeta librerías, la carpeta entera de avviso_master, he metido por separado las carpetas y ya funciona , ahora esto peleando con prowl , que no me saltan los mensajes en la pantalla,

  19. lo que quiero hacer es que la alarma me avise cuando la puerta de la cochera este abierta ,pero claro con que me de un aviso de puerta abierta puerta cerrada, no como los pir que mientras vean movimiento no paran de mandar mensajes, haber si soy capaz de hacerlo, de código no tengo ni idea.
    Pd.hace mucho tiempo también tenia mini z, todavía tengo cosas de mini z y una emisora helios . saludos

  20. Si quieres hacer eso, es sencillo, sustituye los dos sensores PIR , por dos finales de carrera… Así solo te mandara en mensaje al actuar.
    En el código, habría que añadir, una variable de estado de la puerta, que cambie al activar un final de carrera u otro… Es decir, cuando actives el final de carrera de puerta cerrada, cambiar el estado de la variable para que solo te mande un mensaje, y que este cambie al activar el otro… Cuando tenga un rato lo miro….
    Viva el RC! Con los años he dejado una escala tan pequeña, me pase al 1:5 y ahora estoy con el 1:10 touring eléctrico .

  21. hola, estoy dándole vueltas y no consigo hacer lo de la puerta de la cochera, e dejado los pir como están porque me hacen falta para la detección por movimiento, e puesto al A3=17 como pin de entrada para un final de carrera de esos de iman , por lo que quiero que cuando cambie el estado me mande un solo mensaje de puerta abierta o cerrada, pero no lo consigo, no para de mandar mensajes , tanto si esta abierta como cerrada.
    saludos

  22. He probado un código que parece que funciona…
    te lo pongo aqui para que lo pruebes… he usado una arduino MEGA y el pin 14 para la entrada de señal desde el final de carrera ( cambia el pin para usar en tu proyecto) la entrada debe ser 0V o 5V dependiendo del estado del final de carrera, manda la notificación al cambiar de estado, es decir cuando se abra envía una, y cuando se cierra manda otra.

    #include <SPI.h>
    #include <HTTPClient.h>
    #include <Ethernet.h>
    #include <Avviso.h>
    
    
    int final_de_carrera=14;
    int estado_actual_final_de_carrera;
    int estado_anterior_final_de_carrera=0;
    
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    
    
    void setup() 
    {
    Ethernet.begin(mac);
    Avviso.begin();
    Avviso.setApiKey("PON AQUI TU API KEY");
    Avviso.setApplicationName("final de carrera");
    pinMode(final_de_carrera,INPUT);
    }
    
    void loop() 
    {
    estado_actual_final_de_carrera = digitalRead(final_de_carrera);
    if (estado_anterior_final_de_carrera != estado_actual_final_de_carrera)
    {
      if (estado_actual_final_de_carrera == HIGH)
      {
       Avviso.push("Cambio de estado", "La puerta se abre", 0);
      }
      else
      {
       Avviso.push("Cambio de estado", "La puerta se cierra", 0); 
      }
      estado_anterior_final_de_carrera=estado_actual_final_de_carrera;
    }
    delay(100);
    }
      
    
    
  23. hola , otra duda de las muchas que tengo, para entrar desde fuera de mi red como lo hago, tengo ip fija pero no se como compaginar que conecte tanto desde dentro como desde fuera.otra duda los sensores de temperaruta que tengo son los DS18B20, se pude poner estos. saludos y muchas gracias de antemano con el código de tu proyecto e aprendido bastante.

  24. Para acceder desde el exterior de tu red, tienes que redireccionar el puerto del servidor de arduino ( 3200 ) o el que hayas usado, a la ip que le hayas puesto a la placa arduino…
    y luego en la app del movil, el archivo json, tendrás que editarlo y cambiar la ip de la placa arduino por la ip externa que tengas…
    dependiendo del router que tengas, te dejara acceder a la red interna usando el wifi y la ip externa.
    Los sensores no los conozco… pero por lo que he leído, la comunicación es digital, así que el mismo código no funcionará..
    échale un ojo a esto…
    http://panamahitek.com/aprendiendo-utilizar-el-sensor-de-temperatura-ds18b20/

    un saludo

  25. hola , otro problema , jejeje, al final e puesto un sensor lm35 para no liar mas la cosa, y la lectura que me da en la aplicación no es buena me da 376,95 ºC si mido con el voltimetro me da 1.08 v a la salida de la sonda con una resistencia de 100k, si no le pongo la resistencia me da 407,23ºC y 0.81v, algo no cuadra, e probado con dos sondas por si estuviera mal alguana, pero las dos medan lo mismo.gracias

  26. Podría ser por la tensión de referencia de la placa arduino… Es una versión de 5v o de 3,3v??
    Usa la salida de alimentación de 3,3 o de 5v de la propia placa para alimentar el sensor de temperatura

  27. Hola:
    Gracias por tu magnifico tutorial, me funciona perfectamente aunque quisiera preguntarte si la opcion prowl para android funciona bien, es lo unico que me falta

    Gracias por tu tiempo
    Un saludo

  28. buenos días, he visto su placa y creo que es lo q estaba buscando.
    Tengo 14 persianas electricas de las cuales he llevado un cable de 8 hilos de cada una al RITI
    mi intención es centralizarlas todas y ademas tener la posibilidad de apagar luces.
    te agradezco de antemano lo q me puedas ayudar. un saludo

  29. Es un buen proyecto, y te espera mucho trabajo…
    8 hilos mas alimentación de 220v o solo los 8 hilos? De que grosor?
    Para las luces, tendrías que llevar al RITI, un cable desde cada bombilla, para hacer el control a través de los reles…
    Suerte

  30. Para poder hacer el control de las persianas hay que poder controlar las salidas en modo pulsación, es decir solo actúa mientras pulsas el botón, para así poder controlar perfectamente la subida y bajada de la persiana…
    voy a preparar un ejemplo de una sola persiana como ampliación al sistema domótico, para que podáis adaptarlo a lo que necesites.

  31. saludos desde cali colombia
    tengo una duda si se puede recibier una notificacion push mediante un interfas blutooth se podria? o tengo que estar conectado a internet

  32. En principio no, las notificaciones las genera un servidor online, nunca he oído que se puedan enviar o recibir notificaciones vía Bluetooth.

  33. Saludos, felicitaciones por el tutorial.
    Queria saber si este proyecto se puede realizar con el modulo esp8266

  34. Esa es una buena pregunta, en principio sí, pero hay que cambiar el código para que la comunicación sea por puerto serial, estoy en ello, pero estoy teniendo problemas para leer la información desde la App netIO…
    Estoy preparando un prototipo de un termostato inalámbrico usando ese módulo… En cuanto resuelva los problemas colgaré un tutorial.

  35. Hola, antetodo muchas gracias por la publicación y la ayuda que aportas a todos los interesados.
    He seguido todos los pasos, y me he quedado en la parte de incluir las librerías HTTPClient, Avviso y AvvisoUSB a la carpeta Mis Documentos/Arduino/Libraries. Siguiendo los pasos que viene en la web de https://github.com/colagrosso

    El problema es que al compilar me da error en los ficheros HTTPClient, algunos errores como:

    In file included from C:\Users\Juan\Documents\Arduino\libraries\HTTPClient\HTTPClient.cpp:27:0:
    C:\Users\Juan\Documents\Arduino\libraries\HTTPClient\HTTPClient.cpp: In member function ‘__file* HTTPClient::getURI(char*, http_client_parameter*, http_client_parameter*)’:
    C:\Users\Juan\Documents\Arduino\libraries\HTTPClient\HTTPClient.cpp:78:45: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
    sendUriAndHeaders(result, this->hostName, PSTR(«GET»), uri, parameters,
    ^
    In file included from C:\Users\Juan\Documents\Arduino\libraries\HTTPClient\HTTPClient.cpp:29:0:
    C:\Users\Juan\Documents\Arduino\libraries\HTTPClient\HTTPClient.h:191:3: error: initializing argument 3 of ‘char HTTPClient::sendUriAndHeaders(__file*, char*, char*, char*, http_client_parameter*, http_client_parameter*)’ [-fpermissive]
    sendUriAndHeaders(FILE* stream, char* hostName, char* requestType, char* uri,
    ^
    y otros 4 errores mas muy parecidos, yo diría idénticos.

    No doy con el problema, he probado copiando y borrando las librerías varias veces y nada.

    Gracias de antemano y saludos.

  36. Parece que alguna librería no es la correcta… Revisaré las librerías que yo he usado , no recuerdo haber descargado ninguna ,a parte de la de avviso. Ya que la de ethernet está incluida en el entorno arduino…

  37. De todas formas, si usas la última versión de arduino, prueba a compilar con la anterior, la 1.0.5, la última tiene muchas librerías incompatibles..

  38. Pues parece ser que si, ese es el problema. Con la nueva versión, la 1.6.5 tampoco compila. Seguro que es problema de librerías, a ver si actualizan las de Avviso si nó va a seguir dando problemas a todos los usuarios.

  39. Ok gracias te recomiendo, ya que yo estoy intentado hacer un contenedor que cuando este lleno envié una notificación, pero no he podido.
    Y tengo una pregunte se puede realizar con otro entorno que no sea netIO

  40. La notificación no tiene nada que ver con netIO , esta App es solo para el control de las entradas y salidas.. La notificación llega a través de la App prowl.

  41. Hola de nuevo, quisiera una ayuda ya que poseo un error con la librería de aviso, el archivo Avviso.cpp me arroja varios errores y he probado con diferentes versiones de arduino pero aun siguen existiendo errores

  42. Mira el error:

    Arduino:1.6.1 (Windows 7), Placa:»Arduino Uno»

    D:\Arduino\arduino_1.6.1\libraries\Avviso\Avviso.cpp: In member function ‘int AvvisoClass::push(char*, char*, int)’:

    D:\Arduino\arduino_1.6.1\libraries\Avviso\Avviso.cpp:109:3: error: ‘HTTPClient’ was not declared in this scope

    HTTPClient client(notificationServiceHost, notificationServiceIpAddr);

    ^

    D:\Arduino\arduino_1.6.1\libraries\Avviso\Avviso.cpp:109:14: error: expected ‘;’ before ‘client’

    HTTPClient client(notificationServiceHost, notificationServiceIpAddr);

    ^

    D:\Arduino\arduino_1.6.1\libraries\Avviso\Avviso.cpp:110:3: error: ‘Http_Client_parameter’ was not declared in this scope

    Http_Client_parameter push_arguments[] = {

    ^

    D:\Arduino\arduino_1.6.1\libraries\Avviso\Avviso.cpp:110:25: error: expected ‘;’ before ‘push_arguments’

    Http_Client_parameter push_arguments[] = {

    ^

    D:\Arduino\arduino_1.6.1\libraries\Avviso\Avviso.cpp:143:19: error: expected ‘}’ at end of input

    AvvisoClass Avviso;

    ^

    Error de compilación

    he intentado arreglar ese problema de varias maneras pero de ninguna forma funciona, si me puedes colaborar te lo agradecería

  43. Hola de nuevo, no me funciona el aviso por mensajes push con el código Control_domotico_8_reles, en cambio con el programa RingTheRedFhone funciona perfectamente. He puesto la Apikey, todo….es mas, tengo experiencia en programación en C y he creado algo de código, para ver si entra en la función if, y entra perfectamente.
    He visto que en RingTheRedFhone, lo envía con el siguiente código, devolviendo siempre una variable entera con el valor 200, que significa que se ha enviado correctamente:

    int returnCode = Avviso.push(«Nuevo evento de alarma», «Aquí se pone lo que se quiera», 0);
    if (returnCode == 200) {
    if (DEBUG) Serial.println(«OK.»);
    } else {
    if (DEBUG) Serial.print(«Error. Server returned: «);
    if (DEBUG) Serial.print(returnCode);
    }

    Si este código lo pongo en nuestro programa, definiendo previamente DEBUG (1), nos devuelve en returnCode valores aleatorios siempre distintos y nunca igual a 200.

    No se donde está el problema, le he dado mil vueltas…..

  44. Pues no se que decirte, a mí me lo envia sin problema…
    Prueba a definir en el código de forma manual, la ip, la máscara de subred y la puerta de enlace.

  45. Hola soy nuevo en esto pero me gusta mucho este proyecto solo que no se donde esta el código para poder aprender como se hace, me podrías ayudar con el?

  46. Hola 😀
    Me encanta el proyecto pero una duda el codigoi es para el arduino pro mini o para el eternet shield

  47. Buenas, me alegro de que te guste, el código es para una placa arduino UNO con ethernet shield, pero yo el montaje lo he realizado con una mini pro con el ethernet shield conectada.. En el fondo el procesador y los pines son los mismos … Así que funciona igual con cualquiera de las dos placas… Incluso se podría usar una MEGA.

  48. Muchisimas gracias solo que tengo una duda
    Cuando verifico el codigo en Arduino uno
    Me da este error

    C:\Users\IAEA\Downloads\control_domotico_8_reles\control_domotico_8_reles.ino:7:24: fatal error: HTTPClient.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compilación en tarjeta Arduino/Genuino Uno.

    Que podria hacer para arreglarlo

  49. Muchisimas gracias
    Solo una duda es que cuando lo verifico me da este error

    C:\Users\IAEA\Downloads\control_domotico_8_reles\control_domotico_8_reles.ino:7:24: fatal error: HTTPClient.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compilación en tarjeta Arduino/Genuino Uno.

    Que puedo hacer

  50. Que ide de arduino estás usando??
    Prueba la versión 1.0.4 , o la 1.0.5, las ultimas versiones dan errores con algunas librerías…

  51. Buenos dias, su proyecto es excelente y es lo que hace tiempo estaba buscando. Mi caso es que quiero prender 3 luces del patio cuando lo deseo por la noche, el hecho de prenderlas con el celular seria perfecto. Soy nuevo en arduino, tengo conocimientos basicos de programacion y bastante de electronica pero poco del mundo arduino y de las aplicaciones para celulares. Mi consulta es:
    1- el archivo.json se carga en la web de NetIO y luego debo descargar la aplicacion en el movil, la que es desarrollada por Luvago y que en itunes sale 10.99 dolares verdad?
    2- No entiendo que codigo debo cargar en el arduino, me imagino que el numero de ip y puerto para el ethernet shield y la activacion o desactivacion de los relee, ese codigo donde esta?

  52. Gracias por la pronta respuesta, yo creo que ante el precio de la aplicacion (como para estudios o pruebas lo veo medio caro) se deberia pensar en realizar lo mismo que haces mediante un servidor web, con un pequeño codigo html para las opciones y autenticacion de seguridad.

  53. Mi idea es mucho mas simple que la que empleaste en este proyecto, yo usaria arduino solo como «pulsador» via tcp/ip, el arduino activaria un relee de estado solido (3v-12v DC // 220v-380v AC) y cuando envie el pulso de 5v el rele le de tension a la luz. Lo que si hacerlo con el celular es mucho mas comodo y no es tan facil de perder como un control remoto por onda de radio, aqui es donde viene mi curiosidad de como hacerlo y bajo que interfaz.

  54. A eso me refería, a usar el móvil en vez del reloj para ese menester, para eso habría que diseñar un entorno web con botones y cargarlo en el servidor web dentro de arduino .

  55. Hola de nuevo, llevo unos días dándole vueltas al tema, y no consigo que funcione los mensajes push con arduino. Probandolo con el ejemplo de aviso «RingTheRedPhone», el error que me devuelve es 505, si lo enviara correctamente debería aparecer 200.
    He buscado y parece un error de compatibilidad con HTTP:

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    Tengo la versión 1.0.5 y también he probado la 1.0 y tampoco funciona.

    He reistalado librerías HTTPclient y avviso, y nada.

    A ustedes os funciona?

  56. Hace mucho que no pruebo, pero tuve problemas al cambiar de operador de internet, si no recuerdo mal, quite las ip fijas y la cambie por dhcp y funciono otra vez…

  57. Hola, he probado con dhcp y fija e incluso cambiando las dns, y en el monitor de arduino se aprecia como también las cambia.

    También he reseteado el router, por si fuera algún otro problema. He probado el pc con ip automática pera asegurarme que este tiene internet y funciona correctamente el dhcp, pero nada, siempre da el error 505.

    No consigo entender que si avviso y RingTheRedPhone están ya listo para funcionar, solo a falta de poner la api key, no funcionen.

    Gracias 😉

  58. Hola tengo una duda:
    Cuando dices de descargar el fichero de «control domotico.json» no me aparece la opción de descargar sino que solo sale el código.
    Como se hace para descargarlo?
    Saludos.

  59. Hola de nuevo. Lo seinto por ser pesado pero es que tengo otra duda
    La app de prowl no esta disponible en android, hay aguna parecida que haga lo mismo en android? (No importa si es de pago o no)
    Muchas gracias!!

  60. La api ley es un código personal para recibir las notificaciones .. No he usado ninguna que no sea prowl, pero imagino que si.

  61. Hola otra vez… Tengo un problema con el codigo quando lo inento compilar me salen muchos errores relacionados con las librerias Avviso y HttpClient, las dos estan instaladas.

    Error:

    Arduino:1.6.9 (Windows 10), Tarjeta:»Arduino/Genuino Uno»

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino: In function ‘void setup()’:

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:81:42: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Avviso.setApiKey(«COLOCA AQUI TU APKEY»);

    ^

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:82:47: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Avviso.setApplicationName(«CONTROL DOMOTICO»);

    ^

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino: In function ‘void comprobar_conexion_movil()’:

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:255:50: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Avviso.push(«Aviso 15 C reactivado»,»», 0);

    ^

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:255:50: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino: In function ‘void comprobar_temperatura()’:

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:412:51: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Avviso.push(«Temperatura demasiado baja»,»», 0);

    ^

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:412:51: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino: In function ‘void comprobar_alarma()’:

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:466:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Avviso.push(«Deteccion de Movimiento en Zona 1″,»», 0);

    ^

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:466:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:472:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Avviso.push(«Deteccion de Movimiento en Zona 2″,»», 0);

    ^

    C:\Users\Jaume\AppData\Local\Temp\Temp1_control_domotico_8_reles (1).zip\control_domotico_8_reles\control_domotico_8_reles.ino:472:57: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp: In member function ‘void AvvisoClass::begin(DeliveryMechanism)’:

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:50:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    notificationServiceHost = PROWL_API_HOST;

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:51:32: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    notificationServiceUrlPath = PROWL_PUSH_PATH_URI;

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:53:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    notificationServiceHost = NMA_API_HOST;

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:54:32: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    notificationServiceUrlPath = NMA_PUSH_PATH_URI;

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp: In member function ‘int AvvisoClass::push(char*, char*, int)’:

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:109:3: error: ‘HTTPClient’ was not declared in this scope

    HTTPClient client(notificationServiceHost, notificationServiceIpAddr);

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:109:14: error: expected ‘;’ before ‘client’

    HTTPClient client(notificationServiceHost, notificationServiceIpAddr);

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:110:3: error: ‘http_client_parameter’ was not declared in this scope

    http_client_parameter push_arguments[] = {

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:110:25: error: expected ‘;’ before ‘push_arguments’

    http_client_parameter push_arguments[] = {

    ^

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:143:19: error: expected ‘}’ at end of input

    AvvisoClass Avviso;

    ^

    Se encontraron múltiples librerías para «HttpClient.h»
    Usado: C:\Users\Jaume\Documents\Arduino\libraries\HttpClient
    No usado: C:\Users\Jaume\Documents\Arduino\libraries\HttpClient-master
    No usado: C:\Users\Jaume\Documents\Arduino\libraries\Bridge
    No usado: C:\Program Files (x86)\Arduino\libraries\Bridge
    exit status 1
    Error compilación en tarjeta Arduino/Genuino Uno.

    Este reporte podría tener más información con
    «Mostrar salida detallada durante la compilación»
    opción habilitada en Archivo -> Preferencias.

    Si es problema de las librerias, te agadecería que me dieras el link de bajada que tu mismo usaste.
    (Soy nuevo en arduino y no se como funciona mucho)

  62. Prueba a compilar con una versión anterior del IDE de arduino , es muy posible que las librerías no sean compatibles con la ultima versión..
    Usa la 1.0.5 por ejemplo…

  63. Usado la 1.0.5 me aparece esto

    Error:

    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp: In member function ‘int AvvisoClass::push(char*, char*, int)’:
    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:109: error: ‘HTTPClient’ was not declared in this scope
    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:109: error: expected `;’ before ‘client’
    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:110: error: ‘http_client_parameter’ was not declared in this scope
    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:110: error: expected `;’ before ‘push_arguments’
    C:\Users\Jaume\Documents\Arduino\libraries\Avviso\Avviso.cpp:143: error: expected `}’ at end of input

    Parece que venga de la libreria de avviso, pero me parece que la tengo bien instalada.

  64. Pues si, parece que no te reconoce la librería, si usas Windows, te recomiendo desinstalar todo el entorno de arduino ( guardando las librerías ) borra todas las carpetas que tengas del entorno, he instala la versión 1.0.5 desde 0, y copiando las librerías en la carpeta correspondiente

  65. Hola, ya solucioné el error de codigo y ya lo puedo verificar. Pero ahora me ha salido otro al cargar: stk500_getsync(): not in sync: resp=0x00. Esto en 1.0.5, en 1.6.9 con un arduino uno solo no me sube ni el de apagar y abrir led.
    (Lo tengo todo bien configurado, y el verificar no me sale ningun error, ademas con el Arduino Uno antes me funcionaba.)

  66. Buenos dias, he estado siguiendo todos estos pasos y llega un momento que la app NetIO y el Arduino no se communican. No se que pasa que la app no me deja realizar ninguna acción, aunque el codigo esta bién i la ip, port… concuerden. AYUDA

  67. Has comprobado que las ip que están en el sketch de arduino, y las de la configuración de netIO, concuerdan con tu red??
    es decir , que estén en el mismo rango…

  68. Sí, no he modificado ninguna red, en arduino tengo 192.168.1.150 y el puerto 3200, como tú lo pusiste y en NetIO igual. No se que error puede haber…
    (Por otro lado, es posible que se tenga que abrir algún puerto del wifi?)

  69. Y tu red de casa es la misma? Tú ruter usa la ip 192.168.1.1 ( puerta de enlace)
    Los puertos los tienes que abrir para acceder usando 3G u otro wifi que no sea el tuyo,
    Comprueba que el cable de red de la placa este bien , las luces de la tarjeta de red estén encendidas ( eso es que se ha conectado a la red )
    Que el móvil este conectado al wifi …

  70. Mi ruter si tiene la ip 192.168.1.1 pero no entendo lo que dices de red de casa. Todo lo que dices luego ya lo he comprobado y está todo bien.

  71. Me refiero al rango de las ip, si tú ruter tiene esa ip , el rango es el correcto.
    Prueba a hacer un Ping a la ip de la placa arduino, para saber si te responde y está bien conectada.

  72. Te recomiendo que instales alguno de los ejemplos que vienen con la librería ethernet.h para verificar que la placa arduino se conecta de forma correcta. Hay que ir descartando cosas…
    Instala primero «dhcpaddressprinter» y por el puerto serie podrás ver la ip asignada por el router.
    Una vez probado, carga el ejemplo «web server» y comprueba que puedes acceder usando la ip de la placa arduino.

  73. Provando el “dhcpaddressprinter” me da un error de: Fallo de configurar red usando DHCP. Creo que es un problema de mi red local pero no se qual. AYUDA!!

  74. Comprueba la configuración de tú ruter, es posible que tengas el dhcp desactivado , o limitado a cierto rango de ips, si lo tienes desactivado, habría que usar una configuración manual de todos los datos en el sketch de arduino ..

  75. prueba a poner de forma manual toda la configuración de la red…
    en las declaraciones:

    IPAddress ip(192,168,1,150);
    IPAddress gateway(192, 168, 1, 1);
    IPAddress subnet(255, 255, 255, 0);

    y modifica el ethernet.begin…

    Ethernet.begin(mac, ip, gateway, subnet);

  76. Lo que finalmente hize ayer es conectar el cable ethernet directamente al router y los dos ejemplos que tu me dijiste funcionaron. Por lo tanto ahora devería funcionar no?. Y por otro lado cómo es posible que connectado al router funcione, y sin no?

  77. Puede que sí lo conectas a través de una red ethernet , no esté en el mismo modo de conexión y por eso no funcione… O que el cable estuviese mal…

  78. lisergio. Ya me funciona el NetIO pero me ha sugido un problema conel sensor de movimiento ya que no me detecta. La key pas está bien puesta y he hecho un cambio para que funcione con Notify my Android pero sigue sin funcionar.

  79. Los pines analógicos A0-A6, se pueden declarar como digitales , asignándoles el número que les correspondería si lo fuesen de verdad… 14, 15 …19 así dispones de las entradas/salidas digitales…

  80. Pero luego tengo que conectar los pins a la salida digital 16 y 15 en vez de los analógicos A1 y A2?

  81. He intentado de hacer un ejemplo que había en los comentarios anteriores de los pir de una puerta y me funcionó. No se que puede fallar

  82. Rellena el formulario de contacto con tu correo , así te paso el correo y me mandas el código para echarle un ojo… Sin verlo y probarlo no te sé decir…

  83. Sergio ultima cosa ahora que ya estoy finalizando. El pulso para el garaje en el relé se puede connectar un motor paso a paso o una de rotación contínua? Si es así como se connecta, es que en internet no encuentro nada parecido.

  84. El pulso esta pensado para los motores de garaje de casa unifamiliar, son unos que funcionan con pulsación , pulsas y sube, pulsas y baja… Podrías anular una de las otras salidas ( o añadir ) y convertirla en otra pulsación , les cambias el tiempo(el tiempo que le cueste abrir o cerrar ) y le puedes poner un motor de rotación continua, una salida para subir y otra para bajar.

  85. No entiendo, que se tiene que editar para que durante 1,5 segundos el motor de rotación contínua vaya en un sentido, y quando vuelvas a activar vaya marcha atras?

  86. El código hay que modificarlo en función de cómo haya que conectar el motor… No todos se conectan igual…
    Que tipo de conexión necesitas para que el motor gire en un sentido o en el otro?? Habría que adaptar el código y las salidas en función de las necesidades …

  87. hola, es un proyecto fabuloso, pero no consigo echarlo andar, mi problema es con las librerías no se de donde sacarlas ni descargalas.

  88. Mil gracias lo tengo funcionando, ahora el problema viene con la temperatura que marca mas de 400 º y las notificaciones de la alarma que no salen en el movil

  89. En cuanto a la temperatura , comprueba que el sensor este bien, lo hayas conectado bien y sea el correcto para el esquema…
    Y las notificaciones , comprueba que los sensores funcionan bien, y si están bien, inicia la tarjeta ethernet, sin poner la ip…
    En la línea «ethernet.begin( Mac, ip)»
    Quita la coma y la ip, para que se inicie por dhcp.

  90. Hola Lisergio, ya solucione lo del tema de temperatura (lo estaba haciendo con un arduino uno, probé con el mini pro y sin problemas), pero sigo sin poder hacer funcionar las notificaciones

  91. Hola Sergio, he terminado tu proyecto y me ha gustado mucho, pero quiero poner leds al relé y no se como connectarlos. (Por led no me refiero a una bombilla real, simplemente la pequeña luz led.) Muchísimas gracias.

  92. No te entiendo… quieres quitar los reles y sustituirlos por leds, o quieres conectar leds a los reles??
    Si es sustituirlos por leds, tienes que cambiar en el código el estado de las salidas, cuando están en LOW, ponerlas en HIGH, y al revés, ya que los módulos de rele funcionan por nivel bajo…. los tienes que poner con una resistencia de 470 ohm en el ánodo del led… en vez del tele …y si es conectar los led a los reles, pues tienes que poner los led conectados a 12v por ejemplo con una resistencia de 1k en el ánodo y cortando el positivo con el contacto del tele.

  93. Lo he intentado de las dos maneras pero no me funciona. ¿Me podrias pasar un esquema porfavor? Muchas gracias

  94. Nada, no me sale…
    Me aydarías mucho que me hicieras un esquema de como connectar los leds que me estoy haciendo un lío o que me pudieras modificar el código para sin relé.
    Gracias!

Replica a jhon