Potente sistema de automatización del hogar independiente: Pi, Sonoff, ESP8266 y Node-Red: 9 pasos (con imágenes)
Potente sistema de automatización del hogar independiente: Pi, Sonoff, ESP8266 y Node-Red: 9 pasos (con imágenes)

Video: Potente sistema de automatización del hogar independiente: Pi, Sonoff, ESP8266 y Node-Red: 9 pasos (con imágenes)

Video: Potente sistema de automatización del hogar independiente: Pi, Sonoff, ESP8266 y Node-Red: 9 pasos (con imágenes)
Video: Academia Automatización del Hogar 2025, Enero
Anonim
Potente sistema autónomo de automatización del hogar: Pi, Sonoff, ESP8266 y Node-Red
Potente sistema autónomo de automatización del hogar: Pi, Sonoff, ESP8266 y Node-Red

Esta guía debería llevarlo a la primera base donde puede encender / apagar una luz o un dispositivo a través de cualquier dispositivo que pueda conectarse a su red local, y con una excelente interfaz web personalizable. El alcance para ampliar / agregar funciones es amplio, incluido el envío de correos electrónicos, mensajes de Twitter, sensores de lectura (por ejemplo, temperatura). Puede establecer reglas fácilmente, p. Ej. - si la temperatura es inferior a 15 ° C a las 23:00 h, encienda la manta eléctrica durante 30 minutos. El sistema usa el protocolo MQTT con TCP que es considerablemente más confiable que UDP, que sorprendentemente es usado por algunos dispositivos domóticos comerciales. Una vez que haya terminado el arduo trabajo de configurar el sistema, que se describe aquí, la diversión puede comenzar. Node Red proporciona una fantástica interfaz de usuario que es intuitiva, rápida y fácil de configurar, y ofrece una capacidad asombrosa.

El resultado es un potente sistema de automatización del hogar que está completamente bajo el control de uno mismo y está completamente en una red local. Muchos de los sistemas que se muestran en Instructables funcionan con servidores basados en la nube y, por lo tanto, representan un riesgo de seguridad y pueden requerir suscripción. Estos son más fáciles de configurar, pero tienen un mayor riesgo de seguridad y un costo potencialmente mayor. Debo agregar que se puede configurar una VPN (red privada virtual) al Pi para permitir una conexión segura a la red / sistema doméstico si el acceso desde el exterior sería útil (Google Pi OpenVPN para obtener instrucciones).

Este sistema requiere reprogramar los dispositivos Sonoff con un gran sistema de código abierto llamado Sonoff-Tasmoda. Esto se puede hacer usando una configuración especial de Arduino y un convertidor de USB a serie. Los dispositivos Sonoff usan el chip Wi-Fi ESP8266, por lo que también puede crear sus propios dispositivos usando módulos ESP8266 o ajustarlos a otros elementos para brindar conectividad inalámbrica.

La tarea más importante es configurar una Raspberry Pi como centro. Ejecuta el intermediario (o servidor) MQTT que gestiona la comunicación con los dispositivos conectados. El Pi también ejecuta un sistema llamado Node-Red que puede interceptar mensajes y datos y enviar comandos, como cuándo encender la manta eléctrica. Node-Red también proporciona una interfaz para servir la página web a la que puede iniciar sesión a través de un teléfono inteligente / tableta / PC / computadora portátil, para ver qué está sucediendo y habilitar el cambio manual de luces, etc.

Mi objetivo con este instructivo es dar cada paso con suficiente detalle para que un principiante pueda hacer funcionar el sistema.

Los pasos son:

  • Cargar un Pi con Rasbian Stretch
  • Actualizar y agregar funciones a Node-Red
  • Instale el broker Mosquitto MQTT
  • Configure el entorno Arduino para cargar el firmware Sonoff-Tasmota
  • Reprogramar un interruptor Sonoff
  • Configurar la interfaz Node-Red
  • Pruébalo todo funciona.

Hardware que necesitará:

  • Raspberry Pi y fuente de alimentación (y teclado y monitor para la configuración inicial) (modelo B usado aquí)
  • Interruptor Sonoff
  • Convertidor serial USB
  • Opcional: placa de desarrollo ESP como NodeMCU.

Mi experiencia con la Raspberry Pi es que configurar cualquier cosa parece implicar mucho más dolor de lo que uno podría imaginarse posible con cosas que no funcionan o que se atascan en algún paso trivial donde la explicación podría haber sido mejor. ¡Los foros no siempre reciben consejos que funcionen! Encontré varias rutas que simplemente no funcionaron por una razón u otra. ¡Esto cuesta 3 días! Luego limpié todo y comencé de nuevo y terminé en menos de un (largo) día. Sin embargo, esto usó la Raspian Jessie mayor. Después de esto, encontré una manera de usar la versión actual y recientemente lanzada (Stretch) y lo hice todo de nuevo. Esta guía permite copiar y pegar instrucciones en la Pi. Entonces deberías terminar en unas pocas horas. De todos modos, espero que esto te ayude a subir más rápido en la curva de aprendizaje y con mucho menos dolor. Créame, vale la pena por el resultado final.

Paso 1: Cargue un Pi con Rasbian Stretch

Esto debería ser bastante sencillo. Comience con una tarjeta SD de 8 Gb o 16 Gb. Descargue la última versión de:

www.raspberrypi.org/downloads/

El hilo principal aquí asume que la versión completa está cargada. Sin embargo, puede utilizar la versión lite para ahorrar espacio. Si usa Raspbian Stretch Lite, continúe con este paso y luego vaya al Paso 9 al final.

Al descomprimir el archivo descargado, aparece una carpeta con el archivo.img. Se recomienda 7Zip para Windows (y The Unarchiver Mac). La imagen debe grabarse en la tarjeta SD, pero debe utilizarse un programa especial ya que el sistema de archivos no es compatible con Windows. El software recomendado se llama Etcher y se puede descargar desde:

etcher.io/

Las instrucciones para Etcher están en su sitio web y no podrían ser más simples. Seleccione la imagen y la unidad y haga clic en Flash.

Ahora, con nuestra tarjeta SD con flasheo, puede hacer que el Pi funcione.

Si conoce la dirección IP que usa su Pi o está feliz de encontrarla iniciando sesión en su enrutador, puede evitar la necesidad de un teclado y un monitor y usar SSH de inmediato. Simplemente agregue un archivo en blanco llamado SSH a la tarjeta SD, insértelo, conéctelo a Ethernet y enciéndalo. De lo contrario, siga la guía a continuación.

Conecte el Pi a Internet, la pantalla, el mouse y el teclado y conéctelo a la alimentación. Lo primero que haremos es habilitar SSH para que podamos realizar la mayor parte de la configuración desde la comodidad de una PC. Por supuesto, se puede hacer directamente, pero es de gran ayuda poder seguir esta guía en el mismo dispositivo que uno que conduce el Pi y usar copiar y pegar para la mayoría de las instrucciones. También en mi caso, la estación de trabajo de mi PC es agradable y cómoda, pero tampoco lo suficientemente grande para un pi.

Hay una guía para una buena parte del trabajo en un video de YouTube. Aquí es donde comencé. Puede ejecutar el video al lado siguiendo estas instrucciones. Sin embargo, cuando estaba ejecutando el proceso nuevamente mientras escribía esto, me resultó más fácil seguir las instrucciones aquí. Hay algunas desviaciones importantes. También hay algunas secciones en las que he recomendado seguir el video en lugar de enumerar los pasos aquí. Sin embargo, recomendaría mirarlo para comprender MQTT, Node-Red y el amplio proceso de configuración. El video dura 38 minutos, así que póngase cómodo. El video comienza mostrando lo que Node Red puede hacer, y luego cubre la instalación y configuración de Pi, seguido de la actualización de Node Red y, por último, la instalación de Mosquitto. Tiempos clave en caso de que desee volver a una sección:

00:00 Introducción al video

03:00 Demostración de Node Red

14:14 Importación de elementos del tablero en Node Red

21:05 Configuración inicial de Pi, incluido SSH

23:35 Instalación del código de soporte de Node Red

27:00 Introducción a MQTT

29:12 Instalación de Mosquitto (MQTT) (Nota solo funciona para Raspian Jessie)

33:00 Ejemplos de Node Red

Enumeraré los comandos en negrita y cursiva (en lugar de usar “”). Este formato se ignora cuando los copia y pega en el Pi.

La introducción a Node Red le dará una idea de lo que puede hacer el sistema y le dará una idea de dónde terminaremos.

El video de YouTube está en:

Siga el procedimiento de instalación de 21:05 a 23:35. Tenga en cuenta que el inicio de sesión predeterminado es usuario: pi y contraseña: frambuesa. Antes de reiniciar, busque la dirección IP de pi. Haga clic en el ícono de "flecha arriba + abajo" en la barra superior del escritorio o ingrese la siguiente instrucción en la terminal / ventana de terminal:

sudo ifconfig dirección

Luego, anote la dirección IP después de: inet addr:. Tendrá el formato 192.168.x.y

Anote esta dirección y reinicie (ingrese: sudo shutdown –r ahora)

La clave en este punto es que SSH se ha habilitado y se puede configurar un enlace al Pi desde una PC (Mac y Linux incluyen interfaces SSH). Un buen programa para hacer esto es una descarga gratuita llamada PuTTY que también se puede usar como interfaz serial y puede hacer Telnet. La masilla está disponible en:

www.chiark.greenend.org.uk/~sgtatham/putty…

Descargue e instale PuTTY.

Ahora, con el Pi reiniciado, inicie PuTTY e ingrese la dirección IP anotada anteriormente. Vea el ejemplo a continuación:

Ahora haga clic en Abrir

Después de iniciar sesión como: ingrese pi

Luego ingrese su contraseña.

Ahora siga las instrucciones aquí y, opcionalmente, comience el video a partir de las 23:35. En la mayoría de los casos, puede copiar y pegar. Resalte el texto y use ctrl + C para copiar. Luego haga clic derecho en PuTTY para pegar. A veces, el texto no aparece de inmediato, así que espere unos segundos. Si ingresa dos veces, use la tecla de retroceso para eliminar la segunda entrada. Presione enter para ejecutar cada instrucción.

sudo raspi-update

Recibí un comando no encontrado e ignoré esto y la siguiente instrucción de apagado / reinicio:

sudo shutdown -r ahora

sudo apt-get -y actualización

sudo apt-get -y actualización

Esto lleva un tiempo …

sudo apt-get autoremove

sudo apt-get -y actualización

sudo shutdown -r ahora

En este punto tenemos el sistema operativo Pi cargado y actualizado, listo para el siguiente paso.

Paso 2: actualice y agregue funciones a Node-Red

La conexión PuTTY se habrá perdido por el reinicio al final del paso anterior. Así que cierre PuTTY y después de esperar a que arranque el Pi, inicie sesión de nuevo como antes.

Me mudé a un método más simple y confiable para cargar Node-Red, siguiendo el enfoque en https://nodered.org/docs/hardware/raspberrypi. Esto usa un script e instalará o actualizará Node-Red, por lo que el enfoque es el mismo que funciona con las versiones completa o lite de Raspbian Stretch. Entonces ingrese:

bash <(curl -sL

Ingrese Y cuando se le solicite (dos veces). Este script también carga los archivos necesarios para habilitar el inicio automático de Node-Red.

Entonces, en este punto, tenemos nuestro pi cargado y actualizado y con las actualizaciones necesarias para Node Red. No está de más hacer un reinicio antes de la siguiente etapa.

sudo shutdown -r ahora

Paso 3: Instalación de Mosquitto MQTT

Si aún no lo ha hecho, vale la pena ver el video de introducción a MQTT en el video a partir de las 27:00.

Aquí es donde debemos tomar un camino diferente. El procedimiento descrito en el video solo funciona para la versión anterior de Jessie de Raspian. Hay una discusión sobre el sitio de mosquitto, pero no se muestra un resultado claro y, por lo tanto, se apegará a una ruta más simple y segura.

Así que inicie sesión usando PuTTY e ingrese lo siguiente:

sudo apt-get update

sudo apt-get install mosquitto mosquitto-clients

Y

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitto start

Las dos últimas instrucciones se detienen e inician mosquitto y muestran que nuestro corredor MQTT está funcionando.

Para una prueba rápida, abra dos sesiones PuTTY más e inicie sesión en cada una.

A estas alturas ya sabrá que MQTT funciona con el dispositivo y los datos de las necesidades se suscriben a un 'tema'. El corredor enviará cualquier dato con el mismo 'tema'. Luego, el dispositivo que desea enviar datos / instrucciones lo publica al corredor usando el mismo 'tema'.

Entonces, en una sesión de PuTTY ingrese:

mosquitto_sub -d -t hola / mundo

Esta es una instrucción para suscribirse al tema: hola / mundo.

En el otro ingrese:

mosquitto_pub -d -t hola / mundo -m "¡Hola desde la ventana de Terminal 2!"

Esta es una instrucción de publicación con el mismo tema con un mensaje. El texto: "¡Hola desde la ventana de Terminal 2!" ahora debería aparecer en la otra terminal.

Bien hecho llegar tan lejos. Ahora tenemos el Pi cargado y actualizado con las actualizaciones necesarias para Node-Red y con el broker mosquito MQTT instalado y probado. A partir de ahora la vida se vuelve más fácil y divertida. Cierre las dos sesiones PuTTY utilizadas para la prueba MQTT.

Paso 4: Configuración de la interfaz Node Red

Primero tenemos que iniciar Node Red. Ingrese la instrucción:

node-red-pi --max-old-space-size = 256

Espere a que comience a funcionar y verá el texto "Flujos iniciados".

Ahora abra un navegador, uso Chrome e ingrese la dirección IP pi anotada anteriormente seguida de: 1880, es decir, algo como 192.168.0.8:1880

Ahora debería tener la página de programación Node Red a la vista como se muestra a continuación:

Ahora puede seguir los ejemplos de Node Red a partir de las 33:00 o pasar directamente a una pequeña configuración adicional y cargar el primer flujo que mostrará el enlace a MQTT y estará listo para manejar nuestro conmutador.

La configuración adicional necesaria es agregar los elementos del tablero que habilitan una interfaz web.

Estos se muestran en el video a las 14:14.

Siga las instrucciones para cargar node-red-dashboard.

Ahora podemos jugar un poco y mostrar a MQTT funcionando y siendo impulsado por Node-Red. Esto no está en el video pero es clave para este proyecto. Puede seguir mis instrucciones y / o importar los flujos del archivo NRtest1.txt adjunto.

Primero agregue un nodo de inyección de entrada y un nodo mqtt de salida y vincúlelos.

Haga doble clic en el nodo de inyección (que inicialmente está etiquetado como marca de tiempo). En la sección Carga útil, use el twiddly para cambiar a cadena e ingrese: Hola de mí. Deje el tema en blanco ya que podemos ingresarlo en el nodo MQTT. Haga clic en Listo

Ahora haga doble clic en el nodo MQTT. Haga clic en el icono de lápiz a la derecha de la sección Servidor. Esto abre un nuevo diálogo. Ingrese: localhost en la sección Servidor. Haga clic en Agregar. Ahora, de vuelta en el nodo Editar mqtt out, ingrese nuestro tema en la sección Tema: hola / mundo. Establezca QoS en 1. Haz clic en Listo. Ahora haga clic en Implementar. Debería ver una mancha verde y "conectado" debajo del nodo mqtt.

Ahora agregue dos nodos más: mqtt de entrada y depuración de salida, y conéctelos. Ahora haga doble clic en el nodo de entrada mqtt e ingrese hello / world en la sección de temas. El servidor ya debería mostrar localhost: 1883. Establezca QoS en 1. Haz clic en Listo. Luego haga clic en Implementar y haga clic en la pestaña de depuración en el panel de la derecha. Ahora haga clic en el cuadrado gris a la izquierda del nodo de inyección "Hola de mí". Esto envía la carga útil de texto al corredor de MQTT con el tema hola / mundo. El intermediario sabe que el nodo de entrada mqtt se ha suscrito al mismo tema y, por lo tanto, reenvía la carga útil. El nodo de entrada mqtt envía esto a la pestaña de depuración (RHS) y debería aparecer el texto 'Hola de mí'.

Esto marca otra casilla ya que tenemos a Node Red hablando con nuestro bróker MQTT. Tenga en cuenta que Node Red es solo un cliente para el corredor, como los dispositivos Sonoff que conectaremos más adelante. Sin embargo, permite una automatización sofisticada y proporciona una excelente interfaz de usuario.

Ahora podemos hacer un par de pequeños cambios y configurar los flujos para nuestro conmutador Sonoff.

Por lo tanto, elimine el nodo de inyección de entrada (haga clic para resaltar y presione la tecla Eliminar). Ahora agregue un interruptor de la sección del tablero y conéctelo a la salida mqtt. Interruptor de doble clic. Haga clic en el lápiz a la derecha de Grupo. Ingrese en Nombre: Light. Luego haga clic en el lápiz a la derecha de la pestaña y entre en la sección Nombre: Salón. Haga clic en Agregar / Actualizar y Agregar / Actualizar nuevamente. Ahora, de vuelta en el nodo Editar interruptor, configure las cargas útiles de encendido y apagado. Use los twidlys para seleccionar la cadena e ingrese ON para la carga útil On y OFF para la carga útil OFF. Haga clic en Listo

Ahora vaya a cada uno de los nodos mqtt y cambie el tema a cmnd / sonoff / POWER. Si copia y pega, compruebe que no haya incluido un espacio al final. Este es un tema diferente y no funcionará con Sonoff. Encontrar un espacio perdido puede llevar una hora más o menos, ¡créame! También fui al tablero> Tema y seleccioné: Oscuro. Haga clic en Implementar y seleccione la pestaña de depuración.

Ahora abra una nueva sesión de navegador en una nueva ventana y dimensione como un teléfono móvil sobre la sesión de Node Red. Ingrese la dirección: su dirección IP de Pi: 1880 / ui / # / 0, es decir, algo como 192.168.0.8:1880/ui/#/0. Debería ver una pantalla con Lounge and Light y un interruptor. Haga clic en el interruptor de encendido y luego apagado. La ventana de depuración debe mostrar las cargas útiles ON y OFF. Ahora, si lo desea, también inicie sesión a través de un dispositivo móvil. Tenga en cuenta que la posición del interruptor está sincronizada. No importa que nuestro Sonoff aún no esté conectado. Cuando lo esté, al suscribirse al tema, recogerá el mensaje / carga útil y actuará en consecuencia.

Un último pequeño paso es hacer que Node Red se inicie automáticamente después de que se inicie el Pi.

Node Red tiene una guía en:

Sin embargo, los archivos necesarios ya están cargados, por lo que no se requiere instalación.

Para luego permitir que Node-RED se ejecute automáticamente en cada arranque y en caso de fallas, ingrese (abra la sesión PuTTY):

sudo systemctl enable nodered.service

Si alguna vez necesita deshabilitar esto, ingrese:

sudo systemctl deshabilitar nodered.service

Ahora apague el pi con sudo shutdown ahora y desconecte la energía.

Esto ahora tiene nuestra Pi bloqueada y cargada lista para la acción. Tenemos nuestra PC / teléfono móvil conectándose a Node Red y esto hablando con nuestro servidor MQTT. Este ha sido un largo camino y merece una gran palmada en la espalda. Bien hecho. Encontré el siguiente, Arduino, ¡mucho más fácil!

Paso 5: Configuración del sistema Arduino para reprogramar dispositivos Sonoff

Toda la información para hacer esto está en Sonoff-Tasmota GitHub. La única parte con la que tuve dificultades fue el texto del tema, ¡pero astutamente te hice ingresar esto ya!

Vaya a

Encontrará las instrucciones de configuración en la pestaña Wiki en la sección de herramientas de carga:

En lugar de seguir todos los pasos, solo señalaré los aspectos clave que sentí que eran importantes o en los que me quedé atascado.

Las instrucciones son buenas pero necesitan una cuidadosa atención a los detalles. Me tropecé porque se necesitaba una carpeta ESP8266 dentro de una carpeta que estaba dentro de otra carpeta llamada ESP8266 y, por lo tanto, me perdí dos niveles.

Seguí la recomendación para una configuración de Arduino completamente separada. Creé una nueva carpeta llamada "ArduinoSonoff" que está separada de mi carpeta Arduino existente. La configuración es bastante avanzada y, por lo tanto, mantenerla separada es una muy buena idea. Si esta es su primera configuración de Arduino, asegúrese de instalarla por segunda vez en un "Arduino" u otra carpeta para cualquier otro trabajo de Arduino, incluido el trabajo en ESP8266.

Descargue el IDE de Arduino más reciente de https://www.arduino.cc/en/Main/Software. Descomprima el archivo en su nueva carpeta.

Las instrucciones incluyen descargar el sistema Sonoff-Tasmoda desde https://github.com/arendst/Sonoff-Tasmota página principal a través de: Clonar o Descargar> Descargar ZIP. Descomprima el archivo en su nueva carpeta.

Siga las instrucciones con atención. No hice la sección Opcional: prepararse para la carga de OTA. Dejaremos esto para otro día.

Ahora inicie el IDE de Arduino (haga doble clic en arduino.exe). Cargue el boceto de Sonoff-Tasmota a través de Archivo> Cuaderno de bocetos> sonoff. No es necesario realizar modificaciones. Todos los ajustes se realizan a través de una conexión en serie después de que se carga el firmware. Estos se almacenan en EEPROM. Por lo tanto, el firmware se puede actualizar y conservar todas las configuraciones. Esto es bastante inteligente. Sin embargo, puede evitar la necesidad de seguir un par de pasos aquí yendo al archivo user-config.h e ingresando su SSID y contraseña wifi y MQTT_HOST (reemplace "domus1" - segunda referencia, con su dirección IP de Pi). Más adelante, es posible que también desee ingresar un usuario y una contraseña de MQTT. Antes de descargar, compruebe la configuración de la placa en Herramientas. Estos necesitarán un par de cambios para cumplir con los requisitos establecidos en el Wiki. Ahora haga clic en compilar (marque el icono). Debería compilarse bien. Si no es así o si la configuración requerida de la placa no está disponible, regrese y verifique cada paso de la configuración.

Paso 6: reprogramar un interruptor Sonoff

Ahora estamos listos para descargar. En esta etapa, uno puede seguir recto y encender un interruptor Sonoff o primero puede encender un módulo ESP8266. Hice lo último, en parte porque mis interruptores aún no habían llegado (¡recién llegaron mientras escribo esto!), Pero también como precaución, ya que el parpadeo del interruptor Sonoff es un paso unidireccional ya que el firmware original no está disponible públicamente en la medida en que Soy consciente. Tengo un par de placas NodeMCU. Estos son fáciles de conectar, ya que tienen su convertidor de USB a serie integrado. Sin embargo, el método de reinicio de nodemcu no funciona con este sistema. Así que deje Herramientas> Método de reinicio configurado en "ck". Realice la configuración normal del flash manual manteniendo presionado el botón Flash (GPIO 0 al suelo) mientras presiona y suelta Reset (Restablecer al suelo). No estoy seguro de si esto tiene un tiempo de espera o tal vez no mantuve GPIO 0 bajo durante el tiempo suficiente, pero necesité varios intentos, ¡incluso hacer esto mientras se compila el IDE de Arduino!

Si desea verificar las respuestas, la salida de relé es D6 en las placas NodeMCU. En ESP12, esto es GPIO 12. La salida LED es D7 (NodeMCU) o GPIO 13 (ESP12).

Interruptor Sonoff.

ADVERTENCIA: Tengo que decir “no conecte a la red eléctrica bajo ninguna circunstancia donde el gabinete esté abierto”. Tenga en cuenta que la PCB (al menos en el Sonoff Basic (interruptor en línea) solo tiene distancias de 'aislamiento único' entre la sección de bajo voltaje y la red. Por lo tanto, se debe tratar cualquier parte del circuito Sonoff como voltaje de red. Tasmota GitHub muestra la conexión de un sensor de temperatura y humedad a un Sonoff S20. No haría esto debido a problemas de aislamiento. - Entonces, si desea hacer esto, obtenga un módulo ESP12 o NodeMCU y configúrelo por separado con un aislamiento doble adecuado. o fuente de alimentación conectada a tierra.

El interruptor enchufable Sonoff S20 es un buen punto de partida, ya que no necesita ningún cableado de red. Esto se puede abrir quitando un tornillo (debajo del sello de seguridad) y abriendo la caja. La foto de abajo muestra dónde están las etiquetas. Apretar el caso en estos puntos ayuda.

Convertidor de serie USB

Mi convertidor favorito es la versión FTDI. Sin embargo, esto no tiene la capacidad adecuada para satisfacer las necesidades de Sonoff 3.3v. La especificación FTDI dice un máximo de 50 mA. La siguiente mejor alternativa es la que utiliza el chip CP2102. Sin embargo, esto tiene un límite de 100 ma que todavía no es suficiente. Claramente, muchos están usando este convertidor directamente, pero también hay informes de fallas en la carga. Limitaría el tiempo que está conectado, ya que se calentará bajo la carga. Haga esto bajo su propio riesgo. La solución ideal es tener también un regulador de 3.3v, p. Ej. un AMS1117 3.3. Hice un pequeño PCB para habilitar esto. Consulte Programador para dispositivos Sonoff.

Mi secuencia de programación es la siguiente:

Abra el IDE de Arduino.

En Herramientas, compruebe que la configuración sea la misma que en Wiki.

Realice las modificaciones necesarias en user_config.h. Configuré el SSID y la contraseña de Wifi y la dirección del corredor de MQTT y los detalles de la zona horaria / horario de verano.

Haga clic en "verificar" para comprobar que se compila correctamente.

Conecte el convertidor serie USB (solo) a la PC. Anote el número de puerto.

Ahora desconecte el cable serial USB de la PC y conéctelo al interruptor Sonoff. Verifique que las conexiones a tierra y 3v3 estén en la forma correcta (la tierra está conectada al plano de tierra en el PCB Sonoff).

Sostenga el programador de manera que los contactos estén seguros mientras también presiona el botón.

Ahora conecte el cable USB a la PC, verifique que el número de puerto sea correcto (en Herramientas), luego haga clic en descargar.

Sigo presionando el botón durante toda la programación porque no quiero interrumpir las conexiones.

Cuando termine, debería ver una pantalla como la siguiente:

Imagen
Imagen

El Sonoff necesita un par de bits de información para conectarse a nuestro sistema: el SSID y la contraseña de la red local wifi, y la dirección IP de Pi. Hay varias formas de hacer esto, una de las cuales es modificar el archivo config.ino como se indicó anteriormente. Si tiene un teléfono inteligente, puede (después de volver a montar el interruptor) presionar el botón Sonoff 4 veces con bastante rapidez para ponerlo en modo de servidor web. El LED parpadeará. Tuve que intentarlo varias veces para que esto funcionara. Luego, busque en su teléfono inteligente la nueva red Sonoff y conéctese. Aparecerá una página web donde puede configurar los datos requeridos. La dirección IP de Pi entra en el nombre de host. También cambié el segundo SSID y contraseña a algo largo y básicamente inutilizable.

Alternativamente, se puede configurar a través de la conexión en serie justo después de la carga. Abra el monitor serie Arduino (en Herramientas).

Comandos para ingresar:

SSId suWiFiSSID

Contraseña yourWiFiPassword

MqttHost 192.168.x.y (dirección IP de PI)

También puede ingresar SSId1 y Password1 seguidos de algo largo e inutilizable para deshabilitar esto de manera efectiva.

Ahora puede encasillar el interruptor Sonoff, abrir Node-Red y el tablero de Node-red y hacer clic en el botón del interruptor y mirar la pestaña de depuración que ahora debería incluir las respuestas del Sonoff. Así que hemos logrado otro paso importante: nuestro primer conmutador se maneja desde una PC / teléfono inteligente.

Hasta ahora no hemos mencionado la seguridad. Existe la posibilidad de utilizar comunicaciones cifradas. Esto es bastante complejo de configurar y probablemente más apropiado cuando se utiliza un corredor basado en la nube. También existe la opción de agregar nombres de usuario y contraseñas para todos los dispositivos conectados y no permitir usuarios anónimos. Esto es bastante sencillo de configurar. Y ahora a Seguridad.

Paso 7: seguridad

MQTT permite nombres de usuario y contraseñas para cada cliente. Esto es fácil de configurar. Probablemente sea más fácil primero cambiar el nombre de cada dispositivo y luego configurar sus nombres de usuario y contraseñas. Esto se puede hacer a través de comandos MQTT, y Node-Red es probablemente la forma más fácil de enviarlos. Primero decida sobre una convención de nomenclatura. Una opción es basar los nombres en la ubicación y la función. Luego, querrá registrar el nombre de usuario (tema) y la contraseña junto con el tema de respaldo. Tenga en cuenta que también hay una "opción de restablecimiento" para restablecer la configuración de Sonoff a la descarga original (consulte Uso de Wiki> Funcionalidad del botón).

Encienda el pi y después de unos segundos abra un navegador a Node-Red (dirección IP: 1880).

En Node-Red, configure un nodo de inyección y vincúlelo a una salida mqtt y configure el servidor mqtt en localhost. Deje el tema, el usuario y la contraseña en blanco, ya que los configuraremos en el nodo de inyección. También configure un nodo de entrada mqtt y conéctelo a un nodo de depuración para que podamos ver las respuestas. Establezca la nota de entrada mqtt en localhost (ya debería estar configurada) e ingrese + / + / + para el tema para que capte todo el tráfico.

Ingrese la siguiente secuencia de configuraciones en el nodo de inyección.

Primero verifique la conectividad con

Tema: cmnd / sonoff / Estado

Mensaje: 6

haga clic en "Inyectar una vez al inicio". Desplegar. Deberíamos ver la depuración que incluye 7 líneas de datos de stat / sonoff / STATUS6

Ingrese Tema: cmnd / sonoff / Tema y Mensaje: loungelight. Desplegar. Esto cambia el nombre del interruptor de sonoff a loungelight

La pestaña de depuración debería mostrar el dispositivo reiniciando con su nuevo nombre / tema

Tema: cmnd / loungelight / MqttUser

Mensaje: loungelight

Haga clic en implementar. Se debe ver una depuración desde stat / loungelight / RESULT con {"MtqqUser": "loungelight"}

Tema: cmnd / loungelight / MqttPassword

Mensaje: loungelightPW (¡tenga en cuenta que sea más imaginativo que esto!)

Borre la pestaña de depuración e implemente.

Se debe ver una respuesta desde stat / loungelight / RESULT con {"MqttPassword": "loungelightPW"}

Ahora ingrese NodeRed y NodeRedPW como nombre de usuario y contraseña en el nodo de salida mqtt. Esto es a través del icono de lápiz del servidor y la pestaña de seguridad en la ventana que se abre. Esto se copia automáticamente a los otros nodos MQTT.

Vuelve a consultar con

Tema: cmnd / loungelight / Estado y mensaje: 6. Desplegar.

Y que se envíe la respuesta.

Entonces, en este punto, hemos cambiado el nombre de nuestro dispositivo Sonof para que escuche los temas cmnd / loungelight / …… e inicie sesión en el servidor MQTT con el nombre de usuario loungelight y la contraseña loungelightPW. También hemos establecido un nombre de usuario y contraseña para Node-Red.

A continuación, tenemos que decirle al servidor Mosquito MQTT que solo acepte clientes con nombres de usuario y que enumere los nombres de usuario y las contraseñas que se aceptarán.

El procedimiento es:

  • Detener el mosquito
  • Crea tu propio archivo de configuración
  • Editar archivo de configuración
  • Crear archivo de contraseña
  • Agregue usuarios / contraseñas.

Así que inicie sesión con una nueva sesión de PuTTY y ejecute los siguientes comandos:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Esto inicia el editor.

Agregar líneas:

allow_anonymous falso

archivo_contraseña /etc/mosquitto/conf.d/passwd

require_certificate falso

Guardar y salir (Ctrl + X), Y, entrar.

sudo touch passwd Esto crea un archivo de contraseña y las siguientes instrucciones agregan nombres y contraseñas.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitto reiniciar

Tenga en cuenta que al agregar un nuevo dispositivo, deberá ingresar el usuario y la contraseña a través del puerto serie y agregarlos al archivo de contraseña o cambiar temporalmente el archivo de configuración de mosquitto y comentar (agregar # al comienzo de la línea) las líneas "allow_anonymous false "y" password_file /etc/mosquitto/conf.d/passwd "y luego restablecerlos cuando los detalles hayan sido enviados al dispositivo y agregados al archivo de contraseñas como se indicó anteriormente.

Hemos cambiado el nombre de sonoff a loungelight y, por lo tanto, actualizamos el nodo de salida mqtt (conectado al conmutador) para usar el tema cmnd / loungelight / POWER.

Haga clic en Implementar y verifique que los nodos mqtt muestren 'conectados'.

A continuación, pruebe el botón del interruptor y busque la depuración que muestra el interruptor Sonoff respondiendo. Notará que el dispositivo muestra el cambio con un tema: stat / loungelight / POWER. Así que ahora cambie el nodo de entrada que se estableció en cmnd / sonoff / POWER a stat / loungelight / POWER. Podemos utilizar esto para cubrir un vacío en nuestra funcionalidad. El sistema, tal como se configuró inicialmente, se sincronizará con todos los usuarios que hayan iniciado sesión, pero no se sincronizará con los cambios de interruptor realizados al presionar el botón del interruptor Sonoff. Así que ahora conecte la salida del nodo de entrada stat / loungelight / POWER mqtt a la entrada del interruptor (LHS). Ahora haga doble clic en el interruptor y desmarque "si el mensaje llega a la entrada, pasar a la salida". Esto abre algunas opciones nuevas: seleccione 'El icono de interruptor muestra el estado de la entrada'. Desplegar. Así que ahora tenemos un buen ciclo de retroalimentación. La posición del interruptor del tablero de instrumentos siempre cambiará cuando cambie el interruptor Sonoff, independientemente de dónde se inició el cambio.

Por lo tanto, ahora tenemos un sistema de automatización del hogar independiente y seguro en funcionamiento y listo para expandirse a lo que usted desee. En la siguiente sección cubriré algunos de mis experimentos hasta ahora y los desafíos que planeo abordar.

Paso 8: Pasos iniciales para la expansión

Tengo otra placa de desarrollo de LED de sensores Sonoff-Tasmota de automatización del hogar instructable que muestra algunas de las capacidades adicionales del firmware Sonoff-Tasmota:

Medición de temperatura y humedad

Detección de intrusos (entrada de interruptor)

Control remoto por infrarrojos (para televisores, etc.)

Cadenas de LED: RGB y NeoPixel (direccionables individualmente)

Sensores I2C

Para lo anterior, estoy usando un ESP12F y una PCB personalizada. Igualmente, se podrían usar un NodeMCU y una placa de pruebas. Esto habilita estas funciones adicionales sin cableado en un dispositivo Sonoff y, por lo tanto, es un enfoque mucho más seguro. Con la entrada de temperatura he podido completar la automatización de mi manta eléctrica.

Se pueden agregar fácilmente música y radio por Internet. Esto abre opciones para que se activen estaciones o álbumes específicos en momentos establecidos o tal vez en respuesta a la detección de un visitante (teléfono). Este instructable asociado está en Reproductor de música de alta calidad y Radio por Internet con control de teléfono inteligente. Dado que esto también es impulsado por Node-RED, incluso debería ser posible tener más de un sistema de sonido y usar la comunicación MQTT para controlarlos.

También he estado explorando Node-Red, incluido el envío de correos electrónicos y la realización de alertas de voz. También existe la posibilidad de que el sistema detecte cuándo está entrando o saliendo, haciendo ping a la dirección IP de su teléfono móvil. Node-Red también puede acceder al clima y las noticias, por lo que se puede agregar información y automatizar.

Hay algunos trucos que aprender, pero se vuelven muy fáciles la segunda vez.

Otra vía es agregar una pantalla al pi para mostrar el tablero. Esto es 'trabajo en progreso', o en otras palabras, no estoy muy contento. La pantalla que obtuve es difícil de rotar al modo vertical y el navegador Chromium es tremendamente lento. Una alternativa sería comprar una tableta vieja en eBay y usarla. Puedo probar con un Pi 2 y ver si eso ofrece una mejora suficiente (modelo B utilizado para este desarrollo).

Espero que esto te ayude a empezar y te haga volar la imaginación. El alcance potencial es enorme. Incluso se podría modificar el código de Sonoff para otros sensores si fuera necesario.

En general, me ha sorprendido lo que puede hacer este sistema. Mi objetivo original era simplemente manejar un interruptor desde un teléfono inteligente de manera confiable a través de un sistema independiente. Había tenido visiones de la necesidad de administrar servidores y clientes y escribir html para una interfaz de usuario. Donde esto terminó es mucho más adelante, con mayor seguridad, excelente confiabilidad, fantástica interfaz de usuario, programación de arrastrar y soltar y un enorme potencial de expansión. Y todo ello con mucho menos esfuerzo.

Miguel

Paso 9: Anexo - Carga desde Raspbian Stretch Lite

Esta opción evita el bloatware que viene con la versión completa de Raspbian Stretch. La mayor parte de esto no será necesario cuando se utilice una Pi para la automatización del hogar. Sin embargo, Node-Red tiene que estar instalado.

Proceda como en el Paso 1 pero usando Raspbian Stretch Lite en lugar de Raspbian Stretch.

En lugar de Step2, haga lo siguiente:

sudo apt -y install npm

npm -v debería devolver: 1.4.21 o posterior

sudo npm install -g n

sudo n 8.9.0

Ahora podemos usar el administrador de paquetes de nodos para instalar Node-Red:

sudo npm install node-red --global --unsafe-perm

Esto dará un par de mensajes de error debido a una dirección incorrecta. Sin embargo, el sistema realiza una "compilación de fuentes" para corregir este problema. Si repite las instrucciones anteriores (no es necesario), los errores no ocurren.

Ahora tenemos Node-Red y sus paquetes de soporte instalados y podemos pasar al Paso 3, cargando mosquitto.

Concurso inalámbrico
Concurso inalámbrico
Concurso inalámbrico
Concurso inalámbrico

Finalista en el concurso inalámbrico