Tengo muchos problemas para asegurarme de que mi proyecto sea realmente factible.
Lo que quiero archivar: controlar mi cafetera Senseo a través de Internet. Se reduce a simplemente controlar 2 botones.
Primera solución fácil:
- Configure un servidor NodeJS en mi Raspberry Pi.
- Conecto mis GPIO Raspberry a 2 transistores, para controlar los botones de la máquina de café
- Puedo controlar Raspberry GPIO directamente en Javascript. Por ejemplo, llamar a http://myraspberrypi.com/makemeacoffee activa el GPIO, activa los botones y el café fluye
Pero: no quiero conectar mi frambuesa a mi cafetera (necesito el Pi para otros fines), y creo que desacoplar el servidor web y el controlador en sí es una buena idea. Si mañana quiero controlar la temperatura de mi baño o controlar una segunda máquina de café (usando otro ESP8266), quiero poder hacerlo sin repensar todo.
Lo que necesito archivar es un ESP8266 con NodeMCU para usarlo como un controlador sin cabeza de Wi-Fi (vea este enlace ). Raspberry GPIO ya no se usan (ese es el punto). Solo hay un servidor web NodeJS en Pi.
Aquí hay un bosquejo rápido de la arquitectura:
Permítanme aclarar el papel de los componentes principales:
- Raspberry Pi: aloja el servidor web NodeJS
- Servidor web NodeJS: sirve las páginas web al usuario final. Básicamente una página con un botón "Hazme un café". Detrás de la escena, necesitamos "presionar" el botón de calentar el agua, esperar 30 segundos y luego "presionar" el botón de café. El servidor web lo hace enviando solicitudes HTTP al ESP8266 (a través de Wi-Fi). El servidor NodeJS también realiza registros y análisis de datos (¿cuánto café tomó este año?)
- ESP8266: Utiliza NodeMCU. Sus GPIO están conectados a un transistor que controla los botones de la máquina de café. No me importa cómo alimentar el ESP8266. Ejecuta un servidor web para escuchar las solicitudes de Raspberry Pi y realizar acciones en GPIO en consecuencia.
¿Es factible esta arquitectura? ¿Es flexible esta arquitectura?
EDITAR, para responder a Sean Houlihane (spoiler para mantener la publicación relativamente corta):
No estoy 100% seguro de esto, pero un transistor parece ser suficiente. El interruptor de la máquina de café funciona con baja tensión (3,3 V) y el ESP8266 no comparte el suelo con la máquina de café.
Acerca de la detección de temperatura y el control del nivel de agua, la cafetera Senseo tiene esto incorporado. Uso típico: presione el botón central para iniciar el proceso de calentamiento, elija el tamaño de su café presionando el botón "simple" o "doble". Una vez que finaliza el proceso de calentamiento, el café comienza a fluir. Si no hay suficiente agua, finaliza y un LED parpadea.
El progreso que espero:
- La versión 1.0 será "Simplemente ejecute la máquina de café, estoy seguro de que está lista". Yo controlo el botón de una taza y el botón de calentamiento.
La versión 2.0 será "Ejecute la máquina y envíeme sus comentarios". Tenía otro ESP8266, conectado al LED de retroalimentación (para que pueda saber cuándo se está calentando y cuándo está fuera del agua) y otro a una escala para asegurarme de que la taza está allí antes de encender la cafetera. También podría agregar una alerta cuando se ejecuta la máquina de café para decirle al usuario que cambie la cápsula.
La versión 3.0 será encontrar una manera de saber si se ha cambiado el pod, rastreando la apertura del mecanismo con algún tipo de interruptor. Pero esto está fuera del alcance de mi proyecto en este momento.