lunes, 26 de septiembre de 2016

Controlar DOMOTICZ con Imperihome

Llevaba tiempo queriendo manejar los controles que tengo actualmente instalados y configurados en  Domoticz en mi raspberry.
Primero instalé en el teléfono y tablet la aplicacion Domoticz, que se puede descargar directamente desde Google Play. La aplicación está muy bien. Hay una versión de pago que permite hacer más cosas, una de las más interesantes es la relacionada con el geoposicionamiento del teléfono. Al parecer, se pueden definir acciones a partir de alertas definidas por la distancia a un punto.  Ejemplo, que se apague la calefacción o que se encienda en función de la distancia a la que estás de casa.
Recientemente he encontrado una aplicación que no he probado todavía, que permite esto y de forma gratuita. Lógicamente hay que abrir un puerto para acceder desde una red que ya no será local y en este caso no olvidar poner una contraseña al sistema.
Pero lo que quería comentar, es una aplicación que es bastante conocida, se trata de Imperihome.

imperihome, domoticz

Es mucho más bonita, además tiene un modo en el que la salida de reposo de la pantalla la hace por detección de movimiento de la cámara frontal de la tablet, ¡queda genial!
Como siempre, hay mucha información en la red para instalarla, por lo que no entro en detalles. Solo contar los problemas que he tenido, por si alguien que lea esto y se encuentre el mismo problema pueda intentar una solucion.
El primer problema lo tuve con la instalacion de NodeJS en su version 4.x, ya que parece ser que no funcionaría con versiónes posteriores.  Después de intentar una y otra vez las instrucciones de instalacion de la Wiki Domoticz
finalmente tuve que instalarlo de otra forma. En mi caso para armv6, ya que tengo Una raspberry B+:

wget http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz
tar -xvf node-v4.0.0-linux-armv6l.tar.gz
cd node-v4.0.0-linux-armv6l
 

Para Pi2 modelo B:
wget http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv7l.tar.gz
tar -xvf node-v4.0.0-linux-armv7.tar.gz
cd node-v4.0.0-linux-armv7l

y luego lo copiamos a /usr/local/
sudo cp -R * /usr/local/

Por cierto antes de esto borré node con :
sudo apt-get remove node

Encontre también un error cuando estaba intalando el paquete MyDomoAthome (creo recordar que este era el error que me daba:"dpkg: error: al analizar el fichero '/var/lib/dpkg/available' cerca de la línea 0:", despues de ver opciones y que ninguna funcionaba, pude solucionarlo ejecutando previamente esto:

sudo sh -c 'for i in /var/lib/apt/lists/*_Packages; do dpkg --merge-avail "$i"; done'

Creo recordar que estos fueron todos los problemas que encontré.

Os dejo en enlace de Github del proyecto Mydomoathome .https://github.com/empierre/MyDomoAtHome





domingo, 18 de septiembre de 2016

Interruptor capacitativo

Cuando hablo de un interruptor capactitativo me refiero a la posibilidad de utilizar como interruptor cualquier superficie metatalica. En mi caso lo he probado con la pata de la mesa y tambien con una lamina de aluminio pegada debajo del tablero de la mesa.
Lo único que hace falta es un arduino, en mi caso he usado un arduino mini , una resistencia de un valor elevado (marron, negro, azul =10 Megaohmios) y un circuito de un relé controlado desde el arduino.
Este es el esquema para conecta a la parte metalica:




En el esquema no he incluido el control de Relé que tengo conectado a D8. Podeis encontrar multitud de tutoriales para construir uno o bien comprar uno ya montado. Yo tengo hecho uno por mi, pero en este caso he preferido usar el "comercial". 

Solo queda subir el programa que está hecho a partir de la librería CapacitiveSensor. Alimentar la placa y a disfrutar encendiendo y apagando "cositas" "mágicamente"...

Ahora estoy viendo que tengo un problema para pegar el programa, sin que las linea se partan. No obstante lo dejo aquí pegado, seguro que si alguien quiere usarlo sabrá bien como arreglarlo. Si consigo averiguar como inserta la gente este tipo de programas en un blog lo volveré a pegar bien. Si alguien lee esta entrada de blog y sabe como hacerlo le agradeceré me deje un comentario explicativo.

#include <CapacitiveSensor.h>

/* CapitiveSense Library
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);        // 10M resistencia colocada entre los pines 4 y 2 el pin 4 esta conectado al sensor

long t1=0;//tiempo del ultimo estado en el que cambio el estado de la luz , de apagada a encendida.
long t2=0;//tiempo actual
long interval =1000;//intervalo que dejamos entre un cambio de estado, para evitar lecturas erronea, apagados/encendidos incontrolados.
int estadoluz= LOW;// variable para encender y apagar la luz. Iniciamos con valor bajo, esto es, apagada.

void setup()                   
{

   pinMode(8,OUTPUT);//pin donde conectamos la entrada del rele.
  
  
 Serial.begin(9600);
  
}
      
void loop()                   
{
   
    long t2 = millis();
    long total1 =  cs_2_4.capacitiveSensor(30);
     Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");
   
   
   
    if (total1 >1100 && ((t2-t1)> interval)){   //comparamos la lectura del sensor, para ver que numeros poner es recomendable ejecutar antes el programa de demo que tiene la libreria
      t1=t2;                                    //guardo el tiempo del cambio de estado para lo proxima vez
      if (estadoluz== LOW){                     // si estaba apagada pasara e estar encendida, en caso contrario pasara a estar apagada
        estadoluz=HIGH;
      }
        else{
          estadoluz=LOW;
        }
      digitalWrite(8,estadoluz);                // en funcion del condicional anterior se encendera o se apagara la luz
    }
}





Por cierto he probado cortando y pegando este texto y se pega todo bién ;)

Idea de uso para ESP 8266. Reloj depertador.

Al final conseguí configurar el ESP8266 con  ESP Easy firmware pero como todavía no he montado nada decente de enseñar no he creado el post. La idea al final será integrarla dentro de un radio reloj que uso de alarma. Se trata de un modelo con dos alarmas. Aprovechando que se enciende un led para indicar que alarm1 y/o alarm2 están conectadas he pensado aprovecharlo para unir  a dos entradas de la placa, así podré saber si está o no puesta la alarma. Despues conectaré otro pin al altavoz para detectar cuando suena la alarma. A partir es ese "evento" enviaré señal ON al interruptor que he creado en Domoticz, que hará que salte la escena que me interese. En este caso será encender una luz , una plancha para hacer las totadas y la cafetera. Así cuando llegue a la cocina estará todo "preparadito".
Bueno cuando vaya haciendo el proyecto iré anotando los detalles de programación, de creacion del interruptor virtual en Domoticz. etc.
Por cierto tengo que ver si lo que quiero hacer es posible con ESP Easy firmware o tendré que pasar a programarlo como un Arduino, ya que con Lua de momento no estoy muy suelto que digamos.