Módulo SonOff, Reprogramación para usarlo para HomeKit

Hola de nuevo!!

Hace un tiempo, un usuario del blog, me consulto si era posible usar los módulos de SonOff para poder controlar unas persianas usando HomeKit. En ese momento no conocía los módulos, así que me puse a investigar un poco, y pedí un par por aliexpress para hacer unas pruebas…

Para mi sorpresa, estos módulos son lo mismo que he usado hasta ahora, pero todo en la misma placa, es decir, el esp8266, el módulo de relé y el alimentador todo en la misma placa, lo que reduce el coste y sobre todo el trabajo a la hora de realizar el montaje, ya que el módulo tiene una entrada de 220v de alimentación, y una salida de 220v que conectaremos directamente a la lámpara que queramos encender.

 

El módulo en cuestión se puede usar con la propia app del fabricante, que está disponible para iOS y para android, con la que podremos añadir los módulos que queramos, y controlarlos, incluso hacer programaciones.

 

Pero la gracia del dispositivo es que esta basado en el esp8266 y podremos reprogramarlo para cargar nuestro propio Sketch y controlarlo con HomeKit y Siri.

Para ello solo tendremos que soldar a la placa una tira de pines en la que conectaremos nuestro programador FTDI como si de un esp8266 normal se tratase.

También vamos a disponer de un GPIO ( o dos si prescindimos del led ) para poder controlar alguna otra cosa, como un sensor de temperatura, humedad , relés.

El dispositivo ya tiene incluido un pulsador conectado al GPIO 0 , que tendremos que mantener pulsado al conectar el programador para entrar en modo programación… este puerto estará disponible solo si lo queremos usar para conectar un pulsador en paralelo ( que lo vamos a hacer ) ya que tiene una resistencia pullup conectada a 3,3v.

Aqui tenéis una foto con los pines disponibles…

Ahora que ya sabemos lo que vamos a hacer, nos pondremos manos a la obra…

En primer lugar, vamos a soldar una tira de pines en la zona central, donde está , GPIO 14, GND,RX, TX y 3,3V.

 

Ahora que ya están soldados, podremos conectar el programador FTDI para reprogramarlo…

Hay que asegurarse, que el programador trabaja a 3,3v y NO a 5v ya que al conectarlo al módulo podríamos dañarlo.

En mi caso trabaja a 5v (aunque en la foto ponga 3,3v) por lo que le he hecho un adaptador con un regulador de 3,3v y así no comprar otro programador.

PARA PROGRAMAR EL MÓDULO, LO HAREMOS SIN CONECTAR LA ENTRADA DE 220V PARA EVITAR DAÑAR LA PLACA.

 

 

Ahora, solo tendremos que abrir el IDE de Arduino, seleccionar como placa el ESP8266 genérico…

abriremos el sketch que queramos cargar…

mantendremos apretado el pulsador mientras conectamos el módulo al programador para entrar en modo de programación.

En primer lugar, vamos a cargar un sketch de prueba, que va a hacer que el led parpadee…

lo podréis descargar de AQUÍ.

 

 

Ya sabemos programar nuestro módulo y vemos que funciona… ahora toca cargar el sketch de verdad y el accesorio a nuestro servidor HomeKit…

En este proyecto me he aprovechado del pulsador que tiene incluido el módulo Sonoff ( que lo hemos usado para programar ) para poder realizar el cambio de estado de La Luz y que el servidor reconozca el cambio de ese estado, como vimos en esta entrada ,y si queréis usar un pulsador externo, solo hay que soldarlo a las dos patas mas exteriores del pulsador. También ya que tenemos un led incorporado lo he usado para dos cosas, en primer lugar parpadea 10 veces cuando se conecta a la red wifi, y después marca el estado del relé, cuando esta activado se enciende y viceversa.

DESCARGAR SKETCH SONOFF

DESCARGAR ACCESORIO

En primer lugar , recordaros que tendréis que editar los archivos para cambiar , en el archivo de Arduino, el SSID , el PASSWORD de vuestra red WiFI y la ip de la raspberry, usando el IDE de Arduino , y en el  archivo del accesorio del servidor HomeKit la dirección IP del host, que es la ip de vuestra raspberry, usando el terminal …

El archivo .ino lo tendréis que cargar igual que el ejemplo anterior (blink) en la placa Sonoff, y archivo del accesorio dentro de la carpeta “accessories” del servidor HomeKit…

Si tenéis alguna duda del proceso en la raspberry, visitad ESTA entrada en la que se explica el proceso completo del servidor y los accesorios.

 

DonacionPayPal

Anuncios

45 Respuestas a “Módulo SonOff, Reprogramación para usarlo para HomeKit

    • Entra por ssh a la raspberry y en la consola
      ” sudo killall node” eso para el servidor, luego añade los accesorios y
      “Sudo reboot”
      Para reiniciar la raspberry
      Estoy actualizando el sketch del modulo para que funcione mejor si no esta conectado al wifi y se puede reiniciar desde el pulsador…

  1. Ok, muchas gracias. Cuando lo tengas súbelo por favor.
    Estoy pensando en hacer uno agregando un sensor de movimiento y que cambie de estado el relé al detectar movimiento, aparte de seguir teniendo el pulsador, crees que puede ser viable? Será fácil de hacer?

    • Ahora tengo entre manos, el modulo de persiana, pero se puede incluir en la lista de proyectos… ( no conozco ningún tutorial de ese modulo concreto)
      Suelo basarme en el “Fake accessory” que viene por defecto y empiezo a trabajar desde el…

  2. Antes de nada gracias por compartir todos estos conocimientos. Estoy intentando hacer la instalación y al intentar compilar el Sketch me da error, sale:
    no matching function for call to ‘pubsubclient….
    se te ocurre de que puede ser?
    Gracias.

  3. Hola, no consigo programar el sonoff de ninguna manera, he probado con DIO y con DOUT, pero nada, me salta este error

    Uploading 226384 bytes from C:\Users\USUARIO\AppData\Local\Temp\arduino_build_439795/LedParpadeo.ino.bin to flash at 0x00000000
    warning: espcomm_send_command: didn’t receive command response
    Ha ocurrido un error mientras se enviaba el sketch
    warning: espcomm_send_command(FLASH_DOWNLOAD_DATA) failed
    warning: espcomm_send_command: wrong direction/command: 0x01 0x03, expected 0x01 0x04
    error: espcomm_upload_mem failed

    si invierto el TX y el RX como he leído en foros me sale lo siguiente

    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    He probado con dos modulos SonOff y hacen lo mismo

    • después de estos mensajes de error el sonoff no funciona con ewelink ni aparece la señal wifi, el led no se enciende de ninguna forma

      alguna idea?

  4. solde los pines, los conecte al sonoff con el FTDI, en el id de arduino instale la versión 2.3.0 de esp8266, carge el sketch del led, configure los parámetros correctos, después pulse el pulsador mientras enchufaba el sonoff y luego intente subir el sketch al sonoff

  5. Conseguido, menudo lio…

    Ahora lo tengo añadido a la app de “casa” pero no hace nada, desde el pulsador si funciona, pero desde el movil nada, el led parpadea 10 veces por lo que supongo que estará bien conectado a la wifi

    • Para eso no hace falta que el esp este programado….
      Con tener la raspberry ejecutando el servidor es suficiente…
      Ejecuta el servidor de forma manual desde el terminal y comprueba si recibe algo cuando usas el pulsador del sonoff….
      Por cierto, como lo has solucionado?

      • cambiando el ID de arduino al 1.8.3

        Efectivamente no conecta, al usar el pulsador no sale nada por la terminal, aparentemente los parámetros para la wifi son correctos (la ip esta separada por comas)

  6. Según el monitor serie si que se conecta bien a la wifi, pero por algo que desconozco no envía el mensaje o no lo envía bien a la raspberry

    • Hay 4 cosas que se encargan de la comunicación entre el esp8266 y la app
      El servidor de la raspberry , hay que comprobar que se este ejcutando correctamente.
      El archivo del accesorio en el servidor, hay que comprobar el host, corrsponde con la ip del la raspberry y el clientId corresponde con el nombre del canal que le hemos dado al accesorio en el esp.
      El esp8266, hay que comprobar que este bien programado
      El archivo del accesorio en el esp8266 , hay que comprobar que la ip del host es la ip de la raspberry y el id corresponde con el clientId del accesorio de la raspberry….
      Si has comprobado todo eso y esta correcto….
      Compruébalo todo de nuevo y si vuelve a estar bien, repite el proceso desde el principio…

  7. con esta librería el sketch wifi_sonoff_homekit_pulsador_reset.ino da errores por todos lados, muchas funciones no existen en la librería nueva

  8. Ese error me sale después de cargar el sketch unos segundos después de abrir el serial, sale cuando quiere o no sale nada, pero a la wifi no se conecta de ninguna forma con tu sketch.

    Puedes subir la librería ESP8266WiFi que tienes? lo mismo es por la versión la que me esta molestando…

    Otra cosa que he visto es que en tu sketch no le pasas el puerto por el que se conecta a la raspberry y en todos los otros que he probado si se lo indican.

  9. Ya la había probado y nada, hacia lo mismo, me parece que algo me esta tomando el pelo porque con el código nuevo cuando quiere funciona y cuando no no hace nada o salta error.
    Tengo que cargar el sketch 3 o 4 veces de media y cuando dice que no quiere pues no hay forma, no se si será el código, el cable, el modulo FTDI, o las dos SonOff con las que estoy probando….

    De momento uno de los sonoff funciona, me falta añadirle el interruptor, el otro lo estoy usando para cargar el nuevo código para el interruptor

  10. Bueno, ya he conseguido programar el Sonoff no sin algunos problemillas. Entre ellos he tenido que desactualizar PubSubClient y cambiar en Arduino la configuración de Flash Mode. Recomiendo a otros que intenten seguir este tuto que lean primero todas tus entradas sobre Sonoff.

    Al volver a la Raspberry, hay una parte que no entiendo:

    “y en el archivo del accesorio del servidor HomeKit la dirección IP del host, que es la ip de vuestra raspberry, usando el terminal …”

    O sea, si he elegido el accesorio “Light1estado_accessory.js” donde modifiqué la “ip” y el “clientid”, ¿tengo que volver a editarlo e incluir las líneas de aquí?:

    https://github.com/lisergio/homekit-reprogramacion-sonoff/blob/master/Sonoff1estado_accessory.js

    Perdona, pero estoy algo perdido.

    • La mejor forma de crear el accesorio en el servidor, es navegar desde la consola a la carpeta accesories… una vez alli, creas el archivo,
      “ sudo nano Sonoff1estado_accessory.js “ y te creara un archivo de texto vacio.
      Desde el navegador vas al enlace de arriba en github y copias el codigo completo del accesorio, y lo pegas en el terminal, donde has creado el archivo vacio… antes de guardas, le cambias la ip por la de tu raspberry, y el clientid y ya esta…
      Lo guardas con ctrl x y reinicias el servidor…
      si te deja descargar desde github, comprueba que el código sea el que se ve en el enlace… depende de como se descargue , al abrirlo es un código html que no va a funcionar…

      • ¡Genial, Sergio! Ya funciona casi todo 🙂 Aunque me quedan algunas algunas preguntas, por si puedes resolvérmelas.

        Cada vez que inicio Raspberry, tengo que iniciar el servidor a mano porque no se ejecuta al inicio. He editado “rc.local” como indicas en el manual pero no acaba de arrancar.

        Por otra parte, para hacer que la luz pueda funcionar también con un pulsador externo, ¿dónde dices que hay que soldarlo? ¿En el Sonoff?

        Y la última duda. ¿Cuántos dispositivos se pueden conectar por servidor?

        ¡Un saludo!

      • El numero de dispositivos, no sabría decirte… muchos… yo tengo unos 20 pero creo que no hay limite…
        El pulsador habria que soldarlo en paralelo al pulsador del sonoff… es como si pulsas el pulsador del sonoff…
        Y el autoarranque.. no se que decirte… yo lo he hecho hace poco y me ha funcionado…

      • Perfecto, gracias.

        Voy a seguir intentando lo del arranque del servidor al inicio, porque en cuanto lo configuro y activo para que lo haga, Raspbian me lanza el error “Failed to start /etc/rc.local compatibility” y no deja ni ejecutar el servidor de forma manual.

      • Nada, lo más sencillo del mundo. He editado el archivo /etc/rc.local” añadiendo estas tres líneas antes de “exit 0”.

        sudo su
        cd /home/pi/node-v6.8.0-linux-armv7l/HAP-NodeJS
        sudo node Core.js

        Funciona tal cual, sin hacerlo ejecutable.

        ¡Gracias por todo! Voy a seguir probando tus tutos 🙂

  11. Quiero posicionar el sonoff cerca del pulsador.Si conecto la linea y la fase a la entrada del son off, sueldo unos cables en los pines del gpi0 para mi pulsador, pero la salida donde la conecto?

      • Pero en el lado del interruptor solo me llegan dos cables, la fase y el neutro. Tengo que poner el sonoff cerca de la bombilla que esta en el techo y tirar un cable hasta el pulsador?

      • No se como tienes la instalación en tu vivienda…
        pero imagino que tendrás en el interruptor la fase y el cable que va a la lampara, asi que tendras que cambiar el cableado, ya que el pulsador tiene que ir directo a la placa sonoff…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s