OpenHAB -aloittelijan opas Osa 2: ZWave, MQTT, Säännöt ja kaavio

OpenHAB -aloittelijan opas Osa 2: ZWave, MQTT, Säännöt ja kaavio

Ilmainen ei aina tarkoita 'ei niin hyvää kuin maksettu', eikä OpenHAB ole poikkeus. Avoimen lähdekoodin kotiautomaatio -ohjelmisto ylittää huomattavasti minkä tahansa muun kotiautomaatiojärjestelmän ominaisuudet - mutta sen käyttöönotto ei ole helppoa. Itse asiassa se voi olla suorastaan ​​turhauttavaa.





Oppaan osassa 1 kävin läpi sinut OpenHABin asentaminen Raspberry Pi -laitteeseen , esitteli OpenHAB: n peruskäsitteet ja näytti kuinka lisätä ensimmäiset kohteet järjestelmään. Tänään mennään pidemmälle:





  • ZWave -laitteiden lisääminen
  • Harmony Ultimate -ohjaimen lisääminen
  • Esittelyssä säännöt
  • Esittelyssä MQTT ja MQTT -välittäjän asentaminen Pi -laitteeseesi, jossa on antureita Arduinossa
  • Tietojen tallentaminen ja piirtäminen

Johdanto Z-Waveen

Z-Wave on ollut hallitseva kodin automaatioprotokolla jo vuosia: se on luotettava, sitä on kehitetty laajasti ja se toimii paljon pidemmällä alueella kuin mikään muu älykäs koti -tuote. Käytettävissäsi on satoja Z-Wave-antureita, jotka suorittavat monenlaisia ​​tehtäviä. OpenHAB voi toimii Z-Waven kanssa, mutta sen käyttöönotto on vaivalloista, eikä luotettavuutta voida taata.



Jos aiot ostaa talon, joka on täynnä Z-Wave-antureita erityisesti käytettäväksi OpenHAB: n kanssa, kehotan sinua harkitsemaan asiaa uudelleen. Se voi toimia hyvin sinulle tai se voi vaivata pieniä mutta jatkuvia ongelmia. Älä ainakaan osta taloa, joka on täynnä antureita, ennen kuin sinulla on ollut mahdollisuus kokeilla muutamia. Ainoa syy valita Z-Wave on, jos et ole täysin tyytyväinen OpenHABiin ja haluat jättää vaihtoehtosi auki tulevaisuudessa: esimerkiksi Z-Wave toimii Samsung SmartThings -keskuksen ja Z-Wave-erityisten keskittimien kanssa kuten Homeseer, ja joukko muita ohjelmistovaihtoehtoja, kuten domoticz .

Vaikka OpenHAB sisältää Z-Wave-sidonnan, sinun on silti tehtävä se määritä ensin Z-Wave-verkko , ennen kuin OpenHAB voi aloittaa tietojen kyselyn. Jos sinulla on Rasberry -ohjainkortti, sinulla on mukana ohjelmisto 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 ohjelmistoa, joten lue eteenpäin.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB yhdyskäytävän luomiseen (tavallinen valkoinen) OSTA NYT AMAZONISTA

Jos sinulla on jo Z-Wave-verkon asetukset , voit kytkeä ohjaimen Pi -laitteeseen ja aloittaa sidonnan ja kohteiden määrittämisen. Jos tämä on ensimmäinen hyökkäys Z-Waveen, se on hieman monimutkaisempi.

Ensinnäkin laitteistopuolella: jokaisella ohjaimella on oma tapansa muodostaa laitepari (teknisesti nimeltään 'sisällytystila', jossa solmutunnus on määritetty). Jos kyseessä on Aotec Z-Stick, tämä tarkoittaa, että irrotat sen USB-portista ja painat painiketta kerran asettaaksesi sen sisällytystilaan. Vie se sitten pariliitettävän laitteen lähelle ja paina myös sen sisällytyspainiketta (tämä vaihtelee myös: Everspring -pistorasiani vaatii painikkeen painamisen kolme kertaa peräkkäin, joten tässä oppitunnissa on luettava laitteen käyttöohje) .





Z-tikku vilkkuu hetken osoituksena onnistumisesta. Tämä aiheuttaa ongelmia, kun kytket sen takaisin Pi: hen, koska uusi portti on määritetty. Käynnistä Pi uudelleen, jotta se palautetaan takaisin vakioporttiin, jos huomaat, että se on määritetty dynaamisesti uudelleen. Parempi vielä: älä kytke sitä Pi: hen, ennen kuin olet tehnyt kaikki laitteistoparit.

HABmin- ja Z-Wave-siteiden asentaminen

Koska OpenHAB ei oikeastaan ​​ole Z-Waven määritysapuohjelma, aiomme asentaa toisen web-hallintatyökalun, joka tekee niin sanotun HABmin. Suuntaa kohti HABmin Github -varasto lataa nykyinen julkaisu. Kun olet purkanut sen, löydät 2 .jar tiedostot addons -hakemistossa - ne tulee sijoittaa OpenHAB Home -jaon vastaavaan addons -hakemistoon (jos käytät myös Aotec gen5 Z-tikkua, varmista, että sinulla on vähintään versio 1.8 Z-Wave-sidonnasta) .





Luo seuraavaksi uusi kansio webapps -hakemistoon ja kutsui sitä 'habmin' (pienet kirjaimet ovat tärkeitä). Kopioi loput ladatut tiedostot sinne.

Huomaa: Siellä on myös HABmin 2 aktiivisen kehityksen alla. Asennus on pitkälti sama, mutta yhdellä .jar -lisäosalla. Kannattaa ehkä kokeilla molempia vain nähdäksesi, mitä pidät parempana.

Jos et ole jo tehnyt niin, kytke ohjain Pi -laitteeseesi. Kirjoita seuraava löytääksesi oikean portin.

ls /dev /tty*

Etsit mitä tahansa, jonka nimessä on USB, tai minun tapauksessani Z-tikku esitteli itsensä nimellä / dev / ttyACM0 (modeemi). Komennon tekeminen voi olla helpompaa kerran ennen sen liittämistä ja kerran sen jälkeen, jotta näet, mitä muuttuu, jos olet epävarma.

Avaa OpenHAB-määritystiedosto ja muokkaa Z-Wave-osiota poistamalla molemmat rivit ja kirjoittamalla todellinen laiteosoitteesi. Viimeinen vaihe minulle oli sallia OpenHAB -käyttäjän käyttää modeemia.

sudo usermod -a -G dialout openhab

Käynnistä nyt kaikki käynnistämään OpenHAB uudelleen

sudo -palvelu openhab käynnistyy uudelleen

Toivottavasti, jos tarkistat virheenkorjauslokin, näet jotain tällaista. Onnittelut, puhut nyt Z-Wavesta. Voit myös löytää virheenkorjauslokin täynnä viestejä eri Z-Wave-solmuista. Aloitetaan tarkistamalla HABMIN nähdäksesi mitä se on löytänyt: http: //openhab.local: 8080/habmin/index.html (korvaa openhab.local Raspberry Pi -isäntänimelläsi tai IP -osoitteellasi).

HABMINissa on paljon nähtävää, mutta olemme vain todella huolissamme Kokoonpano -> Sidokset -> Z -Wave -> Laitteet välilehti, kuten alla näet. Laajenna solmu muokataksesi sijaintia ja nimilappua helpottaaksesi käyttöä.

Z-Wave-kohteiden määrittäminen

Jokaisella Z-Wave-laitteella on erityinen kokoonpano OpenHAB: lle. Onneksi useimmat laitteet on jo tutkittu, ja esimerkkejä on jo olemassa. Mukautettujen laitteiden määrittäminen, joita ei tunnisteta, ylittää tämän oppaan, mutta oletetaan, että sitä tuetaan toistaiseksi.

Ensinnäkin minulla on perusversio Everspring AN158 -virtakytkin ja mittari solmussa 3. Nopea googlaaminen johti minut Wetwa.re -blogikirjoitukseen, jossa on esimerkkikohdekokoonpano. Muokkasin tätä seuraavasti:

Vaihda ilmankuivaaja_Kytke ilmankuivain päälle {zwave = '3: command = switch_binary'}

Luku Ilmankuivain_Wattia 'Ilmankuivaimen virrankulutus [%.1f W]' {zwave = '3: command = meter'}

Täydellinen.

Seuraavaksi on Aeotec Gen5 -monianturi.

Aeon Labs Aeotec Z-Wave Gen5 -monianturi (Z-Wave Plus) OSTA NYT AMAZONISTA

Tätä varten löysin mallikokoonpanon osoitteesta iwasdot.com , ja multisensorini on solmussa 2.

Numero Käytävän_lämpötila 'Käytävän lämpötila [%.1f ° C]' (Käytävä, lämpötila) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0'}

Määrä Käytävän_kosteus 'Käytävän kosteus [%.0f %%]' (Käytävä, kosteus) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

Numero Käytävän_valaistus 'Käytävän kirkkaus [%.0f Lux]' (Käytävä) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

Ota yhteyttä Hallway_Motion 'Hallway Motion [%s]' (Käytävä, liike) {zwave = '2: 0: command = sensor_binary, answer_to_basic = true'}

Numeroanturi_1_batter 'Battery [%s %%]' (Motion) {zwave = '2: 0: command = battery'}

Jos tämä muoto näyttää sinulle oudolta, palaa ensimmäiseen aloittelijan opas , erityisesti Hue -sitova osio, jossa selitän, miten kohteet lisätään. Sinun täytyy luultavasti vain kopioida liitäntäesimerkkejä, kuten tämä, mutta jos sinulla on uusi laite, sitovat asiakirjat sisältävät kaikki tiedot komentoja .

Logitech Harmony Binding

Ennen kuin ryhdymme sääntöihin, halusin lisätä lyhyen huomautuksen Harmony -sidoksen käytöstä. Olen suuri fani Harmony -sarjan äärimmäisistä kaukosäätimistä kodin mediakeskuksen kokemuksen yksinkertaistamiseksi, mutta ne ovat usein erillinen järjestelmä älykkään kodin sisällä. OpenHABin avulla Logitech Harmony -toiminnot ja täydellinen laitteenhallinta voivat nyt olla osa keskitettyä järjestelmääsi ja jopa sisällyttää automaatiosääntöihin.

Aloita asentamalla kolme sidontatiedostoa, jotka löydät etsimällä 'harmonia' apt-cachen avulla:

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

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

sudo apt-get install openhab-addon-sitova-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 osa seuraavasti:

########## HARMONIAN KAUKOSÄÄTIMET ##########

harmonyhub: isäntä = 192.168.1.181 tai IP -osoitteesi

harmonyhub: käyttäjätunnus = your-harmony-email-login

harmonyhub: salasana = salasanasi

IP -osoite on Harmony -keskittimen osoite. Käytä verkkoskanneria sen selvittämiseen. Sinun on myös annettava kirjautumistietosi, ne, jotka annat, kun käynnistät Harmony -vakioasetusohjelman. Se siitä. Kun aloitat värisävyn uudelleenkäynnistyksen, virheenkorjauslokin pitäisi saada äkillinen purske sitomisesta.

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

Oletusarvoisen PowerOff -vakioaktiviteetin lisäksi löydät määrittämäsi toiminnot tässä luettelossa nimen mukaan. Luo nyt yksinkertainen yhden painikkeen ohjaus toimintojen aloittamiseksi. Lisää ensin tavaratiedostoosi seuraava rivi. Vaihda ryhmää ja kuvaketta halutessasi.

/ * Harmony Hub */

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

Tämä on kaksisuuntainen merkkijono sidonta , joka pystyy sekä noutamaan nykyisen toiminnan että määräämään nykyisen toiminnan muuksi. Nyt voimme luoda sille painikkeen sivukartatiedostoon.

Switch item = Harmony_Activity mappings = [PowerOff = 'Pois', Harjoitus = 'Harjoitus', 13858434 = 'TV', Karaoke = 'Karaoke']

käyttöjärjestelmiä ei löydy Windows 7

Hakasulkeessa näet kaikki toiminnot ja tarran. Yleensä voit viitata suoraan aktiviteetteihin sellaisina kuin olet ne nimittänyt kaukosäätimelläsi, mutta poikkeus tähän, jonka löysin, oli mikä tahansa, jossa toiminnon nimessä oli välilyönti, kuten 'TV: n katselu'. Tässä tapauksessa sinun on käytettävä aktiviteettitunnusta. Jälleen löydät tunnuksen JSON -virheenkorjausulostulosta. Tallenna ja päivitä käyttöliittymä, sinun pitäisi nähdä jotain vastaavaa:

Voit myös viitata toimintoihisi säännöissäsi, kuten näemme seuraavaksi. Lue wikisivulta lisätietoja Harmonian sitominen .

Yleinen johdanto sääntöihin

Useimmat älykkään kodin keskittimet sisältävät jonkinlaisen sääntöjen luomisen, jotta voit automaattisesti reagoida kodin anturitietoihin ja tapahtumiin. Itse asiassa väitän, että todella älykäs koti ei ole sellainen, että sinun tarvitsee viettää aikaa vuorovaikutuksessa mobiilisovellusten kanssa - se on sellainen, joka ei näy loppukäyttäjälle ja on täysin automatisoitu. Tätä varten OpenHAB sisältää myös tehokkaan sääntöjen komentosarjakielen, jonka voit ohjelmoida ja joka ylittää huomattavasti useimpien älykkäiden kotikeskusten tai IFTTT -reseptien monimutkaisuuden.

Ohjelmointisäännöt kuulostavat pahemmilta kuin ne ovat. Aloitetaan yksinkertaisesti parilla säännöllä, jotka sytyttävät tai sammuttavat valon läsnäolotunnistimen mukaan:

sääntö 'Toimistovalo syttyy, kun James esittelee'

kun

Kohde JamesInOffice muutettiin OFF -tilasta ON -tilaan

sitten

sendCommand (Office_Hue, PÄÄLLÄ)

loppuun

sääntö 'Toimistovalo sammuu, kun James lähtee'

kun

Kohde JamesInOffice muutettiin ON -asetuksesta OFF -tilaan

sitten

sendCommand (Office_Hue, POIS)

loppuun

Nimeämme ensin säännön - ole kuvaileva, jotta tiedät, mikä tapahtuma laukaisee. Seuraavaksi määritellään yksinkertainen sääntö sanomalla kun x on tosi, tee y . Loppu tarkoittaa kyseisen säännön sulkemista. Säännöissä voi käyttää useita erityisiä sanoja, mutta toistaiseksi käsittelemme kahta yksinkertaista syntaksibittiä - Tuote , jonka avulla voit tiedustella jonkin tilan tilaa; ja sendCommand , joka tekee juuri sitä mitä luulet tekeväsi. Sanoin, että tämä oli helppoa.

Sääntöparin käyttäminen on luultavasti tarpeetonta, mutta logiikani monimutkaistuessa on hyödyllistä, että ne erotetaan toisistaan ​​sen mukaan, tulenko alueelle vai poistunko alueelta - ja saattaa olla hyvä idea lisätä valotunnistin jonnekin yhtälöön, jotta emme sytytä tarpeettomasti valoja.

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

sääntö 'Harjoittele joka aamu'

kun

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

sitten

harmonyStartActivity ('Harjoitus')

loppuun

Nimeämme jälleen säännön, ilmoitamme olosuhteet, milloin sen pitäisi laukaista, ja toimenpiteet. Mutta tässä tapauksessa määritämme aikamallin. Lainausmerkeissä näkyvä hauska koodi on CRON -lauseke Quartz Schedulerille (muoto on hieman erilainen kuin tavallinen CRONtab). käytin cronmaker.com auttaa luomaan lausekkeen, mutta voit myös lukea muotoiluohjeesta [Ei enää saatavilla] saadaksesi yksityiskohtaisen selityksen ja lisää esimerkkejä.

CronMaker.com tuotti oikein muotoillun Cron -lausekkeen

Säännöissäni sanotaan yksinkertaisesti: '' Klo 8.00 joka aamu, jokaisena viikonpäivänä, kerro Harmony Ultimate -järjestelmälleni aloittaa harjoitus '', joka puolestaan ​​aktivoi television, Xboxin, vahvistimen ja paina A -painiketta minuutin kuluttua käynnistääksesi levy asemaan.

Valitettavasti OpenHAB ei voi vielä tehdä harjoitusta puolestani.

Vielä yksi sääntö, jonka haluan näyttää teille, on jotain, jota käytän hallitsemaan kotini kosteustasoja. Minulla on yksi ilmankuivain, jota minun on siirrettävä missä tahansa, joten päätin tarkastella kaikkia kosteusantureitani, 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.String

sääntö 'Kosteusmittari'

kun Aika cron '0 * * * *?'

sitten

var prevHigh = 0

var highHum = ''

Kosteus? .Jäsenet.ja jokaiselle [hum |

logDebug ('kosteus.säännöt', hum.nimi);

if (hum.state as DecimalType> prevHigh) {

prevHigh = hum. tila

highHum = hum.nimi + ':' + hum.tila + '%'

}

ps4 -ohjain katkaisee yhteyden eikä muodosta yhteyttä uudelleen

]

logDebug ('kosteus.säännöt', highHum);

postUpdate (Ilmankuivain_Needed, highHum);

loppuun

Säännön ydin on Kosteus? .Jäsenet linja. Kosteus on kosteusantureideni ryhmänimi; .jäsenet nappaa kaikki kyseisen ryhmän kohteet; jokaiselle iteroi niiden yli (erikoisella hakasulkeella, jota et todennäköisesti tunne). Sääntöjen syntaksi on Xtend -johdannainen, joten voit lukea sen Xtend -dokumentaatio jos et löydä esimerkkiä sopeutumiseen.

Luultavasti sinun ei kuitenkaan tarvitse - on olemassa satoja esimerkkisääntöjä:

MQTT OpenHAB: lle ja esineiden Internetille

MQTT on kevyt viestintäjärjestelmä koneiden väliseen kommunikaatioon-eräänlainen Twitter Arduinoille tai Vadelma Pisille, jotta he voivat puhua keskenään (vaikka tietysti se toimii paljon enemmän kuin vain ne). Se saa nopeasti suosiota ja löytää itselleen kodin esineiden Internet-laitteilla, jotka ovat tyypillisesti vähäresursseisia mikro-ohjaimia, jotka tarvitsevat luotettavan tavan lähettää anturitiedot takaisin keskittimeen tai vastaanottaa etäkomentoja. Juuri sitä me teemme sen kanssa.

Mutta miksi keksiä pyörä uudelleen?

MQ Telemetry Transport keksittiin jo vuonna 1999 yhdistämään öljyputket hitaiden satelliittiyhteyksien kautta, jotka on erityisesti suunniteltu minimoimaan akun käyttö ja kaistanleveys samalla, kun ne tarjoavat luotettavaa tiedonsiirtoa. Vuosien mittaan suunnitteluperiaatteet ovat pysyneet samana, mutta käyttötapa on siirtynyt erikoistuneista sulautetuista järjestelmistä yleisiin esineiden Internet -laitteisiin. Vuonna 2010 protokolla julkaistiin rojaltivapaasti, ja se on kaikkien käytettävissä ja toteutettavissa. Pidämme ilmaisesta.

Saatat ihmetellä, miksi me edes vaivaudumme toisen protokollan kanssa - meillä on jo loppujen lopuksi HTTP -, jota voidaan käyttää pikaviestien lähettämiseen kaikenlaisten verkkoon yhdistettyjen järjestelmien välillä (kuten OpenHAB ja IFTTT, erityisesti uuden valmistajakanavan kanssa) ). Ja olisit oikeassa. HTTP -palvelimen käsittelykustannukset ovat kuitenkin melko suuret - niin paljon, että et voi helposti suorittaa sitä sulautetulla mikro -ohjaimella, kuten Arduino (ainakin voit, mutta sinulla ei ole paljon muistia muille ). MQTT on toisaalta kevyt, joten viestien lähettäminen verkon ympärille ei tuki putkia, ja se mahtuu helposti pieneen Arduino -muistitilaamme.

Miten MQTT toimii?

MQTT edellyttää sekä palvelinta (nimeltään välittäjä) että yhtä tai useampaa asiakasta. Palvelin toimii välittäjänä, vastaanottaa viestejä ja lähettää ne uudelleen kaikille kiinnostuneille asiakkaille.

Jatketaan Twitter-koneille vaikka analogia. Aivan kuten Twitterin käyttäjät voivat tweetata omia merkityksettömiä 140 merkkiä ja käyttäjät voivat 'seurata' muita käyttäjiä nähdäkseen kuratoidun viestivirran, MQTT -asiakkaat voivat tilata tietyn kanavan saadakseen kaikki viestit sieltä sekä julkaista omia viestejään. siihen kanavaan. Tätä julkaisu- ja tilausmallia kutsutaan nimellä pubi / ali , toisin kuin perinne asiakas/palvelin HTTP -malli.

HTTP edellyttää, että otat yhteyttä laitteeseen, jonka kanssa olet kommunikoimassa, sano Hei, ja sitten edestakaisin kuittaat jatkuvasti toisiaan, kun saat tai laitat tietoja. Pub/sub -palvelun avulla julkaisemisen tekevän asiakkaan ei tarvitse tietää, mitkä asiakkaat ovat tilanneet: se vain pumppaa viestit ulos ja välittäjä jakaa ne uudelleen tilaajille. Kuka tahansa asiakas voi sekä julkaista että tilata aiheita aivan kuten Twitter -käyttäjä.

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

Ei ole niin, että MQTT on parempi kuin HTTP kaikelle - mutta se On sopivampi, jos meillä on paljon antureita ympäri taloa ja raportoimme jatkuvasti.

On myös tärkeää tietää, että OpenHAB ei toimi MQTT -välittäjänäsi - käsittelemme sitä myöhemmin. OpenHAB toimii kuitenkin asiakkaana: se voi sekä julkaista OpenHAB -toimintalokisi että sitoa tiettyjä kanavia laitteisiin, joten voit esimerkiksi saada kytkimen, jota ohjaavat tietyn kanavan MQTT -viestit. Tämä on ihanteellinen talo, joka on täynnä antureita.

Asenna Mosquitto Pi -laitteeseesi

Vaikka OpenHAB sisältää MQTT -asiakkaan, jotta voit tilata aiheen ja 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 Mosquiton Pi: hen.

Valitettavasti tavallisen apt-getin kautta saatavana oleva versio on täysin vanhentunut. Sen sijaan lisätään uusimmat lähteet.

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

sudo apt-key lisää 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 on käynnissä paikallisverkossa. Välittäjäsi toimii oletusarvoisesti portissa 1883.

Tarkista, että MQTT-palvelimesi toimii, käyttämällä ilmaista MQTT.fx-tiedostoa, joka on monialainen. Luo uusi profiili napsauttamalla asetuskuvaketta ja kirjoita Raspberry Pi: n IP -osoite tai nimi. Tallenna ja paina Yhdistä. Jos pieni liikennevalo oikeassa yläkulmassa muuttuu vihreäksi, voit mennä.

Pikatestiä varten napsauta Tilaa -välilehteä ja kirjoita inTopic / tekstikenttään ja paina sitten Tilaa -painiketta. Olet nyt tilannut viestin aiheessa nimeltä Topic, vaikka siinä näytetään 0 viestiä. Palaa Julkaise -välilehteen, kirjoita Aihe pieneen ruutuun ja lyhytsanoma alla olevaan suureen tekstikenttään. Osuma Julkaista muutaman kerran ja katso takaisin tilaus -välilehdelle. Sinun pitäisi nähdä muutamia viestejä, jotka ovat ilmestyneet aiheeseen.

Ennen kuin lisäämme joitain todellisia antureita verkkoon, meidän on opittava aihealueista, joiden avulla voimme rakentaa ja suodattaa MQTT -verkon. Aiheiden nimet erottavat isot ja pienet kirjaimet, eivät saa alkaa $: lla, eivätkä sisällä välilyöntiä tai muita kuin ASCII-merkkejä-muuttujien nimien vakio-ohjelmointikäytännöt.

/ Erotin osoittaa aiheen tason, joka on hierarkkinen, esimerkiksi seuraavat ovat kaikki kelvollisia aiheita.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/lämpötila

myHome/livingRoom/kosteus

myHome/keittiö/lämpötila

myHome/keittiö/kosteus

Sinun pitäisi jo nähdä, kuinka tämä puurakenne on täydellinen älykkääseen kotiin, joka on täynnä antureita ja laitteita. Paras käytäntö useiden antureiden kanssa yhdessä huoneessa on julkaista jokainen anturimuuttuja sen omalla aihealueella - haarautumalla tarkemmin (kuten yllä olevissa esimerkeissä) - sen sijaan, että yritettäisiin julkaista useita anturityyppejä samalle kanavalle .

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

+ -Merkki korvaa minkä tahansa aiheen tason. Esimerkiksi:

myHome/+/lämpötila

tilaa asiakas molempiin

myHome/livingRoom/lämpötila

myHome/keittiö/lämpötila

... mutta ei kosteustasoja.

# On monitasoinen yleismerkki, joten voit hakea mitä tahansa livingRoom-anturiryhmästä seuraavilla tavoilla:

myHome/livingRoom/#

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

Vinkki MQTT aloittelijalle: ' /kotini/' on eri aihe kuin kotini/' - kauttaviivan lisääminen alkuun luo tyhjän aiheen tason, joka on teknisesti pätevä, mutta sitä ei suositella, koska se voi olla hämmentävää.

Nyt kun tiedämme teorian, kokeile Arduinoa, Ethernet -suojaa ja DHT11 -lämpötila- ja kosteusanturia - sinulla on luultavasti sellainen aloituspakkauksessa, mutta jos ei, vaihda vain ympäristöanturi liikkeelle anturi (tai jopa painike).

MQTT: n julkaiseminen Arduinosta, jossa on Ethernet -yhteys

Jos sinulla on Arduino-yhteensopiva hybridilaite, jossa on sisäänrakennettu Wi-Fi tai Ethernet, sen pitäisi myös toimia. Lopulta haluamme paremman/halvemman tavan kommunikoida, että meidän on käytettävä verkkoyhteyttä kaikissa huoneissa, mutta tämä auttaa oppimaan perusasiat.

Aloita lataamalla pubsubclient -kirjasto Githubilta . Jos olet käyttänyt Lataa ZIP -painiketta, rakenne on hieman väärä. Pura, nimeä kansio uudelleen vain pubiasiakas , poista sitten kaksi tiedostoa src kansioon ja siirrä ne yhden tason ylöspäin ladatun kansion juurelle. Siirrä sitten koko kansio kansioon Arduino/kirjastot hakemistoon.

Tässä on esimerkkikoodini, jota voit mukauttaa : DHT11 -signaalin lähtö on nastassa 7. Vaihda Pi -palvelimen IP -osoite seuraavalla rivillä:

client.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 koodin lisääminen Bonjourin nimeämiseen olisi paljon muistia, jota emme halua tuhlata. Jos haluat muuttaa aiheita, joista anturitietoja lähetetään, vieritä alas seuraaville riveille:

hiilipuskuri [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 komentokanavan tilaamisen. Etsi ja säädä seuraava rivi:

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

Tutki sen ympärillä olevaa koodia ja huomaat, että voit helposti ohjata LEDiä tai relettä esimerkiksi lähettämällä komentoja tietyille kanaville. Esimerkkikoodissa se yksinkertaisesti lähettää viestin takaisin vahvistamalla komennon vastaanottamisen.

Lataa koodisi, kytke Arduino verkkoon ja tilaa MQTT.fx -tilauksella jompikumpi # tai openhab / himitsu / # (tai mihin muutit huoneen nimen, mutta älä unohda lisätä # -merkkiä loppuun). Melko pian sinun pitäisi nähdä saapuvat viestit; ja jos lähetät ON tai OFF komentoaiheeseen, näet myös kuittaukset tulevat takaisin.

MQTT -sidonta OpenHAB: lle

Yhtälön viimeinen vaihe on kytkeä tämä OpenHABiin. Tätä varten tarvitsemme tietysti sitomisen.

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

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

Ja muokkaa asetustiedostoa sitomisen ottamiseksi käyttöön.

mqtt: broker.url = tcp: // paikallinen isäntä: 1883

mqtt: broker.clientId = openhab

Käynnistä OpenHAB uudelleen

sudo -palvelu openhab käynnistyy uudelleen

Lisäämme sitten kohteen tai kaksi:

/ * MQTT -anturit */

Numero Himitsu_Temp 'Himitsun lämpötila [%.1f ° C]' (Himitsu, lämpötila) {mqtt = '<[broker:openhab/himitsu/temperature:state:default]'}

Lukumäärä Himitsu_Humidity'Himitsu Kosteus [%.1f %%] '(Himitsu, Kosteus) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

Nyt sinun pitäisi ymmärtää muoto; se saa a Numero MQTT -sidonnasta tietystä aiheesta. Tämä on yksinkertainen esimerkki, saatat haluta viitata wikisivulle, jossa se on voi mennä paljon monimutkaisemmaksi .

Onnittelut, sinulla on nyt halvan Arduino-pohjaisen anturiryhmän perusta. Tarkistamme tätä tulevaisuudessa ja asetamme Arduinot omaan täysin erilliseen RF -verkkoon. Olen myös tehnyt samanlaisen version Wizwiki 7500 -levyille jos sinulla on yksi niistä.

Pysyvyys ja piirtäminen

Tähän mennessä olet todennäköisesti luonut joukon antureita, olivatpa ne Z-Wavea tai mukautettuja Arduinoja, jotka käyttävät MQTT: tä-joten voit tarkastella näiden antureiden nykyistä tilaa milloin tahansa, ja sinun pitäisi myös reagoida niiden arvoon sääntöissä. Mutta mielenkiintoinen asia anturien arvoissa on yleensä se, että ne muuttuvat ajan myötä: siinä sinnikkyys ja piirtäminen tulevat. Sitkeys OpenHABissa tarkoittaa tietojen tallentamista ajan mittaan. Mennään eteenpäin ja asennetaan RRD4J (Round Robin Database for Java), niin kutsuttu, koska tiedot tallennetaan round robin -muotoon - vanhemmat tiedot hylätään pakatakseen tietokannan koon.

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ä rrd4j. jatka kohdassa kokoonpanot/pysyvyys kansio. Liitä seuraavaan:

Strategiat {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

joka päivä: '0 0 0 * *?'

oletus = everyChange

}

Kohteet {

// säilyttää kaiken, kun arvo päivitetään, vain oletusarvo, ja palauttaa ne tietokannasta käynnistyksen yhteydessä

*: strategia = everyChange, restoreOnStartup

// seuraavaksi määritämme jokaisen tunnin tietyt strategiat mille tahansa lämpötilaryhmälle ja joka minuutti kosteudelle

sinulla ei ole lupaa käyttää /index.html -tiedostoa tällä palvelimella.

Lämpötila*: strategia = everyHour

Kosteus*: strategia = everyMinute

// Vaihtoehtoisesti voit lisätä tähän tiettyjä kohteita, kuten

// Makuuhuoneen_kosteus, JamesInOffice: strategia = everyMinute

}

Tämän tiedoston ensimmäisessä osassa määritellään strategioita, mikä tarkoittaa vain nimen antamista CRON -lausekkeelle. Tämä on sama kuin jo teimme My.OpenHAB: n kanssa, mutta tällä kertaa luomme uusia strategioita, joita voimme käyttää joka päivä, joka tunti ja jokainen minuutti. Kaikkia en ole vielä käyttänyt, mutta ehkä käytän tulevaisuudessa.

Tiedoston toisella puoliskolla kerromme rr4dj: lle, mitkä data -arvot tallennetaan. Oletusarvoisesti tallennamme kaiken joka kerta, kun se päivitetään, mutta olen myös määrittänyt tiettyjä aikapohjaisia ​​strategioita tietyille antureille. Lämpötilat eivät minua liikaa vaivaa, joten olen asettanut sen säästämään jokaisen tunnin, mutta kosteus on minulle suuri huolenaihe, joten haluan nähdä kuinka se muuttuu joka minuutti. Jos haluat tallentaa muita tietoja tiettyinä aikoina, lisää ne nyt tähän tai säädä tarvittaessa.

Huomaa: jos haluat myös piirtää tiedot, sinun on tallennettava ne vähintään kerran minuutissa. Ei ole väliä, päivitetäänkö anturitietosi näin nopeasti, sinun on vain kerrottava rr4dj: lle, että se tallentaa ne kerran minuutissa.

Kun tämä on määritetty, sinun pitäisi alkaa nähdä virheenkorjausulostetta, joka kertoo, että arvot tallennetaan.

Tehdään seuraavaksi kauniita kaavioita kaikista näistä tiedoista. Se on todella helppoa. Jos haluat luoda kaavion yksittäisestä anturista, lisää seuraava sivustokarttaasi:

Kaavion kohde = Makuuhuoneen_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. Se on oletusarvoisesti D koko päivän tiedoille, jos sitä ei ole määritetty.

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

Kaavion kohde = Kosteusjakso = h

Saatat myös olla kiinnostunut tietämään, että voit käyttää tätä kaaviota muualla; se luo kuvan seuraavan URL -osoitteen avulla: http: // YOUROPENHABURL: 8080/chart? groups = Kosteus ja jakso = h

Miten on Sinun OpenHAB -järjestelmä tulossa?

Se on tässä oppaan osassa, mutta älä odota, että tämä on viimeinen kuulemasi OpenHABista. Toivottavasti tämä ja aloittelijan opas ovat antaneet sinulle vankan perustan oman täydellisen OpenHAB -järjestelmän kehittämiselle - mutta se on prosessi, joka ei ole koskaan täysin valmis.

Onneksi OpenHAB voi skaalautua hyvin muutamasta laitteesta satoihin yksinkertaisista sääntöjen monimutkaisuudesta kotiautomaation lopulliseen lopputulokseen - joten miten järjestelmäsi menee? Mitkä laitteet valitsit? Mikä on seuraava suuri projekti, johon aiot ryhtyä?

Puhutaanpa kommenteissa - ja jos pidit tätä opasta hyödyllisenä, napsauta näitä jakamispainikkeita ja kerro ystävillesi, kuinka he voivat myös määrittää oman OpenHAB -järjestelmän.

Toivomme, että pidät suosittelemistamme ja keskusteltavista kohteista! MUOlla on kumppanuus- ja sponsoroituja kumppanuuksia, joten saamme osan joidenkin ostojesi tuloista. Tämä ei vaikuta maksamaasi hintaan ja auttaa meitä tarjoamaan parhaat tuotesuositukset.

Jaa Jaa Tweet Sähköposti Aloittelijan opas puheen animointiin

Puheen animointi voi olla haaste. Jos olet valmis aloittamaan vuoropuhelun lisäämisen projektiin, jaamme prosessin puolestasi.

Lue seuraava
Liittyvät aiheet
  • tee-se-itse
  • Älykoti
  • Arduino
  • Kodin automatisointi
  • Pitkä lomake
  • Longform -opas
Kirjailijasta James Bruce(707 artikkelia julkaistu)

Jamesilla on BSc tekoälyssä ja CompTIA A+ ja Network+ -sertifioitu. Kun hän ei ole kiireinen laitteistoarvostelujen editorina, hän nauttii LEGO-, VR- ja lautapeleistä. Ennen MakeUseOfiin tuloaan hän oli valaistustekniikka, englannin opettaja ja konesali -insinööri.

Lisää James Brucelta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi