Página 1 de 1

Domótica con OpenHAB

Publicado: 28 Jul 2015 18:47
por naish
Buenas,
estoy pensando en domotizar progresivamente mi casa. Empezaré por algo sencillo (no te pongas nervioso Iván), como un pequeño termostato que tenga:
- sensor de temperatura (con wifi ESP8266 y DHT22 -no recomiendo DHT11-)
- relé (con wifi ESP8266 y un relé)

Todo esto conectado con OpenHAB ( http://www.openhab.org/ ), que es un software especifico para domótica, con gran comunidad (forum y google+).

En el futuro, la idea sería poder añadir (si se desea):
- sensores adicionales en diferentes habitaciones
- subir/bajar persianas
- electroválvulas en radiadores
- conectar/desconectar AC

Lo que he hecho hasta ahora ha sido conectar el DHT22 a Thingspeak, siguiendo el siguiente tutorial (muy sencillo):
http://www.tupperbot.es/2015/06/humedad ... hingspeak/

Mi siguiente paso:
Conectar un relé por MQTT a OpenHAB siguiendo este tutorial:
http://www.instructables.com/id/An-inex ... /?ALLSTEPS
Una vez hecho esto me gustaría no tener que depender de ThingSpeak (para no sacar los datos fuera de la red local)

Otros enlaces de interés:
http://forum.mysensors.org/topic/302/op ... tips-hints
https://thingspeak.com/

Re: Domótica con OpenHAB

Publicado: 29 Jul 2015 08:39
por kurtsik
Gracias por los enlaces, Jorge, ire echandoles un vistazo por que parecen muy interesantes.

Re: Domótica con OpenHAB

Publicado: 29 Jul 2015 09:44
por JotaCe
Muy interesante el proyecto Jorge. Y mas después de haber tenido la oportunidad de verte ayer explicarlo un poco. La domótica no es algo que me quite el sueño ahora mismo pero el manejo de máquinas a distancia "en general" me interesa mucho. En particular también porque mi futuro disparador para fotografía se va a tener que manejar así y es la parte del proyecto en la que más perdido estoy.
Muy amable de tu parte hacer el esfuerzo por compartir.

Re: Domótica con OpenHAB

Publicado: 03 Ago 2015 22:57
por naish
Os cuento mis progresos hasta el momento (si alguno se pierde en algún paso, que me pregunte).

1. MQTT
Lo primero que he hecho ha sido enterarme de cómo funciona este protocolo. En todos los temas de domótica parece que se usa mucho, y es lo que tenía pensado usar, tanto por tratarse de un standard, como porque se integra bien en OpenHab. Hay mucha literatura al respecto (tanto del protocolo en sí como de proyectos utilizándolo) así que me parece la mejor opción.
He empezado instalando "mosquitto" en la raspberry pi 2 (que es la máquina que utilizaré como servidor de openhab). Las pruebas podéis hacerlas sobre cualquier máquina linux.
Para su instalación y pruebas, recomiendo seguir las instucciones de Jan-Piet Mens: http://jpmens.net/2013/09/01/installing ... pberry-pi/

2. Además de las pruebas que se indican en el enlace anterior con las mqtt_tools (consola de linux), recomiendo buscar un cliente de MQTT.
Tenéis un listado de diferentes clientes aquí: http://www.hivemq.com/seven-best-mqtt-client-tools/
Yo he probado algunos y el que más me ha gustado es el MQTTlens, que es una extensión de chrome.

3. En otro hilo ( viewtopic.php?f=9&t=74 ), ya he contado cómo instalar la extensión de ESP8266 en el IDE de Arduino. Utilizaré ese IDE.

4. He buscado un ejemplo de conexión del ESP8266 al MQTT Broker que tengo en la Raspberry... y lo he conseguido.
El ejemplo está en https://gist.github.com/igrr/7f7e7973366fc01d6393.
Es necesario instalar la librería PubSubClient.h y he tenido que modificar un poco el código del ejemplo para que funcione (lo sé, no es lo ideal, pero parece que va).
Si os conectáis con el puerto serie al ESP8266 tras cargar el programa, veréis una serie de mensajes que os serán útiles (topic al que debéis suscribiros, etc.)

5. Mi siguiente paso ha sido intentar cargar el ejemplo en el que si el ESP8266 recibe un "1" en cualquier topic del broker, encienda/apague un led.
El ejemplo está en http://www.esp8266.com/viewtopic.php?f=29&t=2745
Aquí me he quedado atascado.
El problema viene motivado por la librería "PubSubClient.h" debido a la cual he tenido que modificar el código ejemplo del punto 4.
He encontrado al menos 3 librerías pubsubclient distintas. He preguntado en el foro a ver cual es la buena, y les he indicado mi error de compilación:

In file included from esp8266_pubsubclient.ino:1:0:
C:\Users\George\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.5-947-g39819f0\libraries\pubsubclient-master\src/PubSubClient.h:72:46: error: section attribute not allowed for '<anonymous>'
boolean publish_P(char *, uint8_t PROGMEM *, unsigned int, boolean);

(A parte de otros warnings, que no evitaron que el ejemplo 4 funcionase).
Así pues... ¿alguien que se ponga con ello y vemos a ver hasta donde llegamos?
No puede ser tan difícil, ¡la gente tiene cosas funcionando con esto!

Re: Domótica con OpenHAB

Publicado: 03 Ago 2015 23:14
por naish
Alternativa al paso 5 de mi post anterior:
Probar este ejemplo: https://github.com/jpenninkhof/esp_mqtt_switch
Que se describe en este post http://www.penninkhof.com/2015/05/linki ... ough-mqtt/

Mi problema: me bajo el zip del github, pero como no controlo el eclipse, me pierdo un poco para importarlo y compilarlo.
Si mañana tengo tiempo, intentaré importarlo en el IDE de Arduino.

Si alguien anda más ducho que yo en esto, que intente compilar ese proyecto a ver si funciona... y si lo consigue, que describa el procedimiento.

Re: Domótica con OpenHAB

Publicado: 04 Ago 2015 23:38
por naish
Para el punto 4, he conseguido hacerlo funcionar con la librería PubSubClient de esta dirección:
https://codeload.github.com/Imroy/pubsu ... zip/master

Además, en el código que menciono, he tenido que cambiar la línea de llamada a PubSubClient y dejarla así:
"PubSubClient client(wifiClient, server, 1883);"

Por otro lado, he leído comentarios de que la librería que debería utilizarse para MQTT no es PubSubClient, sino esta otra:
https://github.com/tuanpmt/esp_mqtt
Según he leído, está mejor hecha, tiene más características y más actualizada que la PubSubClient.
No parece muy complicada de utilizar... pero los ejemplos son limitados, y habrá que currarselo un poco. Voy a ver si compila...

Re: Domótica con OpenHAB

Publicado: 06 Ago 2015 08:55
por kurtsik
Os detallo el proceso que he seguido para compilar el ejemplo que aparece en este enlace que envio Jorge:

https://github.com/tuanpmt/esp_mqtt

El primer paso es obtener el firmware del ESP. Hay varias fuentes y versiones pero en este enlace estan todos los elementos reunidos en un solo comprimido por lo que se facilita mucho la tarea:

https://github.com/pfalcon/esp-open-sdk

Para empezar crearemos un directorio llamado ESP donde realizaremos todas las operaciones.
Seguidamente nos aseguraremos de tener todas las dependencias necesarias:

Código: Seleccionar todo

apt-get install make unrar autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python python-serial sed git libtool-bin
Estas instrucciones son para Debian/Ubuntu, en otras distibuciones como Fedora el nombre de los paquetes puede cambiar ligeramente.

Atencion: todo el proceso lo realizaremos en la misma ventana del terminal!!

- Instalacion del sdk:
Descargamos los archivos del proyecto:

Código: Seleccionar todo

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
cd esp-open-sdk
E iniciamos la compilacion:

Código: Seleccionar todo

make STANDALONE=y
Parte del codigo necesario tiene licencias no libres y es necesario descargarlas durante este proceso. Aviso: tarda bastante!.
Una vez terminada la compilacion nos aparecera una linea similar a esta que debemos copiar y ejecutar en el terminal:

Código: Seleccionar todo

export PATH=/home/kurtsik/esp_sdk/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

- Compilacion del cliente MQTT:

Volvemos al directorio base (/ESP) y descargamos los archivos del proyecto:

Código: Seleccionar todo

git clone https://github.com/tuanpmt/esp_mqtt
cd esp_mqtt
Y compilamos:

Código: Seleccionar todo

make clean
make SDK_BASE="../esp-open-sdk/sdk" FLAVOR="release" all