Guía para principiantes de OpenHAB, parte 2: ZWave, MQTT, reglas y gráficos

Guía para principiantes de OpenHAB, parte 2: ZWave, MQTT, reglas y gráficos

Gratis no siempre significa 'no tan bueno como pagado', y OpenHAB no es una excepción. El software de automatización del hogar de código abierto supera con creces las capacidades de cualquier otro sistema de automatización del hogar en el mercado, pero no es fácil de configurar. De hecho, puede resultar muy frustrante.





En la parte 1 de la guía, te expliqué instalar OpenHAB en una Raspberry Pi , presentó los conceptos básicos de OpenHAB y le mostró cómo agregar sus primeros elementos al sistema. Hoy iremos más lejos:





  • Agregar dispositivos ZWave
  • Agregar un controlador Harmony Ultimate
  • Introduciendo reglas
  • Presentando MQTT e instalando un bróker MQTT en su Pi, con sensores en un Arduino
  • Registrar datos y graficarlos

Introducción a Z-Wave

Z-Wave ha sido el protocolo de automatización del hogar dominante durante años: es confiable, se ha desarrollado ampliamente y funciona en un rango mucho más largo que cualquier otro producto para el hogar inteligente. Hay cientos de sensores Z-Wave disponibles que realizan una amplia gama de tareas. OpenHAB pueden funciona con Z-Wave, pero su configuración es complicada y la confiabilidad no está garantizada.





Si está considerando comprar una casa llena de sensores Z-Wave específicamente para usar con OpenHAB, le insto a que lo reconsidere. Puede funcionar muy bien para usted o puede estar plagado de problemas pequeños pero persistentes. Al menos, no compre una casa llena de sensores hasta que haya tenido la oportunidad de probar algunos. La única razón para elegir Z-Wave es si no está 100% satisfecho con OpenHAB y le gustaría dejar sus opciones abiertas en el futuro: Z-Wave, por ejemplo, funciona con el concentrador Samsung SmartThings, así como con los concentradores específicos de Z-Wave. como Homeseer, y una gama de otras opciones de software como domoticz .

Aunque OpenHAB incluye un enlace Z-Wave, aún necesita configurar la red Z-Wave primero , antes de que OpenHAB pueda comenzar a buscar datos. Si tiene una placa controladora Rasberry, tiene algún software suministrado para configurar la red, por lo que no lo cubriremos aquí. Si compró un controlador Aeotec USB Z-Stick o similar, es probable que no tenga ningún software incluido, así que siga leyendo.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB para crear puerta de enlace (blanco normal) COMPRE AHORA EN AMAZON

Si ya tiene una configuración de red Z-Wave , puede simplemente conectar su controlador a la Pi y comenzar a configurar el enlace y los elementos. Si esta es su primera incursión en Z-Wave, es un poco más complejo.

Primero, en el lado del hardware: cada controlador tiene su propia forma de emparejarse con los dispositivos (técnicamente conocido como 'modo de inclusión' en el que se asigna una ID de nodo). En el caso del Aotec Z-Stick, esto significa desenchufarlo del puerto USB y presionar el botón una vez para colocarlo en modo de inclusión. Luego, llévelo cerca del dispositivo que está emparejando y presione el botón de inclusión en ese también (esto también variará: mi enchufe Everspring requiere que el botón se presione 3 veces en una sucesión rápida, por lo que la lección aquí es leer el manual de su dispositivo) .





El Z-Stick parpadea brevemente para indicar el éxito. Esto presenta problemas al volver a conectarlo a la Pi, ya que se asigna un nuevo puerto. Reinicie su Pi para que se restablezca al puerto estándar si encuentra que se ha reasignado dinámicamente a uno diferente. Mejor aún: no lo conecte a la Pi hasta que haya hecho primero todos los emparejamientos de hardware.

Instalación de enlaces HABmin y Z-Wave

Dado que OpenHAB en realidad no es una utilidad de configuración para Z-Wave, vamos a instalar otra herramienta de administración web que sí lo hace, algo llamado HABmin. Dirígete al Repositorio HABmin Github descargue la versión actual. Una vez que lo haya descomprimido, encontrará 2 .frasco archivos en el directorio de complementos: estos deben colocarse en el directorio de complementos correspondiente en su recurso compartido de OpenHAB Home (si también está utilizando el Aotec gen5 Z-Stick, asegúrese de tener al menos la versión 1.8 del enlace Z-Wave) .





A continuación, cree una nueva carpeta en el directorio de aplicaciones web y llámela 'habmin' (las minúsculas son importantes). Copie el resto de los archivos descargados allí.

Nota: también hay una HABmin 2 en desarrollo activo. La instalación es muy parecida pero con un complemento .jar adicional. Podría valer la pena probar ambos para ver cuál prefiere.

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

ls / dev / tty *

Está buscando cualquier cosa con USB en el nombre, o en mi caso particular, el Z-stick se presentó como / dev / ttyACM0 (un módem). Puede ser más fácil ejecutar el comando una vez antes de enchufarlo y una vez después, para que pueda ver qué cambios si no está seguro.

Abra el archivo de configuración de OpenHAB y modifique la sección en Z-Wave, descomente ambas líneas y coloque la dirección de su dispositivo real. Un paso final para mí fue permitir que el usuario de OpenHAB acceda al módem.

sudo usermod -a -G dialout openhab

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

sudo service openhab restart

Con suerte, si está comprobando el registro de depuración, verá algo como esto. Felicitaciones, ahora estás hablando de Z-Wave. También puede encontrar el registro de depuración inundado de mensajes de varios nodos Z-Wave. Comencemos por verificar HABMIN para ver qué se encuentra: http: //openhab.local: 8080 / habmin / index.html (reemplazando openhab.local con su nombre de host o dirección IP de Raspberry Pi).

Hay mucho que ver en HABMIN, pero solo nos preocupa la Configuración -> Enlaces -> Z-Wave -> Dispositivos pestaña, como puede ver a continuación. Expanda el nodo para editar la ubicación y la etiqueta del nombre para facilitar su consulta.

Configuración de elementos Z-Wave

Cada dispositivo Z-Wave tendrá una configuración específica para OpenHAB. Afortunadamente, la mayoría de los dispositivos ya se han explorado y ya habrá ejemplos para los suyos. La configuración de dispositivos personalizados que no se reconocen está mucho más allá del alcance de esta guía, pero supongamos que es compatible por ahora.

Primero, tengo un interruptor de encendido básico Everspring AN158 y un medidor en el nodo 3. Una búsqueda rápida en Google me llevó a una publicación de blog en Wetwa.re, con una configuración de elemento de muestra. Adapté esto de la siguiente manera:

Switch Dehumidifier_Switch 'Deshumidifier' {zwave = '3: command = switch_binary'}

Número Deshumidifier_Watts 'Consumo de energía del deshumidificador [% .1f W]' {zwave = '3: command = meter'}

Perfecto.

El siguiente es un multisensor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 Multisensor (Z-Wave Plus) COMPRE AHORA EN AMAZON

Para este, encontré una configuración de muestra en iwasdot.com y mi multisensor está en el Nodo 2.

Número Hallway_Temperature 'Hallway Temperature [% .1f ° C]' (Pasillo, temperatura) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0'}

Número Hallway_Humidity 'Hallway Humidity [% .0f %%]' (Pasillo, Humedad) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

Número Hallway_Luminance 'Hallway Luminance [% .0f Lux]' (Pasillo) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

Póngase en contacto con Hallway_Motion 'Hallway Motion [% s]' (Pasillo, movimiento) {zwave = '2: 0: command = sensor_binary, respond_to_basic = true'}

Número sensor_1_battery 'Batería [% s %%]' (Movimiento) {zwave = '2: 0: command = battery'}

Si el formato de esto le parece extraño, regrese al primero Guía para principiantes , específicamente la sección de enlace de Hue, donde explico cómo se agregan los elementos. Probablemente solo necesitará copiar y pegar ejemplos como este, pero en caso de que tenga un nuevo dispositivo, la documentación vinculante detalla todos los comandos .

Encuadernación Logitech Harmony

Antes de pasar a las reglas, quería agregar una nota rápida sobre cómo trabajar con el enlace Harmony. Soy un gran admirador de la serie Harmony de controles remotos definitivos para simplificar la experiencia del centro de medios en el hogar, pero a menudo son un sistema separado dentro de la casa inteligente. Con OpenHAB, las actividades de Logitech Harmony y el control total del dispositivo ahora pueden ser parte de su sistema centralizado e incluso incluirse en las reglas de automatización.

Comience instalando los tres archivos vinculantes que encuentre usando apt-cache para buscar 'armonía':

No te olvides de chown el directorio de enlaces de nuevo cuando haya terminado:

sudo apt-get install openhab-addon-action-harmonyhub

sudo apt-get install openhab-addon-binding-harmonyhub

sudo apt-get install openhab-addon-io-harmonyhub

sudo chown -hR openhab: openhab / usr / share / openhab

Para configurar el enlace, abra el archivo openhab.cfg y agregue una nueva sección de la siguiente manera:

########## CONTROLES REMOTOS HARMONY ##########

Harmonyhub: host = 192.168.1.181 o tu ip

Harmonyhub: nombre de usuario = su-armonía-correo electrónico-inicio de sesión

Harmonyhub: contraseña = tu contraseña

La dirección IP es la de su Harmony Hub. Utilice un escáner de red para averiguarlo. También deberá ingresar sus datos de inicio de sesión, los que ingresa cuando inicia la utilidad de configuración estándar de Harmony. Eso es todo. Al reiniciar su Hue, su registro de depuración debería tener una explosión repentina de salida del enlace.

Esta es una lista con formato JSON de todas sus actividades, dispositivos y comandos que se pueden enviar. Es una buena idea copiar esto para referencia futura. puede hacer que sea aún más fácil de leer con nodos plegables pegando en un formateador JSON en línea como este .

Además de la actividad estándar de PowerOff, que es predeterminada, encontrará sus propias actividades definidas enumeradas aquí por nombre. Ahora creemos un control simple de un botón para iniciar actividades. Primero, en su archivo de artículos, agregue la siguiente línea. Cambie el grupo y el icono si lo desea.

/ * Harmony Hub * /

String Harmony_Activity 'Harmony [% s]' (Living_Room) {harmonyhub = '* [currentActivity]'}

Esto es un enlace de cuerda bidireccional , que puede recuperar la actividad actual y ordenar que la actividad actual sea otra cosa. Ahora podemos crear un botón para ello, en el archivo del mapa del sitio.

Cambiar elemento = asignaciones de Harmony_Activity = [PowerOff = 'Apagado', Ejercicio = 'Ejercicio', 13858434 = 'TV', Karaoke = 'Karaoke']

películas gratis que puedo ver en mi teléfono

En el corchete verá cada actividad junto con la etiqueta. En general, puede referirse directamente a las actividades como las haya nombrado en su control remoto, pero la excepción que encontré fue cualquier cosa con un espacio en el nombre de la actividad, como 'Ver TV'. En este caso, deberá utilizar el ID de actividad. Nuevamente, puede encontrar el ID en la salida de depuración JSON. Guarde y actualice su interfaz, debería ver algo similar a esto:

También puede hacer referencia a las actividades en sus reglas, como veremos a continuación. Lea la página wiki para obtener más información sobre el Enlace de armonía .

Una introducción general a las reglas

La mayoría de los centros de hogares inteligentes incluyen algún tipo de creación de reglas para que pueda reaccionar automáticamente a los datos de los sensores y los eventos en el hogar. De hecho, diría que una casa verdaderamente inteligente no es una que necesite para pasar tiempo interactuando con aplicaciones móviles, es una que es invisible para el usuario final y completamente automatizada. Con este fin, OpenHAB también incluye un poderoso lenguaje de programación de reglas que puede programar, superando con creces la complejidad de la mayoría de los centros domésticos inteligentes o recetas IFTTT.

Las reglas de programación suenan peor de lo que son. Comencemos de manera simple con un par de reglas que encienden o apagan la luz según el sensor de presencia:

regla 'Luz de oficina encendida cuando James presente'

cuando

El elemento JamesInOffice cambió de APAGADO a ENCENDIDO

luego

sendCommand (Office_Hue, ENCENDIDO)

fin

regla 'Luz de oficina apagada cuando James se va'

cuando

El artículo JamesInOffice cambió de ACTIVADO a DESACTIVADO

luego

sendCommand (Office_Hue, DESACTIVADO)

fin

Primero, nombramos la regla: sea descriptivo, para que sepa qué evento se está activando. A continuación, definimos nuestra regla simple diciendo cuando x es verdadera, entonces haz y . Fin significa el cierre de esa regla en particular. Hay una serie de palabras especiales que puede usar en las reglas, pero por ahora estamos tratando con dos partes simples de sintaxis: Artículo , que le permite consultar el estado de algo; y sendCommand , que hace exactamente lo que cree que hará. Te dije que esto era fácil.

Probablemente no sea necesario usar un par de reglas, pero a medida que mi lógica se vuelva más compleja, será beneficioso tenerlas separadas para si estoy entrando o saliendo del área, y podría ser una buena idea agregar un sensor de luz en algún lugar. en la ecuación para no encender luces innecesariamente.

Veamos otro ejemplo para crear una regla programada.

regla 'Hacer ejercicio todas las mañanas'

cuando

Hora cron '0 0 8 1/1 *? * '

luego

HarmonyStartActivity ('Ejercicio')

fin

Nuevamente, nombramos la regla, indicamos las condiciones en las que debe activarse y las acciones que se deben tomar. Pero en este caso, estamos definiendo un patrón de tiempo. El código divertido que ves entre las comillas es una expresión CRON para Quartz Scheduler (el formato es ligeramente diferente a un CRONtab normal). solía cronmaker.com para ayudar a crear la expresión, pero también puede leer la guía de formato [Ya no está disponible] para obtener una explicación detallada y más ejemplos.

CronMaker.com utilizado para generar la expresión Cron con el formato correcto

Mis reglas dicen simplemente '8 am todas las mañanas, todos los días de la semana, dígale a mi sistema Harmony Ultimate que comience la actividad de ejercicio', que a su vez activa el televisor, la Xbox, el amplificador y presiona el botón A después de un minuto para iniciar el disco en la unidad.

Lamentablemente, OpenHAB aún no puede hacer el ejercicio por mí.

Una regla más que quiero mostrarles es algo que utilizo para controlar los niveles de humedad en mi hogar. Tengo un solo deshumidificador que necesito mover donde sea necesario, así que decidí mirar todos mis sensores de humedad, encontrar cuál es el más alto y almacenarlo en una variable. Actualmente se activa cada minuto, pero se puede reducir fácilmente. Eche un vistazo primero:

importar org.openhab.core.library.types. *

importar org.openhab.model.script.actions. *

importar java.lang.String

regla 'Monitor de humedad'

cuando Time cron '0 * * * *?'

luego

var prevHigh = 0

var highHum = ''

Humedad? .Miembros.paraCada [hum |

logDebug ('reglas.humedad', nombre.hum.);

if (hum.state as DecimalType> prevHigh) {

prevHigh = hum.state

highHum = hum.name + ':' + hum.state + '%'

}

cómo jugar Minecraft con un amigo

]

logDebug ('reglas de humedad', highHum);

postUpdate (Deshumidifier_Needed, highHum);

fin

El núcleo de la regla está en el Humedad? .Miembros.de.cada línea. La humedad es un nombre de grupo para mis sensores de humedad; .miembros toma todos los elementos de ese grupo; para cada itera sobre ellos (con un curioso formato de corchetes con el que probablemente no esté familiarizado). La sintaxis de las reglas es una derivada de Xtend, por lo que puede leer la Documentación de Xtend si no puede encontrar un ejemplo para adaptarse.

Sin embargo, es probable que no necesite hacerlo, hay cientos de reglas de ejemplo:

MQTT para OpenHAB e Internet de las cosas

MQTT es un sistema de mensajería liviano para la comunicación de máquina a máquina, una especie de Twitter para que sus Arduinos o Raspberry Pis se comuniquen entre sí (aunque, por supuesto, funciona con mucho más que solo esos). Está ganando popularidad rápidamente y se está convirtiendo en un hogar con dispositivos de Internet de las cosas, que suelen ser microcontroladores de bajos recursos que necesitan una forma confiable de transmitir datos de sensores a su concentrador o recibir comandos remotos. Eso es exactamente lo que haremos con él.

Pero, ¿por qué reinventar la rueda?

MQ Telemetry Transport se inventó en 1999 para conectar oleoductos a través de conexiones satelitales lentas, diseñadas específicamente para minimizar el uso de la batería y el ancho de banda, al mismo tiempo que proporciona una entrega de datos confiable. A lo largo de los años, los principios de diseño han seguido siendo los mismos, pero el caso de uso ha pasado de sistemas integrados especializados a dispositivos generales de Internet de las cosas. En 2010, el protocolo se lanzó sin derechos de autor, abierto para que cualquiera lo use e implemente. Nos gusta gratis.

Es posible que se pregunte por qué nos estamos molestando con otro protocolo, después de todo, ya tenemos el HTTP, que se puede usar para enviar mensajes rápidos entre todo tipo de sistemas conectados a la web (como OpenHAB e IFTTT, en particular con el nuevo canal de creadores). ). Y tendrías razón. Sin embargo, la sobrecarga de procesamiento de un servidor HTTP es bastante grande, tanto que no puede ejecutar uno fácilmente en un microcontrolador integrado como Arduino (al menos, puede, pero no le quedará mucha memoria para nada más). ). MQTT es, por otro lado, liviano, por lo que enviar mensajes por su red no obstruirá las tuberías y puede caber fácilmente en nuestro pequeño espacio de memoria Arduino.

¿Cómo funciona MQTT?

MQTT requiere tanto un servidor (llamado 'intermediario') como uno o más clientes. El servidor actúa como intermediario, recibiendo mensajes y retransmitiéndolos a los clientes interesados.

Sigamos con el Twitter para máquinas aunque la analogía. Así como los usuarios de Twitter pueden twittear sus propios 140 caracteres sin sentido, y los usuarios pueden 'seguir' a otros usuarios para ver un flujo de publicaciones seleccionado, los clientes de MQTT pueden suscribirse a un canal en particular para recibir todos los mensajes desde allí, así como publicar sus propios mensajes. a ese canal. Este patrón de publicación y suscripción se denomina pub / sub , a diferencia de la tradición Servidor de cliente modelo de HTTP.

HTTP requiere que se comunique con la máquina con la que se está comunicando, diga hola, y luego se reconozcan constantemente entre sí mientras obtienen o ingresan datos. Con pub / sub, el cliente que realiza la publicación no necesita saber qué clientes están suscritos: simplemente envía los mensajes y el corredor los redistribuye a los clientes suscritos. Cualquier cliente puede publicar y suscribirse a temas, al igual que un usuario de Twitter.

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

No es que MQTT sea mejor que HTTP para todo, pero es más adecuado si vamos a tener muchos sensores en toda la casa, informando constantemente.

También es importante saber que OpenHAB no actuará como su agente de MQTT; lo abordaremos más adelante. Sin embargo, OpenHAB actuará como un cliente: puede publicar su registro de actividad de OpenHAB, así como vincular canales particulares a dispositivos, por lo que, por ejemplo, puede tener un conmutador controlado por mensajes MQTT en un canal en particular. Esto es ideal para crear una casa llena de sensores.

Instale Mosquitto en su Pi

Aunque OpenHAB incluye un cliente MQTT para que pueda suscribirse a un tema y también publicar mensajes, no actuará como servidor. Para eso, debe utilizar un agente MQTT basado en la web (de pago o gratuito) o instalar el software gratuito en su Pi. Me gustaría mantenerlo todo en casa, así que instalé Mosquitto en el Pi.

Desafortunadamente, la versión disponible a través del apt-get habitual está completamente desactualizada. En su lugar, agreguemos las últimas fuentes.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

sudo apt-key agregar mosquitto-repo.gpg.key

cd /etc/apt/sources.list.d/

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

sudo apt-get install mosquitto

Eso es todo lo que necesitamos hacer para tener un servidor MQTT en funcionamiento en la red local. Su corredor se ejecuta en el puerto 1883 de forma predeterminada.

Verifique que su servidor MQTT esté funcionando usando el MQTT.fx gratuito, que es multiplataforma. Haga clic en el ícono de configuración para crear un nuevo perfil e ingrese la dirección IP o el nombre de su Raspberry Pi. Guarde y presione conectar. Si el pequeño semáforo en la parte superior derecha se pone verde, está listo para comenzar.

Para una prueba rápida, haga clic en la pestaña 'suscribirse' y escriba inTopic / en el cuadro de texto, luego presione el Suscribir botón. Ahora está suscrito para recibir un mensaje sobre el tema llamado inTopic, aunque mostrará 0 mensajes. Regrese a la pestaña de publicación, escriba Tema en el cuadro pequeño y un mensaje corto en el cuadro de texto grande a continuación. Pegar Publicar unas cuantas veces y mira hacia atrás en la pestaña de suscripción. Debería ver algunos mensajes que han aparecido en ese tema.

Antes de agregar algunos sensores reales a nuestra red, necesitamos aprender sobre los niveles de tema, lo que nos permite estructurar y filtrar la red MQTT. Los nombres de los temas distinguen entre mayúsculas y minúsculas, no deben comenzar con $, ni incluir un espacio, ni caracteres que no sean ASCII: prácticas de programación estándar para nombres de variables, en realidad.

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

inTopic / smallSubdivision / evenSmallerSubdivision

myHome / livingRoom / temperatura

myHome / livingRoom / humedad

myHome / cocina / temperatura

myHome / cocina / humedad

Ya debería estar viendo cómo esta estructura de árbol es perfecta para una casa inteligente llena de sensores y dispositivos. La mejor práctica para usar con varios sensores en una sola habitación es publicar cada variable de sensor como su propio nivel de tema, diversificándose hacia una mayor especificidad (como en los ejemplos anteriores), en lugar de intentar 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 comodín especiales para filtrar desde más arriba en el árbol.

El comodín + sustituye a cualquier nivel de tema. Por ejemplo:

myHome / + / temperatura

suscribiría al cliente a ambos

myHome / livingRoom / temperatura

myHome / cocina / temperatura

... pero no los niveles de humedad.

El # es un comodín de varios niveles, por lo que puede obtener cualquier cosa del conjunto de sensores livingRoom con:

myHome / livingRoom / #

Técnicamente, también puede suscribirse al nivel raíz #, que le permite obtener absolutamente todo lo que pasa por el corredor, pero eso puede ser como pegarse una manguera contra incendios en la cara: un poco abrumador. Intente conectarse al corredor público de MQTT de HiveMQ y suscribirse a #. Recibí alrededor de 300 mensajes en unos segundos antes de que mi cliente fallara.

Consejo para principiantes de MQTT: ' /mi hogar/' es un tema diferente a ' mi hogar/' - Incluir una barra al principio crea un nivel de tema en blanco, que si bien es técnicamente válido, no se recomienda porque puede resultar confuso.

Ahora que conocemos la teoría, intentemos con un Arduino, Ethernet Shield y un sensor de temperatura y humedad DHT11; probablemente tenga uno en su kit de inicio, pero si no, simplemente cambie el sensor ambiental por un movimiento. sensor (o incluso un botón).

Publicar MQTT desde un Arduino con conexión Ethernet

Si tiene un dispositivo híbrido compatible con Arduino con Wi-Fi o Ethernet incorporado, eso también debería funcionar. Eventualmente, querremos una forma mejor / más barata de comunicarnos que tener que usar una conexión de red en cada habitación, pero esto sirve para aprender los conceptos básicos.

Empiece por descargar biblioteca pubsubclient de Github . Si ha utilizado el botón 'Descargar como ZIP', la estructura es un poco incorrecta. Descomprima, cambie el nombre de la carpeta a solo pubsubcliente , luego saque los dos archivos del src carpeta y muévalas hacia arriba un nivel hasta la raíz de la carpeta descargada. Luego mueva toda la carpeta a su Arduino / bibliotecas directorio.

Aquí está mi código de muestra que puede adaptar : la salida de señal DHT11 está en el pin 7. Cambie la IP del servidor por la de su Pi en la siguiente línea:

client.setServer ('192.168.1.99', 1883);

Desafortunadamente, no podemos usar su nombre descriptivo. (OpenHAB.local en mi caso) ya que la pila TCP / IP en Arduino es muy simplista y agregar el código para nombrar Bonjour sería una gran cantidad de memoria que no queremos desperdiciar. Para cambiar los temas sobre los que se transmiten los datos del sensor, desplácese hacia abajo hasta estas líneas:

tampón de carbón [10];

dtostrf (t, 0, 0, búfer);

client.publish ('openhab / himitsu / temperature', búfer);

dtostrf (h, 0, 0, búfer);

client.publish ('openhab / himitsu / humedad', búfer);

El código también incluye la suscripción a un canal de comando. Busque y ajuste la siguiente línea:

client.subscribe ('openhab / himitsu / command');

Examine el código de allí y verá que podría controlar fácilmente un LED o relé, por ejemplo, enviando comandos a canales específicos. En el código de ejemplo, simplemente envía un mensaje acusando recibo del comando.

Cargue su código, conecte su Arduino a la red y, mediante MQTT.fx, suscríbase a # o openhab / himitsu / # (o lo que sea que haya cambiado el nombre de la habitación, pero no olvide incluir el # al final). Muy pronto debería ver los mensajes que llegan; y si envía ENCENDIDO o APAGADO al tema del comando, también verá los reconocimientos.

Enlace MQTT para OpenHAB

El último paso de la ecuación es conectarlo a OpenHAB. Para eso, por supuesto, necesitamos un enlace.

sudo apt-get install openhab-addon-binding-mqtt

sudo chown -hR openhab: openhab / usr / share / openhab

Y edite el archivo de configuración para habilitar el enlace.

mqtt: broker.url = tcp: // localhost: 1883

mqtt: broker.clientId = openhab

Reinicie OpenHAB

sudo service openhab restart

Luego agreguemos uno o dos elementos:

/ * Sensores MQTT * /

Número Himitsu_Temp 'Himitsu Temperature [% .1f ° C]' (Himitsu, Temperature) {mqtt = '<[broker:openhab/himitsu/temperature:state:default]'}

Número Himitsu_Humidity'Himitsu Humedad [% .1f %%] '(Himitsu, Humedad) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

A estas alturas debería comprender el formato; está consiguiendo un Número de artículo del enlace MQTT, sobre un tema específico. Este es un ejemplo simple, es posible que desee consultar la página wiki donde puede volverse mucho más complejo .

Enhorabuena, ahora tiene la base de una matriz de sensores barata basada en Arduino. Revisaremos esto en el futuro y colocaremos los Arduino en su propia red de RF completamente separada. También he creado una versión idéntica para placas Wizwiki 7500 si tiene uno de esos.

Datos de persistencia y gráficos

A estas alturas, probablemente haya configurado un montón de sensores, ya sea desde Z-Wave o Arduinos personalizados que ejecutan MQTT, para que pueda ver el estado actual de esos sensores en cualquier momento, y también debería reaccionar a su valor en las reglas. Pero lo interesante de los valores de los sensores es que, en general, cambian con el tiempo: ahí es donde entran en juego la persistencia y los gráficos. Persistencia en OpenHAB significa guardar los datos a lo largo del tiempo. Sigamos adelante y configuremos RRD4J (Base de datos Round Robin para Java), llamada así porque los datos se guardan en forma de round robin: los datos más antiguos se descartan para comprimir el tamaño de la base de datos.

Instale paquetes rrd4j con los siguientes comandos.

|_+_|

Luego crea un nuevo archivo llamado rrd4j.persist en el configuraciones / persistencia carpeta. Pegue lo siguiente:

Estrategias {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

everyDay: '0 0 0 * *?'

predeterminado = everyChange

}

Elementos {

// persiste todo cuando se actualiza el valor, solo un valor predeterminado, y lo restaura desde la base de datos al inicio

*: estrategia = everyChange, restoreOnStartup

// a continuación, definimos estrategias específicas de everyHour para cualquier cosa en el grupo de Temperatura, y cada minuto para Humedad

cómo abrir archivos jar con java windows 10

Temperatura *: estrategia = cada hora

Humedad *: estrategia = cada minuto

// alternativamente, puede agregar elementos específicos aquí, como

// Dormitorio_Humedad, JamesInOffice: estrategia = everyMinute

}

En la primera parte de este archivo, estamos definiendo estrategias, lo que significa simplemente darle un nombre a una expresión CRON. Esto es lo mismo que ya hicimos con My.OpenHAB, pero esta vez creamos algunas estrategias nuevas que podemos usar en everyDay, everyHour y everyMinute. No los he usado todos todavía, pero podría hacerlo en el futuro.

En la segunda mitad del archivo, le decimos a rr4dj qué valores de datos guardar. De forma predeterminada, guardaremos todo cada vez que se actualice, pero también he especificado algunas estrategias basadas en el tiempo para sensores específicos. Las temperaturas no me preocupan demasiado, así que lo configuré para ahorrar solo cada hora, pero la humedad es una gran preocupación para mí, así que quiero ver cómo cambia cada minuto. Si hay otros datos que desea guardar específicamente en momentos establecidos, agréguelos aquí ahora o ajústelos según sea necesario.

Nota: si también desea graficar los datos, DEBE almacenarlos al menos una vez por minuto. No importa si los datos de su sensor se actualizan tan rápido, simplemente necesita decirle a rr4dj que los almacene una vez por minuto.

Con eso definido, debería comenzar a ver algún resultado de depuración que le indique que los valores se están almacenando.

A continuación, hagamos unos gráficos bonitos de todos estos datos. Es muy facil. Para hacer un gráfico de un sensor individual, agregue lo siguiente a su mapa del sitio:

Elemento del gráfico = Período de humedad del dormitorio = h

Eso es, literalmente, todo lo que necesitas. Los valores válidos para el período son h, 4 h, 8 h, 12 h, D, 3D, W, 2 W, M, 2 M, 4 M, Y ; debería ser obvio lo que estos significan. El valor predeterminado es D para un día completo de datos si no se especifica.

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

Elemento del gráfico = período de humedad = h

También le puede interesar saber que puede utilizar este gráfico en otros lugares; está generando una imagen usando la siguiente URL: http: // YOUROPENHABURL: 8080 / chart? groups = Humidity & period = h

Como esta Tu ¿Viene el sistema OpenHAB?

Eso es todo por esta entrega de la guía, pero no espere que esta sea la última vez que tenga noticias nuestras sobre OpenHAB. Con suerte, esto y la guía para principiantes le han dado una base sólida para desarrollar su propio sistema OpenHAB completo, pero es un proceso que nunca está realmente terminado.

Afortunadamente, OpenHAB puede escalar bien desde unos pocos dispositivos hasta cientos, desde la simple complejidad de las reglas hasta lo último en automatización del hogar, entonces, ¿cómo va su sistema? ¿Qué dispositivos elegiste? ¿Cuál es el próximo gran proyecto que vas a abordar?

Hablemos en los comentarios y, por favor, si encuentra útil esta guía, haga clic en esos botones para compartir para decirles a sus amigos cómo ellos también pueden configurar su propio sistema OpenHAB.

¡Esperamos que le gusten los artículos que recomendamos y discutimos! MUO tiene asociaciones afiliadas y patrocinadas, por lo que recibimos una parte de los ingresos de algunas de sus compras. Esto no afectará el precio que paga y nos ayuda a ofrecer las mejores recomendaciones de productos.

Cuota Cuota Pío Correo electrónico Una guía para principiantes para animar el habla

Animar el habla puede ser un desafío. Si está listo para comenzar a agregar diálogos a su proyecto, analizaremos el proceso por usted.

Leer siguiente
Temas relacionados
  • Bricolaje
  • Casa inteligente
  • Arduino
  • Automatización del hogar
  • Forma larga
  • Guía de formato largo
Sobre el Autor James Bruce(707 Artículos publicados)

James tiene una licenciatura en Inteligencia Artificial y está certificado por CompTIA A + y Network +. Cuando no está ocupado como editor de revisiones de hardware, disfruta de LEGO, la realidad virtual y los juegos de mesa. Antes de unirse a MakeUseOf, fue técnico de iluminación, profesor de inglés e ingeniero de centros de datos.

Más de James Bruce

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse