Este Instructable explica cómo construí termostatos WiFi habilitado para mi casa. Los termostatos programables con 6 diferentes períodos de tiempo durante el día, a pesar de aumento a un número arbitrario sería bastante triviales. Que pueden ser programados (en el sentido de las temperaturas y tiempos de fraguado), así como controlados por internet, y tienen una pantalla táctil LCD para control local. Y pasé (y siguen gastando) una buena cantidad de tiempo tratando de conseguir que se vean decentes; después de todo, esto es algo que cuelga en mi pared, y yo y mi familia va ser verlo todos los días.
Una pregunta obvia es "¿por qué alguien querría hacer esto cuando hay un montón de termostatos WiFi habilitado para la venta comercialmente?" Una respuesta posible sería ahorrar dinero. Pero, si bien es cierto que estos pueden costar menos de construir que algunos modelos comerciales una vez que usted factor en su tiempo, esto se convierte en una mala respuesta! Mejor respuestas serían para divertirse haciendolo (lo hice), o para construir un termostato que se puede programar para ejecutar e interactuar con otros dispositivos en cualquier forma deseada. He construido como parte de un sistema de gestión de energía en el hogar más grande, y tal vez post Instructable otro en eso más adelante. Y como extra: el centro para los termostatos está listo para funcionar como un centro para un sistema completo de automatización del hogar!
Otra pregunta obvia es qué tipo de capacitación formal o experiencia tengo en esta área, y la respuesta es absolutamente ninguno – sin fondo con climatización, sin experiencia en no programación, ningún fondo en electrónica. Por lo tanto, si usted decide construir sus propio termostatos, debería no sólo oculto copiar exactamente lo que tengo aquí y conectarlo a la pared. Este proyecto requiere pensamiento analítico, preciso, y debe comprender el tipo de sistema de climatización tienen, revisar y modificar todos los circuitos según corresponda y código y asegúrese de que entender lo que estás haciendo y las consecuencias de equivocarse. Hacerlo podría destruir tu sistema HVAC, electrocutar a sus seres queridos o quemar tu casa. En serio! Ciertamente acojo con satisfacción los comentarios de quien tiene conocimiento en estas áreas en cuanto a cómo podría hacer que estos termostatos mejor.
Y por supuesto, yo podría no haber hecho esto sin todo el trabajo duro de la gente que ha creado varias bibliotecas utilizadas, las personas que se tomaron el tiempo para apagar el información en la web de Instructables, foros y blogs y la gente que me ayudó con consejos y respuestas a mis preguntas. Agradecimiento especial a Mark Pendrith que fue útil y me dio el código que constituye la base de lo sketch de arduino.
Por último, en el proceso de modificación de archivos para trabajar con sólo los termostatos (en comparación con el más grande sistema de gestión de energía en el hogar) así como todo lo que hice en el tiempo para conseguir que funcione recordar, sin duda habrá algunos errores aquí. Por favor me avisan si se coge alguna y voy a intentar conseguirlos corregido tan pronto como sea posible.
Con todo de eso fuera del camino, aquí lo que hice:
El sistema utiliza un Raspberry Pi como un eje central que sirve páginas web, por lo que puedo controlar los termostatos desde cualquier lugar. El centro también encarga de la comunicación inalámbrica sobre nRF24L01 + módulos de radio (sé que dije "WiFi", y el módulo de radio nRF24L01 + no es técnicamente Wi-Fi, pero más sobre esto más adelante) y mantiene una base de datos de MySQL con el termostato de programación, así como cualquier registro de datos que hago. Y por último, el hub funciona dos servidores escritos en Python, uno controla el termostato (como un intermediario entre la página web y el termostato) y el otro maneja registro de datos. Creo que esto podría probablemente hacer con los termostatos cada sirviendo a su propia página web simple y enviar datos directamente a la base de datos MySQL. Esto eliminaría la necesidad de que el servidor web lighttpd y los servidores de dos python. Pero, siento que hacerlo en el centro ofrecen la simplicidad de un único sitio web, y los servidores python proporcionan mucha flexibilidad. Además no tengo que actualizar el código de los termostatos cuando quiera realizar cambios en estos aspectos.
Si penetran realmente en esto, probablemente te preguntarás por qué me molesto con una base de datos MySQL en lugar de escribir solo unos pocos datos en un archivo de texto cuando sea necesario. La respuesta principal es que necesito la base de datos MySQL para otras partes de mi sistema, pero si todo lo que tenía eran los termostatos, sería bastante fácil al eliminar la base de datos y reemplazarlo con archivos de texto.
Por lo tanto, el flujo de comunicación esencialmente funciona de la siguiente.
Actualizaciones de usuario en el sitio Web
Un usuario controla o programas un termostato en un sitio web escrito en PHP (en su mayoría, un pequeño javascript).
Ese sitio web guarda los cambios a la base de datos MySQL y envía una instrucción al servidor de control de python.
El servidor de control de python interpreta esas instrucciones, actualiza una representación interna del termostato y envía las instrucciones apropiadas al termostato físico sobre la red RFX.
Actualizaciones de usuario en el termostato
Un usuario controla un termostato con los controles de pantalla táctil.
El termostato envía los cambios al servidor de control de python.
El servidor de control de python una representación interna del termostato actualiza y guarda los cambios a la base de datos MySQL.
Termostato tiene datos para registro o mensajes para guardar
El termostato envía datos o un mensaje al iniciar sesión el servidor de registro de datos de python.
El servidor de registro de datos ahorra o que datos a la base de datos MySQL o un archivo de registro basado en el tipo de mensaje.
Termostato temperatura cambia automáticamente según un programa establecido
El servidor de control de python supervisa el programa establecido por el termostato y determina cuando debe cambiar la temperatura.
El servidor de control de python actualiza una representación interna del termostato y envía la nueva temperatura al termostato.
Así, con ese resumen detrás de nosotros, a continuación se presentan detalles sobre cómo configurar esto para arriba. El primer paso enumera las fuentes y herramientas que utiliza. Los varios pasos del Instructable cubren cómo configurar la infraestructura de hardware y software para el cubo. La mayoría de estos se incluyen instrucciones por referencia, hay un montón de lugares para obtener información sobre cómo, por ejemplo, para configurar una base de datos MySQL en un Raspberry Pi, así que no intentan replicar. Entonces, cuando la infraestructura esté en su lugar, doy mucho más detalle sobre cómo construí los termostatos reales así como el código que utilizo para controlarlos.