openHAB en Raspberry PI (parte 5): Configuración básica
- openhab_default.cfg: Contiene todos los valores por defecto del sistema. En principio no hay que tocarlo para nada.
- openhab.cfg: Hay que crearlo como una copia del anterior, y aquí es donde especificaremos la configuración de cada addon que tengamos instalado.
- users.cfg: Si activamos la seguridad, aquí se guardarán los usuarios y contraseñas de acceso al sistema.
- items: En los archivos de este directorio es donde especificaremos cada uno de los elementos de nuestro sistema domótico, es decir, los interruptores, los enchufes radio controlados, las cadenas de texto, los contadores…
- sitemaps: Por cada sistema domótico que creemos deberemos crear un archivo en este directorio y en él especificar como se agruparán los distintos items que queramos mostrar en la web de control.
- rules: Son las reglas de control del sistema. Indican qué hacer y cuando. Por ejemplo: si son las 7:00 envía un correo electrónico a tal dirección y enciende la radio.
- scripts: Los scripts son funciones que se pueden llamar desde distintas partes de openHAB (como las reglas) mediante el uso de callScript(«mi_script»). Sirven para reutilizar código.
- persistence: Si queremos ir almacenando información sobre el estado del sistema a lo largo del tiempo, en bases de datos, archivos, etc, deberemos definirlo en los archivos es este directorio.
Switch Estufa "Estufa del Salon" Number Temperatura "Temp [%.5f]" Switch Router { exec="<[/bin/sh@@-c@@ping -c 1 192.168.1.1 | grep \"packets transmitted\" | sed -e \"s/.*1 received.*/ON/\" -e \"s/.*0 received.*/OFF/\":30000:REGEX((.*))]" }
Para presentar los elementos en una web, creamos el fichero sitemaps/ejemplo1.sitemap con el contenido siguiente:
sitemap ejemplo1 label="Ejemplo 1" { Frame label="Primera Planta de Casa" { Switch item=Estufa } Frame label="Otros" { Text item=Temperatura Switch item=Router } }
Ahora vamos a crear una regla a modo de ejemplo que escriba algo en el Text item Temperatura cuando pulsemos el Switch item Estufa (no tiene mucho sentido, pero como es un ejemplo, nos vale). Para ello creamos el fichero rules/ejemplo1.rules con la siguiente regla:
rule "Actualiza el Texto" when Item Estufa received command then postUpdate(Temperatura, 20.0 + (25.0 - (Math::random * 500.0).intValue) / 100.0) end
Como hemos usado el plugin Exec tendremos que copiar del paquete comprimido de addons, el fichero correspondiente al plugin, que en el caso de la versión de desarrollo de openHAB, se llama org.openhab.binding.exec-1.4.0-SNAPSHOT.jar a la carpeta addons de nuestra instalación.
Finalmente iniciamos openHAB en modo depuración con el comando start_debug.sh, y nos conectamos a la web local de openHAB en http://127.0.0.1:8080/openhab.app?sitemap=ejemplo1 (o la que hayáis configurado) y trasteamos…
El ejemplo en sí mismo no tiene mucho sentido, pero nos sirve para ver las posibilidades que tiene el entorno y más o menos el funcionamiento de todos los componentes de forma integrada.
Hola Jose,
Como puedo ver los dialogos que ocurren en openhab con este ejemplo1, en el mosquitto? Saludos
¿A que te refieres con ‘los dialogos’? Si arrancas el openHAB en modo debug puedes ver todos los mensajes entre todos los modulos que tengas configurados, entre ellos los mensajes MQTT.
Hola Jose,
Había terminado de instalar mosquitto y siguir un ejemplo y mezclé las preguntas.
Me gustaría ver/interactuar en el bus entre MQTT y openhab.
por ej. Number itm_nivelmqtt «Nivel A [%.1f]» (ALL) {mqtt=»<[mymosquitto:4120:state:default]"} funciona, pero no se como escrivir algo en el bus de mosquitto para enviar algo a openhab para cambiar algo del tipo mosquitto_pub -d -t XXXXXXX
El objetivo sería publicar alguna cosa a través de la mosquitto (simulando el arduino en el bus) y obtener el resultado/accion en openhab.
En principio cuando defines el item lo haces de la siguiente forma:
Item myItem {mqtt=»direction[broker:topic:type:transformer], direction[broker:topic:type:transformation], …»}
En el ejemplo que pones parece que el topic no esta bien (4120). Tienes unos ejemplos para definir el item en https://github.com/openhab/openhab/wiki/MQTT-Binding#example-inbound-configurations
Espero que te sea de ayuda, ya nos contaras que tal resultado te da 🙂 Si te da algún problema dímelo, lo pruebo mas a fondo en mi equipo y vemos de donde puede venir el error.
Muchisimas gracias Jose,
Voy a tratar de aprender um poco mas y luego informo el resultado,
Saludos,