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 AMAZONISTATä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ä:
- Yksityiskohtainen selitys säännöistä virallisella wikillä
- The virallisten sääntöjen näytteet wiki -sivu
- Nosta säännöt uusiin korkeuksiin
- Kehittyneitä näytteitä osoitteessa IngeniousFool.net
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 animointiinPuheen 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
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 Bruceltatilaa uutiskirjeemme
Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e -kirjoja ja ainutlaatuisia tarjouksia!
Klikkaa tästä tilataksesi