lunes, 23 de octubre de 2017

Otra Caldera

  Con todo lo que se está desarrollando IoT, cada vez hay más dispositivos que nos pueden ayudar a automatizar y/o controlar aparatos.
  Después de todo lo aprendido con el desarrollo anterior para controlar una caldera de Gas-oil, y la evidente complicación de la solución, en esta ocasión os propongo una solución mucho más sencilla.
  Esta vez decidí comprar un enchufe wifi como este:
  Es un enchufe controlable por wifi que permite encender y apagar con una aplicación en el móvil, barato y sencillo, además con la calidad que se le supone a Xiaomi.
  La verdad es que la construcción es buena y la aplicación funciona perfectamente, además permite automatizar algunas acciones, como actuar sobre el enchufe cuando estés en cierta localización (por ejemplo, podrías encender automáticamente la caldera cuando vas hacia casa), encender o apagar por horario, con un temporizador, o cuando se den otras condiciones que se pueden programar en la app.
 La primera idea era la evidente de conectar un relé de 220V a la salida y con él abrir o cerrar el circuito del termostato de la caldera, pero, entre que no lo hay con clavija europea, con lo que hay que enchufarlo sobre un adaptador, y que habría que enchufarle otro macho en la salida para alimentar el relé, se haría un montaje bastante grande y feo.
  Vista la página del fabricante, en la que tienen esta foto:
  Se me ocurre que podría abrirlo para modificar el circuito interno y así utilizar su propio relé para activar o desactivar el circuito del termostato externo de la caldera, y eso es lo que hago.
  
  No es un aparato diseñado para abrir o reparar, la caja está pegada, no hay tornillo y para abrirla hay que cortarla, con cuidado de no dañar la circuitería interna, para ello lo que hago es ir cortando con cuidado toda la esquina inferior alrededor de la caja tratando de cortar sólo plástico:

  Es difícil, no hay tornillos ni presillas, no se ha previsto para abrir, hay que ir con cuidado y ser paciente. Una vez abierto hay que desoldar del circuito las patillas del enchufe, que están soldadas directamente y es necesario para poder separar la parte plástica de abajo.

  Una vez liberadas las patillas, se libera el plástico y queda la placa del circuito accesible:


  Se observa que la construcción es muy buena, y la calidad del circuito es alta, hay dos partes claramente diferenciadas, la parte de potencia con las conexiones de entrada y salida y la fuente de alimentación en la placa horizontal, y la parte de comunicaciones y procesamiento en la parte de la placa vertical.
  
  Por la parte de abajo se puede identificar el circuito de potencia:

  
  La idea sería entonces separar el la salida del relé del circuito de 220V, y utilizar este contacto para abrir o cerrar el del termostato de la caldera. Había pensado en cortar las pistas del circuito impreso que conectan la salida del relé, pero al ser una placa con circuito por ambas caras, no tengo la seguridad de que se aisle totalmente el circuito, de hecho la alimentación se toma de esta pista por el otro lado de la placa.


  Con lo que la otra opción es levantar el relé y separar físicamente las patillas del circuito:

    Una vez separadas, sólo hay que conectar unos cables que serán los encargados de conectar con el circuito del termostato de la caldera:


  Estos dos cables rojo y verde serán el contacto libre de potencial que abrirá o cerrará el circuito según nuestra orden en la app, hay que tener cuidado de aislarlos bien con el manguito termoretráctil ya que sigue habiendo partes de la placa que están a 220V.

 Hay que tener la precaución de que ambos lados de la placa sigan conectados en los agujeros donde antes estaban las patillas del relé, ya que de uno  de ellos se toma la tensión para la fuente de alimentación del circuito a través de la resistencia que se ve detrás del varistor.

  Y sólo falta la conexión de entrada de red, que antes se hacía con las patillas del enchufe directamente, así que soldamos el cable de alimentación directamente en el mismo sitio que antes tenía las patillas, los cables azul y gris:



  Y una vez comprobado que funciona correctamente, sólo queda meterlo en una caja, una caja estanca de conexiones eléctricas, aunque la caja en la que venía es perfecta, a pesar de que el corte ha sido un poco bruto, así además se puede seguir utilizando el botón de control manual (que de haber utilizado otra caja habría que cambiarlo de sitio para que fuera accesible desde el exterior):


  

  Tenemos por un lado los cables de alimentación y por otro los de salida del circuito del relé.

  Y finalmente sólo queda conectarlo en la caldera:

   En el bornero de la caldera, se puede identificar claramente la conexión de alimentación y la del termostato (los dos cables negros a la derecha).


  Conectamos los nuevos cables de alimentación de la placa que acabamos de soldar en paralelo con los de alimentación, y los del termostato intercalados en el circuito del mismo. Volvemos a cerrar la caja de conexiones y listo.

  Ya tenemos la caldera controlada por internet, podemos encender o apagar la calefacción desde cualquier sitio, lo único que hay que tener en cuenta es que hay que dejar programada en el termostato la temperatura deseada y que si queremos que funcione en modo manual (o control local) se puede pulsar el botón de control manual, que funciona igual que la conexión remota, de forma que si lo encendemos en local podemos apagarlo luego en remoto y viceversa.

 La aplicación móvil es la Xiaomi Mihome, que permite controlar un montón de dispositivos de la marca, el uso es muy sencillo, una vez configurada (por cierto sólo me funcionaba seleccionando la región como China Mainland), aparece el dispositivo:



  Se puede tocar directamente el botón deslizador al lado del dispositivo caldera, o bien tocar el dispositivo para que nos lleve a la pantalla siguiente:
  En la que se ve el dispositivo apagado, que se puede encender tocando la figura del enchufe o el botón de Power.
Una vez que está encendido, se pone en azul como se puede ver, además el color y el estado de la salida se produce como confirmación, se pone azul cuando el sistema comprueba que ha ejecutado la orden y tiene realimentación del estado, no sólo cuando pulsamos, con lo que en caso de tener el dispositivo compartido por varias personas (se puede) al entrar en la aplicación vemos si está encendido o apagado antes de actuar sobre él.

 Los botones de timer son para establecer encendidos y apagados por horario y el de Countdown es para arrancar un temporizador que lo apague (o encienda) cuando pase el tiempo establecido.
 Además en el botón de arriba a la derecha, se puede programar automatizaciones, por ejemplo que se ejecute una acción en una localización, de manera que si quieres que se encienda la calefacción automáticamente cuando vas hacia casa, puedes programar una localización por la que pases de camino para que el móvil dé orden de arranque cuando pases por ella.







lunes, 28 de marzo de 2016

Jugando a pilotos

   Este fin de semana he estado probando a editar videos grabados con el drone, superponiendo unos gráficos con los datos de vuelo, el software de edición de video es de Garmin, VIRB, es gratuito y bastante potente, aunque los datos del Bebop2 no son compatibles de manera nativa y hay que traducirlos con Flight Data Manager, otra aplicación gratuita que te permite extraer un montón de información de los registros de vuelo del Bebop2.

  Aquí los videos (mejor verlos a pantalla completa porque están grabados en 1080p):




jueves, 24 de marzo de 2016

Pronóstico del tiempo

Ya que tenemos sensores de temperatura, humedad, presión, velocidad del viento y demás, podremos predecir el tiempo?

Pues hay recursos por ahí para hacerlo, pero no es fácil, ni las agencias meteorológicas aciertan a veces... Con súper ordenadores dedicados a calcular modelos de predicción, satélites, sensores por todo el mundo y demás, tampoco pretendo competir con ellos.
  Pero encontré un modelo de principios de siglo muy curioso, que se basa en la variación de la presión, el modelo Zambretti, si es cierto lo que dicen, acierta en un 90% las predicciones leídas a las 9 de la mañana... Supongo que como se hacía en los barcos para predecir las tormentas mirando la velocidad de bajada del barómetro.
   El algoritmo tiene en cuenta un montón de combinaciones de datos de los sensores para elegir un pronostico entre la lista de 26 posibles estados del tiempo.
Las posibles predicciones traducidas que he incorporado en el algoritmo:
1.Bueno, estable
2.Buen tiempo
3.Bueno, mejorando
4.Bueno, un poco menos estable
5.Bueno, algun posible chubasco
6.Casi bueno, mejorando
7.Casi bueno, posible chubasco pronto
8.Casi bueno, posibles chubascos mas tarde
9.Chubascos pronto, mejorando
10.Variable, mejorando
11.Variable, probable lluvia
12.Mas bien inestable, aclarando luego
13.Inestable, probablemente mejorando
14.Lluvioso con intervalos de claros
15.Lluvioso, tendiendo a mas inestable
16.Variable, algo de lluvia
17.Inestable, algun corto intervalo de claros
18.Inestable, lluvia mas tarde
19.Inestable, algo de lluvia
20.En general inestable, algo mejor a veces
21.Lluvia ocasional, empeorando
22.Lluvia a veces, muy inestable
23.Lluvia intervalos frecuentes
24.Lluvia, muy inestable
25.Tormenta, puede mejorar
26.Tormenta, muy lluvioso

Los números se los he puesto para tener una idea de la escala y tener de un vistazo el grado de "bueno" de un tiempo bueno.

  Para calcular la variación de la presión de una manera simplificada, en vez de utilizar derivadas de la función resultante, lo que hace el algoritmo es calcular la media de los valores de los últimos 30 minutos y de los últimos 10 minutos, si ésta es mayor, la presión está subiendo y viceversa.

  En ThingSpeak está configurado como un plugin, os dejo el código HTML, CSS y JAVASCRIPT en un archivo de texto donde siempre  este plugin genera una visualización en una ventana como las de siempre, con el texto de la predicción.



  Se me ocurre ahora que sería fácil implementar un montaje decorativo como aquellos monjes que había de madera y cartón que hacían una especie de predicción del tiempo:


  Estos funcionaban con un pelo humano que hacía de higrómetro, según la humedad del aire se encogía o estiraba moviendo la mano del pobre fraile... Entonces pondría lluvioso cuando ya el aire estuviese húmedo.

  Pues con el algoritmo anterior adaptado al micro y un servo para mover el brazo, sería fácil de hacer, y además podría funcionar de manera autónoma sin conexión a internet, y supongo que mejor que lo del pelo...

  Esto es parte del invento de la caldera WiFi, el resto aquí y en las entradas posteriores.

jueves, 3 de marzo de 2016

Las cosas no se callan

Si es que las cosas hablan de verdad, la caldera, se queja de que se está quedando sin gasoil...

Me ha enviado este correo, como estaba previsto al llegar a los 200l, los siguientes serán a los 150 y de ahí cada 50l.

Caldera a través de smtpcorp.com 

1 mar. (hace 2 días)
para 
El nivel de Gasoil está al 20%, considera pedir
Temp=4,12ºC / Humedad=43%H.R. / Gasoil=196,50litros / Presion atm=1020,0hPa.

Nunca me había durado tanto un tanque de gasoil, este año ha sido de muy poco frío, normalmente entre Diciembre y primeros de Enero tenía que reponer, este año a 1 de Marzo todavía quedan 200l...
Si tuviera el sistema registrando desde hace más tiempo podría hacer una correlación entre la media de temperaturas exteriores y el consumo de calefacción, espero que para el año próximo podamos ir incrementando la inteligencia del sistema y prever consumos o tener en cuenta el pronóstico del tiempo.
El montaje del invento aquí: Caldera WIFI

domingo, 21 de febrero de 2016

Mi nuevo drone

Ayer estuve haciendo pruebas de vuelo con un drone Parrot Bebop2:
(todos los videos están grabados en 1080p mejor verlos a pantalla completa)
Al principio se hace raro acostumbrarse al control estático del invento, tiende a estabilizarse siempre, no es como los aviones de radio control con los que hay que tener máximo cuidado, esto es estable por naturaleza, tiende a mantenerse en su sitio, incluso con algo de viento, de echo se hace difícil volar en curva, supongo que habrá que practicar más...


Es evidente que hay que practicar más, aquí sufrimos un pequeño accidente, pero es impresionante lo resistente que resulta el cacharro, sólo se dobló un poco una de las hélices, la enderecé con la mano y listo.
Como podéis ver continuamos volando perfectamente.
En este caso estaba probando el control con los acelerómetros del iPad, y claro, al inclinarlo hacia atrás para que viniera hacia mi, hay que pensar que el drone lo que hace es ir hacia atrás (no hacia mi)...

Y un par de últimos vuelos antes de recargar baterías.



martes, 9 de febrero de 2016

Tres Relojes

Poco a poco voy introduciendo más cosas en el invento de la caldera:


   La novedad son los dos cuadros de la izquierda, el de los tres relojes (que son los que antes tenía en cuadros separados), incluye además los botones de encender y apagar, que ejecutan el Talkback que cierra o abre el relé del invento que arranca o para la caldera.
  El cuadro de altura Nubes es una estimación teórica de la altura de la base de las nubes basada en la temperatura y el punto de rocio, suponiendo que la distribución del gradiente de temperaturas es lineal desde el suelo y dado que según subimos la temperatura baja, en algún punto la temperatura del aire alcanzará la temperatura del punto de rocio, con lo cual se condensará la humedad.
   Cálculo atura base nubes en Wikipedia, este es el método que he usado, pero he visto otros por ahí, la realidad es que desde que lo he montado, voy siguiendo estos días de invierno y cuando se ve un nivel de nubes bajo, suele amanecer con niebla o nuboso-lluvioso.
   Tampoco se puede relacionar con el  nivel exacto de las nubes, pero como indicador de niebla o nubes bajas, parece válido.

Aquí os dejo la actualización del análisys MATLAB que calcula las variables derivadas (altura base nubes, velocidad de viento, sensación térmica y punto de rocio):


readChannelID = 56115;
TemperatureFieldID = 1;
HumidityFieldID = 2;
tempC = thingSpeakRead(readChannelID,  'ReadKey','------------------------------', 'Fields', TemperatureFieldID, 'Timeout', 20);
url = 'https://api.thingspeak.com/apps/thinghttp/send_request?api_key=--------------------------------';
VViento = urlfilter(url, 'speed');
v=VViento*3.6;
Wch = (13.12+(0.6215*tempC)-(11.37*(power(v,0.16)))+(0.3965*tempC*(power(v,0.16))));
b = 17.62;
c = 243.5;
humidity = thingSpeakRead(readChannelID, 'ReadKey','---------------------------------------', 'Fields', HumidityFieldID, 'Timeout', 20);
gamma = log(humidity/100) + b*tempC ./ (c+tempC);
dewPoint = c*gamma ./ (b-gamma);
display(tempC, 'ºC temp actual');
display(Wch, 'ºC sensacion termica');
display(humidity, '% humedad relativa');
display(VViento, 'viento en m/s');
display(v, 'viento en km/h');
display(dewPoint, 'Dew point ºC');
altnubes=((tempC-dewPoint)/2.5)*304,799;
display(altnubes, 'Altura Base Nubes m.');
writeChannelID = 56115;
writeAPIKey = '-----------------------------';
thingSpeakWrite(writeChannelID, 'Fields',[4,5,6],'Values', [dewPoint,Wch,v], 'Writekey', writeAPIKey);
thingSpeakWrite(71070,'Fields',[2],'Values', [altnubes],'WriteKey','-------------------------------');

miércoles, 3 de febrero de 2016

Las cosas hablan!

Mi caldera me ha escrito un mail.

Hoy me ha llegado un correo de la caldera, como estaba previsto en el programa, al llegar a los 300l en el tanque de Gasoil, envió el siguiente mail:

Caldera calderadecasa@........com a traves de smtpcorp.com                                14:02(hace 7horas)
para mi

El nivel de Gasoil está al 30%
Temp=11,86ºC / Humedad=40%H.R. / Gasoil=293,47litros / Presion atm=1020,0hPa.


Es bastante emocionante a pesar de la sencillez del mensaje, sobre todo cuando no te lo esperas, ya ni me acordaba de que tenía que recibir el mensaje y fue una agradable sorpresa.
Ahora esperemos que llegue otro al llegar a los 200l, a los 100l, a los 75, a los 50... con un mensaje cada vez más dramático.

El resto del invento aquí.