¿Algún problema obvio con esta domótica de bricolaje?

Me gustaría saber si alguien ve grandes problemas con este sistema que quiero implementar en mi hogar. El software está en versión beta, comenzaré a trabajar en el lado del hardware en unas pocas semanas.


Estado actual de la casa


  • casi todas las luces son pulsadores temporales conectados a un relé de 220V
  • dos lugares en la casa donde todos los cables están conectados

Como una imagen vale más que mil palabras... (los elementos que hay son ejemplos, no los reales que usaré (diferente relé de 220 V, relé conectado a Arduino pero la idea principal está bien representada)sistema de bricolaje


  • agregando un relé de 220V en serie con los interruptores de luz normales, conectándolo a un Arduino
  • se utiliza un sensor de corriente de 30 amperios para detectar el estado del interruptor de luz
  • cada Arduino (o al menos uno en un paquete de muchos Arduinos, donde uno no será suficiente) el escudo de Ethernet se usa para enviar/recibir datos a través de una red cerrada (no accesible desde LAN/internet)
  • una placa atómica mini-itx que ejecuta Linux y algún software node.js escucha los paquetes UDP en la red (el controlador)
  • cada Arduino envía cada x minutos el estado de encendido/apagado como un paquete UDP
  • cada Arduino envía un paquete UDP cuando cambia el estado
  • cada Arduino escucha los paquetes UDP dirigidos a él y puede encender/apagar un relé
  • el controlador recibe y almacena todos los datos en una tarjeta de red, utilizando una segunda para proporcionar interfaces web con autenticación para lan
  • otros dispositivos Arduino se integrarán en interruptores, conjuntos de sensores y pueden enviar comandos UDP para encender/apagar luces
  • el controlador tiene acciones controladas por eventos y programadas, cambios de estado y puede enviar comandos al Arduino

Ventajas

  • preservar los interruptores de luz normales en la casa
  • si el sistema falla, los interruptores normales seguirán funcionando
  • modular: puedo agregar más nodos a medida que los necesito
  • el controlador es necesario solo para operaciones avanzadas
  • pariente
  • a prueba de futuro: no puedo imaginar que el protocolo UDP se vuelva obsoleto en el corto plazo
  • acceso web seguro desde fuera de casa

Desventajas

  • es posible que se necesiten muchos escudos Arduinos y Ethernet

Elementos opcionales

  • Raspberry Pi con cámaras web térmicas para detectar presencia, usando una instalación de zoneminder modificada para enviar paquetes UDP basados ​​en la ocupación
  • un par de teléfonos Android con GSM roto y baterías débiles utilizados como interfaces de pantalla táctil dentro del hogar
  • un teléfono Nokia utilizado con Gammu para brindar la capacidad de controlar el hogar a través de SMS

Aclaración

El relé de 220v que está configurado en este momento se colocó para permitir que las luces se abran o cierren desde varios lugares de una habitación. Piense en el relé como un circuito de control de 3 lados

  • un lado tiene la red eléctrica de 220v entrando
  • por un lado tiene los pulsadores que funcionan a 220v
  • un lado tiene la salida a la bombilla

El 220v es un relé de encendido/apagado. Cada vez que se presiona cualquier botón, cambia su estado, siempre que presione un botón más de 0.1 segundos (eso dice en el manual del relé).

Mi electricista instaló el relé de 220v, no está 'normalmente abierto' ni 'normalmente cerrado'. Si la energía baja y luego vuelve, las luces vuelven a sus estados anteriores.

Para activar el relé de red de 220v, todo lo que tengo que hacer es usar un relé arduino normalmente abierto y activar el estado cerrado durante más de 0,1 segundos. Solo necesito enviar un "pulso" de 220v al relé de 220v. Esta es la razón principal por la que las luces seguirán funcionando mientras se mantenga la energía. Todo el arduino puede fallar y las luces normales funcionarán como de costumbre, solo perderé la posibilidad de control remoto y la programación/programación avanzada.

En cuanto a los precios, compro arduino+ethernet o mega+ethernet (y algunas otras réplicas de arduino) a alrededor de 15-25 $ por par, por lo que el costo es relativamente bajo. En el software del controlador principal estimo 40 horas de trabajo, y luego unos cientos de horas durante unos años refinando la interfaz de usuario y agregando eventos, etc.

Todos los elementos se colocarán en 2 cajas dentro de la casa, una para cada piso, y una tercera caja controlará el jardín, el patio y el riego.

--- Edición posterior --- Construí el esquema, puedes verlo en acción en youtube http://www.youtube.com/watch?v=BmsdXMbd2vo

¿Por qué sus botones van al relé y no al Arduino? ¿Dónde están tus interruptores de pared normales en todo esto? ¿Ha investigado X10? Aún puede integrarlo en un Arduino o PC y eliminar todo el cableado de alto voltaje. Si elige comprar relés, asegúrese de que tengan una clasificación de amperaje y un ciclo de trabajo altos y tenga en cuenta que está alimentando un electroimán para usar el relé, que consume mucha energía.
¿Cómo pretende conservar la función del interruptor existente si el sistema está inactivo Y todavía puede tener el estado de encendido/apagado del control del sistema?
@gregmac Dijimos que planea conectar los relés en serie, por lo que usar el NC (normalmente cerrado) actuaría como si el sistema no estuviera instalado. Puede verlo como si el sistema agregado no pudiera encender las luces, sino que podría apagarlas o devolverlas a su estado anterior. Sin embargo, todavía me pregunto dónde están los interruptores normales porque también actuarían más como un "apagado solamente".
La única forma que se me ocurre es usar relés de enganche SPDT (lo que significa que también necesita 2 contactos de E/S para el controlador para cada uno) y que los interruptores 'normales' sean interruptores de 3 vías, con el relé actuando como el otro interruptor de 3 vías ("3 vías" == "2 vías" si estás en el Reino Unido). Esto probablemente signifique reemplazar la mayoría de los interruptores y reemplazar el cableado existente con un cable de 3 conductores. De todos modos... No puedo entender cómo este enfoque de bricolaje puede ser más barato que Insteon/UPB/Zwave (o X10, pero no lo uses, es terrible). Haz bricolaje en el lado del software/controlador, pero no en el hardware/conmutación.
Se agregaron aclaraciones. @gregmac: tengo que modificar 2 cosas: conecte el relé aruduino al relé de 220v y empalme los cables a la bombilla y agregue el sensor de corriente.
@Monso: el relé de 220v está conectado a los interruptores de pared porque los botones funcionan con 220v.
¿Puede compartir una referencia para los relés de 220 V CA que está utilizando? No me he encontrado con uno que funcione de la manera en que lo describe, donde simplemente interrumpe la alimentación de la luz y el relé cambia de estado. Puedo ver cómo podría funcionar si el relé está encendido, pero si el relé está apagado, ¿cómo sabe que ha accionado el interruptor? ¿O hay un canal de control separado de 220 VCA que activa el relé?
Los interruptores de pared tienen el borne + siempre conectado. Cuando lo presiono, los 220v se envían al relé. Luego, el relé cambia de estado y parece que detiene el flujo de corriente hasta que dejo de presionar el botón. Mi electricista vendrá en unos días y sacaré uno del cruce. Por lo general, evito jugar con 220v sin él. Los relés de 220v se compran en tienda, nada personalizado.
"donde simplemente interrumpes la alimentación de la luz y el relé cambia de estado": en realidad es lo contrario. manda 220v al rele y cambia de estado.

Respuestas (2)

He estado haciendo algo similar durante los últimos dos meses. En la actualidad, la configuración solo se extiende a mi taller (para pruebas). Actualmente estoy usando un solo UNO para el control que lee varios estados del sensor, incluido el nivel de luz y la temperatura/humedad, además de algunos sensores de puerta (relé de lengüeta) y de movimiento IR. El arduino lee el estado y envía mensajes a algún software (actualmente Python 2.7 bajo Ubuntu) sobre UDP que luego realiza el procesamiento requerido y envía comandos de control de regreso al Arduino, nuevamente sobre UDP. Actualmente, el procesamiento consiste en verificar los sensores de luz internos y encender las luces si es necesario. En última instancia, quiero migrar toda mi iluminación a LED de 12 V para poder utilizar la energía solar almacenada, pero actualmente estoy usando un sistema similar al suyo en el que los relés están en serie con el interruptor de encendido de las luces. normalmente cerrado, de modo que si falla el circuito de control, los interruptores de luz deberían funcionar con normalidad. También tengo algunos sensores IR externos y el mismo sistema activa una luz de seguridad externa, esta vez con un relé normalmente abierto. Considero que el uso de los relés normalmente cerrados es esencial para las luces principales, de lo contrario, la gestión doméstica se iniciará una vez que el sistema se implemente en el resto de la casa. Quiero usar LEDS debido a su naturaleza regulable cuando uso los pines habilitados para PWM del Arduino, esto permitirá un buen nivel bajo de luz para esos viajes nocturnos al baño, todo automáticamente, por supuesto. Acabo de recibir un Mega 2560 que proporcionará mucho más IO. Al igual que usted, preveo tener Arduino separados para entrada y salida. Estoy desarrollando el sistema de control en python, con la intención de migrarlo a raspberry PI una vez finalizado el desarrollo. Esto me permitirá ejecutar todo un gabinete con una pantalla de estado conectada al video compuesto. Actualmente tengo una pantalla de estado limitada ejecutándose en la PC, lo que me permite controlar el brillo de los paneles LED y las bombillas GU16. He configurado el arduino para que acepte comandos de cualquier dispositivo en la red, por lo que puedo configurar algunos controles desde los dispositivos Android que tengo en la casa. También tengo una instalación de zoneminder completamente funcional, pero aún no había considerado usarla para activar nada, pero, de nuevo, no tengo ninguna cámara interna en eso, solo externa. Consideré las imágenes térmicas, como usted sugirió, pero creo que el costo es un problema importante (tendría que ser inferior a $ 100 australianos, por habitación para que sea factible para mí), así que Estoy perseverando con sensores IR de bajo costo (alrededor de $ 2 cada uno de China). Mi código Arduino no es el mejor, pero estoy más que dispuesto a compartirlo. Actualmente está configurado para monitorear los diversos sensores en un bucle constante, y también escucha una cadena UDP de 3 bytes en forma de 410 (4 es luz 4, 1 es para encendido, el último dígito se usa para un nivel de brillo para el DIRIGIÓ)

Estoy de acuerdo con el comentario sobre los valores de reventa de la casa, pero no planeo mudarme en ningún momento en el futuro previsible. Sus necesidades pueden ser diferentes.

El código python también realiza algún control DPMS de los monitores en el taller. Actualmente se ponen en espera después de 10 minutos sin movimiento en el taller. Estoy en el proceso de configurar algunos enchufes que se encienden de la misma manera que las luces, para que el sistema pueda apagar cosas como mi soldador y amplificadores que con frecuencia olvido dejar encendidos.

Déjame saber si puedo ser de ayuda con tu proyecto. Suena grandioso. Buena suerte

John

Estoy aprendiendo/usando el nodo js para el controlador principal. Puede echar un vistazo a mi prototipo aquí: github.com/vladbabii/MasterController-HomeAutomation . Creo que el mejor enfoque para esto es un lenguaje controlado por pares que puede manejar múltiples paquetes de entrada/salida y flujos de datos (conexión tcp para un flujo continuo de estado, conexión tcp para datos utilizables por navegador codificados en json, escucha y generación de comandos udp ). La diferencia en lo que estoy haciendo eléctricamente es que tengo un relé de 220v que no es NA ni NC, simplemente cambia de estado cuando recibe un pulso de 220v.
Y mis relés arduino normalmente están abiertos y cerrados durante ~ 100 ms para activar un estado de encendido y apagado. ¿Puede compartir más sobre cómo estructura sus paquetes UDP? Estoy usando la estructura simple de obtención: identificador=<identificador_actual>&acción=actualización_del_sensor&sensor=<nombre>&valor=<valor>. No estoy seguro acerca de la conexión inalámbrica en lugar de tirar de los cables en algunos lugares.
Estoy considerando usar dos Raspberry Pi como servidores, pero no he descubierto ninguna forma de realizar una conmutación por error confiable y reiniciar cuando el principal falla. ¿Alguna idea sobre esto?
Hola Vlad, mi código UDP es una resaca de un proyecto openCV que estaba haciendo a principios de año (para rastrear gatos en mi jardín trasero), que usaba servos de movimiento horizontal y vertical, así que estaba enviando cadenas de tres bytes a los servos para controlar su movimiento.
Soy autodidacta y nunca me he familiarizado con C, pero sin embargo, el código funciona en su mayoría. Como tal, he hecho el mínimo absoluto con el que puedo salirme con la mía, la mayor parte de la toma de decisiones (ya sea encender o apagar las luces, etc.) se realiza en python, en última instancia, para ejecutarse en el Pi.
No estoy seguro de cuál es la mejor manera de publicar el código, ya que no parece caber en esta ventana :) Te enviaré un contacto a través de tu sitio y podemos ordenarlo desde allí. Tengo la intención de tener un blog sobre el proyecto, pero todavía tengo que encontrar el tiempo.
Con la forma en que se ha dividido el software (el arduino hace las lecturas del sensor y el cambio, y el Pi hace la lógica), no veo ninguna razón por la que no puedas tener dos Pi funcionando en paralelo, con el mismo software, cada uno enviando paquetes. al arduino. Mientras ambos hagan lo mismo, el resultado final debería estar bien. Al arduino no le importa de dónde obtiene los datos, ya que solo está monitoreando su puerto UDP de escucha y haciendo algo si recibe un paquete de datos de tres bytes. También monitorea los sensores pero estoy usando los registros PIND y PINB para esto (lectura simultánea).
Usar los registros es un poco más complicado, ya que involucra XORing con su estado anterior y luego actúa sobre el cambio, si lo hay. Es bueno y rápido y hace ocho sensores simultáneamente. El código aún está en desarrollo y no está exento de errores, pero actualmente estoy en el proceso de reemplazar el Uno con un Mega y aprovechar la oportunidad para arreglar el cableado experimental.
Los mayores problemas de tener 2 servidores que manejan todo en paralelo son el tiempo y la sincronización de los datos. Si bien lo último se puede lograr con bastante facilidad, el primero es más complicado en un PI, ya que no tiene un reloj interno, por lo que termina haciendo muchas sincronizaciones de tiempo. Todavía estoy estudiando todo, volveré a publicar aquí cuando tenga una respuesta. También publiqué una pregunta sobre esto aquí: raspberrypi.stackexchange.com/questions/8125/…

El mayor inconveniente es la naturaleza altamente personalizada y las modificaciones necesarias cuando vas a vender tu casa.

Si estuviera pensando en comprar una casa hoy que alguien había modificado ampliamente para instalar un sistema de bricolaje totalmente personalizado utilizando "lo último en tecnología" de hace 10 o 15 años, probablemente estaría pensando en la línea de "wow, tengo desmontar todo y rehacer por completo el sistema eléctrico de esta casa" y el precio que estaría dispuesto a pagar reflejaría esto. Estoy siendo un poco extremo para ilustrar el punto, pero debes considerar esto.

Todo lo que necesito hacer es quitar el sensor de corriente y volver a conectar los cables, y desconectar el relé arduino del relé de 220v. Y luego vuelva a colocar las viejas cubiertas de unión de cables principales en lugar de las que tengo ahora para guardar todas las cosas adicionales.
O puede instalar interruptores/atenuadores controlados a distancia listos para usar, y nunca tendrá que preocuparse por desconectarlos o lidiar con la corriente de la casa.