Guia per a principiants d'OpenHAB Part 2: ZWave, MQTT, Regles i gràfics

Guia per a principiants d'OpenHAB Part 2: ZWave, MQTT, Regles i gràfics

Gratuït no sempre significa 'no tan bo com de pagament', i OpenHAB no és una excepció. El programari domòtic de codi obert supera amb escreix les capacitats de qualsevol altre sistema domòtic del mercat, però no és fàcil configurar-lo. De fet, pot ser francament frustrant.





A la primera part de la guia, us vaig recórrer instal·lant OpenHAB en un Raspberry Pi , va introduir els conceptes bàsics d'OpenHAB i us va mostrar com afegir els vostres primers elements al sistema. Avui anirem més enllà:





  • Addició de dispositius ZWave
  • Addició d’un controlador Harmony Ultimate
  • Introducció de regles
  • Presentació de MQTT i instal·lació d’un broker MQTT al vostre Pi, amb sensors a un Arduino
  • Enregistrament de dades i gràfic

Introducció a Z-Wave

Z-Wave ha estat el protocol domòtic dominant durant anys: és fiable, s’ha desenvolupat extensament i funciona a un abast molt més llarg que qualsevol altre producte per a la llar intel·ligent. Hi ha centenars de sensors Z-Wave disponibles que realitzen una àmplia gamma de tasques. OpenHAB llauna funciona amb Z-Wave, però és un problema de configuració i no es garanteix la fiabilitat.





Si esteu pensant en comprar una casa plena de sensors Z-Wave per utilitzar-los específicament amb OpenHAB, us recomanaria que ho reconsidereu. Pot resultar-vos fantàstic o pot estar plagat de problemes petits però persistents. Com a mínim, no compreu una casa plena de sensors fins que no tingueu l’oportunitat de provar-ne uns quants. L’única raó per triar Z-Wave és si no esteu establert al 100% a OpenHAB i voleu deixar obertes les opcions en el futur: Z-Wave, per exemple, funciona amb el centre Samsung SmartThings, així com amb els centres específics de Z-Wave. com Homeseer, i diverses altres opcions de programari, com ara domoticz .

Tot i que OpenHAB inclou un enllaç Z-Wave, encara cal configureu primer la xarxa Z-Wave , abans que OpenHAB pugui començar a consultar-la per obtenir dades. Si teniu una placa de control de Rasberry, teniu subministrat algun programari per configurar la xarxa, de manera que no ho cobrirem aquí. Si heu comprat un controlador USB Aeotec Z-Stick o similar, és probable que no tingueu programari inclòs, així que seguiu llegint.



Aeotec Z-Stick Gen5 Hub Z-Wave Z-Wave Plus USB per crear passarel·la (blanc normal) COMPRA ARA A AMAZON

Si ja teniu una configuració de xarxa Z-Wave , només podeu connectar el controlador al Pi i començar a configurar l'enquadernació i els elements. Si aquesta és la vostra primera incursió a Z-Wave, és una mica més complexa.

Primer, pel que fa al maquinari: cada controlador té la seva pròpia manera d’aparellar-se amb els dispositius (tècnicament conegut com a “mode d’inclusió” en què s’assigna un ID de node). En el cas de l’Aotec Z-Stick, això significa desconnectar-lo del port USB i prémer el botó una vegada per col·locar-lo al mode d’inclusió. A continuació, acosteu-lo al dispositiu que esteu vinculant i premeu també el botó d'inclusió (Això també variarà: el meu sòcol Everspring requereix que el botó premi 3 vegades de forma ràpida, de manera que la lliçó aquí és llegir el manual del vostre dispositiu) .





El Z-Stick parpelleja breument per indicar l’èxit. Això presenta problemes quan es torna a connectar al Pi, ja que s’assigna un nou port. Reinicieu el Pi per tornar-lo al port estàndard si veieu que s'ha reassignat dinàmicament un altre. Millor encara: no el connecteu al Pi fins que no hàgiu fet tots els aparellaments de maquinari.

Instal·lació d’enllaços HABmin i Z-Wave

Com que OpenHAB en realitat no és una utilitat de configuració per a Z-Wave, instal·larem una altra eina de gestió web que sí, cosa que s’anomena HABmin. Aneu cap a la Dipòsit HABmin Github descarregueu la versió actual. Un cop l’heu descomprimit, en trobareu 2 .jar fitxers al directori de complements: s'han de col·locar al directori de complements corresponent del vostre compartiment d'OpenHAB Home (si també utilitzeu l'Aotec gen5 Z-Stick, assegureu-vos que tingueu almenys la versió 1.8 de l'enquadernació Z-Wave) .





A continuació, creeu una carpeta nova al directori webapps i l'anomeneu 'habmin' (és important la minúscula). Copieu la resta de fitxers descarregats allà.

Nota: també hi ha un HABmin 2 en desenvolupament actiu. La instal·lació és pràcticament igual, però amb un complement .jar addicional. Pot valer la pena provar-les ambdues per veure quina preferiu.

Si encara no ho heu fet, connecteu el controlador al vostre Pi. Escriviu el següent per trobar el port correcte.

ls / dev / tty *

Esteu cercant qualsevol cosa amb USB al nom o, en el meu cas particular, la memòria Z es presentés com a / dev / ttyACM0 (un mòdem). Pot ser que sigui més fàcil fer l'ordre una vegada abans de connectar-lo i un cop després, de manera que pugueu veure què canvia si no esteu segur.

Obriu el fitxer de configuració OpenHAB i modifiqueu la secció de Z-Wave, sense comentar les dues línies i posant l'adreça del dispositiu real. Un darrer pas per a mi va ser permetre a l'usuari OpenHAB accedir al mòdem.

sudo usermod -a -G dialhab openhab

Ara, per posar tot en acció, reinicieu OpenHAB

sudo service openhab restart

Amb sort, si comproveu el registre de depuració, veureu alguna cosa així. Enhorabona, ara parles de Z-Wave. També podeu trobar el registre de depuració inundat de missatges de diversos nodes Z-Wave. Comencem comprovant HABMIN per veure què es troba: http: //openhab.local: 8080 / habmin / index.html (substituint openhab.local pel vostre nom d’amfitrió o adreça IP de Raspberry Pi).

Hi ha moltes coses a veure a HABMIN, però només ens preocupa molt Configuració -> Enllaços -> Z-Wave -> Dispositius , com podeu veure a continuació. Amplieu el node per editar la ubicació i l'etiqueta del nom per facilitar la vostra consulta.

Configuració d’elements Z-Wave

Cada dispositiu Z-Wave tindrà una configuració específica per a OpenHAB. Afortunadament, la majoria de dispositius ja s’han explorat i ja n’hi haurà exemples. La configuració de dispositius personalitzats que no es reconeixen està molt més enllà de l’abast d’aquesta guia, però suposem que per ara s’admet.

En primer lloc, tinc un commutador i un comptador d’alimentació Everspring AN158 bàsics al node 3. Un Googling ràpid em va portar a una publicació de bloc a Wetwa.re, amb una configuració d’elements de mostra. Ho vaig adaptar de la següent manera:

Canvia Dehumidifier_Switch 'Deshumidificador' {zwave = '3: command = switch_binary'}

Nombre Dehumidifier_Watts 'Consum d'energia del deshumidificador [% .1f W]' {zwave = '3: command = meter'}

Perfecte.

El següent és un multisensor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 multi-sensor (Z-Wave Plus) COMPRA ARA A AMAZON

Per a aquest, he trobat una configuració de mostra a iwasdot.com , i el meu multisensor és al node 2.

Número Corredor_Temperatura 'Temperatura del corredor [% .1f ° C]' (Corredor, temperatura) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0'}

Número Vestíbul_Humitat 'Humitat del vestíbul [% .0f %%]' (Vestíbul, humitat) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

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

Poseu-vos en contacte amb Hallway_Motion 'Hallway Motion [% s]' (Hallway, Motion) {zwave = '2: 0: command = sensor_binary, respond_to_basic = true'}

Número sensor_1_battery 'Bateria [% s %%]' (moviment) {zwave = '2: 0: command = battery'}

Si el vostre format us sembla estrany, torneu al primer guia per a principiants , concretament la secció d’enquadernació Hue, on explico com s’afegeixen els elements. Probablement només haureu de copiar exemples d'enganxar com aquest, però en cas que tingueu un dispositiu nou, la documentació vinculant detalla tot ordres .

Enquadernació Logitech Harmony

Abans de saltar a les regles, volia afegir una nota ràpida sobre com treballar amb la vinculació Harmony. Sóc un gran fan de la sèrie Harmony de comandaments a distància per simplificar l’experiència del centre de mitjans domèstics, però sovint són un sistema independent a la casa intel·ligent. Amb OpenHAB, les activitats de Logitech Harmony i el control complet del dispositiu ara poden formar part del vostre sistema centralitzat i fins i tot incloure-les a les regles d’automatització.

Comenceu instal·lant els tres fitxers vinculants que trobareu utilitzant apt-cache per cercar 'harmonia':

No ho oblideu bufat torneu a fer el directori d'enllaços:

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

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

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

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

Per configurar la vinculació, obriu el fitxer openhab.cfg i afegiu una secció nova de la següent manera:

########## CONTROLS A DISTÀNCIA D'ARMONIA ###########

harmoniahub: host = 192.168.1.181 o la vostra IP

harmoniahub: nom d'usuari = la vostra harmonia-correu electrònic-d'inici de sessió

harmoniahub: contrasenya = la teva contrasenya

L'adreça IP és la del vostre centre Harmony. Utilitzeu un escàner de xarxa per esbrinar-ho. També haureu d’introduir les dades d’inici de sessió, les que introduïu quan llanceu la utilitat de configuració estàndard Harmony. Això és. En reiniciar Hue, el registre de depuració hauria de provocar una sortida sobtada de l'enllaç.

Aquesta és una llista amb format JSON de totes les vostres activitats, dispositius i ordres que es poden enviar. És una bona idea copiar-ho per a futures consultes. podeu fer que sigui encara més fàcil llegir-lo amb nodes plegables enganxant-lo en un formatador JSON en línia com aquest .

A més de l'activitat estàndard de PowerOff, que és un valor per defecte, trobareu les vostres pròpies activitats definides aquí per nom. Ara anem a crear un simple control d'un botó per iniciar les activitats. En primer lloc, al fitxer d’elements, afegiu la línia següent. Canvieu el grup i la icona si voleu.

/ * Harmony Hub * /

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

Això és un unió de cadena de dues vies , que és capaç de recuperar l'activitat actual i de manar que l'activitat actual sigui una altra cosa. Ara podem crear-li un botó al fitxer del mapa del lloc.

Canvia d'element = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Exercise', 13858434 = 'TV', Karaoke = 'Karaoke']

quina calor fa massa cpu

Al claudàtor, veureu cada activitat juntament amb l'etiqueta. Generalment, podeu referir-vos directament a les activitats que heu anomenat al comandament a distància, però l'excepció que he trobat és qualsevol cosa que tingui un espai al nom de l'activitat, com ara 'Veure TV'. En aquest cas, haureu d’utilitzar l’identificador d’activitat. De nou, podeu trobar l'identificador a la sortida de depuració JSON. Deseu i actualitzeu la vostra interfície, hauríeu de veure alguna cosa similar a això:

També podeu consultar les activitats de les vostres regles, com veurem a continuació. Llegiu la pàgina wiki per obtenir més informació sobre Enquadernació d’harmonia .

Introducció general a les normes

La majoria dels centres de casa intel·ligent inclouen algun tipus de creació de regles perquè pugueu reaccionar automàticament a les dades del sensor i als esdeveniments a casa. De fet, diria que una casa veritablement intel·ligent no és necessària per passar el temps interactuant amb aplicacions mòbils, sinó que és invisible per a l’usuari final i totalment automatitzada. Per a això, OpenHAB també inclou un potent llenguatge de seqüència de comandes que es pot programar, superant amb escreix la complexitat de la majoria de centres casolans intel·ligents o receptes IFTTT.

Les regles de programació sonen pitjor del que és. Comencem senzillament amb un parell de regles que activen o apaguen la llum en funció del sensor de presència:

regla 'Llum d'oficina encès quan James és present'

Quan

L'article JamesInOffice ha canviat de DESACTIVAT a ACTIVAT

llavors

sendCommand (Office_Hue, ON)

final

regla 'La llum de l'oficina s'apaga quan James se'n va'

Quan

L'article JamesInOffice ha canviat d'ACTIVAT a DESACTIVAT

llavors

sendCommand (Office_Hue, OFF)

final

En primer lloc, anomenem la regla: sigueu descriptiu, de manera que sàpiga quin esdeveniment es dispara. A continuació, definim la nostra regla simple dient quan x és cert, feu y . La fi significa el tancament d’aquesta regla en particular. Hi ha una sèrie de paraules especials que podeu utilitzar a les regles, però ara per ara tractem de dos trossos de sintaxi simples: Article , que permet consultar l'estat d'alguna cosa; i enviarComanda , que fa exactament el que creieu que farà. Et vaig dir que això era fàcil.

Probablement no sigui necessari fer servir un parell de regles, però a mesura que la meva lògica es fa més complexa, serà beneficiós tenir-les separades per si estic entrant o sortint de la zona, i pot ser una bona idea afegir un sensor de llum en algun lloc a l’equació, de manera que no encenem els llums innecessàriament.

Vegem un altre exemple per crear una regla programada.

regla 'Exercici cada matí'

Quan

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

llavors

harmoniaStartActivity ('Exercici')

final

De nou, anomenem la regla, indiquem les condicions en què s’ha d’actuar i les accions a fer. Però en aquest cas, estem definint un patró de temps. El codi divertit que veieu a les cometes és una expressió CRON per a Quartz Scheduler (el format és lleugerament diferent al CRONtab normal). jo solia cronmaker.com per ajudar a crear l’expressió, però també podeu llegir la guia de formats [Ja no hi ha disponible] per obtenir una explicació detallada i més exemples.

CronMaker.com s'utilitza per generar l'expressió Cron amb el format correcte

Les meves regles diuen simplement: 'A les 8 del matí, tots els dies de la setmana, digueu al meu sistema Harmony Ultimate que comenci l'activitat Exercici', que al seu torn activa el televisor, la Xbox, l'amplificador i prem el botó A al cap d'un minut per iniciar el disc de la unitat.

Malauradament, OpenHAB encara no pot fer l’exercici per mi.

Una norma més que us vull mostrar és la que faig servir per controlar els nivells d’humitat de casa meva. Tinc un sol deshumidificador que necessito per moure’m allà on sigui necessari, així que vaig decidir mirar tots els meus sensors d’humitat, trobar quin és el més alt i emmagatzemar-lo en una variable. Actualment s’activa cada minut, però es pot reduir fàcilment. Mireu primer:

importació org.openhab.core.library.types. *

importació org.openhab.model.script.actions. *

importació java.lang.String

norma 'Monitor d'humitat'

quan cron cron '0 * * * *?'

llavors

var prevHigh = 0

var highHum = '

Humitat? .Members.forEach [hum |

logDebug ('humitat.regles', hum.name);

if (hum.state com DecimalType> prevHigh) {

prevHigh = hum.state

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

}

com utilitzar el controlador xbox one al PC Windows 10

]

logDebug ('humitat.regles', highHum);

postUpdate (Dehumidifier_Needed, highHum);

final

El nucli de la regla es troba a Humitat? .Members.foreach línia. La humitat és un nom de grup per als meus sensors d'humitat; .membres agafa tots els elements d’aquest grup; per cadascú itera per sobre d'ells (amb un curiós format de claudàtors que probablement no coneixeu). La sintaxi de les regles és una derivada de Xtend, de manera que podeu llegir el document Documentació de Xtend si no trobeu un exemple per adaptar-vos.

Tot i que probablement no ho necessiteu, hi ha centenars d'exemples de regles:

MQTT per a OpenHAB i Internet de les coses

MQTT és un sistema de missatgeria lleuger per a la comunicació de màquina a màquina: un tipus de Twitter perquè els vostres Arduinos o Raspberry Pis puguin parlar entre ells (tot i que, per descomptat, funciona amb molt més que aquests). Està guanyant popularitat ràpidament i es troba a casa amb dispositius Internet de les Coses, que normalment són microcontroladors de pocs recursos que necessiten una manera fiable de transmetre les dades del sensor al vostre concentrador o rebre ordres remotes. Això és exactament el que farem amb això.

Però, per què reinventar la roda?

MQ Telemetry Transport es va inventar ja el 1999 per connectar oleoductes mitjançant connexions lentes per satèl·lit, dissenyades específicament per minimitzar l’ús de la bateria i l’amplada de banda, tot proporcionant un lliurament fiable de dades. Al llarg dels anys, els principis de disseny s’han mantingut iguals, però el cas d’ús ha passat de sistemes integrats especialitzats a dispositius generals d’Internet de les coses. El 2010 es va llançar el protocol sense drets d'autor, obert per a tothom per utilitzar-lo i implementar-lo. Ens agrada gratis.

És possible que us pregunteu per què fins i tot ens molestem amb un altre protocol (ja tenim l'HTTP) que es pot utilitzar per enviar missatges ràpids entre tota mena de sistemes connectats al web (com OpenHAB i IFTTT, en particular amb el nou canal maker) ). I tindries raó. No obstant això, la sobrecàrrega de processament d’un servidor HTTP és bastant gran, tant que no es pot executar fàcilment en un microcontrolador incrustat com l’Arduino (almenys sí, però no li quedarà molta memòria per a res més) ). MQTT és, d’altra banda, lleuger, de manera que l’enviament de missatges a la xarxa no obstruirà les canonades i pot encabir-se fàcilment al nostre petit espai de memòria Arduino.

Com funciona MQTT?

MQTT requereix un servidor (anomenat 'broker') i un o més clients. El servidor actua com a intermediari, rebent missatges i retransmetent-los a qualsevol client interessat.

Continuem amb el Twitter per a màquines analogia però. De la mateixa manera que els usuaris de Twitter poden tuitejar els seus propis 140 caràcters sense sentit i els usuaris poden 'seguir' a altres usuaris per veure un flux de publicacions seleccionat, els clients de MQTT poden subscriure's a un canal concret per rebre tots els missatges d'allà, així com publicar els seus propis missatges a aquest canal. Aquest patró de publicació i subscripció es coneix com a pub / sub , a diferència de la tradició client / servidor model d'HTTP.

HTTP requereix que us poseu en contacte amb la màquina amb la qual us comuniqueu, diguem Hola, i després tingueu la possibilitat de reconèixer-vos constantment mentre obteniu o poseu dades. Amb pub / sub, el client que publica no necessita saber quins clients estan subscrits: només fa sortir els missatges i l’agent els redistribueix a qualsevol client subscrit. Qualsevol client pot publicar i subscriure's a temes, igual que un usuari de Twitter.

Tanmateix, a diferència de Twitter, MQTT no es limita a 140 caràcters. Es tracta de dades agnòstiques, de manera que podeu enviar xifres petites o blocs de text grans, datagrames amb format JSON o fins i tot imatges i fitxers binaris.

No és que MQTT sigui millor que HTTP per a tot, però sí és més adequat si tindrem molts sensors a tota la casa, que informaran constantment.

També és important saber que OpenHAB no actuarà com el vostre intermediari MQTT; ho tractarem més endavant. Tot i això, OpenHAB actuarà com a client: pot publicar el registre d’activitats d’OpenHAB i vincular determinats canals a dispositius, de manera que pugueu tenir un commutador controlat pels missatges MQTT d’un canal concret. Això és ideal per crear una casa plena de sensors.

Instal·leu Mosquitto al vostre Pi

Tot i que OpenHAB inclou un client MQTT perquè pugueu subscriure-us a un tema i també publicar missatges, no actuarà com a servidor. Per a això, cal que utilitzeu un broker MQTT basat en web (de pagament o gratuït) o bé que instal·leu el programari gratuït al vostre Pi. M’agradaria mantenir-ho tot a casa, així que he instal·lat Mosquitto al Pi.

Malauradament, la versió disponible a través de l’apt-get habitual està completament obsoleta. Afegim les fonts més recents.

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

sudo apt-key afegir 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

Això és tot el que hem de fer per tenir un servidor MQTT en funcionament a la xarxa local. El vostre corredor funciona al port 1883 per defecte.

Comproveu que el servidor MQTT funcioni amb el MQTT.fx gratuït, que és multiplataforma. Feu clic a la icona de configuració per crear un perfil nou i introduïu l'adreça IP o el nom de Raspberry Pi. Deseu i premeu connectar. Si el petit semàfor de la part superior dreta es posa de color verd, és bo anar-hi.

Per fer una prova ràpida, feu clic a la pestanya 'subscripció' i escriviu a Tema / al quadre de text i, a continuació, premeu el botó Subscriu-te botó. Ara esteu subscrit per rebre missatges sobre el tema anomenat inTopic, tot i que mostrarà 0 missatges. Torneu a la pestanya de publicació, escriviu Tema al quadre petit i un missatge curt al quadre de text gran de sota. Encertat Publica unes quantes vegades i mireu enrere a la pestanya de subscripció. Hauríeu de veure alguns missatges apareguts en aquest tema.

Abans d’afegir alguns sensors reals a la nostra xarxa, hem de conèixer els nivells de tema, que ens permeten estructurar i filtrar la xarxa MQTT. Els noms dels temes distingeixen entre majúscules i minúscules, no han de començar amb $, ni inclouen un espai o caràcters que no siguin ASCII: pràctiques de programació estàndard per a noms de variables, realment.

El separador / indica un nivell de tema que és jeràrquic, per exemple, els següents són nivells de tema vàlids.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome / livingRoom / temperatura

myHome / livingRoom / humitat

myHome / cuina / temperatura

myHome / cuina / humitat

Ja hauríeu de veure com aquesta estructura d’arbre és perfecta per a una llar intel·ligent plena de sensors i dispositius. La millor pràctica per utilitzar-lo amb diversos sensors en una sola sala és publicar cada variable del sensor segons el seu propi nivell de tema, que es basa en més especificitat (com en els exemples anteriors), en lloc d’intentar publicar diversos tipus de sensor al mateix canal. .

Els clients poden publicar o subscriure's a qualsevol nombre de nivells de tema individuals, o utilitzar alguns caràcters comodins especials per filtrar-los des de la part superior a l'arbre.

Els + comodins substitueixen qualsevol nivell de tema. Per exemple:

myHome / + / temperatura

subscriuria el client a tots dos

myHome / livingRoom / temperatura

myHome / cuina / temperatura

... però no els nivells d’humitat.

El # és un comodí de diversos nivells, de manera que podeu obtenir qualsevol cosa de la matriu de sensors livingRoom amb:

myHome / livingRoom / #

Tècnicament, també us podeu subscriure al nivell de root que us permetrà passar absolutament tot pel corredor, però pot ser com ficar-vos una mànega de foc a la cara: una mica aclaparador. Proveu de connectar-vos al corredor MQTT públic d’HiveMQ i subscriviu-vos a #. Vaig rebre uns 300 missatges en pocs segons abans que el meu client acabés de bloquejar-se.

Consell per a principiants de MQTT: ' /casa meva/' és un tema diferent a ' casa meva/' - Si incloeu una barra inclosa al començament, es crea un nivell de tema en blanc, que encara que sigui tècnicament vàlid, no es recomana perquè pot ser confús.

Ara que coneixem la teoria, fem una prova amb un Arduino, un Ethernet Shield i un sensor de temperatura i humitat DHT11; probablement en tingueu un al vostre kit d’inici, però si no, canvieu el sensor ambiental per un moviment sensor (o fins i tot un botó).

Publicació de MQTT des d’un Arduino amb connexió Ethernet

Si teniu un dispositiu híbrid compatible amb Arduino amb Wi-Fi o Ethernet integrat, també hauria de funcionar. Finalment, voldrem una manera de comunicar millor / més barata que haver d’utilitzar una connexió de xarxa a totes les habitacions, però això serveix per aprendre els conceptes bàsics.

Comenceu descarregant biblioteca de pubsubclients de Github . Si heu utilitzat el botó 'Baixa com a ZIP', l'estructura està una mica equivocada. Descomprimiu, canvieu el nom de la carpeta pubsubclient i, a continuació, traieu els dos fitxers del fitxer src i moveu-los un nivell cap amunt a l'arrel de la carpeta descarregada. A continuació, moveu tota la carpeta al vostre Arduino / biblioteques directori.

Aquí teniu el meu codi de mostra que podeu adaptar : la sortida del senyal DHT11 és al pin 7. Canvieu la IP del servidor per la del vostre Pi a la línia següent:

client.setServer ('192.168.1.99', 1883);

Malauradament, no podem utilitzar el seu nom amable (OpenHAB.local en el meu cas) ja que la pila TCP / IP de l'Arduino és molt simplista i afegir el codi per a la denominació de Bonjour seria una gran quantitat de memòria que no volem malgastar. Per canviar els temes en què s'estan emetent les dades del sensor, desplaceu-vos cap avall fins a aquestes línies:

buff buffer [10];

dtostrf (t, 0, 0, memòria intermèdia);

client.publish ('openhab / himitsu / temperature', buffer);

dtostrf (h, 0, 0, memòria intermèdia);

client.publish ('openhab / himitsu / humiditat', memòria intermèdia);

El codi també inclou la subscripció a un canal d’ordres. Cerqueu i ajusteu la línia següent:

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

Examineu el codi que hi ha al voltant i veureu que podeu controlar fàcilment un LED o un relé, per exemple, enviant ordres a canals específics. En el codi d'exemple, simplement envia un missatge confirmant la recepció de l'ordre.

Pengeu el vostre codi, connecteu el vostre Arduino a la xarxa i, mitjançant MQTT.fx, subscriviu-vos a qualsevol # o bé openhab / himitsu / # (o el que hagueu canviat el nom de la sala, però no oblideu incloure el # al final). Ben aviat hauríeu de veure els missatges que arribaven; i si envieu ACTIVAT o DESACTIVAT al tema de l'ordre, veureu que també tornaran els agraïments.

Enquadernació MQTT per a OpenHAB

L’últim pas de l’equació és connectar-lo a OpenHAB. Per a això, per descomptat, necessitem una vinculació.

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

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

I editeu el fitxer de configuració per habilitar la vinculació.

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

mqtt: broker.clientId = openhab

Reinicieu OpenHAB

sudo service openhab restart

A continuació, afegim un o dos elements:

/ * Sensors MQTT * /

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

Nombre Himitsu_Humidity'Himitsu Humity [% .1f %%] '(Himitsu, Humidity) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

A hores d'ara hauríeu d'entendre el format; s'està aconseguint un Número d'element des de l'enquadernació MQTT, sobre un tema especificat. Aquest és un exemple senzill, potser voldreu consultar la pàgina wiki on es troba pot ser molt més complex .

Enhorabona, ara teniu la base d’un conjunt de sensors barat basat en Arduino. Tornarem a revisar-ho en el futur i col·locarem els Arduino a la seva pròpia xarxa de RF totalment separada. També he creat una versió idèntica per a taules Wizwiki 7500 si en teniu algun.

Dades de persistència i gràfics

A hores d’ara és probable que hàgiu configurat un munt de sensors, ja siguin de Z-Wave o Arduinos personalitzats que executin MQTT, de manera que pugueu veure l’estat actual d’aquests sensors en qualsevol moment i també hauríeu de reaccionar al seu valor a les regles. Però l’interessant dels valors dels sensors és generalment que canvien amb el pas del temps: és aquí on entra la persistència i el gràfic. Persistència a OpenHAB significa guardar les dades al llarg del temps. Anem endavant i configurem RRD4J (Round Robin Database for Java), anomenat així perquè les dades es guarden de manera round-robin: les dades més antigues es descarten per comprimir la mida de la base de dades.

Instal·leu els paquets rrd4j amb les ordres següents.

sudo apt-get install openhab-addon-persistence-rrd4j
sudo chown -hR openhab:openhab /usr/share/openhab

A continuació, creeu un fitxer nou anomenat rrd4j.persist al configuracions / persistència carpeta. Enganxeu el següent:

Estratègies {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

everyDay: '0 0 0 * *?'

per defecte = everyChange

}

Articles {

// persistiu tot quan s'actualitzi el valor, només per defecte, i restaureu-los des de la base de dades en iniciar-se

*: Strategy = everyChange, restoreOnStartup

// a continuació definim estratègies específiques de cada hora per a qualsevol cosa del grup Temperatura i de cada minut per a la humitat

com esbrinar quan es va publicar un article

Temperatura *: estratègia = cada hora

Humitat *: estratègia = cada minut

// també podeu afegir elements específics aquí, com ara

// Bedroom_Humidity, JamesInOffice: Strategy = everyMinute

}

A la primera part d’aquest fitxer, definim estratègies, que només vol dir donar nom a una expressió CRON. Això és el mateix que ja vam fer amb My.OpenHAB, però aquesta vegada estem creant algunes estratègies noves que podem utilitzar cada dia, cada hora i cada minut. Encara no les he fet servir totes, però pot ser que ho sigui en el futur.

A la segona meitat del fitxer, indiquem a rr4dj quins valors de dades cal desar. Per defecte, ho guardarem tot cada vegada que s’actualitzi, però també he especificat algunes estratègies basades en el temps per a sensors específics. Les temperatures no em molesten massa, de manera que he establert això per estalviar només cada hora, però la humitat és una gran preocupació per a mi, així que vull veure com canvia cada minut. Si hi ha altres dades que voleu desar específicament a hores determinades, afegiu-les aquí ara o ajusteu-les segons calgui.

Nota: si també voleu representar gràficament les dades, HEM DE desar-les almenys un cop al minut. Tant se val si les dades del sensor s’actualitzen tan ràpidament, només cal que digueu a rr4dj que les emmagatzemi un cop al minut.

Amb això definit, hauríeu de començar a veure alguna sortida de depuració que us indiqui que s’estan emmagatzemant valors.

A continuació, fem uns gràfics molt bonics de totes aquestes dades. És molt fàcil. Per fer un gràfic d'un sensor individual, afegiu el següent al mapa del lloc:

Element del gràfic = Dormitori_Període d'humitat = h

Això és, literalment, tot el que necessiteu. Els valors vàlids per al període són h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; hauria de ser obvi què volen dir això. Si no s'especifica, es mostrarà per defecte a D per a un dia complet de dades.

Per crear un gràfic amb diversos elements, només cal que dibuixeu el nom del grup:

Element del gràfic = Període d'humitat = h

També us pot interessar saber que podeu utilitzar aquest gràfic en altres llocs; està generant una imatge amb l'URL següent: http: // YOUROPENHABURL: 8080 / chart? groups = Humitat i període = h

Com va La vostra Ve el sistema OpenHAB?

Això és tot per a aquest lliurament de la guia, però no espereu que serà l'últim que escolteu d'OpenHAB. Esperem que això i la guia per a principiants us proporcionin una base sòlida per desenvolupar el vostre propi sistema OpenHAB complet, però és un procés que mai no s’ha acabat completament.

Afortunadament, OpenHAB pot escalar bé des d’uns quants dispositius fins a centenars, des de la complexitat de les regles fins a l’últim en domòtica. Així doncs, com funciona el vostre sistema? Quins dispositius heu triat? Quin és el proper gran projecte que abordareu?

Parlem als comentaris i, si us plau, si heu trobat útil aquesta guia, feu clic als botons de compartir per explicar als vostres amics com ells també poden configurar el seu propi sistema OpenHAB.

Esperem que us agradin els articles que recomanem i comentem. MUO té associacions afiliades i patrocinades, de manera que rebem una part dels ingressos d'algunes de les vostres compres. Això no afectarà el preu que pagueu i ens ajudarà a oferir les millors recomanacions de productes.

Compartir Compartir Tweet Correu electrònic Una guia per a principiants d’animació de la parla

Animar la parla pot ser un repte. Si esteu preparat per començar a afegir diàlegs al vostre projecte, us desglossarem el procés.

Llegiu a continuació
Temes relacionats
  • Bricolatge
  • Smart Home
  • Arduino
  • Domòtica
  • Forma llarga
  • Guia de forma llarga
Sobre l'autor James Bruce(707 articles publicats)

James té un BSc en Intel·ligència Artificial i està certificat CompTIA A + i Network +. Quan no està ocupat com a editor de ressenyes de maquinari, li agrada LEGO, VR i els jocs de taula. Abans d’incorporar-se a MakeUseOf, era tècnic d’il·luminació, professor d’anglès i enginyer de centres de dades.

Més de James Bruce

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us