Electroválvula controlada con openHAB
En las entradas anteriores vimos como crear un controlador de electroválvulas a través de Internet (parte 1 aquí y parte 2 aquí), y ahora le toca el turno a la integración en openHAB.
Como vimos, el nodo controlador de electroválvulas, se controla mediante comandos enviados a través de HTTP (o de un navegador). Los comandos disponibles son:
http://ip_controlador/?ev1_on http://ip_controlador/?ev1_off
La forma mas fácil de enviar estos comandos mediante openHAB es crear un botón que nos permita activar y desactivar el elemento. Para ello modificamos nuestro sitemap (configurations/sitemaps/jdomo.sitemap), y añadimos tres botones, uno para cada controlador que tenemos en nuestro huerto, cada uno controlando una electroválvula:
sitemap jdomo label="Menu Principal" { Frame label="Riego Automático" { Switch item=Zona1 Switch item=Zona2 Switch item=Zona3 } }
Ahora definimos los tres items que hemos creado, en el fichero configurations/items/jardineria.items:
Switch Zona1 "Huerta" <drop> Switch Zona2 "Frutales" <drop> Switch Zona3 "Citricos" <drop>
Para finalizar tenemos que crear una regla para que cuando activemos o desactivemos el riego con los botones, se envíe la petición HTTP correspondiente al controlador adecuado. Creamos el fichero configurations/rules/riego.rules con el siguiente contenido:
rule "Caseta #1: Iniciar riego" when Item Zona1 changed to ON then sendHttpGetRequest("http://192.168.2.11/?ev1_on") end rule "Caseta #1: Parar riego" when Item Zona1 changed to OFF then sendHttpGetRequest("http://192.168.2.11/?ev1_off") end rule "Caseta #2: Iniciar riego" when Item Zona2 changed to ON then sendHttpGetRequest("http://192.168.2.12/?ev1_on") end rule "Caseta #2: Parar riego" when Item Zona2 changed to OFF then sendHttpGetRequest("http://192.168.2.12/?ev1_off") end rule "Caseta #3: Iniciar riego" when Item Zona3 changed to ON then sendHttpGetRequest("http://192.168.2.13/?ev1_on") end rule "Caseta #3: Parar riego" when Item Zona3 changed to OFF then sendHttpGetRequest("http://192.168.2.13/?ev1_off") end
Las direcciones IP de los controladores son la 192.168.2.11, 192.168.2.13 y 192.168.2.13. Además, como la imagen que usa openHAB para los items de tipo Switch es una bombilla encendida o apagada, he tenido que crear un icono mas adecuado a nuestro sistema de riego, una gota de agua en gris o azul, dependiendo de si el sistema esta parado, o regando. Para usar este icono tenemos que guardar tres imágenes en la carpeta webapps/images, drop.png, drop-on.png y drop-off.png (descargar aquí) y especificar que queremos usarlas en el archivo jardineria.items con el modificador <drop>.
Si todo ha ido bien, el resultado es el siguiente:


En la siguiente foto tenéis una de las casetas con su electroválvula controlada por Arduino, conectada por Ethernet a través de un PLC con el servidor openHAB:

Hola Jose Mª! que tal? yo aquí, comenzando con Arduino con muchas ganas! acabo de terminar un cursete, y voy a ir pillando poco a poco algunas piezas para ir haciendo pruebas. Una pregunta: ya te has cansado de escribir y hacer pruebas? lo digo porque como veo que no escribes desde antes de verano, y has cambiado de plataforma varias veces……..
Bueno, pues yo por ahora me he pillado un modulillo bluetooth para hacer pruebas desde el movil hacia el arduino y a la inversa, me ha costado muy barato (4 euros), pero ahora es que estoy mas pobre que las ratas.
Si tengo alguna duda te la podría consultar? lo digo más que nada porque mi intención es como tú, interconectar y interactuar con el arduino en diferentes aparatos electrónicos y modulos.
Gracias. 1saludo.
Hola Kaisgoo! Ahi voy. No, no me he dejado el proyecto, y de trastear jamás! jajajaja. Solo es que he tenido un familiar enfermo, pero afortunadamente ya esta mucho mejor, y eso se me ha juntado con otro robo (el quinto en dos años) que tuve en el chalet… y ya te imaginarás como voy, un poco de culo.
Además como ya comentaba en otra entrada, voy a la vez que trasteando, haciendo ‘reformas’ y chapuzas varias. En este tiempo he cambiado las puertas del chalet, he visitado unos viveros de la zona para comprar los arboles que tendré que regar con el sistema de riego automático, y he vaciado un sótano de basura y trastos de mas de 25 años… ¡ahí es nada!. También pienso hacer toda la instalación eléctrica de este sótano, con sus sensores y cámaras de vigilancia (ya estoy cansado de no saber quien me roba, tengo la cámara ESCAM QD-520 para probar (35€, HD con visión nocturna)), y documentarlo en el blog, porque seguro que a más de uno/una le interesa o tiene curiosidad 🙂
Tengo varias entrada a medio redactar, que espero acabar en breve (si todo va bien). Y por supuesto que cualquier pregunta será contestada a la mayor brevedad posible.
Sobre los módulos bluetooth, yo aún no he trasteado con ninguno, pero he leido bastante del HC-05 y el HC-06. Hace unos días me llego un modulo que quizá te interese: el USR-WIFI232-T, es un conversor serie-WIFI, parecido al HC-05/06 pero en wifi. Es una pasada las cosas que hace, y más aún lo pequeño que es, aun me falta comprobar el alcance que puede llegar a tener, pero puedo decir que es WIFI bgn, y puede hacer incluso de punto de acceso con DHCP! Sobre el precio: 8,54€ puesto en casa…
Como ves, me encanta trastear y probar cosas nuevas… sigo por aquí, cada día, y todos los comentarios son bienvenidos 🙂
Hola e seguido tu proyecto, y quería preguntarte has tenido la necesidad de leer datos desde el arduino.
me refiero a temperatura específicamente.
SENSOR1 .- T1:28 C
SENSOR1 .- H1:28 %
SENSOR2 .- T2:36 C
SENSOR2 .- H2:36 %
SENSOR3 .- T3:0 C
SENSOR3 .- H3:0 %
SENSOR4 .- T4:0 C
SENSOR4 .- H4:0 %
quería ver si es posible leer estos datos desde openhab.
e intentado esto
Number SENSOR2 «SENSOR2 [%.1f °C]» (Weather_Chart) {http=»<[ArduinoIOCache:1000:REGEX(T1:(.*?) C*)]" }
segui este ejemplo
http://www.mpmab.com/private/projects/styled-12/styled-15/index.html
Hola peon83, creo que la solución mas fácil para conectar tu arduino a openHAB es MQTT. La configuración sería la siguiente:
1. Configuras el servidor mosquitto (tienes mas informacion aqui https://p1.trasteandoarduino.com/2014/01/16/instalando-y-configurando-mosquitto-en-la-raspberry-pi/ y aqui https://p1.trasteandoarduino.com/2014/04/17/instalando-y-configurando-mosquitto-en-la-raspberry-pi-parte-2/)
2. Una vez que lo tienes configurado, hay que configurar el binding MQTT de openHAB para que reciba la informacion MQTT. Aqui https://github.com/openhab/openhab/wiki/MQTT-Binding tienes informacion al respecto.
3. En tu arduino deberas cargar la libreria pubsubclient que puedes descargar de aqui https://github.com/knolleary/pubsubclient), y cada vez que tengas una lectura, digamos cada minuto por ejemplo, publicarias un mensaje mqtt del estilo /arduino/temperatura 28 o /arduino/humedad 36, que openhab podria leer si esta suscrito al topic /arduino de tu servidor MQTT.
Los ejemplos que vienen con la libreria pubsubclient son bastante faciles de comprender. Yo los he probado y la unica precaucion que hay que tener a la hora de publicar un mensaje desde tu arduino, es comprobar que la conexion con el servidor MQTT esta abierta y si no es asi, forzar una reconexion. Me ha pasado que al enviar mensajes desde arduino cada 5 minutos, solo el primero que enviaba llegaba al servidor MQTT. Al final descubri que el problema estaba en que el servidor MQTT cerraba la conexion a los 60s si no recibia informacion (se soliciona facil reconectando antes de publicar un mensaje desde el arduino o aumentando el timeout de las conexiones en la configuracion del servidor MQTT).
Espero que te sirva la respuesta, y sobretodo es mucho mas estandar que usar un binding especifico para leer los datos de arduino, como el que comentas. MQTT es el estandar para comunicacion de dispositivos IoT, ademas esta mas que probado que funciona a la perfeccion y es muy muy sencillo…
Si tienes alguna duda o algun problema configurandolo aqui me tienes 🙂
Hola Jose Maria agradezco que contestaras a mi pregunta.
solo te comento que lo resolví de la siguiente manera, un poco, o mucho sucia creo pero por el momento, me siento a gusto de la forma y es mas entendible para mi .
el esquema que te comente en el mensaje anterior es el mismo solo genere un archivo en python que lee la informacion que se muestra en la pagina html.
e echo una relación etiqueta html (nombre del periférico a leer) con lod itrm en openhab
por ejemplo.
T1=28 leo estos datos con python donde T1 es el nombre del item y 28 la lectura y lo modifico en el status de los item de openhab.
te agradezco mucho y le checa re mosquitto a ver si lo implemento.