Reklaam

Tasuta ei tähenda alati “mitte nii head kui tasulist” ja OpenHAB pole erand. Avatud lähtekoodiga kodus automatiseerimise tarkvara ületab kaugelt kõigi teiste turul olevate koduautomaatikasüsteemide võimalusi, kuid selle seadistamine pole lihtne. Tegelikult võib see olla täiesti pettumust valmistav.

Selle juhendi saab alla laadida tasuta PDF-vormingus. Laadige alla OpenHABi algajate juhend, 2. osa: ZWave, MQTT, reeglid ja diagrammid. Võite seda kopeerida ja jagada oma sõprade ja perega.

Juhendi 1. osas jalutasin teid läbi OpenHAB installimine Raspberry Pi-le Alustamine OpenHAB-i koduautomaatikast Raspberry Pi-lOpenHAB on küps, avatud lähtekoodiga koduautomaatika platvorm, mis töötab mitmesugusel riistvaral ja on Agnostic Protocol, mis tähendab, et see saab ühendada peaaegu kõigi turul pakutavate kodus kasutatavate automaatika riistvaraga täna. Loe rohkem , tutvustas OpenHABi põhimõisteid ja näitas teile, kuidas oma esimesed üksused süsteemi lisada. Täna läheme kaugemale:

  • ZWave'i seadmete lisamine
  • instagram viewer
  • Harmony Ultimate kontrolleri lisamine
  • Tutvustame reegleid
  • Tutvustame MQTT-i ja paigaldame oma Pi-le MQTT-maakleri koos anduritega Arduinos
  • Andmete salvestamine ja graafik

Sissejuhatus Z-Wave'i

Z-Wave on aastaid olnud domineeriv koduautomaatika protokoll: see on usaldusväärne, seda on laialdaselt arendatud ja see töötab palju laiemas valikus kui ükski teine ​​nutika kodu toode. Teile on saadaval sadu Z-Wave andureid, mis täidavad mitmesuguseid ülesandeid. OpenHAB saab töötage Z-Wave'iga, kuid selle seadistamine on vaevatu ja töökindlus pole tagatud.

Kui kaalute spetsiaalselt OpenHAB-iga kasutamiseks mõeldud Z-Wave-anduritega maja ostmist, kutsun teid üles seda uuesti kaaluma. See võib teile hästi välja töötada või vaevata väikeste, kuid püsivate probleemidega. Vähemalt ärge ostke andureid täis maja enne, kui teil on olnud võimalus mõnda neist proovida. Ainus põhjus Z-Wave'i valimiseks on see, kui te pole veel 100% asustatud OpenHAB-is ja soovite tulevikus oma võimalused avatuks jätta: näiteks Z-Wave töötab Samsung SmartThings Milline koduautomaatika nutikas jaotur on teie jaoks parim?Mõnda aega arvasid inimesed, et idee pole midagi muud kui trikk, kuid hiljutised tooteväljaanded on näidanud, et nutikas koduautomaatika hakkab oma lubadusi täitma. Loe rohkem jaotur, samuti Z-Wave'i spetsiifilised jaoturid, näiteks Homeseer, ja terve rida muid tarkvaravalikuid, näiteks Domoticz.

Kuigi OpenHAB sisaldab Z-Wave sidumist, peate seda siiski tegema konfigureerige esmalt Z-Wave võrk, enne kui OpenHAB saab hakata selle kohta andmeid küsima. Kui teil on Rasberry kontrolleriplaat, on teil võrgu konfigureerimiseks tarnitud tarkvara, nii et me ei kata seda siin. Kui ostsite Aeotec USB Z-Stick kontrolleri või muu sarnase, siis tõenäoliselt pole teil tarkvara kaasas, nii et lugege edasi.

Lüüsi loomiseks Aeotec Z-Stick Gen5, Z-Wave Plus USBLüüsi loomiseks Aeotec Z-Stick Gen5, Z-Wave Plus USB Osta nüüd Amazonist $44.95

Kui teil on juba Z-Wave'i võrgu seadistamine, saate oma kontrolleri lihtsalt Pi külge ühendada ja sidumist ja üksusi seadistama hakata. Kui see on teie esimene katsumus Z-Wave'i, on see pisut keerulisem.

Esiteks, riistvara poolel: igal kontrolleril on oma viis seadmetega sidumiseks (tehniliselt tuntud kui “kaasamisrežiim”, kus on määratud sõlme ID). Aotec Z-Sticki puhul tähendab see USB-pordi lahti ühendamist ja ühe korra nuppu vajutamist, et lülitada see kaasamisrežiimi. Seejärel viige see paaritatava seadme lähedale ja vajutage ka sellel kaasamise nuppu (see varieerub ka: minu pistikupesas Everspring tuleb nuppu kiiresti 3 korda vajutada, nii et siin on teie seadme kasutusjuhendi lugemine).

Edu tähistamiseks vilgub korraks Z-Stick. See tekitab probleeme selle uuesti Pi külge ühendamisel, kuna uus port on määratud. Taaskäivitage Pi, et see lähtestada tagasi tavapärasesse pordi, kui leiate, et see on dünaamiliselt mõnele teisele määratud. Veelgi parem: ärge ühendage seda Pi-ga enne, kui olete kõik riistvara sidumised teinud.

HABmini ja Z-Wave köite paigaldamine

Kuna OpenHAB ei ole tegelikult Z-Wave'i konfiguratsiooniutiliit, installime teise veebihaldusriista, mis seda nimetab - HABmin. Liikuge edasi HABmin Githubi hoidla laadige alla praegune väljalase. Kui olete selle lahti pakkinud, leiate 2 .jar failid kataloogides addons - need tuleks paigutada teie OpenHAB Home'i ühiskasutusse vastavasse addons kataloogis (kui kasutate ka Aotec gen5 Z-Sticki, veenduge, et teil oleks vähemalt Z-Wave köite versioon 1.8).

Järgmisena looge webappsi kataloogis uus kaust ja nimetage see “habmin” (oluline on väiketähed). Kopeerige ülejäänud allalaaditud failid sinna.

Märkus. Seal on ka a HABmin 2 aktiivse arengu all. Installimine on üsna sama, kuid ühe täiendava .jar-lisandmooduliga. Võib-olla tasub proovida mõlemat lihtsalt selleks, et näha, kumba eelistate.

Kui te pole seda juba teinud, ühendage kontroller oma Pi-ga. Õige pordi leidmiseks tippige järgmine tekst.

ls / dev / tty *

Otsite nimest midagi, millel on USB, või minu konkreetsel juhul esitas Z-stick ennast kui /dev/ttyACM0 (modem). Võib-olla on lihtsam käsku teha üks kord enne selle ühendamist ja üks kord pärast seda, nii et näete, mis muutub, kui te pole kindel.

kuradi

Avage OpenHAB-i konfiguratsioonifail ja muutke Z-Wave'i jaotist, kommenteerimata mõlemat rida ja sisestades seadme tegeliku aadressi. Minu jaoks oli viimane samm lubada OpenHAB-i kasutajal modemile juurde pääseda.

sudo usermod -a -G dialoog openhab

Nüüd, et kõik ellu viia, taaskäivitage OpenHAB

sudo teenuse openhab taaskäivitamine

Loodetavasti näete silumislogi kontrollimisel midagi sellist. Palju õnne, räägite nüüd Z-Wave'ist. Samuti võite leida silumislogi, mis on üle ujutatud erinevate Z-Wave-i sõlmede sõnumitega. Alustame HABMINi kontrollimisega, et leida, mida see on leidnud: http://openhab.local: 8080 / habmin / index.html (asendades openhab.local oma Raspberry Pi hostinime või IP-aadressiga).

zwave käivitamine avatud habilogis

HABMINis on palju näha, kuid meie jaoks on mureks ainult Konfiguratsioon -> Köited -> Z-Wave -> Seadmed nagu näete allpool. Laiendage sõlme, et asukoha ja nimemärgendit hõlpsamaks muutmiseks muuta.

muutke seadme nime

Z-Wave üksuste seadistamine

Igal Z-Wave seadmel on OpenHAB-i jaoks spetsiaalne konfiguratsioon. Õnneks on enamik seadmeid juba uuritud ja seal on näiteid juba teie jaoks. Tuvastamata kohandatud seadmete konfigureerimine jääb selle juhendi ulatusest kaugemale, kuid oletame, et seda toetatakse praegu.

Esiteks on mul sõlmes 3 tavaline Everspring AN158 toitelüliti ja arvesti. Kiire Google'i juhtimine viis mind veebisaidi Wetwa.re ajaveebipostitusse koos näidisüksuse konfiguratsiooniga. Ma kohandasin seda järgmiselt:

Lülitage õhuniisutaja_lüliti "õhuniisutaja" {zwave = "3: command = switch_binary"} arv dehumidifier_Watts "õhuniisutaja energiatarve [% .1f W]" {zwave = "3: command = meter"}

Täiuslik.

Järgmine on Aeotec Gen5 multisensor.

Aeon Labs Aeotec Z-Wave Gen5 multiandur (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 multiandur (Z-Wave Plus) Osta nüüd Amazonist $69.27

Selle jaoks leidsin näidiskonfiguratsiooni aadressil iwasdot.comja minu multisensor on 2. sõlmel.

Arv Koridori_temperatuuri väärtus "Koridori temperatuur [% .1f ° C]" (esik, temperatuur) {zwave = "2: 0: käsk = sensor_multilevel, sensor_type = 1, sensor_scale = 0"} Arv Koridori_niiskus "Esiku niiskus [% .0f %%]" (Esik, õhuniiskus) {zwave = "2: 0: käsk = sensor_multilevel, sensor_type = 5"} Arv Koridori_valgusti "Esiku heledus [% .0f Luksi]" (Esik) {zwave = "2: 0: käsk = sensor_multilevel, sensor_type = 3"} Võtke ühendust koridori_liiduga "Koridori liikumine [% s]" (koridor, liikumine) {zwave = "2: 0: käsk = sensor_binary, respon_to_basic = true"} Arvsensor_1_battery "Aku [% s %%]" (liikumine) {zwave = "2: 0: command = aku"}

Kui selle vorming tundub teile kummaline, pöörduge tagasi esimese juurde algaja juhend Alustamine OpenHAB-i koduautomaatikast Raspberry Pi-lOpenHAB on küps, avatud lähtekoodiga koduautomaatika platvorm, mis töötab mitmesugusel riistvaral ja on Agnostic Protocol, mis tähendab, et see saab ühendada peaaegu kõigi turul pakutavate kodus kasutatavate automaatika riistvaraga täna. Loe rohkem , täpsemalt Hue sidumise sektsioon, kus selgitan, kuidas üksusi lisatakse. Tõenäoliselt peate kunagi ainult kopeerima selliseid kleepimisnäiteid, kuid kui teil on uus seade, siis seovad dokumendid täpsustavad kõiki käsud.

Logitech Harmony köitmine

Enne kui asusime reeglitesse õppima, soovisin lisada lühikese märkuse Harmony köiteteemalise töö kohta. Olen suur fänn Ülimate kaugjuhtimispuldide harmooniaseeria Logitech Harmony Ultimate ülevaade ja kingitusedTeie elutuba on kaos - tunnistage seda. Teile antakse andeks, et mõtlesite, millist kaugjuhtimispulti millist seadet kasutada. Mis saab televiisori, võimendi, TiVO, BluRay mängija, võib-olla isegi valgustusega - tegevuste vahetamine muutub pikaks ... Loe rohkem kodu meediumikeskuse kogemuse lihtsustamiseks, kuid nutiseadme sees seisavad need sageli eraldi süsteemina. OpenHAB-i abil saavad Logitech Harmony tegevused ja seadme täielik juhtimine olla teie tsentraliseeritud süsteemi osa ja isegi kaasatud automatiseerimiseeskirjadesse.

Alustage kolme köitefaili installimisega, mille leiate, kasutades apt-vahemälu, et otsida sõna "harmoonia":

openhab apt-cache otsib harmoonia sidumist

Ärge unustage kooritud köitekataloog uuesti, kui olete lõpetanud:

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

Sidumise konfigureerimiseks avage fail openhab.cfg ja lisage uus jaotis järgmiselt:

########## HARMOONIA KAUGJUHTIMINE ########### harmooniline koer: peremees = 192.168.1.181või teie ip
harmonyhub: kasutajanimi =teie-harmoonia-e-posti-sisselogimine
harmonyhub: parool =oma parool

IP-aadress on teie Harmony jaoturi IP-aadress. Selle leidmiseks kasutage võrguskannerit. Peate sisestama ka oma sisselogimisandmed, need, mille sisestate tavalise harmoonia konfiguratsiooniutiliidi käivitamisel. See selleks. Tooni taaskäivitamisel peaks silumislogi ilmuma köites äkitselt.

See on JSON-vormingus loend kõigist teie tegevustest, seadmetest ja käskudest, mida saab saata. See on hea mõte kopeerida see edaspidiseks kasutamiseks. saate kokkupandavate sõlmedega lugemise veelgi lihtsamaks muuta, kleepides veebipõhisesse JSON-vormingusse nagu see.

jsoni vormindatud avatud habi väljund

Lisaks tavapärasele vaiketoimingule PowerOff, leiate siin oma nime järgi määratletud tegevused. Nüüd looge tegevuste alustamiseks lihtne ühe nupuga juhtseade. Esiteks lisage oma üksuste failis järgmine rida. Kui soovite, muutke rühma ja ikooni.

/ * Harmony Hub * / Keel Harmony_Aktiivsus "Harmoonia [% s]" (Living_Room) {harmonyhub = "* [currentActivity]"}

See on kahesuunaline keelköide, mis suudab nii praeguse tegevuse tõmmata kui ka käsu praeguseks tegevuseks millekski muuks. Nüüd saame selle nupu saidikaardifailis luua.

Lülita üksus = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Exercise', 13858434 = 'TV', Karaoke = 'Karaoke']

Nurksulus näete iga tegevust koos sildiga. Üldiselt võite tegevustele otse viidata, kui olete need oma puldil nimetanud, kuid erand sellest, mille ma leidsin, oli mis tahes tegevusala tühikuga, näiteks „Telekat vaadata”. Sel juhul peate kasutama tegevuse ID-d. Jällegi leiate ID JSON-i silumisväljundist. Salvestage ja värskendage oma liidest, peaksite nägema midagi sarnast:

openhabi harmoonia saidikaardil

Samuti võite oma reeglites toimingutele viidata, nagu näeme järgmisena. Lisateavet saidi kohta leiate wiki lehelt Harmoonia siduv.

Üldine sissejuhatus reeglitesse

Enamik nutikaid kodujaamasid sisaldab mingisuguseid reegleid, nii et saate automaatselt reageerida andurite andmetele ja kodus toimuvatele sündmustele. Tegelikult väidaksin, et tõeliselt nutikas kodu pole see, mille jaoks peate mobiilirakendustega suheldes aega kulutama - see on lõppkasutajale nähtamatu ja täielikult automatiseeritud. Selleks sisaldab OpenHAB ka võimas reeglite skriptikeelt, mida saate programmeerida, ületades kaugelt enamiku keerukusest nutikad kodukeskused Nutikodu jaoturite lahing: mis seal väljas on ja mis tulemas on? Loe rohkem või IFTTT retseptid IFTTT on nüüd ühendatud ükskõik millega: tutvustatakse tegija kanalitIFTTT potentsiaalsed kasutusalad on lõputud. Kuid siiani on olnud keeruline seda oma riistvaraprojektidega liidestada. Täna on see kõik muutunud. Loe rohkem .

Programmeerimisreeglid kõlavad halvemini kui praegu. Alustame lihtsate reeglitega, mis lülitavad valguse sisse või välja, sõltuvalt kohalolekuandurist:

reegel "Kontori tuli põleb, kui James kohal viibib" kui üksus JamesInOffice muudeti olekus VÄLJAS olekuks SISSE. seejärel saatke käsk (Office_Hue, ON) lõppreegel "Kontori tuli kustub, kui James lahkub" kui üksus JamesInOffice muudeti olekust ON asendisse OFF. seejärel saatke käsk (Office_Hue, OFF) lõpp

Esiteks nimetame reeglit - olge kirjeldavad, nii et teate, milline sündmus vallandab. Järgnevalt määratleme oma lihtsa reegli öeldes kui x on tõene, siis tee y. Lõpp tähendab selle konkreetse reegli sulgemist. Reeglites saate kasutada mitmeid erisõnu, kuid praegu käsitleme kahte lihtsat süntakti bitti - Üksus, mis võimaldab teil küsida millegi oleku kohta; ja sendCommand, mis teeb täpselt seda, mida arvate. Ma ütlesin, et see oli lihtne.

Reeglitepaari kasutamine on ilmselt tarbetu, kuid kuna minu loogika muutub keerukamaks, on kasulik neid eraldi hoida, kas ma olen piirkonda sisenemine või sealt lahkumine - ja võib-olla oleks hea mõte lisada valguseandur kuskile võrrandisse, et me ei lülituks asjatult sisse valgus.

Vaatame veel ühte näidet ajastatud reegli loomiseks.

reegel "Treeni igal hommikul" kui Time cron "0 0 8 1/1 *? *" siis harmonyStartActivity ("Exercise") lõpp.

Kord nimetame reeglit, tingimusi, millal see peaks käivituma, ja toiminguid. Kuid sel juhul määratleme ajamustri. Naljakas kood, mida jutumärkides näete, on Quartz Scheduleri CRON-i avaldis (formaat erineb tavalisest CRONtab-ist pisut). ma kasutasin cronmaker.com avaldise loomiseks, kuid üksikasjaliku selgituse ja muude näidete jaoks saate lugeda ka vormingusjuhendit [Pole enam saadaval].

cron generaator
CronMaker.com korrektselt vormindatud Croni avalduse genereerimiseks

Minu reeglid ütlevad lihtsalt: "Igal hommikul igal nädalapäeval kella 8-ni öelge, et mu Harmony Ultimate süsteem käivitaks treeningu". mis omakorda aktiveerib teleri, Xboxi, võimendi ja vajutab minuti pärast nuppu A, et ketas ketta käivitada.

Kahjuks ei saa OpenHAB minu jaoks veel seda harjutust teha.

Veel üks reegel, mida tahan teile näidata, on asi, mida ma kasutan oma kodu õhuniiskuse taseme haldamiseks. Mul on üks õhukuivati, mida vajatakse, kui vaja, ringi liikuda, nii et otsustasin vaadata kõiki oma õhuniiskuse andureid, leida neist kõrgeima ja salvestada selle muutujasse. Praegu käivitatakse see iga minut, kuid seda saab hõlpsalt alla lasta. Vaadake kõigepealt:

impordi org.openhab.core.library.types. * import org.openhab.model.script.actions. * import java.lang. Stringi reegel "Niiskusemonitor" kui Time cron "0 * * * *?" siis var prevHigh = 0 var highHum = "" Õhuniiskus?. liikmed.forEach [hum | logDebug ("niiskus.reeglid", hum.nimi); if (hum.state kui DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("isture.rules ", highHum); postUpdate (õhuniisutaja_vajalik, highHum); lõpp.

Reegli tuum on Õhuniiskus? rida. Niiskus on minu niiskusandurite grupinimi; .liikmed haarab kõik selle grupi üksused; igaühele kordub nende kohal (sellise uudishimuliku nurksulgudega, millega te tõenäoliselt tuttav pole). Reeglite süntaks on Xtendi tuletis, nii et saate lugeda artiklit Xtendi dokumentatsioon kui te ei leia kohanemisnäidet

Tõenäoliselt ei pea te seda tegema - seal on sadu näitereegleid:

  • Reeglite üksikasjalik selgitus ametlikul wikil
  • ametlike reeglite proovid wiki leht
  • Reeglite viimine uutesse kõrgustesse
  • Täpsemad proovid saidil IngeniousFool.net

MQTT OpenHAB-i ja asjade interneti jaoks

MQTT on kerge sõnumsidesüsteem masinatevaheliseks suhtluseks - omamoodi Twitter teie jaoks Arduinose või Vaarikapisiga omavahel rääkida (kuigi loomulikult töötab see palju enamaga kui lihtsalt need). See kogub kiiresti populaarsust ja leiab endale kodu asjade Interneti-seadmetega, mille tase on tavaliselt madal ressursside mikrokontrollerid, mis vajavad usaldusväärset viisi andurite andmete tagasi jaoturisse edastamiseks või puldi vastuvõtmiseks käsud. See on täpselt see, mida me sellega teeme.

Miks aga ratast leiutada?

MQ Telemetry Transport leiutati tagasi 1999. aastal naftajuhtmete ühendamiseks aeglase satelliidi kaudu ühendused, mis on spetsiaalselt loodud aku kasutamise ja ribalaiuse minimeerimiseks, pakkudes samal ajal usaldusväärset andmete edastamine. Aastate jooksul on kujunduspõhimõtted jäänud samaks, kuid kasutusvõimalused on nihkunud spetsialiseeritud manussüsteemidelt üldisele asjade Interneti seadmetele. 2010. aastal vabastati protokoll tasuta, mis on avatud kasutamiseks ja rakendamiseks kõigile. Meile meeldib tasuta.

Teil võib tekkida küsimus, miks me vaevame veel ühe protokolliga - meil on ju juba HTTP juba olemas - mis seda saab saab kasutada kiirsõnumite saatmiseks igasuguste veebis ühendatud süsteemide vahel (nagu OpenHAB ja IFTTT, eriti uuega) tegija kanal IFTTT on nüüd ühendatud ükskõik millega: tutvustatakse tegija kanalitIFTTT potentsiaalsed kasutusalad on lõputud. Kuid siiani on olnud keeruline seda oma riistvaraprojektidega liidestada. Täna on see kõik muutunud. Loe rohkem ). Ja teil oleks õigus. Kuid HTTP-serveri töötlemiskulud on üsna suured - nii palju, et te ei saa serveris hõlpsalt käitada manustatud mikrokontroller nagu Arduino (vähemalt saate, aga teil ei jää millegi jaoks palju mälu muu). MQTT on seevastu kerge, nii et võrgu kaudu sõnumite saatmine ei ummista torusid ja see mahub hõlpsasti meie väikese Arduino mäluruumi.

Kuidas MQTT töötab?

MQTT nõuab nii serverit (nn maakler) kui ka ühte või mitut klienti. Server tegutseb vahendajana, võtab vastu sõnumeid ja edastab neid kõigile huvitatud klientidele.

Jätkame teemaga Twitter-for-masinad analoogia küll. Nii nagu Twitteri kasutajad saavad oma mõttetuid 140 tähemärki piiksutada ja kasutajad saavad teistele kasutajatele kureeritud postituste voogu "jälgida", MQTT-i kliendid saavad tellida kindla kanali, et saada sealt kõiki sõnumeid, ning avaldada sellele ka oma sõnumeid kanal. Sellele avaldamis- ja tellimismustrile viidatakse kui pubi / ala, vastupidiselt traditsioonile klient / server HTTP mudel.

HTTP eeldab, et peaksite jõudma masinasse, kellega suhtlete, ütleme Tere, siis peaksite edasi-tagasi üksteist pidevalt teadvustama, kui andmeid saate või neid sisestate. Pubi / alammenüü korral ei pea avaldamist telliv klient teadma, millised kliendid on tellitud: ta lihtsalt pumpab sõnumid välja ja maakler jaotab need kõigile tellitud klientidele. Iga klient saab teemasid nii avaldada kui ka tellida, nagu ka Twitteri kasutaja.

Erinevalt Twitterist pole MQTT piiratud ainult 140 tähemärgiga. See on andmete agnostiline, nii et saate saata väikseid numbreid või suuri tekstplokke, JSON-vormingus andmegramme või isegi pilte ja binaarfaile.

Asi pole selles, et MQTT oleks kõige jaoks parem kui HTTP - aga see on nii on sobivam, kui meil on kogu majas palju andureid, kes pidevalt aru annavad.

Samuti on oluline teada, et OpenHAB ei tegutse teie MQTT-vahendajana - käsitleme seda natuke hiljem. OpenHAB tegutseb siiski kliendina: see võib avaldada nii teie OpenHAB-i tegevuslogi kui ka siduda need konkreetselt kanalite kaudu seadmetele, nii et teil võib olla näiteks lüliti, mida konkreetsel MQTT-teadetega juhitakse kanal. See on ideaalne anduritest täis maja loomiseks.

Installige Mosquitto oma Pi-le

Ehkki OpenHAB sisaldab MQTT-klienti, nii et saate teema tellida ja ka teateid avaldada, ei tegutse see serverina. Selleks peate kasutama veebipõhist MQTT-maaklerit (tasuline või tasuta) või installima tasuta tarkvara oma Pi-le. Tahaksin hoida seda kõike ettevõttesiseselt, seega olen installinud Mosquitto Pi-le.

Kahjuks on tavalise apt-get'i kaudu saadaval olev versioon täiesti aegunud. Selle asemel lisage uusimad allikad.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key lisada mosquitto-repo.gpg.key. cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list. sudo apt-get install sääsk.

See on kõik, mida peame tegema, et MQTT-server oleks üles töötatud ja töötaks kohalikus võrgus. Teie maakler töötab vaikimisi sadamas 1883.

Kontrollige, kas teie MQTT-server töötab, kasutades tasuta platvormidevahelist MQTT.fx. Uue profiili loomiseks klõpsake seadete ikoonil ja sisestage oma Raspberry Pi IP-aadress või nimi. Salvestage ja klõpsake nuppu Ühenda. Kui paremas ülanurgas asuv väike valgusfoor muutub roheliseks, on teil hea minna.

mqttfxi näidisprofiil

Kiire testi saamiseks klõpsake vahekaarti „telli“ ja tippige inTopic / sisestage tekstikasti, seejärel vajutage nuppu Telli nuppu. Olete nüüd tellinud sõnumi vastuvõtmise teemadel nimega inTopic, ehkki sellel kuvatakse 0 sõnumit. Minge tagasi avaldamise vahekaardile, tippige inTopic väikesesse kasti ja lühike kiri allpool olevasse suuresse tekstikasti. Tulemus Avalda paar korda ja vaadake tagasi tellimise vahekaardile. Teemasse peaks ilmuma mõni teade.

inTopic MQTT test

Enne kui lisame oma võrku mõned tegelikud andurid, peame tundma õppima teematasemeid, mis võimaldavad meil MQTT-võrku struktureerida ja filtreerida. Teemade nimetused on tõstutundlikud, ei tohiks alata tähega $ ega sisaldada tühikut ega muid kui ASCII tähemärke - muutujate nimede standardsed programmeerimispraktikad.

/ Eraldaja tähistab teemataset, mis on hierarhiline, näiteks järgmised on kõik kehtivad teematasemed.

inTopic / smallSubdivision / evenSmallerSubdivision. myHome / livingRoom / temperatuur. myHome / livingRoom / niiskus. myHome / köök / temperatuur. myHome / köök / õhuniiskus

Juba siis peaksite nägema, kuidas see puustruktuur sobib ideaalselt andureid ja seadmeid täis nutika kodu jaoks. Parimate tavadena ühes ruumis mitme anduriga kasutamiseks on iga anduri muutuja avaldamine vastavalt oma teema tasemele - hargnema konkreetsemaks (nagu ülaltoodud näidetes) - selle asemel, et proovida mitut tüüpi andureid ühe ja samaga avaldada kanal.

Kliendid saavad seejärel avaldada või tellida suvalise arvu üksikute teematasemete või kasutada mõnda erilist metamärki, et filtreerida puust kõrgemale.

+ Metamärk asendab ükskõik millist teemataset. Näiteks:

myHome / + / temperatuur

telliks kliendi mõlemad

myHome / livingRoom / temperatuur. myHome / köök / temperatuur

… Aga mitte niiskuse taset.

# On mitmetasandiline metamärk, nii et saate LivingRoomi sensori massiivist midagi tuua:

myHome / livingRoom / #

Tehniliselt saate tellida ka juurtaseme #, mille abil saate absoluutselt kõik toimuva maaklerist läbi minnes, kuid see võib olla nagu tuletõrjevooliku kleepimine näkku: natuke üleolev. Proovige ühendada HiveMQ-st avaliku MQTT-maakleriga ja tellida #. Sain mõne sekundi jooksul umbes 300 sõnumit, enne kui klient lihtsalt kukkus.

MQTT algaja näpunäide: “/myHome/” on erinev teema kui “minu kodu/" - kaldkriipsu lisamine alguses loob tühja teema taseme, mida on küll tehniliselt kehtiv, kuid ei soovitata, kuna see võib tekitada segadust.

Nüüd, kui me teooriat teame, lähme koos Arduino, Ethernet Shieldi ja DHT11 temperatuuri- ja niiskuseanduriga - olete arvatavasti oma stardikomplektis ühe, kuid kui ei, siis vahetage lihtsalt keskkonnaandur liikumisanduri (või isegi nuppu).

MQTT avaldamine Arduinost Ethernetiühendusega

Kui teil on sisseehitatud WiFi või Ethernetiga hübriid-Arduino-ühilduv seade, peaks see ka töötama. Lõpuks tahame paremat / odavamat suhtlusviisi, kui kasutada võrguühendust igas toas, kuid see aitab õppida põhitõdesid.

Alustage allalaadimisega pubiklubi raamatukogu Githubist. Kui olete kasutanud nuppu Laadi alla ZIP-na, on struktuur pisut vale. Paki pakk lahti, nimeta kaust ümber lihtsalt õiglaseks pubiklient, siis eemaldage need kaks faili kataloogist src kausta ja liigutage need ühe taseme võrra üleslaaditud kausta juurini üles. Seejärel teisaldage kogu kaust kausta Arduino / raamatukogud kataloog.

Siin on minu näidiskood, mida saate kohandada: DHT11 signaali väljund on 7. pin. Muutke oma Pi serveri IP-d järgmisel real:

klient.setServer ("192.168.1.99", 1883);

Kahjuks ei saa me seda sõbralikku nime kasutada (Minu puhul OpenHAB.local) kuna Arduino TCP / IP-pinu on väga lihtsustatud ja Bonjouri nime määramise koodi lisamine oleks palju mälu, mida me ei taha raisata. Teemade muutmiseks, millel andurite andmeid levitatakse, liikuge allapoole järgmiste ridadeni:

söepuhver [10]; dtostrf (t, 0, 0, puhver); klient.publish ("openhab / himitsu / temperatuur", puhver); dtostrf (h, 0, 0, puhver); klient.publish ("openhab / himitsu / niiskus", puhver);

Kood sisaldab ka käskluse kanali tellimist. Leidke ja kohandage järgmine rida:

klient.subscribe ("openhab / himitsu / käsk");

Uurige seal olevat koodi ja näete, et saate hõlpsalt LED-i või releed juhtida, saates käsklusi konkreetsetele kanalitele. Näitekoodis saadab see lihtsalt teate tagasi, kinnitades käsu saamist.

Laadige oma kood üles, ühendage Arduino võrku ja tellige MQTT.fx kasutades mõlemat # või openhab / himitsu / # (või mida iganes te ruumi nime muutisite, kuid ärge unustage lisada lõppu #). Üsna pea peaksite nägema sõnumite saabumist; ja kui saadate käsuteemasse SISSE või VÄLJA, näete ka kinnitusi tulemas.

mqtt arduino sõnumid tulevad tagasi

MQTT sidumine OpenHAB-i jaoks

Viimane samm võrrandis on selle konsoolimine OpenHAB-i. Selleks vajame muidugi köitmist.

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

Sidumise lubamiseks muutke konfiguratsioonifaili.

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

Taaskäivitage OpenHAB

sudo teenuse openhab taaskäivitamine

Seejärel lisame üksuse või kaks:

/ * MQTT andurid * / Number Himitsu_Temp "Himitsu temperatuur [% .1f ° C]"(Himitsu, temperatuur) {mqtt = " (Himitsu, õhuniiskus) {mqtt = "

Nüüdseks peaksite vormingust aru saama; see saab a Number üksus MQTT-i köites, määratletud teemal. See on lihtne näide, võite viidata viki lehele, kus see asub saab palju keerukamaks.

Palju õnne, nüüd on teil odava Arduino-põhise andurite massiivi alus. Vaatame seda tulevikus uuesti üle ja paneme arduinode enda täiesti eraldi raadiosidevõrku. Olen loonud ka identse versiooni Wizwiki 7500 tahvlite jaoks kui teil juhtub olema üks neist.

Püsivuse ja graafikute andmed

Nüüdseks olete tõenäoliselt hunniku andureid üles seadnud, olgu siis Z-Wave'ist või kohandatud Arduinost MQTT-d käimas - nii et teie saate igal ajal vaadata nende andurite hetkeseisu ja peaksite ka reageerima nende väärtusele reeglid. Kuid andurite väärtuste juures on huvitav see, et need aja jooksul muutuvad: siin tulevad püsivus ja graafikud. Püsivus tähendab OpenHAB-is andmete salvestamist aja jooksul. Liigume edasi ja häälestage RRD4J (Java ümardatud andmebaas), nii et andmed salvestatakse ümarkujul - vanemad andmed visatakse andmebaasi mahu tihendamiseks ära.

Installige rrd4j paketid järgmiste käskudega.

sudo apt-get install openhab-addon-püsivus-rrd4j. sudo chown -hR openhab: openhab / usr / share / openhab. 

Seejärel looge uus fail nimega rrd4j.persist sisse koosseisud / püsivus kausta. Kleebi järgmine:

Strateegiad {everyMinute: "0 * * * *?" everyHour: "0 0 * * *?" everyDay: "0 0 0 * *?" vaikimisi = everyChange. } Üksused {// püsivad kõik, kui väärtus on värskendatud, ainult vaikimisi, ja taastage need käivitamisel andmebaasist *: strateegia = everyChange, restoOnStartup // Järgmisena määratleme iga tunni konkreetsed strateegiad rühmas temperatuuride jaoks ja iga minut niiskuse temperatuuri jaoks *: strateegia = everyHour Humidity *: strateegia = everyMinute // alternatiivina võite siia lisada konkreetseid üksusi, näiteks // Magamistuba_niiskus, JamesInOffice: strateegia = iga minut. }

Selle faili esimeses osas määratleme strateegiad, mis tähendab lihtsalt CRON-i avaldusele nime andmist. See on sama, mida me juba tegime Minuga. OpenHAB, kuid seekord loome mõned uued strateegiad, mida saame kasutada iga päev, iga tund ja iga minut. Ma pole neid kõiki veel kasutanud, kuid võin tulevikus olla.

Faili teises pooles ütleme rr4dj-le, millised andmeväärtused salvestada. Vaikimisi salvestame iga kord, kui seda värskendatakse, kõike, kuid olen ka konkreetsete andurite jaoks täpsustanud mõned ajapõhised strateegiad. Temperatuurid, millest ma eriti ei vaeva, otsustasin säästa ainult iga tundi, kuid niiskus on minu jaoks suur mure, seetõttu tahan näha, kuidas see iga minut muutub. Kui on veel muid andmeid, mida soovite kindlatel kellaaegadel salvestada, lisage need siia nüüd või kohandage vastavalt vajadusele.

Märkus. Kui soovite andmeid ka graafiliselt graafida, siis peate neid vähemalt kord minutis salvestama. Pole tähtis, kas teie anduri andmeid isegi nii kiiresti värskendatakse, peate lihtsalt ütlema rr4dj-le, et see kord minut salvestaks.

Selle määratlemisel peaksite nägema mõnda silumisväljundit, mis ütleb teile, et väärtusi hoitakse.

rrd4j andmete salvestamine

Järgmisena tehkem kõigist nendest andmetest ilusad graafikud. See on tõesti lihtne. Üksiku anduri graafiku koostamiseks lisage oma saidi kaardile järgmine teave:

Diagrammi üksus = Magamistoa_niiskusperiood = h

See on sõna otseses mõttes kõik, mida vajate. Perioodi kehtivad väärtused on h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; peaks olema selge, mida need tähendavad. Kui vaikimisi pole täpsustatud, on see vaikimisi väärtuseks D terve päeva andmetele.

Mitme elemendiga graafiku koostamiseks joonistage selle asemel lihtsalt rühma nimi:

Diagrammi üksus = õhuniiskuse periood = h
diagramm

Samuti võiksite teada saada, et saate seda graafikut kasutada mujal; genereerib pildi järgmise URL-i abil: http://YOUROPENHABURL: 8080 / diagramm? rühmad = niiskus ja periood = h

Kuidas läheb Teie Kas OpenHAB-i süsteem on tulemas?

See on juhendi selle osa jaoks, kuid ärge arvake, et see on viimane kord, kui te kuulete meilt OpenHAB-i kohta. Loodetavasti on see ja algaja juhend andnud teile kindla aluse oma täieliku OpenHAB-süsteemi väljatöötamiseks - kuid see on protsess, mis pole kunagi lõpuni jõudnud.

Õnneks saab OpenHAB hõlpsalt skaleerida mõnest seadmest sadadesse, lihtsast reegli keerukusest kuni koduautomaatika lõpuni - niisiis, kuidas teie süsteem kaasa tuleb? Millised seadmed valisite? Mis on järgmine suur projekt, millega kavatsete tegeleda?

Räägime kommentaarides - ja kui leiate, et see juhend on kasulik, klõpsake neid jagamisnuppe, et öelda oma sõpradele, kuidas ka nemad saavad oma OpenHAB-süsteemi häälestada.

Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.