Smart Thermostat is now a legacy project › Forums › Foro de soporte en español › Sobre el futuro del proyecto › Reply To: Sobre el futuro del proyecto
Hola,
para prescindir de un servidor “en la nube” que haga de pasarela entre los datos del termostato, y las apps cliente, habría que transformar el propio termostato (osea, la aplicación Old Relic), en una especie de servidor, al que las aplicaciones cliente puedan conectarse y consultar que es lo que hay de nuevo.
Este es el enfoque que utilicé en mi otro proyecto (Smart Thermostat for Arduino Yun), que empecé desarrollando allá por el 2012. El problema de este enfoque fueron varios.
El primero y principal es que si abres un puerto en tu router, y tienes un mini servidor web abierto al mundo, vas a recibir intentos de intrusión al cabo de poco tiempo. Los primeros años esto no fue demasiado grave, pero durante el 2016-2017, muchos usuarios se quejaron de que el Arduino Yun dejaba de responder al cabo de un par de horas de funcionamiento. Tras muchas investigaciones, descubrí que lo que estaba pasando es que una vez que los bots que andan por ahí intentando entrar en servidores, descubren la IP del yun en internet, se dedicaban a hacer ataques de fuerza bruta. Es decir, probar combinaciones de password y contraseña para conseguir conectarse al servidor por el puerto ssh (aunque no esté abierto, el intento es lo que cuenta).
Esto que para cualquier servidor “de verdad” es irrelevante pues cuentan con cortafuegos, o simplemente son capaces de soportar miles de intentos de login por segundo sin despeinarse, para un microcontrolador como un Yun (o una Raspberry Pi, ya puestos), es muy diferente. Al cabo de un rato de recibir intentos de intrusión, el pobre yun se bloqueaba por saturamiento. Y los usuarios estaban descontentos, obviamente, achacandolo a mil problemas diferentes.
Desgraciadamente el yun no me permitía, por su poca memoria, instalar un firewall, o contramedidas efectivas, así que nuestro gozo en un pozo. Este fue uno de los motivos por los que abandoné ese proyecto, aparte de lo difícil que era programar la parte de servidor en el yun.
Aplicando esa idea a nuestro proyecto actual, habría que transformar el móvil que hace de termostato (la app old relic), en una especie de servidor web. Lo primero es que después de investigar un poco en google, no he descubierto nada lo suficientemente bueno que permita transformar una app de Android, en un servidor web (alguna libreria o algo). Lo segundo es que volveríamos al problema anterior: si conviertes un móvil en un servidor web, también tienes que fortificarlo y asegurarlo. Y eso es precisamente lo que quería evitar cuando abandoné el proyecto para arduino yun.
Teniendo un servidor en la nube, es todo mucho mas sencillo. Son mas fáciles de fortificar y asegurar, y en el caso de que se utilice la infraestructura de amazon, microsoft o google, yo diría que se puede dormir casi tranquilo. Por no hablar de las ventajas que aporta. Por ejemplo, un servidor en la nube, puede comprobar que tu termostato está accesible y funcionando, y si no es así, avisar a la app cliente. Si el propio termostato es el servidor, y este tiene un problema, la app cliente tendría muchas menos opciones para enterarse de ello. En fin, esta es solo una de las decenas de razones técnicas que me llevaron a cambiar el tipo de arquitectura del proyecto.
Obviamente esto incurre en costes, y estamos de vuelta al principio.
No se, seguiré dándole vueltas. Probablemente mantenga el proyecto un poco mas, y ponga algo de publicidad en las apps clientes, para ver que tal funciona. Pero para producir unos ingresos, digamos de 30€ al mes, el proyecto tendría que tener un par de miles de usuarios diarios. Y que yo sepa, el termostato de momento lo usan 2 personas, 😀 😀
En fin, como idea no estaba mal, pero la realidad es que consume tanto tiempo, que no me merece la pena hacerlo por amor al arte.
Un saludo