Parte de guía del principiante openhab 2: zwave, mqtt, reglas y gráficos

Libre no siempre significa “no es tan bueno como pagado”, y OpenHAB no es una excepción. El software de automatización del hogar de código abierto excede con mucho las capacidades de cualquier otro sistema de automatización del hogar en el mercado - pero no es fácil para ponerse en marcha. De hecho, puede ser francamente frustrante.

Descargar este artículo completo en formato PDF. Siéntase libre para compartir con tus amigos y familia.

En la parte 1 de la guía, que caminaba a través instalar OpenHAB en un Frambuesa Pi, introducido los conceptos básicos de OpenHAB, y mostró cómo agregar sus primeros puntos en el sistema. Hoy vamos a ir más allá:Introducción a OpenHAB Home Automation en la Raspberry PiIntroducción a OpenHAB Home Automation en la Raspberry PiOpenHAB es una plataforma madura, abierta casa fuente de automatización que se ejecuta en una variedad de hardware y es el protocolo agnóstico, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado hoy en día.Lee mas

  • Adición de dispositivos Zwave
  • Adición de un controlador final Harmony
  • La introducción de normas
  • La introducción de MQTT, y la instalación de un corredor de MQTT en su Pi, con sensores en un Arduino
  • Registro de datos y graficar

Introducción a la Z-Wave

Z-Wave ha sido el protocolo de automatización del hogar dominante durante años: que es fiable, ha sido ampliamente desarrollado, y trabaja en un rango mucho más tiempo que cualquier otro producto para el hogar inteligente. Hay cientos de sensores Z-Wave disponibles para usted que realizan una amplia gama de tareas. OpenHAB poder trabajar con Z-Wave, pero es una molestia para configurar y fiabilidad no está garantizada.

Si usted está considerando la compra de una casa llena de sensores Z-Wave específicamente para su uso con OpenHAB, me animo a reconsiderar. Es posible que funcione de maravilla para usted, o puede estar plagado de problemas pequeños pero persistentes. Al menos, no comprar una casa llena de sensores hasta que haya tenido la oportunidad de probar unos pocos. La única razón para elegir Z-Wave es si usted no está 100% se decidió por OpenHAB, y quisiera dejar sus opciones abiertas en el futuro: de Z-Wave, por ejemplo, trabaja con Samsung SmartThings concentrador, así como centros específicos de Z-Wave como HomeSeer, y una variedad de otras opciones de software tales como Domoticz.¿Qué Smart Hub de automatización del hogar es mejor para usted?¿Qué Smart Hub de automatización del hogar es mejor para usted?Durante un tiempo, la gente pensaba de la idea como nada más que un truco, pero los recientes lanzamientos de productos han demostrado que la automatización del hogar inteligente está comenzando a la altura de sus promesas.Lee mas

Aunque OpenHAB incluye una unión de Z-Wave, todavía se necesita configurar la red Z-Wave primera, antes OpenHAB se empezará a usar para los datos. Si usted tiene una tarjeta controladora de Rasberry, tiene algún tipo de software suministrado para la configuración de la red, por lo que no estará cubriendo eso aquí. Si usted compró un controlador Z-Stick USB Aeotec o similares, es probable que no tiene ningún software incluido, así que sigue leyendo.

Aeotec por Aeon Labs de ZW090 Z Stick, pequeña, blancaAeotec por Aeon Labs de ZW090 Z Stick, pequeña, blancaZ-Wave adaptador USB / capacidad de actualización del firmware Ahora comprar en Amazon $ 44.95

Si ya tiene una configuración de red Z-Wave, puedes basta con conectar el controlador en el Pi y comenzar a configurar la unión y artículos. Si esta es su primera incursión en la Z-Wave, que es un poco más compleja.

En primer lugar, en el lado del hardware: cada controlador tiene su propia forma de emparejamiento con dispositivos (técnicamente conocido como “modo de inclusión” en el que se asigna un ID de nodo). En el caso de la AOTEC Z-Stick, esto significa desconectarlo del puerto USB, y pulsando el botón una vez para colocarlo en modo de inclusión. Luego llevarlo cerca del dispositivo que está emparejamiento, y pulse el botón inclusión en eso también (Esto también varían: mi toma Everspring requiere el botón de presionar 3 veces en rápida sucesión, por lo que la lección aquí es leer el manual de su dispositivo).

Los destellos Z-palillo brevemente para indicar el éxito. Esto presenta problemas a la hora de volver a enchufarlo en el Pi, como se le asigna un nuevo puerto. Reinicie el Pi tener que reiniciar de nuevo al puerto estándar si encuentra que ha sido reasignados dinámicamente una diferente. Mejor aún: no enchufe en el Pi hasta que haya hecho todas las combinaciones de hardware en primer lugar.

Instalación HABmin y Z-Wave Vinculaciones

Desde OpenHAB en realidad no una utilidad de configuración para Z-Wave, vamos a instalar otra herramienta de gestión web que hace - algo que se llama HABmin. La cabeza de más al repositorio de Github HABmin descargar la versión actual. Una vez que haya descomprimido, encontrará 2 .tarro archivos en el directorio de complementos - éstos deben colocarse en el directorio de complementos correspondientes en su parte OpenHAB Inicio (Si también está utilizando el AOTEC gen5 Z-Stick, asegúrese de que tiene al menos la versión 1.8 de unirse a la Z-Wave).

A continuación, cree una nueva carpeta en el directorio de aplicaciones web, y lo llamó “habmin” (en minúsculas es importante). Copiar el resto de los archivos descargados en allí.

Nota: También hay una HABmin 2 bajo desarrollo activo. La instalación es la misma pero con un complemento .jar adicional. Podría ser vale la pena probar tanto sólo para ver cuál prefiere.

Si no lo ha hecho, conecte el controlador en su Pi. Escriba lo siguiente para encontrar el puerto correcto.

ls / dev / tty *

Usted está buscando cualquier cosa con USB en el nombre, o en mi caso particular, el Z-stick presentado como / Dev / ttyACM0 (Un módem). Puede ser que sea más fácil hacer el comando una vez antes de que lo conecte, y una vez después, para que pueda ver lo que cambia si no está seguro.

devtty

Abre el archivo de configuración OpenHAB y modificar el apartado de Z-Wave, eliminando el comentario de las dos líneas y poner la dirección del dispositivo real. Un último paso para mí era permitir que el usuario OpenHAB para acceder al módem.

sudo usermod -G -a dialout openhab

Ahora, para poner todo en acción, reinicie OpenHAB

sudo reinicio del servicio openhab

Con suerte, si usted está comprobando el registro de depuración, verá algo como esto. Felicitaciones, ahora están hablando Z-Wave. También puede encontrar el registro de depuración inundado con mensajes de varios nodos Z-Wave. Vamos a empezar por el control de HABMIN para ver lo que ha encontrado: http: //openhab.local: 8080 / habmin / index.html (en sustitución de openhab.local con su nombre de host Frambuesa Pi o la dirección IP).

Zwave puesta en marcha en el registro openhab

Hay mucho que ver en HABMIN, pero sólo estamos realmente preocupados por la -gt configuración; Bindings -gt; Z-Wave -gt; dispositivos pestaña, como se puede ver a continuación. Expanda el nodo para editar la ubicación y la etiqueta de nombre para su facilidad de referencia.

editar el nombre del dispositivo

Configuración de los elementos de Z-Wave

Cada dispositivo Z-Wave tendrá una configuración específica para OpenHAB. Afortunadamente, la mayoría de los dispositivos ya han sido exploradas y no habrá ejemplos que hay para el suyo ya. Configuración de dispositivos personalizados que no son reconocidos está más allá del alcance de esta guía, pero vamos a suponer que es apoyado por el momento.

En primer lugar, Tengo un interruptor básico Everspring AN158 poder y metros en el nodo 3. Una rápida búsqueda en Google me llevó a un blog el Wetwa.re, con una configuración de partida de la muestra. Adapté esto como sigue:

cambiar Dehumidifier_Switch "deshumidificador" {ZWave ="3: comandos = switch_binary"} Número Dehumidifier_Watts "el consumo de energía Deshumidificador [% .1f W]" {ZWave ="3: comandos = metros" }

Perfecto.

El siguiente es un Aeotec Gen5 multisensor.

Aeon Labs de Aeotec Z-Wave Gen5 multisensor (Z-Wave Plus)Aeon Labs de Aeotec Z-Wave Gen5 multisensor (Z-Wave Plus)Detecta el movimiento, sensibilidad a la luz, temperatura y humedad - envía señales a un máximo de 6 dispositivos Z-Wave asociados, estos sensores no son compatibles con el "GUIÑO" cubo Ahora comprar en Amazon

Para éste, me encontré con un config muestra a iwasdot.com, y mi multisensor es el nodo 2.

número Hallway_Temperature "Pasillo Temperatura [% .1f ° C]"  (Pasillo, Temperatura) {ZWave ="2: 0: comando = sensor_multilevel, sensor_type = 1, sensor_scale = 0"} Número Hallway_Humidity "Pasillo Humedad [% .0f %%]"  (Pasillo, Humedad) {ZWave ="2: 0: comando = sensor_multilevel, sensor_type = 5"} Número Hallway_Luminance "Pasillo de luminancia [% .0f Lux]" 																 (Pasillo) {ZWave ="2: 0: comando = sensor_multilevel, sensor_type = 3"Contacto} Hallway_Motion "Pasillo Motion [% s]" (Pasillo, Movimiento) {ZWave ="2: 0: comando = sensor_binary, respond_to_basic = true"} Número sensor_1_battery "Batería [% s %%]" (Motion) {ZWave ="2: 0: comando = batería"}

Si el formato de este aspecto extraño a usted, por favor dirigirse a volver a la primera Guía para principiantes, específicamente la tonalidad sección, donde explico cómo se añaden elementos de unión. Es probable que sólo alguna vez tenga que copiar pegar ejemplos como este, pero en caso de tener un nuevo dispositivo, se detalla la documentación de la unión de todos los comandos.Introducción a OpenHAB Home Automation en la Raspberry PiIntroducción a OpenHAB Home Automation en la Raspberry PiOpenHAB es una plataforma madura, abierta casa fuente de automatización que se ejecuta en una variedad de hardware y es el protocolo agnóstico, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado hoy en día.Lee mas

Logitech Harmony Encuadernación

Antes de saltar en reglas, que quería añadir una nota rápida acerca de cómo trabajar con la unión de la Armonía. Soy un gran fan de la serie de mandos a distancia Harmony finales para simplificar la experiencia de centro multimedia para el hogar, pero a menudo presentarse como un sistema separado dentro de la casa inteligente. Con OpenHAB, actividades Logitech Harmony y el control total del dispositivo pueden ahora ser una parte de su sistema centralizado, e incluso incluido en las reglas de automatización.

Comenzar con la instalación de los tres archivos de unión que se encuentran utilizando apt-cache para buscar “armonía”:

openhab apt-cache search vinculante para la armonía

No se olvide de chown el directorio de enlaces de nuevo cuando haya terminado:

sudo apt-get install openhab-addon-acción-harmonyhubsudo apt-get install openhab-addon-vinculante-harmonyhubsudo apt-get install openhab-addon-io-harmonyhubsudo chown -Hr openhab: openhab / usr / share / openhab

Para configurar el enlace, abre el archivo openhab.cfg y añadir una nueva sección de la siguiente manera:

########## HARMONY TELEMANDOS ########## harmonyhub: host = 192.168.1.181 o su IPharmonyhub: nombre de usuario =tu-armonía-email-loginharmonyhub: password =tu contraseña

La dirección IP es la de su centro de Armonía. Utilizar un escáner de red de averiguarlo. También tendrá que introducir sus datos de acceso, los que entran cuando se inicie la utilidad de configuración estándar Armonía. Eso es. Al reiniciar su matiz, su registro de depuración debe tener una explosión repentina de la salida de la unión.

Esta es una lista con formato JSON de todas sus actividades, dispositivos y comandos que pueden ser enviadas. Es una buena idea para copiar esto para futuras referencias. puede que sea aún más fácil de leer con nodos plegables por pegar en un formateador JSON en línea como este.

json salida openhab formateado

Así como la actividad PowerOff estándar, que es un defecto, usted encontrará sus propias actividades definidas enumerados aquí por su nombre. Ahora vamos a crear un simple control de un solo botón para iniciar las actividades. En primer lugar, en su archivo de artículos, añadir la siguiente línea. Cambiar el grupo y el icono si lo desea.

/ * * Harmony Hub / Cadena Harmony_Activity "Harmony [% s]"  (Living_Room) {harmonyhub ="*[Actividad actual]" }

Esto es un Bidireccional unión de cuerdas, que es capaz de tanto buscar a la actividad actual, y ordenar la actividad actual que ser otra cosa. Ahora podemos crear un botón para que, en el archivo de mapa del sitio.

elemento interruptor = asignaciones Harmony_Activity = [PowerOff = `Off`, Ejercicio = `Ejercicio`, 13858434 = `TV`, Karaoke = `Karaoke`]

En el corchete verá cada actividad junto con la etiqueta. En general, puede hacer referencia directamente a las actividades a medida que los ha nombrado en su control remoto, pero la excepción a esto que encontré, era cualquier cosa con un espacio en el nombre de la actividad, tales como “Ver TV”. En este caso, tendrá que utilizar el ID de actividad. Una vez más, se puede encontrar el ID en la salida de depuración JSON. Guardar y actualizar su interfaz, debería ver algo similar a esto:

armonía openhab en el mapa del sitio

También puede hacer referencia a las actividades en las reglas, como veremos a continuación. Leer la página wiki para obtener más información sobre la unión Armonía.

Una introducción general a las Reglas

La mayoría de los centros para el hogar inteligente incluyen algún tipo de creación de reglas para que pueda reaccionar automáticamente a los datos del sensor y eventos en el hogar. De hecho, yo diría que un hogar verdaderamente inteligente no es uno que necesita para pasar tiempo interactuando con aplicaciones móviles - es uno que es invisible para el usuario final y completamente automatizado. Con este fin, OpenHAB también incluye un potente lenguaje de reglas de secuencias de comandos que se pueden programar, muy por encima de la complejidad de la mayoría hubs inteligentes para el hogar o recetas ifttt.Batalla de las Smart Home Ejes: lo que hay y lo que viene?Batalla de las Smart Home Ejes: lo que hay y lo que viene?Lee mas

Programación de reglas suena peor de lo que es. Vamos a empezar simple con un par de reglas que se activan o desactivan la luz en función del sensor de presencia:

regla "la luz en la oficina cuando James presente"whenItem JamesInOffice cambiado de OFF a ONthensendCommand endrule (Office_Hue, ON) "Oficina luz apagada cuando James hojas"whenItem JamesInOffice cambió de ON a OFFthensendCommand (, OFF Office_Hue) end

En primer lugar, llamamos la regla - Descriptivo, por lo que sabemos qué evento está disparando. A continuación, definimos nuestra regla simple diciendo cuando x es cierto, entonces hacer y. Fin significa el cierre de esa regla en particular. Hay un número de palabras especiales que se pueden utilizar en las reglas, pero por ahora estamos tratando con dos bits simples de sintaxis - ít., lo que le permite consultar el estado de algo- y sendCommand, lo que hace exactamente lo que creo que sí. Te dije que esto era fácil.

Es probable que sea innecesario el uso de un par de reglas, sino como mi lógica se vuelve más complejo que va a ser beneficioso tener separados por si estoy entrar o salir de la zona - y que podría ser una buena idea añadir un sensor de luz en alguna parte en la ecuación de lo que no estamos innecesariamente encender las luces.

Veamos otro ejemplo para crear una regla programada.

regla "Ejercer todas las mañanas"cron whenTime "0 0 8 1/1 *? *"thenharmonyStartActivity ("Ejercicio")fin

Una vez más, nombramos las reglas, condiciones de estado cuando debería fuego, y las acciones a tomar. Pero en este caso, estamos definiendo un patrón de tiempo. El código divertida que se ve en las cotizaciones es una expresión CRON de cuarzo Scheduler (el formato es ligeramente diferente a un crontab regular). Solía ​​cronmaker.com para ayudar a crear la expresión, pero también se puede leer la guía de formato para una explicación detallada y más ejemplos.

generador de cron
CronMaker.com utiliza para generar la expresión Cron formato correcto

Mis reglas dice simplemente “8 cada mañana, cada día de la semana, di a mi último sistema Harmony para iniciar la actividad de ejercicio”, que a su vez activa el televisor, el Xbox, el amplificador, y presiona el botón A después de un minuto para el lanzamiento el disco en la unidad.

Lamentablemente, OpenHAB todavía no es capaz de hacer el ejercicio para mí.

Una regla más que quiero mostrar que es algo que utilizo para gestionar los niveles de humedad en mi casa. Tengo una sola deshumidificador, que necesito para moverse siempre que sea necesario, así que decidí mirar todos mis sensores de humedad, encontrar cuál es el más alto, y que almacenar en una variable. En la actualidad está activa cada minuto, pero que puede ser fácilmente bajó. Echar un vistazo en primer lugar:

org.openhab.core.library.types importación. * *. org.openhab.model.script.actions importación importación java.lang.Stringrule "monitor de humedad"cuando cron Tiempo "0 * * * *?"thenvar prevHigh = 0var highHum = ""Humedad .members.forEach [hum |? LogDebug ("humidity.rules", Hum.name) -Si (hum.state como DecimalType gt; prevHigh) {prevHigh = hum.statehighHum = hum.name + ": " + + Hum.state "%"}] LogDebug ("humidity.rules", HighHum) -postUpdate (Dehumidifier_Needed, highHum) -end

El núcleo de la norma es en el Humedad? .members.foreach línea. La humedad es un nombre de grupo para mi humedad sensors- .miembros agarra todos los elementos en ese grupo- para cada itera sobre ellos (con un formato de corchetes curioso es probable que no están familiarizados con). La sintaxis de las reglas es un derivado de Xtend, para que pueda leer la documentación Xtend si no puede encontrar un ejemplo de adaptación.

Es probable que no necesita, aunque - hay cientos de ejemplo no descarta:

  • Explicación detallada de las reglas en el wiki oficial
  • El funcionario gobierna la página wiki de muestras
  • Tomando reglas a nuevas alturas
  • ejemplos avanzados en IngeniousFool.net

MQTT para OpenHAB e Internet de las Cosas

MQTT es un sistema de mensajería de peso ligero para la comunicación de máquina a máquina - una especie de Twitter para sus Arduino o Raspberry Pi a hablar entre sí (aunque, por supuesto, funciona con mucho más que aquellos). Está ganando rápidamente en popularidad y la búsqueda de sí mismo una casa con Internet de los dispositivos cosas, que son generalmente bajos recursos micro-controladores que necesitan una forma fiable para transmitir los datos del sensor de nuevo a su concentrador o recibir comandos remotos. Eso es exactamente lo que vamos que vamos a hacer con él.

Pero ¿por qué reinventar la rueda?

MQ Telemetry Transport fue inventado en 1999 camino de regreso para conectar tuberías de petróleo a través de conexiones satelitales lentos, específicamente diseñadas para minimizar el uso de la batería y ancho de banda, sin dejar de ofrecer la entrega de datos fiable. Con los años los principios de diseño siguen siendo los mismos, pero el caso de uso ha pasado de los sistemas integrados especializados a internet general de los dispositivos de las cosas. En 2010, el protocolo fue liberado libre de regalías, abierta para que cualquiera pueda utilizar y aplicar. Nos gusta gratuita.

Tal vez se pregunte por qué estamos siquiera molestarse con otro protocolo - que ya tenemos los protocolos HTTP, después de todo - que se puede utilizar para enviar mensajes rápidos entre todo tipo de sistemas conectados web (como OpenHAB y IFTTT, en particular con el nuevo canal fabricante). Y tendría razón. Sin embargo, la sobrecarga de procesamiento de un servidor HTTP es bastante grande - hasta tal punto que no se puede ejecutar fácilmente uno en un microcontrolador incrustado como el Arduino (por lo menos, se puede, pero no tendrá mucha memoria para otra cosa ). MQTT es la otra parte es ligero, por lo que el envío de mensajes alrededor de su red no va a obstruir los tubos, y que puede encajar fácilmente en nuestro pequeño espacio de memoria Arduino.Ahora IFTTT Se conecta a cualquier cosa: Presentación de la Canal fabricanteAhora IFTTT Se conecta a cualquier cosa: Presentación de la Canal fabricanteLos usos potenciales para IFTTT son infinitas. Pero, hasta ahora, ha sido difícil para interactuar con sus propios proyectos de hardware. Hoy en día, todo eso ha cambiado.Lee mas

¿Cómo funciona la MQTT?

MQTT requiere tanto de un servidor (llamado un “corredor”) y uno o más clientes. El servidor actúa como un intermediario, recibiendo mensajes y retransmisión a los clientes interesados.

Vamos a continuar con el Twitter-para-máquinas aunque analogía. Del mismo modo que los usuarios de Twitter pueden tuitear sus propias sin sentido 140 caracteres, y los usuarios pueden “seguir” a otros usuarios a ver un flujo curada de puestos, los clientes MQTT pueden suscribirse a un canal en particular para recibir todos los mensajes de allí, así como publicar sus propios mensajes a ese canal. Este patrón de publicación y suscripción se conoce como pub / sub, en contraposición a la tradición Servidor de cliente modelo de HTTP.

HTTP requiere que se llega a la máquina que se está comunicando con, saluda, a continuación, tiene un ida y vuelta constante de reconocer unos a otros mientras se obtienen o datos. Con pub / sub, el cliente hace la publicación no tiene por qué saber qué clientes se suscriben: sólo bombea los mensajes, y el corredor de los redistribuye a los clientes suscritos. Cualquier cliente puede tanto publicar y suscribirse a temas, al igual que un usuario de Twitter.

A diferencia de Twitter, sin embargo, MQTT no está limitado a 140 caracteres. Es datos agnóstico, por lo que puede enviar números pequeños o grandes bloques de texto, los datagramas con formato JSON, o incluso las imágenes y archivos binarios.

No es que es mejor que MQTT HTTP para todo - pero es más adecuada si vamos a tener un montón de sensores alrededor de la casa, constantemente informes en.

También es importante saber que OpenHAB no actuará como su agente MQTT - vamos a tratar de que poco más tarde. Sin embargo, OpenHAB actuará como cliente: puede tanto publicar su registro de actividad OpenHAB, así como los canales especial se unirán a los dispositivos, por lo que puede tener por ejemplo un interruptor que está controlado por mensajes MQTT en un canal particular. Esto es ideal para la creación de una casa llena de sensores.

Instalar mosquitto en su Pi

Aunque OpenHAB incluye un cliente MQTT por lo que puede suscribirse a un tema y también publicar mensajes, no va a actuar como servidor. Para eso, o hay que hacer uso de un agente MQTT basada en web (pagado o gratis), o instalar el software libre en su Pi. Me gustaría mantener todo en la casa, por lo que he instalado en el mosquitto Pi.

Por desgracia, la versión disponible a través de la habitual apt-get es completamente fuera de fecha. En su lugar, vamos a añadir las últimas fuentes.

wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add /etc/apt/sources.list.d/sudo mosquitto-repo.gpg.keycd wget http: // repo. mosquitto.org/debian/mosquitto-wheezy.listsudo apt-get install mosquitto

Eso es todo lo que tenemos que hacer para tener un servidor hasta MQTT y en ejecución en la red local. Su agente se ejecuta en el puerto 1883 por defecto.

Compruebe su servidor MQTT está trabajando con el MQTT.fx libre, que es multiplataforma. Haga clic en el icono de configuración para crear un nuevo perfil, y escriba su dirección IP o el nombre de Frambuesa Pi. Guardar, y pulsa conectar. Si el pequeño semáforo en la parte superior derecha se pone verde, ya está bueno para ir.

perfil ejemplo mqttfx

Para una prueba rápida, haga clic en la pestaña “subscribe” y escriba inTopic / en el cuadro de texto, después haga clic en el Suscribir botón. Ahora estás suscrito para recibir el mensaje en el tema llamado inTopic, a pesar de que va a estar mostrando 0 mensajes. Volver a la pestaña publicar, escriba inTopic en la caja pequeña, y un mensaje corto en el siguiente cuadro de texto. Golpear Publicar un par de veces y mirar hacia atrás en la ficha suscribirse. Debería ver algunos mensajes que consten en ese tema.

prueba inTopic MQTT

Antes de añadir algunos sensores reales a nuestra red, tenemos que aprender acerca de los niveles de temas, que nos permiten estructurar y filtrar la red MQTT. nombres de los temas entre mayúsculas y minúsculas, no deben comenzar con $, o incluir un espacio o caracteres no ASCII - prácticas de programación estándar para los nombres de las variables, de verdad.

El / separador indica un nivel de tema, que es jerárquica, por ejemplo, los siguientes son válidos todos los niveles tema.

inTopic / smallSubdivision / evenSmallerSubdivisionmyHome / Living / temperaturemyHome / Living / humiditymyHome / cocina / temperaturemyHome / cocina / humedad

Ya, usted debe ver cómo esta estructura de árbol es perfecto para una casa inteligente completa de sensores y dispositivos. La mejor práctica para su uso con múltiples sensores en una habitación individual es publicar cada variable del sensor como su propio nivel de tema - ramificación a una mayor especificidad (como en los ejemplos anteriores) - en lugar de tratar de publicar varios tipos de sensores en el mismo canal .

Los clientes pueden publicar o suscribirse a cualquier número de niveles de temas individuales, o utilizar algunos caracteres especiales comodín para filtrar de más arriba en el árbol.

Los sustitutos comodín + para cualquier nivel de un tema. Por ejemplo:

Vídeo: openHAB 2 UI-driven Setup

MyHome / + / temperatura

suscribiría el cliente a la vez

MyHome / Living / temperaturemyHome / cocina / temperatura

... pero no los niveles de humedad.

El # es un comodín de varios niveles, por lo que se pudo obtener nada de la matriz de sensores salón con:

MyHome / Living / #

Técnicamente, también puede suscribirse a nivel de la raíz # que se obtiene es absolutamente todo lo que va pasando por el corredor, pero que puede ser como meter una manguera de fuego en la cara: un poco abrumador. Intente conectar al corredor MQTT pública de HiveMQ y suscribirse a #. Tengo alrededor de 300 mensajes en unos pocos segundos antes de que mi cliente acaba de estrellarse.

MQTT Principiante Consejo: “/mi hogar/" es un tema diferente a “mi hogar/" - incluyendo una barra al inicio crea un nivel de temas vacía, que aunque técnicamente válida, no se recomienda ya que puede ser confuso.

Ahora que sabemos que la teoría, vamos a tener una oportunidad con un Arduino, Ethernet Shield, y un sensor de temperatura y humedad DHT11 - que probablemente tiene uno en su kit de inicio, pero si no es así, simplemente intercambiar el sensor ambiental para una moción sensor (o incluso un botón).

Editorial MQTT desde una conexión Ethernet Arduino Con

Si usted tiene un dispositivo compatible con Arduino híbrido con conexión Wi-Fi o Ethernet incorporado, que también debería funcionar. Con el tiempo vamos a querer una manera mejor / más barato de comunicar que el tener que utilizar una conexión de red en todas las habitaciones, pero esto sirve para aprender lo básico.

Comenzar por descargar la biblioteca pubsubclient de Github. Si ha utilizado el botón “Descargar como ZIP”, la estructura es un poco mal. Descomprimir, cambiar el nombre de la carpeta a poco pubsubclient, luego tomar los dos archivos de la src carpeta y moverlos a un nivel superior a la raíz de la carpeta descargada. A continuación, pasar toda la carpeta a su Arduino / bibliotecas directorio.

Aquí está mi código de ejemplo se puede adaptar: la salida de señal DHT11 está en el pin 7. Cambiar la IP del servidor de la de su pi en la siguiente línea:

client.setServer ("192.168.1.99", 1883) -

Desafortunadamente, no podemos usar su nombre amigable (OpenHAB.local en mi caso) como la pila TCP / IP en el Arduino es muy simplista y añadiendo el código de Bonjour de nombres sería una gran cantidad de memoria que no queremos perder. Para cambiar los temas que los datos del sensor está siendo transmitido en, desplácese hacia abajo para estas líneas:

char buffer [10] -dtostrf (t, 0, 0, tampón) -client.publish ("openhab / himitsu / temperatura", Tampón) -dtostrf (h, 0, 0, tampón) -client.publish ("openhab / himitsu / humedad",buffer)-

El código también incluye la suscripción a un canal de comandos. Encontrar y ajustar la línea siguiente:

client.subscribe ("openhab / Himitsu / comando") -

Examinar el código por allí y verá que fácilmente se podría controlar un LED o relé, por ejemplo, mediante el envío de comandos a canales específicos. En el código de ejemplo, simplemente envía un mensaje de acuse de recibo de la orden.

Sube su código, conecte el Arduino en la red, y el uso de MQTT.fx suscribirse, ya sea # o openhab / Himitsu / # (O lo que ha cambiado el nombre de la sala, pero no se olvide de incluir el # al final). Muy pronto debería ver mensajes que vienen dentro y si envía ON o OFF para el tema Mandato, verá reconocimientos volviendo demasiado.

MQTT mensajes Arduino volver

Vídeo: openHAB 2 - Getting Started with Binding Development

MQTT Encuadernación para OpenHAB

El paso final en la ecuación es para enganchar esto en OpenHAB. Por eso, por supuesto que necesitamos una unión.

sudo apt-get install openhab-addon-vinculante-mqttsudo chown -Hr openhab: openhab / usr / share / openhab

Y editar el archivo de configuración para permitir la unión.

MQTT: broker.url = tcp: // localhost: 1883mqtt: broker.clientId = openhab

reinicio OpenHAB

sudo reinicio del servicio openhab

A continuación, vamos a añadir un artículo o dos:

/ * * Sensores MQTT / Número Himitsu_Temp "Himitsu Temperatura [% .1f ° C]"  (Himitsu, Temperatura) {MQTT ="lt; [broker: openhab / himitsu / temperatura: Estado: default]"} Número Himitsu_Humidity "Himitsu Humedad [% .1f %%]"  (Himitsu, Humedad) {MQTT ="lt; [broker: openhab / himitsu / humedad: Estado: default]"}

Ahora usted debe entender el formato- se está haciendo una número de artículo Del MQTT vinculante, sobre un tema específico. Este un ejemplo sencillo, que puede referirse a la página wiki donde se puede conseguir mucho más compleja.

Enhorabuena, ahora tiene la base de un conjunto de sensores basados ​​en Arduino barato. Vamos a volver a visitar esta en el futuro y la colocación de la Arduino de en su propia red de RF completamente separados. También he creado una versión idéntica para Wizwiki 7500 tablas, si le sucede que tiene uno de esos.

La persistencia y la gráfica de datos

A estas alturas probablemente un montón de sensores de configurar, ya sea de Z-Wave o personalizados Arduino ejecutan MQTT - para que puedas ver el estado actual de los sensores en cualquier momento, y usted también debe estar a reaccionar a su valor en las reglas. Pero lo interesante de los valores del sensor es generalmente que cambian con el tiempo: ahí es donde la persistencia y la representación gráfica se presenta en. Persistencia en OpenHAB significa guardar los datos en el tiempo. Vamos a seguir adelante y configuración RRD4J (Round Robin de base de datos para Java), llamado así porque los datos se guardan en una forma de round robin - los datos más antiguos se descarta para comprimir el tamaño de la base de datos.

Instalar paquetes rrd4j con los siguientes comandos.

sudo apt-get instalar openhab-addon-persistencia-rrd4jsudo chown -hR openhab: openhab / usr / share / openhab

A continuación, cree un nuevo archivo llamado rrd4j.persist en el configuraciones / persistencia carpeta. Pegue el siguiente:

Estrategias {everyminute: "0 * * * *?"cada hora 	: "0 0 * * *?"cada día	: "0 0 0 * *?"por defecto = everyChange} {// Los productos que persisten todo cuando se actualiza el valor, sólo un defecto, y restaurarlos a partir de bases de datos en el arranque *: Estrategia = everyChange, RestoreOnStartup // próxima definimos estrategias específicas de everyHour por nada en el grupo de temperatura, y cada minuto y para HumidityTemperature *: estrategia = everyHourHumidity *: estrategia = everyminute // alternativa, se puede añadir elementos específicos aquí, tales como // Bedroom_Humidity, JamesInOffice: estrategia = everyminute}

En la primera parte de este archivo, estamos definiendo estrategias, que simplemente significa dar un nombre a una expresión CRON. Esto es lo mismo que ya lo hemos hecho con My.OpenHAB, pero esta vez estamos crear algunas nuevas estrategias que podemos utilizar de todos los días, y everyHour everyminute. No he utilizado todos ellos todavía, pero que podría ser en el futuro.

En la segunda mitad del fichero, le decimos rr4dj el que los valores de datos para guardar. Por defecto, vamos a guardar todo lo que cada vez que se actualiza, pero también he indicado algunas de las estrategias basadas en el tiempo para sensores específicos. Las temperaturas no estoy demasiado preocupado acerca, por lo que he establecido que para salvar everyHour solamente, pero la humedad es una gran preocupación para mí, así que quieren ver cómo está cambiando cada minuto. Si hay otros datos que desea específicamente para salvar a horas fijas, añadir los que están aquí ahora o ajustar según sea necesario.

Nota: si desea representar gráficamente los datos demasiado, debe almacenar por lo menos una vez por minuto. No importa si los datos de sensor se actualiza aunque esto rápidamente, sólo hay que contar rr4dj almacenarlo una vez por minuto.

Con esto definido, debe empezar a ver algunos resultados de depuración que le dice que los valores están siendo almacenados.

rrd4j de datos que almacena

El siguiente paso, vamos a hacer algunos gráficos bonitos de todos estos datos. Es muy fácil. Para hacer un gráfico de un sensor individual, añada lo siguiente a su mapa del sitio:

elemento de gráfico = período Bedroom_Humidity = h

Eso es, literalmente, todo lo que necesita. Los valores válidos para período son h, 4 h, 8 h, 12 h, D, 3D, W, 2W, M, 2 M, 4 M, Y- debería ser obvio lo que esto significa. Su valor predeterminado es D para un día completo de datos si no se especifica.

Para crear un gráfico con varios elementos, simplemente graficar el nombre del grupo en su lugar:

elemento de gráfico = período de Humedad = h

gráfico

Vídeo: The BEST DIY Z-Wave Tutorial - How to Get Started on a Raspberry Pi

Usted también puede estar interesado en saber que se puede utilizar este gráfico en otro lugar- está generando una imagen utilizando la siguiente URL: http: // YOUROPENHABURL:? 8080 / tabla de grupos = humedad&periodo = h

¿Cómo está Tu Sistema OpenHAB Coming?

Eso es todo por esta entrega de la guía, pero no esperan que esto va a ser la última que se oye de nosotros sobre OpenHAB. Con suerte esto y la guía del principiante que le han dado una base sólida para desarrollar su propio sistema OpenHAB completa - pero es un proceso que nunca realmente completamente terminado.

Afortunadamente, OpenHAB puede escalar bien desde unos pocos cientos de dispositivos, desde la simple complejidad regla a lo último en domótica - así que ¿cómo va tu sistema junto? ¿Qué dispositivos elegiste? ¿Cuál es el próximo gran proyecto que va a abordar?

Vamos a hablar en los comentarios - y por favor, si usted encuentra útil esta guía, haga clic en los botones de decirle a sus amigos cómo ellos también pueden configurar su propio sistema OpenHAB.

Artículos Relacionados