Mainos

Ilmainen ei tarkoita aina "ole niin hyvä kuin maksettu", ja OpenHAB ei ole poikkeus. Avoimen lähdekoodin kotiautomaatio-ohjelmisto ylittää huomattavasti minkään muun markkinoilla olevan kotiautomaatiojärjestelmän mahdollisuudet - mutta käyttöönotto ei ole helppoa. Itse asiassa se voi olla suoraan turhauttavaa.

Tämä opas on ladattavissa ilmaisena PDF-tiedostona. Lataa OpenHAB-aloittelijan oppaan osa 2: ZWave, MQTT, säännöt ja kaavio nyt. Voit vapaasti kopioida ja jakaa tämän ystävien ja perheen kanssa.

Oppaan osassa 1 kävelin sinut läpi asentaa OpenHAB Raspberry Pi -sovellukseen Aloittaminen OpenHAB-kotiautomaatio-ohjelmalla Raspberry Pi: lläOpenHAB on kypsä, avoimen lähdekoodin kotiautomaatioalusta, joka toimii monella eri laitteistolla ja on Agnostic Protocol, mikä tarkoittaa, että se voi muodostaa yhteyden melkein mihin tahansa markkinoiden kotiautomaatiolaitteistoon tänään. Lue lisää , esitteli OpenHAB: n ydinkonseptit ja näytti kuinka lisätä ensimmäiset kohteesi järjestelmään. Tänään menemme pidemmälle:

  • ZWave-laitteiden lisääminen
  • Harmony Ultimate -ohjaimen lisääminen
  • Esittelyssä säännöt
  • Esittelyssä MQTT ja asentamalla MQTT-välittäjä Pi-laitteeseesi anturien avulla Arduinoon
  • Tietojen tallennus ja graafinen kuvaus

Johdanto Z-aaltoon

Z-Wave on ollut hallitseva kotiautomaatioprotokolla vuosien ajan: se on luotettava, sitä on kehitetty laajasti ja se toimii paljon pidemmällä valikoimalla kuin mikään muu älykäs kotilaite. Sinulla on käytettävissä satoja Z-Wave-antureita, jotka suorittavat monenlaisia ​​tehtäviä. OpenHAB voida työskentele Z-Wave-laitteen kanssa, mutta asennusvaihe on vaivaton, eikä luotettavuutta taata.

Jos harkitset talon ostamista täynnä Z-Wave-antureita käytettäväksi erityisesti OpenHAB: n kanssa, kehotan sinua harkitsemaan uudelleen. Se voi osoittautua hyväksi sinulle tai se voi vaivaa pieniä, mutta jatkuvia ongelmia. Ainakin, älä osta taloa, joka on täynnä antureita, ennen kuin sinulla on ollut mahdollisuus kokeilla muutamaa. Ainoa syy valita Z-Wave on, jos et ole täysin asettunut OpenHAB: iin ja haluat jättää vaihtoehtosi auki tulevaisuudessa: Esimerkiksi Z-Wave toimii Samsung SmartThings Mikä kotiautomaatioon tarkoitettu Smart Hub on sinulle paras?Jonkin aikaa ihmiset ajattelivat, että idea oli vain temppu, mutta viimeaikaiset tuotejulkaisut ovat osoittaneet, että älykkään kodin automaatio alkaa täyttää lupauksensa. Lue lisää keskitin, samoin kuin Z-Wave -kohtaiset keskittimet, kuten Homeseer, ja joukko muita ohjelmistovaihtoehtoja, kuten Domoticz.

Vaikka OpenHAB sisältää Z-Wave-sidonnan, sinun on silti tehtävä määritä ensin Z-Wave-verkko, ennen kuin OpenHAB voi aloittaa tietojen kyselyn. Jos sinulla on Rasberry-ohjainkortti, sinulla on joitain ohjelmistoja verkon määrittämiseen, joten emme käsittele sitä täällä. Jos ostit Aeotec USB Z-Stick -ohjaimen tai vastaavan, sinulla ei todennäköisesti ole mitään ohjelmistoa mukana, joten lue eteenpäin.

Aeotec Z-Stick Gen5, Z-Wave Plus USB yhdyskäytävän luomiseenAeotec Z-Stick Gen5, Z-Wave Plus USB yhdyskäytävän luomiseen Osta nyt Amazonista $44.95

Jos sinulla on jo Z-Wave-verkkoasetukset, voit vain kytkeä ohjaimen Pi: iin ja aloittaa sidonnan ja kohteiden konfiguroinnin. Jos tämä on ensimmäinen kohtauksesi Z-Wave-laitteeseen, se on hieman monimutkaisempi.

Ensinnäkin laitteistopuolelta: jokaisella ohjaimella on oma tapa paritella laitteita (teknisesti tunnetaan nimellä ”sisällyttämistila”, jossa solmun tunnus määritetään). Aotec Z-Stick -laitteen tapauksessa tämä tarkoittaa, että irrotat sen USB-portista ja painat painiketta kerran, kun haluat siirtyä sisällyttämistilaan. Ota sitten lähellä pariksi muodostettavaa laitetta ja paina myös lisäyspainiketta (tämä vaihtelee myös: Everspring-pistorasiaan tarvitaan painikkeen painaminen 3 kertaa nopeasti peräkkäin, joten tässä opit lukemaan laitteesi käyttöoppaan).

Z-Stick vilkkuu hetkeksi osoittaakseen menestystä. Tämä aiheuttaa ongelmia kytkettäessä se takaisin Pi: hen, koska uusi portti on osoitettu. Käynnistä Pi uudelleen, jotta se palautetaan normaaliin porttiin, jos huomaat, että se on dynaamisesti määritetty toiselle. Vielä parasta: älä kytke sitä Pi-laitteeseen, ennen kuin olet suorittanut kaikki laitteistoparit ensin.

HABmin- ja Z-Wave-sidosten asennus

Koska OpenHAB ei oikeastaan ​​ole Z-Wave-asetusohjelmaa, asennamme toisen web-hallintatyökalun, jota kutsutaan nimellä HABmin. Siirry kohti HABmin Github -varasto Lataa nykyinen julkaisu. Kun olet purkanut sen, löydät 2 .jar tiedostot lisäyshakemistossa - niiden tulisi olla vastaavassa lisäosahakemistossa OpenHAB Home -jaossa (jos käytät myös Aotec gen5 Z-Stick -laitetta, varmista, että sinulla on vähintään versio 1.8 Z-Wave-sidoksesta).

Luo seuraavaksi uusi hakemisto webapps-hakemistoon ja kutsua sitä “habmin” (pienet kirjaimet ovat tärkeitä). Kopioi loput ladatut tiedostot sinne.

Huomaa: Siellä on myös a HABmin 2 aktiivisen kehityksen alla. Asennus on suurin piirtein sama, mutta yhdellä ylimääräisellä .jar-lisäosalla. Ehkä kannattaa kokeilla molempia vain nähdäksesi, mitkä haluat.

Jos et vielä ole, kytke ohjain pi-pistorasiaan. Kirjoita seuraava löytää oikea portti.

ls / dev / tty *

Etsit mitään USB-nimellä nimessä, tai erityisessä tapauksessani Z-sauva esitti itsensä nimellä /dev/ttyACM0 (modeemi). Saattaa olla helpompaa suorittaa komento kerran ennen sen kytkemistä ja kerran sen jälkeen, jotta näet mitä muutoksia, jos olet epävarma.

devtty

Avaa OpenHAB-konfiguraatiotiedosto ja muokkaa Z-Wave-osiota kommentoimatta molempia rivejä ja antamalla oikea osoite. Viimeinen askel minulle oli antaa OpenHAB-käyttäjän päästä modeemiin.

sudo usermod -a -G dialout openhab

Käynnistä OpenHAB uudelleen, jotta kaikki saadaan toimintaan

sudo service openhab käynnistä uudelleen

Toivottavasti jos tarkistat virheen lokin, näet jotain tällaista. Onnittelut, puhut nyt Z-Wavea. Voit myös löytää virheen lokin täynnä eri Z-Wave-solmujen viestejä. Aloitetaan tarkistamalla HABMIN nähdäksesi mitä se löytyi: http://openhab.local: 8080 / habmin / index.html (korvaamalla openhab.local Raspberry Pi -nimellä tai IP-osoitteella).

zwave käynnistyy openhab-lokissa

HABMIN-ohjelmassa on paljon nähtävää, mutta olemme todella huolissamme vain Kokoonpano -> Sidokset -> Z-Wave -> Laitteet -välilehti, kuten alla näet. Laajenna solmua muokataksesi sijainti- ja nimitarroja viittauksesi helpottamiseksi.

muokata laitteen nimeä

Z-Wave-kohteiden määrittäminen

Jokaisella Z-Wave-laitteella on erityinen kokoonpano OpenHAB: lle. Onneksi suurin osa laitteista on jo tutkittu, ja sieltä löytyy jo esimerkkejä. Mukautettujen laitteiden määrittäminen, joita ei tunnisteta, on kaukana tämän oppaan laajuudesta, mutta oletetaan, että sitä tuetaan nyt.

Ensinnäkin minulla on perus Everspring AN158 -virtakytkin ja -mittari Solmulla 3. Nopea Google-haku johti minut blogin kirjoittamiseen Wetwa.re-sivustossa, jossa oli näytekoot. Mukautin tämän seuraavasti:

Vaihda ilmankostutin_kytkin "Ilmankostutin" {zwave = "3: komento = switch_binary"} Numero Ilmankostutin_Watts "Ilmankostuttimen virrankulutus [% .1f W]" {zwave = "3: käsky = mittari"}

Täydellinen.

Seuraavaksi on Aeotec Gen5 -sensori.

Aeon Labs Aeotec Z-Wave Gen5 -anturi (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 -anturi (Z-Wave Plus) Osta nyt Amazonista $69.27

Tätä varten löysin näytekonfiguraation osoitteessa iwasdot.com, ja multisensori on solmulla 2.

Numero Käytävä_lämpötila "Käytävän lämpötila [% .1f ° C]" (käytävä, lämpötila) {zwave = "2: 0: käsky = anturi_mittataso, anturityyppi = 1, anturi_asteikko = 0"} Numero Käytävä_kosteus "Käytävän kosteus [% .0f %%]" (käytävä, kosteus) {zwave = "2: 0: komento = sensori_multilevel, sensor_type = 5"} Numero Käytävän_valo "Käytävän luminanssi [% .0f Lux]" (käytävä) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 3"} Ota yhteys käytävän liikkeeseen "Käytävän liike [% s]" (käytävä, liike) {zwave = "2: 0: komento = anturi_binaarinen, vastaus_to_basic = totta"} Numeroanturi_1_akku "Akku [% s %%]" (liike) {zwave = "2: 0: command = akku"}

Jos tämän muoto näyttää sinulle omituiselta, siirry takaisin ensimmäiseen aloittelijan opas Aloittaminen OpenHAB-kotiautomaatio-ohjelmalla Raspberry Pi: lläOpenHAB on kypsä, avoimen lähdekoodin kotiautomaatioalusta, joka toimii monella eri laitteistolla ja on Agnostic Protocol, mikä tarkoittaa, että se voi muodostaa yhteyden melkein mihin tahansa markkinoiden kotiautomaatiolaitteistoon tänään. Lue lisää , erityisesti Sävynsidonta-osa, jossa selitän, kuinka kohteita lisätään. Sinun on todennäköisesti koskaan vain kopioitava tämänkaltaisia ​​liitä esimerkkejä, mutta jos sinulla on uusi laite, sitomisasiakirjat sisältävät kaikki komennot.

Logitech Harmony -sidonta

Ennen kuin siirrymme sääntöihin, halusin lisätä pikahuomautuksen työskentelystä Harmony-sidoksen kanssa. Olen suuri fani Harmony-sarja perimmäisiä kaukosäätimiä Logitech Harmony Ultimate Review ja GiveawayOlohuoneessa on kaaos - myönnä se. Sinulle annetaan anteeksi mietit, mikä kaukosäädin mikä laite. Entä televisio, vahvistin, TiVO, BluRay-soitin, ehkä jopa valaistus - vaihtotoiminnoista tulee pitkä ... Lue lisää kodin mediakeskuskokemuksen yksinkertaistamiseksi, mutta ne ovat usein älykkään kodin erillisenä järjestelmänä. OpenHAB: n avulla Logitech Harmony -toiminnot ja täydellinen laiteohjaus voivat nyt olla osa keskitettyä järjestelmääsi ja jopa sisällyttää automaatiosääntöihin.

Aloita asentamalla kolme sitovaa tiedostoa, jotka löydät käyttämällä apt-välimuistia etsimään ”harmoniaa”:

openhab apt-cache etsi harmoniaa sitovaa

Älä unohda chown sidontahakemisto uudelleen, kun olet valmis:

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

Määritä sidonta avaamalla openhab.cfg-tiedosto ja lisää uusi osio seuraavasti:

########## HARMONY Kauko-ohjaimet ########### harmonyub: isäntä = 192.168.1.181tai IP
harmonyhub: käyttäjänimi =oma-harmonia-sähköposti-kirjautuminen
harmonyhub: salasana =salasanasi

IP-osoite on Harmony-keskittimesi IP-osoite. Selvitä se verkkoskannerilla. Sinun on myös annettava kirjautumistietosi, ne, jotka annat, kun käynnistät tavallisen Harmony-asetusohjelman. Se siitä. Käynnistäessäsi Hue-väriainetta, vianetsolokissa pitäisi olla äkillinen tulos purske sidoksesta.

Tämä on JSON-muotoinen luettelo kaikista toiminnoista, laitteista ja komennoista, jotka voidaan lähettää. On hyvä idea kopioida tämä asia myöhempää käyttöä varten. voit tehdä entistä helpompaa lukea kokoontaitettavilla solmuilla liittämällä online-JSON-muotoilijaan kuten tämä.

json-muotoinen openhab-lähtö

Tavallisen PowerOff-toiminnan lisäksi, joka on oletus, löydät omat määrittelemäsi toiminnot, jotka luetellaan täällä nimellä. Luotaan nyt yksinkertainen yhden painikkeen hallintalaite toiminnan aloittamiseksi. Lisää ensin esineetiedostoon seuraava rivi. Vaihda ryhmä ja kuvake, jos haluat.

/ * Harmony Hub * / String Harmony_Aktiivisuus "Harmony [% s]" (Living_Room) {harmonyhub = "* [currentActivity]"}

Tämä on kaksisuuntainen kielisidonta, joka pystyy sekä noutamaan nykyisen toiminnan että antamaan nykyisen toiminnan olevan jotain muuta. Nyt voimme luoda painikkeen sille sivukarttatiedostoon.

Vaihda esine = Harmony_Activity mappings = [PowerOff = 'Pois', Harjoitus = 'Liikunta', 13858434 = 'TV', Karaoke = 'Karaoke']

Hakasulkeessa näet jokaisen toiminnan yhdessä tarran kanssa. Yleensä voit viitata suoraan aktiviteetteihin, koska olet nimennyt ne kaukosäätimelläsi, mutta poikkeuksen tästä löysin mitä tahansa, jolla aktiviteettinimessä on välilyönti, kuten “Katso televisiota”. Tässä tapauksessa sinun on käytettävä toiminnan tunnusta. Jälleen löydät tunnuksen JSON-vianetsintulosteesta. Tallenna ja päivitä käyttöliittymä, sinun pitäisi nähdä jotain vastaavaa:

openhab-harmonia sivukartassa

Voit myös viitata toimintoihin säännöissänne, kuten näemme seuraavaksi. Lue wiki-sivu saadaksesi lisätietoja Harmonia sitova.

Yleinen johdanto sääntöihin

Useimmissa älykkäiden kodien keskittimissä on jonkinlainen sääntöjen luominen, jotta voit reagoida automaattisesti anturitietoihin ja kodin tapahtumiin. Itse asiassa väittäisin, että todella älykäs koti ei ole sinun viettää aikaa vuorovaikutuksessa mobiilisovellusten kanssa - se on loppukäyttäjälle näkymätön ja täysin automatisoitu. Tätä varten OpenHAB sisältää myös tehokkaan ohjelmointikielen, jonka voit ohjelmoida, ylittäen selvästi useimpien monimutkaisuuden älykkään kodin navat Älykkään kodin keskittymien taistelu: mitä siellä on ja mitä on tulossa? Lue lisää tai IFTTT-reseptit IFTTT muodostaa yhteyden mihin tahansa: Maker-kanavan esittelyIFTTT: n potentiaaliset käyttötavat ovat rajattomat. Mutta toistaiseksi on ollut vaikeaa liittää sitä omaan laitteistoprojektiisi. Nykyään kaikki on muuttunut. Lue lisää .

Ohjelmointisäännöt kuulostavat huonommalta kuin on. Aloitetaan yksinkertaisesti parilla säännöillä, jotka kytkevät valon päälle tai pois päältä läsnäoloanturin mukaan:

sääntö "Toimiston valo palaa, kun James läsnä" kun kohta JamesInOffice muuttui OFF-tilasta ON-tilaan. lähetä sitten komento (Office_Hue, ON) loppusääntö "Toimiston valo sammuu, kun James lähtee" kun kohta JamesInOffice muuttui PÄÄLLE tilaan POIS. lähetä sitten komento (Office_Hue, OFF) pää

Ensinnäkin nimeämme sääntö - ole kuvaava, joten tiedät mitä tapahtuma ampuu. Seuraavaksi määrittelemme yksinkertaisen sääntömme sanomalla kun x on totta, niin tee y. Loppu tarkoittaa kyseisen säännön sulkemista. Säännöissä voi käyttää useita erityisiä sanoja, mutta nyt käsittelemme kahta yksinkertaista syntaksin bittiä - erä, jonka avulla voit kysyä jonkin tilan; ja sendCommand, joka tekee tarkalleen sen, mitä luulet tulevan. Sanoin, että tämä oli helppoa.

Sääntöparin käyttäminen on todennäköisesti tarpeetonta, mutta kun logiikkaani tulee monimutkaisempi, on hyödyllistä, että ne erotetaan siitä, olenko alueelle saapuminen tai sieltä poistuminen - ja voi olla hyvä idea lisätä valoanturi jonnekin yhtälöön, jotta emme kytke tarpeettomasti päälle valot.

Katsotaanpa toista esimerkkiä ajoitetun säännön luomiseksi.

sääntö "Liikunta joka aamu" kun aika cron "0 0 8 1/1 *? *" sitten harmonyStartActivity ("liikunta") end.

Nimeämme jälleen säännön, ehdot olosuhteista, jolloin sen pitäisi käynnistyä, ja toteutettavia toimia. Mutta tässä tapauksessa määrittelemme aikataulun. Hauska koodi, jonka näet lainausmerkeissä, on CRON-lauseke Quartz Schedulerille (muoto on hiukan erilainen kuin tavallisessa CRONtab-muodossa). käytin cronmaker.com jotta voit luoda lausekkeen, mutta voit myös lukea muotoiluohjeen [Ei enää saatavissa] yksityiskohtaista selitystä ja lisää esimerkkejä.

cron-generaattori
CronMaker.com tuotti oikein muotoillun Cron-lausekkeen

Säännöt sanovat yksinkertaisesti: "8.00 joka aamu, joka viikonpäivä, sano Harmony Ultimate -järjestelmälleni, että aloitan harjoituksen", joka puolestaan ​​aktivoi television, Xboxin, vahvistimen ja painaa A-painiketta minuutin kuluttua käynnistääksesi levyn asemassa.

Valitettavasti OpenHAB ei vielä pysty tekemään harjoitusta minulle.

Vielä yksi sääntö, jonka haluan näyttää sinulle, on jotain, jota hallitsen kotini kosteustasojen kanssa. Minulla on yksi kuivausrumpu, jota minun täytyy liikuttaa tarvittaessa, joten päätin katsoa kaikkia kosteusanturiani, löytää korkeimman ja tallentaa sen muuttujaan. Se käynnistyy tällä hetkellä joka minuutti, mutta sitä voidaan helposti laskea. Katso ensin:

tuo org.openhab.core.library.types. * tuo org.openhab.model.script.actions. * Tuo java.lang. Merkkisääntö "Kosteusmittari" kun Time cron "0 * * * *?" sitten var prevHigh = 0 var highHum = "" Kosteus?. jäsenet.forEach [hum | logDebug ("kosteus.säätimet", hum.nimi); if (hum.state kuin DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("isture.rules ", highHum); postUpdate (kosteudenpoistaja_tarkastettu, korkeaHum); end.

Sääntöjen ydin on Kosteus? .Members.foreach linja. Kosteus on ryhmänimi kosteusanturilleni; .jäsenet tarttuu kaikkiin ryhmän esineisiin; jokaiselle toistaa niiden yli (utelias hakasulkeformaatissa, jota et todennäköisesti tunne). Sääntöjen syntaksi on johdannainen Xtendistä, joten voit lukea Xtend-dokumentaatio jos et löydä esimerkkiä mukautumisesta.

Sinun ei todennäköisesti tarvitse tehdä - siellä on satoja esimerkkejä säännöistä:

  • Yksityiskohtainen selitys säännöistä virallisessa wikissä
  • viralliset säännöt näytteet wiki -sivu
  • Sääntöjen ottaminen uusiin korkeuksiin
  • Edistyneet näytteet IngeniousFool.net-sivustossa

MQTT OpenHAB: lle ja esineiden internetille

MQTT on kevyt viestintäjärjestelmä koneiden väliseen viestintään - eräänlainen Twitter sinun Arduinos tai Vadelma Pis puhua keskenään (vaikka se tietysti toimiikin paljon muutakin kuin vain nuo). Se on kasvussa nopeasti ja löytää itselleen kodin esineiden Internet-laitteilla, jotka ovat yleensä alhaiset resurssimikro-ohjaimet, jotka tarvitsevat luotettavan tavan lähettää anturitiedot takaisin keskittimeesi tai vastaanottaa kaukosäädintä komentoja. Juuri sitä me teemme sen kanssa.

Mutta miksi keksiä pyörä uudelleen?

MQ Telemetry Transport keksittiin takaisin vuonna 1999 yhdistämään öljyputket hitaan satelliitin välityksellä liitännät, jotka on erityisesti suunniteltu minimoimaan akun käyttö ja kaistanleveys, samalla kun ne tarjoavat luotettavan datan toimitus. Suunnitteluperiaatteet ovat vuosien mittaan pysyneet samana, mutta käyttötapa on siirtynyt erikoistuneista sulautetuista järjestelmistä yleiseen esineiden Internet-laitteisiin. Vuonna 2010 pöytäkirja julkaistiin ilmaiseksi, avoinna kaikille käytettäväksi ja pannaan täytäntöön. Pidämme ilmaiseksi.

Saatat ihmetellä, miksi edes häiritsemme vielä toista protokollaa - meillä on jo HTTP loppujen lopuksi - joka voi voidaan käyttää pikaviestien lähettämiseen kaikenlaisten verkkoon kytkettyjen järjestelmien välillä (kuten OpenHAB ja IFTTT, etenkin uuden kanssa) valmistajan kanava IFTTT muodostaa yhteyden mihin tahansa: Maker-kanavan esittelyIFTTT: n potentiaaliset käyttötavat ovat rajattomat. Mutta toistaiseksi on ollut vaikeaa liittää sitä omaan laitteistoprojektiisi. Nykyään kaikki on muuttunut. Lue lisää ). Ja olisit oikeassa. HTTP-palvelimen prosessointi yläpuolella on kuitenkin melko suuri - niin paljon, että et voi helposti suorittaa sitä palvelimessa sulautettu mikrokontrolleri kuten Arduino (ainakin voit, mutta sinulle ei jää paljon muistia mihinkään) muualla). MQTT on toisaalta kevyt, joten viestien lähettäminen verkon ympäri ei tukkia putkia ja se mahtuu helposti pieneen Arduinon muistitilaan.

Kuinka MQTT toimii?

MQTT vaatii sekä palvelimen (kutsutaan ”välittäjäksi”) että yhden tai useamman asiakkaan. Palvelin toimii välittäjänä, vastaanottaen viestejä ja lähettämällä niitä edelleen kaikille kiinnostuneille asiakkaille.

Jatkataan Twitter-for-koneisiin analogia kuitenkin. Aivan kuten Twitter-käyttäjät voivat piipittää omat merkityksettömät 140 merkkiä, ja käyttäjät voivat ”seurata” muita käyttäjiä nähdäkseen kuratoidun viestivirran, MQTT-asiakkaat voivat tilata tietyn kanavan vastaanottaakseen sieltä kaikki viestit ja julkaistakseen omat viestinsä siihen kanava. Tähän julkaisu- ja tilaamismalliin viitataan pub / sub, perinteisiin nähden client / server HTTP-malli.

HTTP edellyttää, että otat yhteyttä koneeseen, jonka kanssa olet yhteydessä, sano Hei, ja sitten edestakaisin tunnustamalla toisiamme jatkuvasti, kun saat tai laitat tietoja. Pub / sub-palvelun avulla julkaisua tekevän asiakkaan ei tarvitse tietää, mitkä asiakkaat tilataan: se vain pumppaa viestit, ja välittäjä jakaa ne edelleen kaikille tilaajille. Kuka tahansa asiakas voi sekä julkaista että tilata aiheita, kuten Twitter-käyttäjä.

Toisin kuin Twitter, MQTT ei ole rajoitettu 140 merkkiin. Se on dataa agnostiikkaa, joten voit lähettää pieniä numeroita tai suuria tekstilohkoja, JSON-muotoisia datagrammeja tai jopa kuvia ja binaaritiedostoja.

Ei ole, että MQTT olisi kaikkea parempi kuin HTTP - mutta se On sopii paremmin, jos meillä on paljon antureita ympäri taloa, jotka raportoivat jatkuvasti.

On myös tärkeää tietää, että OpenHAB ei toimi MQTT-välittäjänä - puhumme siihen vähän myöhemmin. OpenHAB toimii kuitenkin asiakkaana: se voi sekä julkaista OpenHAB-toimintalokisi että sitoa tietyn kanavia laitteisiin, joten sinulla voi esimerkiksi olla kytkin, jota ohjataan MQTT-viesteillä tietyllä kanava. Tämä on ihanteellinen antureita sisältävän talon luomiseen.

Asenna Mosquitto Pi-laitteeseesi

Vaikka OpenHAB sisältää MQTT-asiakkaan, joten voit tilata aiheen ja myös julkaista viestejä, se ei toimi palvelimena. Tätä varten sinun on joko käytettävä verkkopohjaista MQTT-välittäjää (maksettu tai ilmainen) tai asennettava ilmainen ohjelmisto Pi-laitteeseesi. Haluaisin pitää kaiken talossa, joten olen asentanut Mosquitto Pi: hen.

Valitettavasti tavallisen apt-get-version kautta saatavana oleva versio on täysin vanhentunut. Lisää sen sijaan uusimmat lähteet.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key add 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.

Se on kaikki mitä meidän on tehtävä, jotta MQTT-palvelin olisi toiminnassa ja toimisi lähiverkossa. Välittäjäsi toimii oletuksena portissa 1883.

Tarkista, että MQTT-palvelimesi toimii ilmaisella MQTT.fx: llä, joka on monialustainen. Luo uusi profiili napsauttamalla asetuskuvaketta ja kirjoita Raspberry Pi: n IP-osoite tai nimi. Tallenna ja paina muodostaa yhteys. Jos oikeassa yläkulmassa oleva pieni liikennevalo muuttuu vihreäksi, voit mennä.

mqttfx esimerkki profiili

Pikatesti saadaan napsauttamalla “Tilaa” -välilehteä ja kirjoittamalla inTopic / tekstikenttään ja paina sitten merkitä painiketta. Olet nyt tilannut vastaanottamaan viestin aiheesta nimeltä inTopic, vaikka viesti näyttää 0 viestiä. Palaa julkaisuvälilehteen, kirjoita inTopic pieneen ruutuun ja lyhytsanoma alla olevaan suureen tekstikenttään. Osuma Julkaista muutaman kerran ja katso takaisin Tilaa-välilehdeltä. Sinun pitäisi nähdä muutamia viestejä, jotka ovat ilmestyneet kyseiseen aiheeseen.

inTopic MQTT -testi

Ennen kuin lisäämme verkkoon todellisia antureita, meidän on opittava aihetasoista, joiden avulla pystymme MQTT-verkon rakenteeseen ja suodattamiseen. Aiheiden nimet ovat kirjainkokoisia, niiden ei pitäisi alkaa arvolla $, eivätkä niissä saa olla välilyöntiä tai muita kuin ASCII-merkkejä - muuttujien nimien vakio-ohjelmointikäytäntöjä.

/ Erotin osoittaa aihetason, joka on hierarkkinen, esimerkiksi seuraavat ovat kaikki kelvollisia aiheitasoja.

inTopic / smallSubdivision / evenSmallerSubdivision. MyHome / Olohuone / lämpötila. MyHome / Olohuone / kosteus. MyHome / keittiö / lämpötila. MyHome / keittiö / kosteus

Sinun pitäisi jo nähdä, kuinka tämä puurakenne sopii älykkääseen kotiin, joka on täynnä antureita ja laitteita. Paras käytäntö useiden anturien kanssa samassa huoneessa on julkaista jokainen anturimuuttuja sen omalla aihetasolla - haarautua tarkempaan määritelmään (kuten yllä olevissa esimerkeissä) - sen sijaan, että yrittäisit julkaista useita anturityyppejä samaan kanava.

Asiakkaat voivat sitten julkaista tai tilata minkä tahansa määrän yksittäisiä aihetasoja tai käyttää joitain erityisiä jokerimerkkejä suodattaaksesi puun korkeammalta.

+ Jokerimerkki korvaa minkä tahansa aihetason. Esimerkiksi:

MyHome / + / lämpötila

tilaaisi asiakkaan molemmille

MyHome / Olohuone / lämpötila. MyHome / keittiö / lämpötila

… Mutta ei kosteustasoa.

# On monitasoinen jokerimerkkinä, joten voit hakea mitä tahansa livingRoom-anturiryhmästä:

MyHome / Olohuone / #

Teknisesti voit myös tilata juuritason #, jonka avulla saat kaiken aikaan kulkee välittäjän läpi, mutta se voi olla kuin paloletkun kiinnittäminen kasvoihisi: vähän ylivoimainen. Yritä muodostaa yhteys julkiseen MQTT-välittäjään HiveMQ: lta ja tilaa #. Sain noin 300 viestiä muutamassa sekunnissa ennen kuin asiakkaani juuri kaatui.

MQTT-aloittelijavihje: “/myHome/” on eri aihe kuin "kotini/" - Jos viiva sisältyy alkuun, luodaan tyhjä aihetaso, jota ei teknisesti voida suositella, koska se voi olla hämmentävä.

Nyt kun tiedämme teorian, käydään arduinon, Ethernet-suojan ja DHT11-lämpötila- ja kosteusanturin kanssa - sinulla on todennäköisesti yksi aloitussarjaasi, mutta jos ei, vaihda vain ympäristöanturi liiketunnistimeen (tai jopa painike).

MQTT: n julkaiseminen Arduinosta Ethernet-yhteydellä

Jos sinulla on hybridi Arduino -yhteensopiva laite, jossa on sisäänrakennettu Wi-Fi tai Ethernet, sen pitäisi myös toimia. Lopulta haluamme paremman / halvemman kommunikointitavan, että joudumme käyttämään verkkoyhteyttä jokaisessa huoneessa, mutta tämä auttaa oppimaan perusteet.

Aloita lataamalla pubi-asiakaskirjasto Githubilta. Jos olet käyttänyt Lataa ZIP -painiketta, rakenne on vähän väärä. Pura pakkaus, nimeä kansio uudelleen oikeudenmukaiseksi pubsubclient, poista sitten kaksi tiedostoa src -kansioon ja siirrä ne yhdellä tasolla ylös ladatun kansion juureen. Siirrä sitten koko kansio kansioon Arduino / kirjastot hakemistoon.

Tässä on mallikoodini, jota voit mukauttaa: DHT11-signaalin lähtö on nasta 7. Muuta Pi-palvelimen IP-osoite seuraavalla rivillä:

asiakas.setServer ("192.168.1.99", 1883);

Valitettavasti emme voi käyttää sen ystävällistä nimeä (OpenHAB.local minun tapauksessani) koska TCP / IP-pino Arduinossa on hyvin yksinkertainen ja Bonjour-nimeämiskoodin lisääminen olisi paljon muistia, jota emme halua tuhlata. Vaihda aiheet, joissa anturitietoja lähetetään, vieritä alas seuraaville riveille:

char-puskuri [10]; dtostrf (t, 0, 0, puskuri); client.publish ( "openhab / Himitsu / lämpötila", puskuri); dtostrf (h, 0, 0, puskuri); client.publish ( "openhab / Himitsu / kosteus", puskuri);

Koodi sisältää myös tilauksen komentokanavalle. Etsi ja säädä seuraava rivi:

client.subscribe ( "openhab / Himitsu / komento");

Tutki koodia ympärilläsi ja huomaat, että voit helposti ohjata merkkivaloa tai relettä esimerkiksi lähettämällä komentoja tietyille kanaville. Esimerkkikoodissa se vain lähettää viestin takaisin kuittaamalla komennon.

Lataa koodi, kytke Arduino verkkoon ja tilaa MQTT.fx -sovelluksella joko # tai openhab / Himitsu / # (tai mitä muutit huoneen nimen nimeksi, mutta älä unohda lisätä # -merkkiä lopussa). Melko pian sinun pitäisi nähdä viestit tulevan; ja jos lähetät PÄÄLLE tai POIS komentoaiheeseen, näet myös kuittausten palautuvan.

mqtt arduino -viestit tulevat takaisin

MQTT-sidonta OpenHAB: lle

Viimeinen vaihe yhtälössä on kytkeä tämä OpenHAB: iin. Tätä varten me tietenkin tarvitsemme sitovan.

sudo apt-get install openhab-addon-binding-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab

Ja muokkaa konfigurointitiedostoa, jotta sidonta voidaan ottaa käyttöön.

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

Käynnistä OpenHAB uudelleen

sudo service openhab käynnistä uudelleen

Lisää sitten yksi tai kaksi tuotetta:

/ * MQTT-anturit * / Numero Himitsu_Temp "Himitsu-lämpötila [% .1f ° C]"(Himitsu, lämpötila) {mqtt = " (Himitsu, kosteus) {mqtt = "

Tähän mennessä sinun pitäisi ymmärtää muoto; siitä tulee Numero esine MQTT-sidosta, tietylle aiheelle. Tämä on yksinkertainen esimerkki, saatat haluta viitata wiki-sivulle, missä se on voi saada paljon monimutkaisempaa.

Onnittelut, sinulla on nyt pohja halvalla Arduino-pohjaisella anturijärjestelmällä. Aiomme tarkistaa tämän tulevaisuudessa ja saattaa arduinot omaan täysin erilliseen RF-verkkoon. Olen myös luonut saman version Wizwiki 7500 -tauluille jos sinulla on jokin näistä.

Pysyvyys- ja kuvaajatiedot

Tähän mennessä olet todennäköisesti asettanut joukon antureita riippumatta siitä, onko Z-Wave tai räätälöity Arduinos MQTT: tä käyttävä - niin voi milloin tahansa tarkastella näiden anturien tilaa, ja sinun pitäisi myös reagoida niiden arvoon sääntöjä. Mutta kiinnostava asia anturien arvoissa on yleensä se, että ne muuttuvat ajan myötä: tässä tulee pysyvyys ja kuvaajat. Sitkeys OpenHAB tarkoittaa tietojen tallentamista ajan myötä. Mennään eteenpäin ja asennetaan RRD4J (Java-pyöreä Robin-tietokanta), ns. Koska tiedot tallennetaan pyöreällä robinilla - vanhemmat tiedot hylätään tietokannan koon pakkaamiseksi.

Asenna rrd4j-paketit seuraavilla komennoilla.

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

Luo sitten uusi tiedosto nimeltään rrd4j.persist että kokoonpanot / pysyvyys kansio. Liitä seuraava:

Strategiat {joka minuutti: "0 * * * *?" everyHour: "0 0 * * *?" everyDay: "0 0 0 * *?" oletus = everyChange. } Kohteet {// säilyvät kaiken, kun arvo päivitetään, vain oletus, ja palauta ne tietokannasta käynnistyksen yhteydessä *: strategia = everyChange, restoOnStartup // määrittelemme seuraavaksi jokaisen tunnin erityiset strategiat mille tahansa lämpötilaryhmässä ja joka minuutti kosteuslämpötilalle *: strategia = jokainen tunti kosteus *: strategia = joka minuutti // vaihtoehtoisesti voit lisätä tiettyjä kohteita tähän, kuten // makuuhuone_kosteus, JamesInOffice: strategia = joka minuutti. }

Tiedoston ensimmäisessä osassa määrittelemme strategioita, jotka tarkoittavat vain nimen antamista CRON-lausekkeelle. Tämä on sama kuin teimme jo My-palvelun kanssa. OpenHAB, mutta tällä kertaa luomme joitain uusia strategioita, joita voimme käyttää joka päivä, jokainen tunti ja joka minuutti. En ole vielä käyttänyt niitä kaikkia, mutta voin olla tulevaisuudessa.

Tiedoston toisessa puoliskossa kerrotaan rr4dj, mitkä data-arvot tallennetaan. Oletuksena tallennamme kaiken joka kerta, kun se päivitetään, mutta olen myös määrittänyt joitain aikapohjaisia ​​strategioita tietyille antureille. Lämpötilat, joista en ole liian vaivautunut, joten olen päättänyt säästää vain joka tunti, mutta kosteus on minulle suuri huolenaihe, joten haluan nähdä, kuinka se muuttuu joka minuutti. Jos haluat tallentaa muita tietoja asetettuina aikoina, lisää ne nyt tähän tai muokkaa tarvittaessa.

Huomaa: jos haluat myös kaavailla tietoja, sinun on tallennettava ne vähintään kerran minuutissa. Ei ole väliä, päivitetäänkö anturitietosi jopa nopeasti, sinun on vain kerrottava rr4dj: lle, että ne tallennetaan kerran minuutissa.

Kun tämä on määritelty, sinun pitäisi alkaa nähdä virheenkorjausulostulo, joka kertoo, että arvoja tallennetaan.

rrd4j tietojen tallennus

Seuraavaksi tehdään kauniita kuvaajia kaikista näistä tiedoista. Se on todella helppoa. Lisää kaavio yksittäisestä anturista lisäämällä seuraava sivustokarttaasi:

Kaavioelementti = Makuuhuone_kosteusjakso = h

Se on kirjaimellisesti kaikki mitä tarvitset. Kauden kelvolliset arvot ovat h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; pitäisi olla selvää, mitä nämä tarkoittavat. Oletusarvo on D koko päivän tietopäivänä, ellei sitä ole määritetty.

Jos haluat luoda kaavion, jossa on useita kohteita, piirrä sen sijaan ryhmän nimi:

Kaavioelementti = Kosteusjakso = h
kartoittaa

Saatat myös olla kiinnostunut tietämään, että voit käyttää tätä kuvaajaa muualla; se tuottaa kuvan seuraavan URL-osoitteen avulla: http://YOUROPENHABURL: 8080 / kartta? ryhmät = Kosteus- ja ajan = h

miten n teidän Tuleeko OpenHAB-järjestelmä?

Se on se tämän oppaan erän kohdalla, mutta älä odota, että tämä tapahtuu viimeksi, kun kuulet meiltä OpenHABista. Toivottavasti tämä ja aloittelijan opas ovat antaneet sinulle vankan perustan oman oman kokonaisen OpenHAB-järjestelmän kehittämiseen - mutta se on prosessi, joka ei ole koskaan oikein valmis.

Onneksi OpenHAB voi skaalata hyvin muutamasta laitteesta satoihin, yksinkertaisesta sääntöjen monimutkaisuudesta kodin automaation lopulliseen arvoon - niin kuinka järjestelmäsi kulkee? Mitkä laitteet valitsit? Mikä on seuraava iso projekti, jota aiot käsitellä?

Puhutaanko kommenteissa - ja jos pidit tätä opasta hyödyllisenä, napsauta näitä jakopainikkeita kertoaksesi ystävillesi, kuinka hekin voivat asentaa oman OpenHAB-järjestelmän.

Jamesilla on teknisen älykunnan kandidaatin tutkinto ja hän on CompTIA A + ja Network + -sertifioitu. Hän on MakeUseOfin johtava kehittäjä ja viettää vapaa-aikansa pelaamalla VR-paintballia ja lautapelejä. Hän on rakennettu tietokoneita lapsuudestaan ​​asti.