Guia de parte de principiante openhab 2: zwave, mqtt, regras e gráficos

Livre nem sempre significa “não tão bom como pago”, e OpenHAB não é excepção. O software de automação residencial open source excede em muito as capacidades de qualquer outro sistema de automação residencial no mercado - mas não é fácil de se configurar. Na verdade, ele pode ser francamente frustrante.

Baixar este artigo inteiro como um PDF. Sinta-se livre para compartilhá-lo com seus amigos e familiares.

Na parte 1 do guia, eu andei-lo através instalar OpenHAB em um Raspberry Pi, introduziu os conceitos fundamentais de OpenHAB, e mostrou-lhe como adicionar seus primeiros itens no sistema. Hoje nós estaremos indo além:Introdução ao OpenHAB Home Automation em Raspberry PiIntrodução ao OpenHAB Home Automation em Raspberry PiOpenHAB é uma plataforma madura, open source domótica que é executado em uma variedade de hardware e é um protocolo agnóstico, o que significa que pode se conectar a praticamente qualquer hardware de automação residencial no mercado hoje.consulte Mais informação

  • Adição de dispositivos ZWave
  • Adicionando um controlador final Harmony
  • introduzindo regras
  • Apresentando MQTT, e instalar um corretor MQTT em seu Pi, com sensores em um Arduino
  • Gravação de dados e da representar graficamente

Introdução ao Z-Wave

Z-Wave tem sido o protocolo de domótica dominante durante anos: é confiável, tem sido amplamente desenvolvido e funciona através de uma gama muito mais tempo do que quaisquer outros produtos para a casa inteligente. Há centenas de sensores Z-Wave disponíveis para você que realizam uma ampla gama de tarefas. OpenHAB posso trabalhar com Z-Wave, mas é um aborrecimento para configurar e confiabilidade não é garantida.

Se você está considerando a compra de uma casa cheia de sensores Z-Wave especificamente para uso com OpenHAB, eu exortá-lo a reconsiderar. Ele pode funcionar bem para você, ou pode ser atormentado com pequenas mas persistentes problemas. Pelo menos, não compre uma casa cheia de sensores até que você tenha tido a oportunidade de experimentar alguns. A única razão para escolher Z-Wave é se você não estiver 100% resolvido em OpenHAB, e gostaria de deixar suas opções em aberto no futuro: Z-Wave, por exemplo, trabalha com Samsung SmartThings do cubo, bem como cubos específicos Z-Wave tais como HomeSeer, e uma variedade de outras opções de software, tais como Domoticz.Qual Smart Hub para Domótica é melhor para você?Qual Smart Hub para Domótica é melhor para você?Por um tempo, as pessoas achavam da idéia como nada mais do que um chamariz, mas recentes lançamentos de produtos têm mostrado que a automação residencial inteligente está começando a viver de acordo com suas promessas.consulte Mais informação

Embora OpenHAB inclui uma ligação Z-Wave, você ainda precisa configurar a rede Z-Wave primeiro, antes OpenHAB pode começar consultando-lo para dados. Se você tem uma placa controladora Rasberry, você tem algum software fornecido para configurar a rede, por isso não vamos fazer a cobertura que aqui. Se você comprou um controlador USB Z-Stick Aeotec ou similar, você provavelmente não tem qualquer software incluído, de modo a ler.

Aeotec por Aeon Labs ZW090 Z Vara, pequeno, brancoAeotec por Aeon Labs ZW090 Z Vara, pequeno, brancoadaptador USB-onda Z / upgradeability firmware Compre Agora No Amazon $ 44,95

Se você já tem uma configuração de rede Z-Wave, você pode simplesmente ligar o seu controlador para o Pi e começar a configurar a ligação e itens. Se esta é sua primeira incursão no Z-Wave, que é um pouco mais complexa.

Em primeiro lugar, no lado do hardware: cada controlador tem a sua própria maneira de emparelhamento com dispositivos (tecnicamente conhecido como “modo de inclusão”, em que um ID do nó é atribuído). No caso do Aotec Z-Stick, isto significa que o desligar da porta USB, e pressionando o botão uma vez para colocá-lo em modo de inclusão. Em seguida, levá-lo próximo ao dispositivo que você está emparelhando, e pressione o botão inclusão em que também (Isto também irá variar: my socket Everspring requer o botão para pressionar 3 vezes em rápida sucessão, de modo a lição aqui é ler o manual para o seu dispositivo).

Os Z-vara pisca rapidamente para indicar sucesso. Isto apresenta problemas quando colocá-lo de volta para o Pi, como uma nova porta é atribuído. Reinicie o Pi para tê-lo de volta para redefinir a porta padrão se você achar que tem sido dinamicamente transferido um diferente. Melhor ainda: não ligá-lo na Pi até que tenha feito todos os emparelhamentos de hardware primeiro.

Video: openHAB 2 UI-driven Setup

Instalando HABmin e Z-Wave Ligações

Desde OpenHAB na verdade não um utilitário de configuração para o Z-Wave, vamos instalar uma outra ferramenta de gerenciamento de web que faz - algo chamado HABmin. Sobre a cabeça em repositório HABmin Github baixar a versão atual. Uma vez que você descompactou, você vai encontrar 2 .jarra arquivos no diretório complementos - estes devem colocados no diretório complementos correspondente na sua parte OpenHAB Início (Se você também estiver usando o Aotec Gen5 Z-Stick, certifique-se que você tem pelo menos a versão 1.8 do ligação do Z-Wave).

Em seguida, crie uma nova pasta no diretório webapps, e chamou-lhe “habmin” (em minúsculas é importante). Copie o restante dos arquivos baixados para lá.

Nota: Há também uma HABmin 2 em desenvolvimento ativo. A instalação é a mesma coisa, mas com um addon .jar adicional. Pode valer a pena tentar tanto só para ver qual você prefere.

Se você não tiver, conecte o controlador em sua Pi. Digite o seguinte para encontrar a porta correta.

ls / dev / tty *

Você está procurando qualquer coisa com USB no nome, ou no meu caso particular, o Z-stick apresentou-se como / Dev / ttyACM0 (Um modem). Pode ser mais fácil para fazer o comando uma vez antes de ligá-lo, e uma vez depois, para que possa ver o que muda se você não tiver certeza.

devtty

Abra o arquivo de configuração OpenHAB e modificar a seção sobre Z-Wave, descomentando ambas as linhas e colocar o seu endereço real do dispositivo. Um passo final para mim foi para permitir que o usuário OpenHAB para acessar o modem.

sudo usermod -a -G dialout openhab

Agora, para chutar tudo em ação, reinicie OpenHAB

sudo restart openhab serviço

Esperemos que, se você está verificando o registro de depuração, você verá algo como isto. Parabéns, você está falando agora Z-Wave. Você também pode encontrar o registro de depuração inundado com mensagens de vários nós Z-Wave. Vamos começar por verificar HABMIN para ver o que encontrou: http: //openhab.local: 8080 / habmin / index.html (substituindo openhab.local com o seu hostname Raspberry Pi ou endereço IP).

ZWave começando-se no registo openhab

Há muito para ver em HABMIN, mas só estamos realmente preocupados com o -gt configuração; Ligações -gt; Z-Wave -gt; Devices guia, como você pode ver abaixo. Expanda o nó para editar o local eo rótulo nome para a sua facilidade de referência.

editar o nome do dispositivo

Configurando Itens Z-Wave

Cada dispositivo Z-Wave terá uma configuração específica para OpenHAB. Felizmente, a maioria dos dispositivos já foram exploradas e haverá exemplos lá fora, para seu já. Configurando dispositivos personalizados que não são reconhecidos está bem além do escopo deste guia, mas vamos supor que é suportado por agora.

Primeiro, eu tenho um interruptor básico Everspring AN158 poder e meter no nó 3. Uma rápida Googling me levou a um post no blog Wetwa.re, com uma configuração item de amostra. I adaptado este como se segue:

mudar Dehumidifier_Switch "desumidificador" {ZWave ="3: comando = switch_binary"} Dehumidifier_Watts Número "consumo de energia desumidificador [% .1f W]" {ZWave ="3: comando = metro" }

Perfeito.

Em seguida é um Aeotec Gen5 Multi-Sensor.

Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus)Detecta movimento, sensibilidade à luz, temperatura e humidade - envia os sinais para um máximo de 6 dispositivos de Z-onda associada, estes sensores não são compatíveis com o "PISCADELA" cubo Compre Agora No Amazon

Para este, eu encontrei uma configuração de amostra em iwasdot.com, e meu multisensor é no nó 2.

número Hallway_Temperature "Corredor Temperatura [% .1f ° C]"  (Corredor, Temperatura) {= ZWave"2: 0: comando = sensor_multilevel, SENSOR_TYPE = 1, = 0 sensor_scale"} Número Hallway_Humidity "Corredor Humidade [% .0f %%]"  (Corredor, de humidade) {= ZWave"2: 0: comando = sensor_multilevel, SENSOR_TYPE = 5"} Número Hallway_Luminance "Corredor luminância [% .0f Lux]" 																 (Corredor) {= ZWave"2: 0: comando sensor_multilevel =, = 3 SENSOR_TYPE"} Contato Hallway_Motion "Corredor Movimento [% s]" (Corredor, movimento) {= ZWave"2: 0: command = sensor_binary, respond_to_basic = true"} Sensor_1_battery Número "Bateria [% s %%]" (Movimento) {= ZWave"2: 0: command = bateria"}

Se o formato de isso parece estranho para você, por favor, na cabeça de volta para o primeiro Guia do iniciante, especificamente seção, onde eu explicar como os itens são adicionados a Hue vinculativo. Você provavelmente só precisar copiar exemplos de pasta como esta, mas no caso de você ter um novo dispositivo, detalha a documentação vinculativa todos os comandos.Introdução ao OpenHAB Home Automation em Raspberry PiIntrodução ao OpenHAB Home Automation em Raspberry PiOpenHAB é uma plataforma madura, open source domótica que é executado em uma variedade de hardware e é um protocolo agnóstico, o que significa que pode se conectar a praticamente qualquer hardware de automação residencial no mercado hoje.consulte Mais informação

Logitech Harmony Encadernação

Antes de saltar em regras, eu queria acrescentar uma nota rápida sobre como trabalhar com a ligação do Harmony. Eu sou um grande fã do harmonia série de telecomandos finais para simplificar a experiência home media center, mas que muitas vezes se apresentam como um sistema separado dentro de casa inteligente. Com OpenHAB, atividades Harmony da Logitech e controle do dispositivo completo pode agora ser uma parte de seu sistema centralizado, e até mesmo incluídos nas regras de automação.

Comece instalando os três arquivos de ligação que você encontra usando apt-cache de pesquisa para “harmonia”:

openhab pesquisa apt-cache para a harmonia de ligação

Não se esqueça de chown o diretório ligações novamente quando estiver pronto:

sudo apt-get install openhab-addon-ação-harmonyhubsudo apt-get install openhab-addon-vinculativo-harmonyhubsudo apt-get install openhab-addon-io-harmonyhubsudo chown -HR openhab: openhab / usr / share / openhab

Para configurar a ligação, abra o arquivo openhab.cfg e adicionar uma nova secção da seguinte forma:

########## HARMONIA TELECOMANDOS ########## harmonyhub: host = 192.168.1.181 ou o seu ipharmonyhub: nome de usuário =your-harmonia-email-loginharmonyhub: password =sua senha

O endereço IP é o do seu hub Harmony. Use um scanner de rede para descobrir isso. Você também precisará inserir os seus dados de login, o que você digita quando você iniciar o utilitário Harmony configuração padrão. É isso aí. Ao reiniciar o seu Hue, seu log de debug deve ter uma súbita explosão de saída a partir da ligação.

Esta é uma lista formatada JSON de todas as suas atividades, dispositivos e comandos que podem ser enviados. É uma boa idéia copiar isso para referência futura. você pode torná-lo ainda mais fácil de ler com nós dobráveis ​​por colar em um formatador JSON online, como este.

json saída formatado openhab

Bem como a atividade PowerOff padrão que é um padrão, você vai encontrar suas próprias atividades definidas aqui listados pelo nome. Agora vamos criar um simples controle de um botão para iniciar as atividades. Primeiro, em seu arquivo de itens, adicione a seguinte linha. Alterar o grupo e ícone se quiser.

/ * Harmonia Hub * / String Harmony_Activity "Harmonia [% s]"  (Living_Room) {= harmonyhub"*[atividade atual]" }

Isto é um De duas vias de ligação da corda, que é capaz de tanto buscar a atividade atual, e comandar a atividade atual para ser outra coisa. Agora podemos criar um botão para ele, no arquivo de mapa do site.

item de interruptor = mapeamentos Harmony_Activity = [PowerOff = `Off`, Exercício = `Exercício` `TV`, 13858434 =, Karaoke = `Karaoke`]

No colchete você verá cada atividade junto ao rótulo. Geralmente você pode se referir diretamente a atividades como você nomeou-os em seu controle remoto, mas a exceção a essa eu encontrei, era qualquer coisa com um espaço no nome da atividade, como “Ver TV”. Neste caso, você precisará usar o ID de atividade. Novamente, você pode encontrar o ID na saída de depuração JSON. Salve e refrescar a sua interface, você deve ver algo semelhante a isto:

harmonia openhab no mapa do site

Você também pode se referir a atividades em suas regras, como veremos a seguir. Leia a página de wiki para mais informações sobre a ligação Harmony.

Uma introdução geral ao Rules

A maioria dos centros de casa inteligente incluir algum tipo de criação regras para que você possa reagir automaticamente ao sensor de dados e eventos em casa. Na verdade, eu diria que uma casa verdadeiramente inteligente não é aquele que você precisa gastar tempo interagindo com aplicativos móveis - é aquele que é invisível para o usuário final e completamente automatizado. Para este fim, OpenHAB também inclui uma poderosa linguagem de scripting regras que você pode programar, excedendo em muito a complexidade da maioria hubs de casa inteligente ou receitas ifttt.Battle of the Smart Home Hubs: O que está lá fora e que está vindo?Battle of the Smart Home Hubs: O que está lá fora e que está vindo?consulte Mais informação

Programação regras soa pior do que é. Vamos começar simples com um par de regras que ligar ou desligar a luz, dependendo do sensor de presença:

regra "luz escritório quando James presentes"whenItem JamesInOffice mudado de OFF para ONthensendCommand (Office_Hue, ON) endrule "Escritório luz desligada quando James folhas"whenItem JamesInOffice mudou de ON para OFFthensendCommand (Office_Hue, OFF) extremidade

Primeiro, o nome da regra - ser descritivo, para que você saiba que evento está disparando. Em seguida, nós definimos a nossa regra simples dizendo quando x é verdade, então fazê-y. End significa o fechamento dessa regra particular. Há um número de palavras especiais que você pode usar em regras, mas por agora estamos lidando com dois bits simples de sintaxe - Item, que lhe permite consultar o estado de algo- e sendCommand, que faz exatamente o que você pensa que vai. Eu disse que isso era fácil.

É provavelmente desnecessário o uso de um par de regras, mas como minha lógica se torna mais complexa que vai ser benéfico para tê-los separado para saber se eu estou entrando ou saindo da área - e que poderia ser uma boa idéia para adicionar um sensor de luz em algum lugar na equação por isso não estamos desnecessariamente acender as luzes.

Vejamos outro exemplo para criar uma regra programada.

regra "Exercer todas as manhãs"whenTime cron "0 0 8 1/1 *? *"thenharmonyStartActivity ("Exercício")fim

Mais uma vez, chamamos a regra, condições de estado quando deveria fogo, e as ações a serem tomadas. Mas neste caso, estamos definindo um padrão Time. O código engraçado que você vê nas citações é uma expressão CRON para Quartz Scheduler (o formato é um pouco diferente para um crontab regular). Eu costumava cronmaker.com para ajudar a criar a expressão, mas você também pode ler o guia formato para uma explicação detalhada e mais exemplos.

gerador de cron
CronMaker.com utilizado para gerar a expressão cron correctamente formatada

Minhas regras diz simplesmente “oito horas a cada manhã, todos os dias da semana, contar a minha Harmony sistema final para iniciar a actividade Exercício”, que por sua vez ativa a TV, o Xbox, o amplificador, e pressiona o botão A depois de um minuto para o lançamento o disco na unidade.

Infelizmente, OpenHAB ainda não é capaz de fazer o exercício para mim.

Mais uma regra que eu quero mostrar a você é algo que eu uso para gerenciar os níveis de umidade em minha casa. Eu tenho um único desumidificador que eu preciso para se deslocar sempre que necessário, então eu decidi olhar para todos os meus sensores de umidade, descobrir qual deles é o mais alto, e armazenar isso em uma variável. É atualmente desencadeada a cada minuto, mas que pode ser facilmente baixado. Dê uma olhada em primeiro lugar:

org.openhab.core.library.types importação. * org.openhab.model.script.actions importação. * importação java.lang.Stringrule "umidade do monitor"quando cron Tempo "0 * * * *?"thenvar prevHigh = 0var highHum = ""Umidade .members.forEach [hum |? LogDebug ("humidity.rules", Hum.name) -se (hum.state como DecimalType gt; prevHigh) {prevHigh = hum.statehighHum = + hum.name ": " + + Hum.state "%"}] LogDebug ("humidity.rules", HighHum) -postUpdate (Dehumidifier_Needed, highHum) -final

O núcleo da regra é o Umidade? .members.foreach linha. A umidade é um nome de grupo para o meu umidade sensors- .membros pega todos os itens em que grupo- para cada itera sobre eles (com um formato de colchete curioso você provavelmente não está familiarizado com). A sintaxe de regras é um derivado da Xtend, assim você pode ler a documentação Xtend se você não consegue encontrar um exemplo para se adaptar.

Você provavelmente não vai precisar embora - há centenas de exemplo Regras lá fora:

  • explicação detalhada de regras no wiki oficial
  • O funcionário rules principal amostras wiki
  • Tomando regras para novas alturas
  • amostras avançados em IngeniousFool.net

MQTT para OpenHAB e Internet das Coisas

MQTT é um sistema de mensagens leve para comunicação máquina-a-máquina - uma espécie de Twitter para seus Arduinos ou Raspberry Pi para falar uns com os outros (embora, naturalmente, trabalha com muito mais do que apenas aqueles). É rapidamente ganhando popularidade e encontrando-se a casa com Internet de dispositivos coisas, que são geralmente baixos recursos micro-controladores que precisam de uma maneira confiável para transmitir dados do sensor de volta para o seu hub ou receber comandos remotos. Isso é exatamente o que vai estaremos fazendo com ele.

Mas por que reinventar a roda?

MQ Telemetry Transport foi inventado caminho de volta em 1999 para conectar oleodutos através de conexões via satélite lentos, especificamente projetados para minimizar o uso da bateria e largura de banda, enquanto continua a fornecer a entrega de dados confiável. Ao longo dos anos os princípios de design permaneceram os mesmos, mas o caso de uso mudou de sistemas embarcados especializados para Internet geral de dispositivos as coisas. Em 2010, o protocolo foi lançado royalty free, aberta para qualquer um usar e implementar. Gostamos livre.

Você pode estar se perguntando por que estamos incomodando mesmo com ainda outro protocolo - já temos o HTTP depois de tudo - o que pode ser usado para enviar mensagens rápidas entre todos os tipos de sistemas web conectado (como OpenHAB e IFTTT, em particular com o novo channel Maker). E você estaria certo. No entanto, a sobrecarga de processamento de um servidor HTTP é bastante grande - tanto que você não pode facilmente executar um em um microcontrolador integrado como o Arduino (pelo menos, você pode, mas você não terá muita memória para mais nada ). MQTT é o outro lado é leve, então o envio de mensagens em torno de sua rede não vai entupir os canos para cima, e ele pode facilmente se encaixam em nosso pequeno espaço de memória Arduino.IFTTT Agora Conecta-se a qualquer coisa: Apresentando o Channel MakerIFTTT Agora Conecta-se a qualquer coisa: Apresentando o Channel MakerOs usos potenciais para IFTTT são infinitas. Mas, até agora, tem sido difícil para fazer a interface com seus próprios projetos de hardware. Hoje, tudo isso mudou.consulte Mais informação

Como é que MQTT funciona?

MQTT requer tanto um servidor (chamado de “broker”) e um ou mais clientes. O servidor atua como um intermediário, recebendo mensagens de e retransmitindo-os para todos os clientes interessados.



Vamos continuar com o Twitter para-máquinas analogia embora. Assim como os usuários do Twitter pode tweet suas próprias sem sentido 140 caracteres, e os usuários podem “seguir” outros usuários para ver um fluxo curadoria de mensagens, os clientes MQTT pode se inscrever em um canal específico para receber todas as mensagens de lá, bem como publicar suas próprias mensagens para esse canal. Esta publicação e assinatura padrão é referido como pub / sub, em oposição à tradição servidor cliente modelo de HTTP.

HTTP requer que você chegar até a máquina que você está se comunicando com, dizer Olá, então, uma frente e para trás constantemente de reconhecer uns aos outros, enquanto você obter ou colocar dados. Com pub / sub, o cliente fazer a publicação não precisa saber quais clientes estão inscritos: ele apenas bombeia para fora as mensagens, eo corretor redistribui-los para quaisquer clientes inscritos. Qualquer cliente pode tanto publicar e subscrever tópicos, como um usuário do Twitter.

Ao contrário Twitter embora, MQTT não está limitado a 140 caracteres. É dados agnóstico, assim você pode enviar números pequenos ou grandes blocos de texto, datagramas JSON-formatados, ou até mesmo imagens e arquivos binários.

Não é que MQTT é melhor do que HTTP para tudo - mas é mais adequado, se vamos ter muitos sensores por toda a casa, constantemente relatando em.

Também é importante saber que OpenHAB não vai agir como seu corretor MQTT - vamos resolver isso mais tarde. No entanto, OpenHAB vai agir como um cliente: ele tanto pode publicar seu registro de atividade OpenHAB, bem como canais específicos se ligam a dispositivos, para que possa, por exemplo, têm um interruptor que é controlado por mensagens MQTT em um canal particular. Isto é ideal para a criação de uma casa cheia de sensores.

Instale mosquitto em seu Pi

Embora OpenHAB inclui um cliente MQTT assim você pode se inscrever em um tópico e também publicar mensagens, ele não vai agir como o servidor. Para isso, você nem precisa de usar um corretor MQTT baseado na web (pago ou gratuito), ou instalar o software livre em seu Pi. Eu gostaria de manter tudo em casa, então eu tenho instalado mosquitto sobre o Pi.

Infelizmente, a versão disponível através do habitual apt-get é completamente fora de data. Em vez disso, vamos adicionar as últimas fontes.

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

Isso é tudo o que precisamos fazer para ter um servidor até MQTT e em execução na rede local. Seu corretor é executado na porta 1883 por padrão.

Verifique se o seu servidor MQTT está trabalhando usando o MQTT.fx livre, que é multi-plataforma. Clique no ícone de configurações para criar um novo perfil, e seu endereço IP do Raspberry Pi ou nome. Salve, e bateu conectar. Se o pequeno semáforo no canto superior direito fica verde, você está pronto para ir.

perfil exemplo mqttfx

Para um teste rápido, clique na guia “assinar” e digite inTopic / na caixa de texto, em seguida, bateu o Se inscrever botão. Você agora ja está inscrito para receber mensagens sobre o tema chamado inTopic, embora estará mostrando 0 mensagens. Volte para a guia Publicar, digite inTopic na pequena caixa, e uma mensagem curta na caixa de texto grande abaixo. Acertar Publicar algumas vezes e olhar para trás na guia inscrever. Você deve ver algumas mensagens de ter aparecido nesse tópico.

teste inTopic MQTT

Antes de adicionar alguns sensores reais à nossa rede, precisamos aprender sobre os níveis de tópico, que nos permitem estruturar e filtrar a rede MQTT. nomes de tópicos são case-sensitive, não deve começar com US $, ou incluir um espaço ou caracteres não-ASCII - práticas de programação padrão para nomes de variáveis, realmente.

A / separador indica um nível de tópico, que é hierárquica, por exemplo, a seguir estão todos os níveis tópico válidos.

inTopic / smallSubdivision / evenSmallerSubdivisionmyHome / SALA DE ESTAR / temperaturemyHome / SALA DE ESTAR / humiditymyHome / cozinha / temperaturemyHome / cozinha / umidade

Já, você deve estar vendo como essa estrutura de árvore é perfeito para uma casa inteligente cheia de sensores e dispositivos. A melhor prática para utilização com múltiplos sensores numa única sala é a publicação de cada uma das variáveis ​​do sensor, como é o nível tópico próprio - ramificando-se para mais especificidade (como nos exemplos anteriores) -, em vez de tentar publicar vários tipos de sensores para o mesmo canal .

Os clientes podem, então, publicar ou assinar qualquer número de níveis de tópicos individuais, ou usar alguns caracteres especiais curinga para filtrar a partir de mais acima na árvore.

Os substitutos curinga + para qualquer nível de um tópico. Por exemplo:

myHome / + / temperatura

subscreveria o cliente para ambos

myHome / sala / temperaturemyHome / cozinha / temperatura

... mas não os níveis de umidade.

O # é um curinga multi-nível, para que você possa buscar alguma coisa a partir do conjunto de sensores sala com:

myHome / SALA DE ESTAR / #

Tecnicamente, você também pode se inscrever para o nível raiz # que você começa absolutamente tudo vai passar pelo corretor, mas que pode ser como enfiar uma mangueira de incêndio na sua cara: um pouco esmagadora. Experimente ligar para o corretor MQTT público de HiveMQ e assinando #. Eu tenho cerca de 300 mensagens em poucos segundos antes de meu cliente apenas caiu.

MQTT Iniciante Dica: “/ MyHome /” é um tema diferente para “myHome /” - incluindo uma barra no início cria um nível tópico em branco, que, embora tecnicamente válida, não é recomendado porque pode ser confuso.

Agora que sabemos a teoria, vamos ter um ir com um Arduino, Escudo Ethernet, e um sensor de temperatura e umidade DHT11 - você provavelmente já tem um em sua starter kit, mas se não, basta trocar o sensor ambiental para um movimento sensor (ou mesmo um botão).

Publishing MQTT de uma conexão Arduino Com Ethernet

Se você tiver um dispositivo Arduino compatível com híbrido com Wi-Fi ou Ethernet built-in, que também deve funcionar. Eventualmente nós vamos querer uma maneira melhor / mais barata de se comunicar que ter que usar uma conexão de rede em todos os quartos, mas isso serve para aprender o básico.

Comece fazendo o download da biblioteca pubsubclient do Github. Se você já usou o botão “Download como ZIP”, a estrutura é um pouco errado. Descompacte, renomeie a pasta para apenas pubsubclient, em seguida, tomar os dois arquivos para fora do src pasta e movê-los para um nível acima para a raiz da pasta baixado. Em seguida, mova a pasta inteira para o seu Arduino / bibliotecas diretório.

Aqui está o meu código de exemplo que você pode adaptar: a saída do sinal DHT11 é no pino 7. Altere o IP do servidor para que de sua Pi na seguinte linha:

client.setServer ("192.168.1.99", 1883) -

Infelizmente, não podemos usar o seu nome amigável (OpenHAB.local no meu caso) como a pilha TCP / IP sobre o Arduino é muito simplista e adicionando o código para Bonjour nomeação seria uma grande quantidade de memória que não queremos desperdiçar. Para alterar os temas que os dados do sensor está sendo transmitido on, desloque-se a estas linhas:

char buffer [10] -dtostrf (t, 0, 0, tampão) -client.publish ("openhab / himitsu / temperatura", Tampão) -dtostrf (h, 0, 0, tampão) -client.publish ("openhab / himitsu / humidade",amortecedor)-

O código também inclui subscrição de um canal de comando. Localizar e ajustar a seguinte linha:

client.subscribe ("openhab / himitsu / command") -

Examinar o código em torno de lá e você verá que você pode facilmente controlar um LED ou retransmitir por exemplo, enviando comandos para canais específicos. No código de exemplo, ele simplesmente envia uma mensagem de volta confirmando o recebimento do comando.

Carregue o seu código, conecte o Arduino para a rede, e usando MQTT.fx se inscrever para qualquer # ou openhab / himitsu / # (Ou o que você mudou o nome do quarto para, mas não se esqueça de incluir o # no final). Em breve você verá mensagens vindo dentro e se você enviar ON ou OFF com o tema de comando, você verá reconhecimentos voltar também.

MQTT mensagens arduino voltar

MQTT ligação para OpenHAB

O passo final na equação é ligar esta em OpenHAB. Para isso, é claro, precisamos de uma ligação.

sudo apt-get install openhab vinculativo-addon-mqttsudo chown -HR openhab: openhab / usr / share / openhab

E editar o arquivo de configuração para permitir a ligação.

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

Restart OpenHAB

sudo restart openhab serviço

Em seguida, vamos adicionar um item ou dois:

/ * MQTT Sensores * / Número Himitsu_Temp "Himitsu Temperatura [% .1f ° C]"  (Himitsu, Temperatura) {= MQTT"lt; [corretor: openhab / himitsu / temperatura: Estado: padrão]"} Número Himitsu_Humidity "Himitsu Humidade [% .1f %%]"  (Himitsu, Humidade) {= MQTT"lt; [corretor: openhab / himitsu / humidade: Estado: padrão]"}

Até agora você deve entender o Format- está ficando um número de artigo do MQTT vinculativo, sobre um tema específico. Este um exemplo simples, você pode querer consultar a página wiki onde ele pode ficar muito mais complexo.

Parabéns, você tem agora a base de um conjunto de sensores baseado em Arduino barato. Nós estaremos revisitando este no futuro e colocando o Arduino de na sua própria rede RF totalmente separado. Também criei uma versão idêntica para Wizwiki 7500 placas se acontecer de você ter um desses.

Persistência e dados graficamente

Até agora você provavelmente um monte de sensores configurar, seja de Z-Wave ou Arduinos personalizados em execução MQTT - para que possa ver o estado atual dos sensores, a qualquer momento, e você também deve estar a reagir ao seu valor em regras. Mas a coisa interessante sobre valores do sensor é geralmente que eles mudam ao longo do tempo: é aí que a persistência e gráficos vem. Persistência em OpenHAB significa salvar os dados ao longo do tempo. Vamos ir em frente e configuração RRD4J (Round Robin Database for Java), assim chamado porque os dados são salvos em uma forma round robin - dados mais antigos são descartados para comprimir o tamanho do banco de dados.

Instalar pacotes rrd4j com os seguintes comandos.

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

Em seguida, crie um novo arquivo chamado rrd4j.persist no configurações / persistência pasta. Cole o seguinte:

Estratégias {everyminute: "0 * * * *?"toda hora 	: "0 0 * * *?"todo dia	: "0 0 0 * *?"default = everyChange} Itens {// persistem tudo quando o valor é atualizado, apenas um padrão, e restaurá-los a partir do banco de dados na inicialização *: estratégia = everyChange, RestoreOnStartup // seguinte, definir estratégias específicas de everyHour por nada no grupo de temperatura, e e cada minuto para HumidityTemperature *: estratégia = everyHourHumidity *: estratégia = everyminute // alternativamente, você pode adicionar itens específicos aqui, como // Bedroom_Humidity, JamesInOffice: estratégia = everyminute}

Na primeira parte deste arquivo, estamos definindo estratégias, que apenas significa dar um nome a uma expressão cron. Este é o mesmo que nós já fizemos com My.OpenHAB, mas desta vez estamos criar algumas novas estratégias que podemos usar de todos os dias, everyHour e everyminute. Eu não usei todos eles ainda, mas eu poderia ser no futuro.

Na segunda metade do arquivo, dizemos rr4dj que valores de dados para salvar. Como padrão, nós estamos indo para salvar tudo cada vez que ele atualiza, mas eu também especificou algumas estratégias de tempo com base para sensores específicos. Temperaturas Eu não estou muito preocupado com, então eu definir isso para salvar apenas everyHour, mas a umidade é uma grande preocupação para mim, então eu quero ver como ele está mudando a cada minuto. Se há outros dados que você quer especificamente para economizar em tempos do jogo, adicione aqueles aqui agora ou ajustar conforme necessário.

Nota: se você deseja representar graficamente os dados também, você deve armazená-lo pelo menos uma vez por minuto. Não importa se os seus dados sensor é mesmo atualizadas isso rapidamente, você simplesmente precisa dizer rr4dj para armazená-lo uma vez por minuto.

Com isso definido, você deve começar a ver alguns saída de depuração dizendo que os valores estão sendo armazenados.

rrd4j dados armazenando

Em seguida, vamos fazer alguns gráficos bonitos de todos esses dados. É realmente fácil. Para fazer um gráfico de um sensor individual, adicione o seguinte ao seu mapa do site:

item do gráfico = período Bedroom_Humidity = h

Isso é literalmente tudo que você precisa. Os valores válidos para período são H, 4h, 8h, 12h, D, 3D, W, 2W, M, 2 M, 4 M, Y- deveria ser óbvio o que elas significam. O padrão é D para um dia inteiro de dados se não especificados.

Video: Introduction to the Paper UI of openHAB 2

Para criar um gráfico com vários itens, simplesmente representar graficamente o nome do grupo em vez disso:

item do gráfico = período de umidade = h

gráfico

Você também pode estar interessado em saber que você pode usar este gráfico elsewhere- está gerando uma imagem usando o seguinte URL: http: // YOUROPENHABURL:? 8080 / gráfico grupos = humidade&= h período

como é Seu OpenHAB Sistema Vinda?

Isso é tudo para esta parcela da guia, mas não espere que este vai ser o último que você ouvir de nós sobre OpenHAB. Esperemos que este e guia do novato deram-lhe uma base sólida para desenvolver o seu próprio sistema OpenHAB completa - mas é um processo que nunca é realmente completamente terminado.

Felizmente, OpenHAB pode escalar bem de poucos dispositivos a centenas, de simples complexidade regra para o máximo em automação residencial - assim como do seu sistema vem junto? Quais dispositivos que você escolheu? Qual é o próximo grande projeto que você vai enfrentar?

Vamos falar nos comentários - e, por favor, se você encontrou este guia útil, clicar nesses botões de compartilhamento de dizer a seus amigos como eles também podem configurar seu próprio sistema OpenHAB.


Artigos relacionados