Calefacción manejable a distancia

Cocina, decoración, ropa, bricolage, cacharros electrónicos, suegras, cuñados...
Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#61 » Mar Ene 05, 2016 5:06 am

Ah, pero es que el tiempo y el know-how no han sido costes sino beneficio.

Los cables son "dupont" y veo que tienen sección más que sobrada para manejar los apenas 20mA que envía la Arduino al relé. El calentamiento ocurría sin tener nada más conectado a éste.


En otro orden de cosas, he comprobado que el sistema falla al intercambiar los programas horarios a medianoche. A repasar código tocan.

Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#62 » Lun Ene 18, 2016 9:17 pm

A la espera del vídeo prometido ―que va a posponerse hasta que el móvil vuelva de Finlandia―, he aquí una foto de cómo ha quedado el tinglado:

► Mostrar Spoiler


Lo verde de abajo a la izquierda es la Raspberry Pi 2, que ha sustituido a La Tostadora I. Arriba está el disco duro con el sistema operativo de la Pi más otros archivos (la uso también como servidor P2P). Más o menos en el centro y de azul está la Arduino, cubierta con un "shield" que multiplica los puertos de conexión. Aquí abajo a la derecha hay una "breadboard" (esa cosa blanca con agujeritos que a los tripofóbicos les encantará) con los dos sensores de temperatura. Sí, al mismo tiempo. Finalmente, arriba a la derecha y también de azul, el relé que se comunica con la caldera con ese cable blanco.

Y ese cubito de aluminio con cables y cocodrilos es un puto adorno.

Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#63 » Mar Ene 19, 2016 12:58 pm

Una explicación de para qué sirve para cosa:

―La Raspberri Pi es el "cerebro" del sistema. Aloja un servidor web (Apache, concretamente) que, mediante PHP, ofrece la información del sistema de calefacción y la posibilidad de configurarlo, todo desde cualquier navegador y sin necesidad de jodidas "apps". Ni siquiera requiere de (el también jodido) Javascript. Dado que está permanentemente conectado a internet, se puede acceder tanto desde otro equipo de la red local (mi casa) como desde el exterior, desde cualquier lugar del planeta.

El servidor web y Apache recogen las peticiones del usuario y las almacenan en ficheros; aunque en mi caso son ficheros alojados en RAM, por lo que no "rascan" disco duro y responden más velozmente. Con crear un pequeño disco duro virtual de 1 MByte en RAM, sobra. Lo profesional sería hacer uso de sockets para la intercomunicación entre procesos, pero hasta ahí no llego.

Las peticiones, que son del tipo "quiero que en media hora y hasta las 21 horas haya 18 grados", se envían a un programa residente, escrito en BASH script, que se encarga de generar unos bonitos gráficos y de dar orden de encendido de la calefacción según la temperatura actual y la temperatura deseada. Esto también lo hace mediante ficheros en RAM, que se comportan como variables globales.

Otro programa residente en BASH, muy breve y sencillo, se encarga de la comunicación básica con la Arduino. Recoge sus datos de temperatura y envia, cuando es necesario, las órdenes de encendido y apagado de la calefacción.

―La Arduino no sería necesaria en este esquema; pero, como la compré antes y ya tengo los sensores de temperatura analógicos (la Raspberry Pi sólo los admite digitales), la estoy usando para lo que antes había descrito: recoge las órdenes de apagado y encendido de la calefacción, y envía las lecturas de temperatura de los sensores. Teóricamente, la Arduino es monotarea y sólo podría hacer una de estas cosas al mismo tiempo; pero, jugando con su sistema de interrupciones, se puede obtener una cierta capacidad multitarea.

―La función obvia de los sensores analógicos de temperatura es enviarla a aquello a lo que estén conectados. Creía que el TMP36 se me había quemado y por eso compré el LM35. Como ahora tengo ambos y son plenamente funcionales, los uso para sacar las medias aritméticas de sus lecturas y obtener una temperatura más fidedigna: su precisión no es ninguna maravilla (medio grado) y eso puede implicar muchas conexiones y desconexiones no deseadas de la calefacción.

―Finalmente, el relé se encarga de recoger la simple petición de la Arduino de encender y apagar la calefacción. Cuando se cierra la parte del circuito de baja tensión, la de alta tensión (conectada a la caldera) hace lo propio y se consigue el efecto deseado de comenzar a calentar el agua de los radiadores.

―El disco duro tampoco sería necesario en este sistema. Pero prefiero usarlo a abusar de la tarjeta miniSD que lleva la Raspberry Pi, cuya resistencia a los ciclos continuados de lectura y escritura está muy por debajo de la de un disco duro estándar como el que ven en la foto.

Además, la RPi 2 puede con todo y, en este caso, también está ejecutando aMule (intercambio de ficheros, también conocido como pirateo). Por lo que necesito mucho espacio y a bajo precio.

aris_vallecas
Mensajes: 887

Re: Calefacción manejable a distancia

Mensaje#64 » Vie Ene 22, 2016 10:12 pm

Si coloca un relé electrónico temporizado a conexión y desconexión evitaría múltiples encendidos y apagados; O si programara un retardo a la hora de transmitir las órdenes de marcha/paro después de recibir las señales de los sensores.
www.madrilenos.eu

La libertad cuesta muy cara y es necesario o resignarse a vivir sin ella o comprarla a su precio

Los que pueden renunciar a la libertad para obtener una pequeña seguridad temporal no merecen ni libertad ni seguridad

Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#65 » Sab Ene 23, 2016 5:03 am

No, si eso lo tengo controlado mediante el mismo mecanismo que los termostatos estándar: tengo una variable, ahora mismo configurada a 0,3 grados, que establece el grado de sensibilidad a la diferencia de temperatura.

Así, la calefacción se enciende a deseada-sensibilidad; y se apaga a deseada+sensibilidad. Por tanto, la horquilla de sensibilidad x 2 (en este caso, 0,6) me protege de las conexiones y desconexiones demasiado continuadas.

Eso lo aprendí de niño, cuando era muy aficionado a los coches y los deportivos más avanzados (recuerdo algunos 911) tenían un alerón trasero escamoteable que se elevaba a velocidades altas. Para no estar continuamente p'arriba y p'abajo en el caso de establecer un crucero justo en una velocidad límite fija, se acordaba que se elevase, por ejemplo, a 200 km/h pero que no se volviese a esconder hasta descender de 180 km/h.

Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#66 » Dom Ene 24, 2016 8:04 pm

El horror continúa aumentando de tamaño. Ahora le he comprado una pantallita de seis euros, la típica con el controlador Hitachi HD44780, conectada a un módulo I2C para ahorrar cables:

Imagen

Me marca: temperatura actual (el 19.3C), temperatura deseada (0C ahora mismo), la hora, el porcentaje de uso de CPU de la Raspberry (5%) y la memoria consumida (114 megas de 1000 disponibles).

Todo eso hay que programarlo con Python; aquí BASH no vale. Así que otro lenguaje informático que he tenido que comenzar a aprender.

Avatar de Usuario
vital
Mensajes: 4019

Re: Calefacción manejable a distancia

Mensaje#67 » Lun Dic 12, 2016 3:29 pm

Pastinaca escribió:¡Infaustos! ¡Infames! ¡Imponderables!

Ya verán cuando me grabe en vídeo encendiendo mi calefacción desde el móvil. Les va a corroer la envidia como a los franceses, o a los españoles, o a los andorranos, o ya no me acuerdo de quién envidiaba.


A mí lo que me da envidia es el conocimiento de electrónica y programación para comprar unos cachivaches de Arduino y hacer lo que le de la gana con ello. Es una asignatura pendiente para mí lo del Arduino.

De momento me he quitado recientemente la espinita de la programación (hacía mis cositas en Basic +3 con 14-17 años, como algunos juegos que no salieron del todo mal), aprendiendo (algo de) Javascript y (algo de) PHP para poder emular aquello de nuevo o crear cosas nuevas .... pero soy de los que necesitan dos o tres vidas para hacer las cosas que me "tiran". Una de ellas, eso que nos muestra.

Enhorabuena!
Suaviter in modo, fortiter in re

Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#68 » Lun Dic 12, 2016 6:06 pm

El lenguaje de programación de Arduino es condenadamente sencillo: está basado en C++ pero muy simplificado (sin punteros y otros dolores de bajo nivel). Lo único que podría revestir algo de dificultad para alguien con el BASIC de los ochenta es el concepto de objeto; pero, si tiene ya ojeado el Javascript, es terreno abonado. Además, la documentación en la web oficial de Arduino es excepcional y sus foros de dudas, muy activos. Es casi imposible encontrarse con un problema no resuelto.

El resto de la programación la hice en PHP (el servidor web) y en BASH script, el lenguaje típico de las shells de UNIX y que, en sí mismo, es también mucho más sencillo que JScript. De hecho, casi diría que lo más complicado es no mezclar sintaxis entre ellos. Por ejemplo, ayer estuve un buen rato desconcertado con un trozo de código que no funcionaba. Al final era que BASH no acepta esta construcción de condicional:

if (variable booleana)... then {

Pero el C++ de Arduino sí y por eso la puse. En BASH hay que poner:

if (variable booleana == true)... then {

Avatar de Usuario
Pastinaca
Sumo hacedor
Mensajes: 6571

Re: Calefacción manejable a distancia

Mensaje#69 » Lun Dic 12, 2016 6:12 pm

En cuanto a la parte eléctrica/electrónica, es también muy divertida y engancha muchísimo. Por cierto, ahora tengo una pantalla de cuatro líneas y he cambiado la RPi por un equipo de bajo consumo de Intel: me hace de router, domótica, servidor P2P y centro multimedia al mismo tiempo, con el móvil como mando a distancia.

Avatar de Usuario
vital
Mensajes: 4019

Re: Calefacción manejable a distancia

Mensaje#70 » Lun Dic 12, 2016 8:42 pm

Pastinaca escribió:El lenguaje de programación de Arduino es condenadamente sencillo: está basado en C++ pero muy simplificado (sin punteros y otros dolores de bajo nivel). Lo único que podría revestir algo de dificultad para alguien con el BASIC de los ochenta es el concepto de objeto; pero, si tiene ya ojeado el Javascript, es terreno abonado. Además, la documentación en la web oficial de Arduino es excepcional y sus foros de dudas, muy activos. Es casi imposible encontrarse con un problema no resuelto.

El resto de la programación la hice en PHP (el servidor web) y en BASH script, el lenguaje típico de las shells de UNIX y que, en sí mismo, es también mucho más sencillo que JScript. De hecho, casi diría que lo más complicado es no mezclar sintaxis entre ellos. Por ejemplo, ayer estuve un buen rato desconcertado con un trozo de código que no funcionaba. Al final era que BASH no acepta esta construcción de condicional:

if (variable booleana)... then {

Pero el C++ de Arduino sí y por eso la puse. En BASH hay que poner:

if (variable booleana == true)... then {


Al final en sintaxis son más o menos parecidos unos y otros (lo cual es malo y bueno) pero luego el fondo no es tan igual... Javascript estoy viendo que es jodidamente flexible y ambiguo, con todo eso de los ámbitos dinámicos y sus funciones como objetos de primera clase. Superpoderoso, pero muy desconcertante para los amateurs como yo, en cuanto te sales del A, B, C ... Clausuras, izados, funciones sobrecargadas, aplicación de funciones de forma parcial ("currificación"), memorización, funciones , envolturas, invocación "forzando contextos" con apply y call, funciones anónimas que se pueden autoinvocar, recursiones en linea, JSON (para un juego me inventé un sistema de "comunicación de información" que luego he visto que ya existía mucho más completo, el json, pero era la misma idea)

PHP, más sencillo y sistemático (más aburrido también). Antes de JScript empecé con PHP y ahí descubrí los objetos que sí era un concepto exótico para mí (ya lo de las funciones era nuevo para mí, aunque me recordaban mucho a los rudimentarios GOSUB que yo usaba masivamente en mi última fase de Basic, en mi lucha de evitar los laberínticos GOTOs y hacer programas ordenados y lógicos, sencillos de interpretar luego; me dió la sensación cuando estudié lo de las funciones que eran como la evolución natural de los gosubs, desde luego mucho más ricas y con muchas más posibilidades) Vamos que ha llovido desde los 80´s
Última edición por vital el Lun Dic 12, 2016 8:51 pm, editado 1 vez en total.
Suaviter in modo, fortiter in re

Volver a “Hogar e informática”

cron