Oglas

Brezplačno ne pomeni vedno »ni tako dobro kot plačano« in OpenHAB ni izjema. Odprta programska oprema za domačo avtomatizacijo daleč presega zmogljivosti katerega koli drugega sistema za avtomatizacijo doma na trgu - vendar ga ni enostavno nastaviti. V resnici je lahko naravnost frustrirajoče.

Ta vodnik je na voljo za prenos kot brezplačen PDF. Prenesite vodnik za začetnike OpenHAB 2. del: ZWave, MQTT, Pravila in grafikoni. Če želite kopirati in deliti to s svojimi prijatelji in družino, vas prosimo, da to kopirate in delite.

V prvem delu vodiča sem vas sprehodil skozi namestitev OpenHAB na Raspberry Pi Uvod v OpenHAB domačo avtomatizacijo na Raspberry PiOpenHAB je zrela, odprtokodna platforma za avtomatizacijo doma, ki deluje na različni strojni opremi in je protokol agnostik, kar pomeni, da se lahko poveže s skoraj katero koli strojno opremo za avtomatizacijo doma na trgu danes. Preberi več , predstavila osnovne koncepte OpenHAB-a in vam pokazala, kako lahko dodate svoje prve elemente v sistem. Danes bomo šli naprej:

  • Dodajanje ZWave naprav
  • Dodajanje regulatorja Harmony Ultimate
  • Uvedba pravil
  • Predstavljamo MQTT in namestimo posrednika MQTT na vaš Pi s senzorji na Arduino
  • Zapisovanje podatkov in graviranje

Uvod v Z-Wave

Z-Wave je bil dolga leta prevladujoč protokol za avtomatizacijo doma: zanesljiv je, obsežno razvit in deluje v veliko daljšem obsegu kot kateri koli drug izdelek pametnega doma. Na voljo vam je na stotine senzorjev Z-Wave, ki opravljajo širok nabor nalog. OpenHAB lahko delajte z Z-Waveom, vendar ga je težko postaviti, zanesljivost pa ni zagotovljena.

Če razmišljate o nakupu hiše, polne senzorjev Z-Wave, posebej za uporabo z OpenHAB, vas prosim, da ponovno razmislite. Morda se vam bo izkazalo odlično ali pa vas bodo mučile majhne, ​​a vztrajne težave. Vsaj ne kupujte hiše, polne senzorjev, dokler jih nekaj ne preizkusite. Edini razlog, da izberete Z-Wave, je, če niste 100% ustaljeni na OpenHAB in želite v prihodnosti pustiti svoje možnosti odprte: Z-Wave na primer deluje z Samsung SmartThings Kateri pametni center za avtomatizacijo doma je najboljši za vas?Nekaj ​​časa so ljudje o tej zamisli razmišljali le kot za trik, vendar so zadnje izdaje izdelkov pokazale, da avtomatizacija pametnih domov začenja izpolnjevati svoje obljube. Preberi več vozlišče, kot tudi zvezde, specifične za Z-Wave, kot je Homeseer, in številne druge programske možnosti, kot so Domoticz.

Čeprav OpenHAB vključuje vezavo Z-Wave, morate to še vedno storiti najprej konfigurirajte omrežje Z-Wave, preden jo OpenHAB začne iskati po podatkih. Če imate nadzorno ploščo Rasberry, imate na voljo nekaj programske opreme za konfiguriranje omrežja, zato tega ne bomo pokrivali. Če ste kupili Aeotec USB Z-Stick krmilnik ali podobno, verjetno nimate nobene programske opreme, zato preberite dalje.

Aeotec Z-Stick Gen5, USB Z-Wave Plus za ustvarjanje prehodaAeotec Z-Stick Gen5, USB Z-Wave Plus za ustvarjanje prehoda Kupite zdaj na Amazonu $44.95

Če že imate nastavitev omrežja Z-Wave, lahko krmilnik preprosto priključite na Pi in začnete konfigurirati vezavo in elemente. Če je to vaš prvi korak v Z-Wave, je malo bolj zapleten.

Najprej na strani strojne opreme: vsak krmilnik ima svoj način združevanja z napravami (tehnično znan kot "način vključevanja", v katerem je dodeljen ID vozlišča). V primeru Aotec Z-Stick to pomeni, da ga izklopite iz USB vhoda in enkrat pritisnete gumb, da ga prestavite v način vključevanja. Nato jo približite napravi, ki jo združite, in na njej pritisnite tudi gumb za vključitev (to se tudi razlikuje: moja Everspring vtičnica zahteva, da gumb hitro pritisnete trikrat, zato je lekcija tu, da preberete priročnik za svojo napravo).

Kratko utripa Z-Stick, kar kaže na uspeh. To predstavlja težave pri vklopu nazaj v Pi, saj je dodeljeno novo pristanišče. Znova zaženite Pi, da se ponastavi nazaj na standardna vrata, če ugotovite, da je bilo dinamično prerazporejeno drugo. Še bolje: ne vključite ga v Pi, dokler najprej ne opravite vseh sklopov strojne opreme.

Namestitev HABmin in Z-Wave vezi

Ker OpenHAB v resnici ni pripomoček za konfiguracijo za Z-Wave, bomo namestili drugo orodje za spletno upravljanje, ki deluje - nekaj, kar imenujemo HABmin. Pojdite na to HABmin Github odlagališče prenesite trenutno različico. Ko ga odprete, boste našli 2 .jar datoteke v imeniku addons - te naj bodo v ustreznem imeniku addons v vaši skupni rabi OpenHAB Home (če uporabljate tudi A-Atec gen5 Z-Stick, se prepričajte, da imate vsaj različico 1.8 vezave Z-Wave).

Nato ustvarite novo mapo v imeniku webapps in jo poimenujete "habmin" (pomembna je mala črka). Preostanek prenesenih datotek kopirajte tja.

Opomba: Obstaja tudi HABmin 2 v aktivnem razvoju. Namestitev je skoraj enaka, vendar z enim dodatnim .jar dodatkom. Morda bi bilo vredno poskusiti oboje, samo da bi videli, kaj imate najraje.

Če še niste, vklopite krmilnik v Pi. Vnesite naslednje za iskanje pravilnih vrat.

ls / dev / tty *

Iščete karkoli z USB v imenu, ali v mojem posebnem primeru, se je palica Z predstavila kot /dev/ttyACM0 (modem). Morda je lažje narediti ukaz enkrat, preden ga vklopite, in enkrat po tem, tako da boste videli, kaj se spremeni, če niste prepričani.

devty

Odprite konfiguracijsko datoteko OpenHAB in spremenite razdelek na Z-Wave, pri čemer komentirate obe vrstici in vstavite dejanski naslov naprave. Zadnji korak zame je bil, da uporabniku OpenHAB omogočim dostop do modema.

sudo usermod -a -G dialout openhab

Zdaj, da začnete vse delovati, znova zaženite OpenHAB

ponovno zaženite sudo storitev openhab

Upajmo, da če preverjate dnevnik napak, boste videli nekaj takega. Čestitamo, zdaj govorite Z-Wave. Morda boste našli tudi dnevnik napak, preplavljen s sporočili različnih vozlišč Z-Wave. Začnimo s preverjanjem HABMIN, da vidimo, kaj je bilo ugotovljeno: http://openhab.local: 8080 / habmin / index.html (nadomešča openhab.local z vašim imenom gostitelja Raspberry Pi ali IP-naslovom).

zwave se zažene v dnevniku openhab

V HABMIN-u je veliko videti, toda samo resnično se ukvarjamo s Konfiguracija -> Vezi -> Z-val -> Naprave zavihek, kot lahko vidite spodaj. Razširite vozlišče, če želite urediti lokacijo in ime nalepke za lažje navajanje.

uredite ime naprave

Konfiguriranje elementov Z-Wave

Vsaka naprava Z-Wave ima določeno konfiguracijo za OpenHAB. Na srečo je večina naprav že raziskana in tam bodo že bili primeri za vaše. Konfiguriranje naprav po meri, ki jih ne prepoznamo, precej presega področje uporabe tega priročnika, vendar predpostavimo, da je za zdaj podprto.

Najprej imam v vozlišču 3 osnovno stikalo in merilnik moči Everspring AN158. Hiter Googling me je pripeljal do spletnega dnevnika na Wetwa.re z vzorčno konfiguracijo. To sem prilagodil na naslednji način:

Preklopite Dehumidifier_Switch "Dehumidifier" {zwave = "3: ukaz = switch_binary"} Število Dehumidifier_Watts "Poraba energije razvlaževalnika [% .1f W]" {zwave = "3: ukaz = meter"}

Popolno.

Naslednji je multi-senzor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 multi-senzor (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 multi-senzor (Z-Wave Plus) Kupite zdaj na Amazonu $69.27

Za to sem našel vzorec config pri iwasdot.com, in moj multisenzor je v vozlišču 2.

Številka Hodnik_Temperatura "Temperatura hodnika [% .1f ° C]" (Hodnik, temperatura) {zwave = "2: 0: ukaz = senzor_multilevel, senzor_tip = 1, senzor_scale = 0"} Številka Hodnik_Vlažnost "Vlažnost hodnika [% .0f %%]" (Hodnik, Vlažnost) {zwave = "2: 0: ukaz = senzor_multilevel, senzor_tip = 5"} Številka Hallway_Luminance "Svetilnost hodnika [% .0f Lux]" (Hodnik) {zwave = "2: 0: ukaz = sensor_multilevel, sensor_type = 3"} Kontaktirajte Hallway_Motion "Hallway Motion [% s]" (hodnik, gibanje) {zwave = "2: 0: ukaz = senzor_binar, odzivi_to_basic = res"} Številčni senzor_1_baterija "Baterija [% s %%]" (gibanje) {zwave = "2: 0: ukaz = baterija"}

Če se vam zdi oblika tega čudna, se vrnite na prvo priročnik za začetnike Uvod v OpenHAB domačo avtomatizacijo na Raspberry PiOpenHAB je zrela, odprtokodna platforma za avtomatizacijo doma, ki deluje na različni strojni opremi in je protokol agnostik, kar pomeni, da se lahko poveže s skoraj katero koli strojno opremo za avtomatizacijo doma na trgu danes. Preberi več , natančneje odsek za zavezo Hue, kjer razlagam, kako so dodani elementi. Verjetno boste verjetno morali kopirati le take primere, vendar v primeru, da imate novo napravo, je v zavezujoči dokumentaciji podrobno opisano vse ukazi.

Logitech Harmonija Vezava

Preden se lotimo pravil, sem želel dodati kratko opombo o delu z zavezanostjo Harmonija. Sem velik oboževalec Harmonija serije vrhunskih daljincev Logitech Harmony Ultimate pregled in oddajaV dnevni sobi je kaos - priznajte. Odpuščeni ste, ker se sprašujete, kateri daljinski upravljalnik, katero napravo. Kaj pa televizor, ojačevalnik, TiVO, predvajalnik BluRay, morda celo dejavnosti preklopa osvetlitve postanejo dolge ... Preberi več poenostaviti izkušnjo domačega medijskega centra, vendar pogosto nastopajo kot ločen sistem znotraj pametnega doma. Z OpenHAB so dejavnosti Logitech Harmony in popoln nadzor naprav zdaj del vašega centraliziranega sistema in celo vključene v pravila za avtomatizacijo.

Začnite z namestitvijo treh zavezujočih datotek, ki jih najdete s pomočjo apt-cacheja za iskanje »harmonije«:

openhab apt-cache iskanje zavezujoče harmonije

Ne pozabi chown po končani povezavi znova povezave:

sudo apt-namestite namestitev openhab-addon-action-harmonyhub. sudo apt-namestite namestitev openhab-addon -inding-harmhub. sudo apt-get install openhab-addon-io-harmonyhub. sudo chown -hR openhab: openhab / usr / share / openhab

Če želite konfigurirati vezavo, odprite datoteko openhab.cfg in dodajte nov razdelek na naslednji način:

########## HARMONY DEMOTE CONTROLS ########### harmonyhub: gostitelj = 192.168.1.181ali vaš ip
harmonyhub: uporabniško ime =prijava na vašo harmonijo in e-pošto
harmhub: geslo =Vaše geslo

IP naslov je vaš vozlišče Harmony. Če želite to ugotoviti, uporabite omrežni optični bralnik. Prav tako boste morali vnesti svoje podatke za prijavo, tiste, ki jih vnesete, ko zaženete standardni pripomoček za konfiguracijo Harmony. To je to. Po ponovnem zagonu vašega Hueja bi moral dnevnik za odpravljanje napak nenadoma pobegniti izhod iz vezave.

To je seznam vseh vaših dejavnosti, naprav in ukazov, ki jih je mogoče poslati v formatu JSON. Dobro je, da to kopirate za nadaljnjo uporabo. lahko olajšate branje z zložljivimi vozlišči, tako da jih prilepite v spletni formati JSON kot je ta.

json formatiran izhod openhab

Tako kot standardna aktivnost PowerOff, ki je privzeta, boste tukaj našli svoje lastne definirane dejavnosti, navedene tukaj po imenu. Zdaj bomo ustvarili preprost nadzor z enim gumbom za začetek dejavnosti. Najprej v datoteko s predmeti dodajte naslednjo vrstico. Če želite, spremenite skupino in ikono.

/ * Vozlišče Harmony * / Niz Harmony_Activity "Harmonija [% s]" (Living_Room) {harmonyhub = "* [trenutna dejavnost]"}

To je a dvosmerna vrvicna vezava, ki je sposoben prejeti trenutno aktivnost in ukazati trenutni dejavnosti, da je nekaj drugega. Zdaj lahko v datoteki z zemljevidom izdelamo gumb zanjo.

Preklopite element = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Vaja', 13858434 = 'TV', Karaoke = 'Karaoke']

V oglatem oklepaju boste videli vsako dejavnost skupaj z oznako. Na splošno se lahko nanašate na dejavnosti, kot ste jih poimenovali na daljinskem upravljalniku, razen izjeme od tega, kar sem ugotovil, je bilo karkoli s presledkom v imenu dejavnosti, na primer "Gledanje televizije". V tem primeru boste morali uporabiti ID dejavnosti. Ponovno lahko najdete ID v izhodu za odpravljanje napak JSON. Če shranite in osvežite svoj vmesnik, bi morali videti nekaj podobnega:

odprtost harmonije v zemljevidu mesta

Lahko se sklicujete tudi na dejavnosti v svojih pravilih, kot bomo videli naprej. Za več informacij o strani preberite wiki stran Harmonija zavezujoča.

Splošni uvod v pravila

Večina pametnih domačih središč vključuje nekakšno oblikovanje pravil, tako da se lahko samodejno odzovete na podatke senzorjev in dogodke v domu. Pravzaprav trdim, da resnično pameten dom ni tisti, ki bi ga morali porabiti za interakcijo z mobilnimi aplikacijami - to je končni uporabnik, ki je neviden in popolnoma avtomatiziran. V ta namen OpenHAB vključuje tudi močan skriptni jezik pravil, ki ga lahko programirate, kar precej presega kompleksnost večine pametna domača središča Battle of Pametna vozlišča: Kaj je tam in kaj prihaja? Preberi več ali IFTTT recepti IFTTT se zdaj poveže s čimerkoli: predstavimo kanal za izdelovalcePotencialne uporabe IFTTT so neskončne. Toda doslej ga je bilo težko povezati z lastnimi projekti strojne opreme. Danes se je to vse spremenilo. Preberi več .

Pravila programiranja zvenijo slabše, kot je. Začnimo preprosto s parimi pravili, ki luč vklopijo ali izklopijo, odvisno od senzorja prisotnosti:

pravilo "Lučka v pisarni, ko je James prisoten" ko se je postavka JamesInOffice spremenila iz OFF v ON. nato pošljiCommand (Office_Hue, ON) končno pravilo "Luč v pisarni ugasne, ko James odide" ko se je postavka JamesInOffice spremenila iz ON v OFF. nato pošljiCommand (Office_Hue, OFF) konec

Najprej poimenujemo pravilo - bodite opisni, tako da veste, za kakšen dogodek strelja. Nato določimo naše preprosto pravilo z besedami kadar je x res, potem naredite y. End pomeni zaprtje tega določenega pravila. Obstaja več posebnih besed, ki jih lahko uporabite v pravilih, vendar za zdaj imamo opravka z dvema preprostima bitjema sintakse - Postavka, ki omogoča poizvedovanje o stanju nečesa; in sendCommand, kar počne točno tisto, kar mislite, da bo. Rekel sem ti, da je to enostavno.

Verjetno ni potrebno uporabljati par pravil, toda ko se moja logika bolj zaplete, bo koristno, da jih ločim, ali sem vstop ali zapustitev območja - in morda bi bilo dobro, da bi nekje v enačbo dodali senzor svetlobe, da se ne bi po nepotrebnem vklopili luči.

Poglejmo si še en primer za ustvarjanje načrtovanega pravila.

pravilo "Vadite vsako jutro" kdaj Čas kron "0 0 8 1/1 *? *" nato harmonijaStartActivity ("vadba") konec.

Ponovno poimenujemo pravilo, navajamo pogoje, ko mora streljati, in ukrepe, ki jih je treba izvesti. V tem primeru pa definiramo časovni vzorec. Zabavna koda, ki jo vidite v navednicah, je izraz CRON za Quartz Scheduler (oblika je nekoliko drugačna od običajne CRONtab). uporabil sem cronmaker.com pomagate pri ustvarjanju izraza, vendar si lahko za podrobno razlago in več primerov preberete tudi vodnik po obliki [Ni več na voljo].

kron generator
CronMaker.com uporablja za ustvarjanje pravilno oblikovanega izraza Cron

Moja pravila pravijo preprosto: "8.00 zjutraj, vsak dan v tednu, povejte mojemu sistemu Harmony Ultimate, da začne telovaditi", ki nato aktivira televizor, Xbox, ojačevalnik in po minuti pritisne gumb A, da zažene disk v pogon.

Na žalost OpenHAB še ni sposoben narediti vaje zame.

Še eno pravilo, ki vam ga želim pokazati, je nekaj, kar uporabljam za upravljanje ravni vlažnosti v svojem domu. Imam en sam razvlaževalec zraka, ki ga moram premikati, kjer koli je potrebno, zato sem se odločil, da si pogledam vse svoje senzorje vlažnosti, poiščem, kateri je najvišji, in ga shranim v spremenljivko. Trenutno se sproži vsako minuto, vendar ga je mogoče enostavno spustiti. Oglejte si najprej:

uvoz org.openhab.core.library.types. * uvoz org.openhab.model.script.action. * import java.lang. Pravilo niza "Monitor vlažnosti" ko je Time cron "0 * * * *?" potem var prevHigh = 0 var highHum = "" Vlažnost? .members.forEach [hum | logDebug ("vlažnost.rules", hum.name); if (hum.state kot DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("vlažnost.v.drugi", highHum); postUpdate (Dehumidifier_Needed, highHum); konec.

Jedro pravila je v Vlažnost? črta. Vlažnost je skupinsko ime za moje senzorje vlažnosti; .člani zgrabi vse predmete v tej skupini; za vsakogar ponavlja nad njimi (z radovednim formatom oklepaja, ki ga verjetno ne poznate). Sintaksa pravil je izpeljanka Xtenda, zato lahko berete Xtend dokumentacija če ne najdete primera za prilagajanje.

Verjetno vam tega ne bo treba - tam je na stotine primernih pravil:

  • Podrobna razlaga pravil na uradnem wikiju
  • The uradni vzorci pravil wiki stran
  • Upoštevanje pravil na nove višine
  • Napredni vzorci na IngeniousFool.net

MQTT za OpenHAB in Internet of Things

MQTT je lahek sistem za sporočanje za komunikacijo med strojem - nekakšen Twitter za vaše Arduinos ali malina Pis, da se pogovarjata med seboj (čeprav seveda deluje z veliko več kot le tiste). Hitro pridobiva na priljubljenosti in najde si dom z napravami Internet of Things, ki so običajno nizke mikrokrmilniki virov, ki potrebujejo zanesljiv način prenosa podatkov senzorjev nazaj na središče ali sprejemanje na daljavo ukazi. Točno to bomo storili z njo.

Toda zakaj izumiti kolo?

MQ Telemetry Transport je bil izumljen že leta 1999 za povezavo naftovodov s pomočjo počasnega satelita povezave, posebej zasnovane za zmanjšanje porabe baterije in pasovne širine, hkrati pa zagotavljajo zanesljive dostava podatkov. Z leti so načela oblikovanja ostala enaka, vendar je primer uporabe prešel iz specializiranih vgrajenih sistemov na splošne naprave interneta stvari. Leta 2010 je bil protokol objavljen brezplačno, odprt za uporabo in izvajanje vseh. Radi imamo zastonj.

Morda se sprašujete, zakaj se sploh trudimo s še enim protokolom - navsezadnje že imamo HTTP - ki lahko se lahko uporablja za pošiljanje hitrih sporočil med vsemi sistemi, ki so povezani s spletom (na primer OpenHAB in IFTTT, zlasti z novimi kanal za izdelovalce IFTTT se zdaj poveže s čimerkoli: predstavimo kanal za izdelovalcePotencialne uporabe IFTTT so neskončne. Toda doslej ga je bilo težko povezati z lastnimi projekti strojne opreme. Danes se je to vse spremenilo. Preberi več ). In imeli bi prav. Vendar je obdelovalni stroški strežnika HTTP precej velik - toliko, da ga ne morete preprosto zagnati na strežniku vgrajen mikrokontroler kot je Arduino (vsaj lahko, vendar ne boš imel ničesar spomina za karkoli drugo). MQTT pa je lahka, zato pošiljanje sporočil po vašem omrežju ne bo zamašilo cevi in ​​se zlahka prilega v naš mali Arduinov spominski prostor.

Kako deluje MQTT?

MQTT potrebuje strežnik (imenovan „posrednik“) in enega ali več odjemalcev. Strežnik deluje kot posrednik, sprejema sporočila in jih prenaša na vse zainteresirane stranke.

Nadaljujmo z Twitter-za-stroje analogija, čeprav. Tako kot lahko uporabniki Twitterja svoje lastne nesmiselne 140 znakov tvitnejo, tako lahko uporabniki "spremljajo" druge uporabnike, da si ogledajo izbran tok objav, Odjemalci MQTT se lahko naročijo na določen kanal, da od tam prejmejo vsa sporočila, pa tudi nanj objavijo svoja sporočila kanal. Ta vzorec objave in naročanja se imenuje pub / sub, v nasprotju s tradicijo odjemalec / strežnik model HTTP.

HTTP zahteva, da se obrnete na napravo, s katero komunicirate, recimo Pozdravljeni, nato pa si privoščite, da se med seboj nenehno priznavate, ko dobivate ali postavljate podatke. Odjemalcu Pub / sub naročniku, ki se ukvarja z objavo, ni treba vedeti, katere stranke so naročene: zgolj izčrpava sporočila in posrednik jih prerazporedi vsem naročnikom. Vsaka stranka lahko objavlja in se naroči na teme, tako kot uporabnik Twitterja.

Za razliko od Twitterja pa MQTT ni omejen na 140 znakov. To je agnostic podatkov, zato lahko pošiljate majhne številke ali velike besedilne bloke, datagrame v formatu JSON ali celo slike in binarne datoteke.

Ne gre za to, da je MQTT boljši od HTTP za vse - ampak je je bolj primerno, če bomo imeli veliko senzorjev po hiši, ki se neprestano prijavljajo.

Pomembno je tudi vedeti, da OpenHAB ne bo deloval kot vaš MQTT posrednik - na to bomo odgovorili pozneje. Vendar bo OpenHAB deloval kot odjemalec: lahko objavi dnevnik dejavnosti OpenHAB in tudi posebej poveže kanale do naprav, tako da lahko na primer imate stikalo, ki ga določena sporočila MQTT nadzirajo kanal. To je idealno za ustvarjanje hiše, polne senzorjev.

Namestite Mosquitto na svoj Pi

Čeprav OpenHAB vključuje odjemalca MQTT, tako da se lahko naročite na temo in tudi objavite sporočila, ne bo deloval kot strežnik. Za to morate bodisi uporabiti spletni posrednik MQTT (plačan ali brezplačen) ali namestiti brezplačno programsko opremo na svoj Pi. Rad bi vse to ohranil v svoji hiši, zato sem namestil Mosquitto na Pi.

Na žalost je različica, ki je na voljo prek običajnega programa apt-get, popolnoma zastarela. Namesto tega dodajmo najnovejše vire.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key dodaj mosquitto-repo.gpg.key. cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list. sudo apt-get namestite komarček.

To je vse, kar moramo storiti, da strežnik MQTT deluje in deluje v lokalnem omrežju. Vaš posrednik privzeto deluje na portalu 1883.

Preverite, ali vaš strežnik MQTT deluje z uporabo brezplačnega MQTT.fx, ki je medvrstni. Kliknite ikono nastavitev, da ustvarite nov profil in vnesite IP-naslov ali ime vašega Raspberry Pi. Shranite in pritisnite na povezavo. Če semafor v zgornjem desnem konu sveti zeleno, je dobro, da greste.

mqttfx primer profila

Za hiter preizkus kliknite na jeziček »naročite se« in vnesite inTopic / v besedilno polje, nato pritisnite na Naročite se gumb. Zdaj ste naročeni na prejemanje sporočil o temi z imenom inTopic, čeprav bo v njej prikazanih 0 sporočil. Vrnite se na zavihek za objavo, v majhno polje vnesite inTopic in spodaj v veliko besedilno polje. Hit Objavi nekajkrat poglejte nazaj na zavihek naročnine. V tej temi bi morali videti nekaj sporočil.

inTopic MQTT test

Preden v svoje omrežje dodamo nekaj dejanskih senzorjev, se moramo naučiti o nivojih tem, ki nam omogočajo strukturo in filtriranje omrežja MQTT. Imena tem so odvisna od velikih in malih črk, ne smejo se začeti z $ ali ne vsebujejo presledka ali znakov, ki niso ASCII.

Ločevalnik / označuje raven teme, ki je hierarhična, na primer naslednje so vse veljavne ravni teme.

inTopic / smallSubdivision / evenSmallerSubdivision. myHome / livingRoom / temperatura. myHome / livingRoom / vlažnost. myHome / kuhinja / temperatura. moj dom / kuhinja / vlaga

Že zdaj bi morali videti, kako je ta drevesna struktura kot nalašč za pameten dom, poln senzorjev in naprav. Najboljša praksa za uporabo z več senzorji v eni sobi je objavljanje vsake spremenljivke senzorja glede na lastno raven teme - razvejajte se do več specifičnosti (kot v zgornjih primerih) - namesto da poskušate objaviti več vrst senzorjev istemu kanal.

Stranke lahko nato objavijo ali se naročijo na poljubno število ravni posameznih tem ali uporabijo posebne posebne znake, s katerimi filtrirajo od višjega drevesa.

Nadomestni znak + nadomešča katero koli raven teme. Na primer:

myHome / + / temperatura

bi naročnika naročil obema

myHome / livingRoom / temperatura. myHome / kuhinja / temperatura

… Vendar ne ravni vlage.

# Je večstopenjski nadomestni znak, tako da lahko s senzorja živih vrvi dobite karkoli z:

myHome / livingRoom / #

Tehnično se lahko tudi naročite na korensko raven #, s katero dosežete, da vse poteka skozi posrednika, toda to je lahko, kot da bi vam v obraz zataknili požarno cev: malo premočna Poskusite se povezati z javnim posrednikom MQTT od HiveMQ in se naročite na #. V nekaj sekundah sem dobil približno 300 sporočil, preden se je moja stranka pravkar zrušila.

Nasvet za začetnike MQTT:/myHome/” je drugačna tema,moj dom/" - vključno s poševnico na začetku ustvari prazno raven teme, ki sicer tehnično veljavna, ni priporočljiva, ker je lahko zmedena.

Zdaj, ko poznamo teorijo, pojdimo z Arduino, Ethernet ščitom in senzorjem temperature in vlažnosti DHT11 - Verjetno ga imate v zaganjalnem kompletu, če pa ne, samo zamenjajte okoljski senzor za senzor gibanja (ali celo gumb).

Objavljanje MQTT-ja iz Arduino-ja z ethernetno povezavo

Če imate hibridno napravo, združljivo z Arduino, z vgrajeno Wi-Fi ali Ethernet, bi to tudi moralo delovati. Sčasoma bomo želeli boljši / cenejši način sporočanja, da je treba uporabiti omrežno povezavo v vsaki sobi, vendar to služi za učenje osnov.

Začnite s prenosom pubsubclient knjižnica iz Github-a. Če ste uporabili gumb »Prenesi kot ZIP«, je struktura nekoliko napačna. Odpakirajte, mapo preimenujte v samo pubsubclient, nato odstranite obe datoteki iz src mapo in jih premaknite za eno raven do korena prenesene mape. Nato premaknite celotno mapo v svojo Arduino / knjižnice imenik.

Tu je moja vzorčna koda, ki jo lahko prilagodite: izhod signala DHT11 je na pin 7. V naslednji vrstici spremenite IP strežnika za vaš Pi v naslednji vrstici:

client.setServer ("192.168.1.99", 1883);

Na žalost ne moremo uporabiti prijaznega imena (OpenHAB.local v mojem primeru) Ker je sklad TCP / IP na Arduino zelo poenostavljen, in dodajanje kode za poimenovanje Bonjour bi bilo veliko pomnilnika, ki ga ne želimo zapraviti. Če želite spremeniti teme, na katerih se predvajajo podatki senzorjev, se pomaknite navzdol do teh vrstic:

char pufer [10]; dtostrf (t, 0, 0, pufer); client.publish ("openhab / himitsu / temperature", medpomnilnik); dtostrf (h, 0, 0, pufer); client.publish ("openhab / himitsu / vlažnost", medpomnilnik);

Koda vključuje tudi naročnino na ukazni kanal. Poiščite in prilagodite naslednjo vrstico:

client.subscribe ("openhab / himitsu / ukaz");

Oglejte si kodo tam in videli boste, da lahko preprosto nadzorujete LED ali rele, na primer s pošiljanjem ukazov določenim kanalom. V primeru kode preprosto pošlje sporočilo nazaj in potrdi prejem ukaza.

Naložite kodo, priključite Arduino v omrežje in z uporabo MQTT.fx se naročite na katero koli # ali openhab / himitsu / # (ali kar koli spremenite v sobo, vendar ne pozabite na koncu vnesti št. #) Kmalu bi lahko videli sporočila, ki prihajajo; in če v ukazno temo pošljete ON ali OFF, se bodo prikazala tudi potrdila.

mqtt arduino sporočila, ki se vračajo

Vezava MQTT za OpenHAB

Zadnji korak enačbe je, da to privežemo v OpenHAB. Za to seveda potrebujemo zavezujoče.

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

In uredite konfiguracijsko datoteko, da omogočite vezavo.

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

Znova zaženite OpenHAB

ponovno zaženite sudo storitev openhab

Nato dodamo element ali dva:

/ * Senzorji MQTT * / Številka Himitsu_Temp "Temperatura Himitsu [% .1f ° C]"(Himitsu, temperatura) {mqtt = " (Himitsu, vlažnost) {mqtt = "

Do zdaj bi morali razumeti obliko; dobiva a Številčni artikel iz vezave MQTT, na določeno temo. Ta preprost primer, boste morda želeli na strani wiki, kjer je lahko dobite veliko bolj zapleteno.

Čestitamo, zdaj imate osnovo poceni niz senzorjev, ki temeljijo na Arduino. To bomo v prihodnosti pregledali in Arduino postavili na svoje povsem ločeno RF omrežje. Ustvaril sem tudi identično različico za deske Wizwiki 7500 če se zgodi, da imate enega od teh.

Obstojnost in grafični podatki

Zdaj ste verjetno postavili kup senzorjev, bodisi iz Z-Wave ali po meri Arduinos, ki poganja MQTT - torej si lahko kadar koli ogledate trenutno stanje teh senzorjev in tudi vi bi se morali odzvati na njihovo vrednost pravila. Zanimivost pri vrednostih senzorjev je na splošno ta, da se sčasoma spreminjajo: tu prihajata obstojnost in oblikovanje grafov. Vztrajnost v OpenHAB pomeni shranjevanje podatkov skozi čas. Pojdimo naprej in nastavimo RRD4J (Round Robin Database za Java), tako imenovan, ker se podatki shranjujejo na način okroglega robina - starejši podatki se zavržejo, če stisnemo velikost baze podatkov.

Namestite pakete rrd4j z naslednjimi ukazi.

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

Nato ustvarite novo datoteko, imenovano rrd4j.persist v konfiguracije / obstojnost mapo. Prilepite naslednje:

Strategije {everyMinute: "0 * * * *?" vsaka ura: "0 0 * * *?" vsak dan: "0 0 0 * *?" privzeto = VsakaSpremeni. } Elementi {// obdržijo vse, ko je vrednost posodobljena, le privzeta vrednost in jih ob zagonu obnovijo iz baze podatkov *: strategy = everyChange, RestoOnStartup // nato določimo posebne strategije vsakega Časa za karkoli v skupini temperatur in vsako minuto za Temperaturo vlažnosti *: strategy = everyHour Vlažnost *: strategy = everyMinute // alternativno lahko tukaj dodate določene elemente, na primer // Spalnica_Humidity, JamesInOffice: strategy = vsak minuto }

V prvem delu te datoteke definiramo strategije, kar pomeni, da damo ime izrazu CRON. To je isto, kot smo že storili z Mojo. OpenHAB, vendar tokrat ustvarjamo nekaj novih strategij, ki jih lahko uporabimo vsak dan, vsak uro in vsak minuto. Nisem jih še vse uporabljal, ampak morda bom v prihodnosti.

V drugi polovici datoteke povemo rr4dj, katere podatkovne vrednosti shranimo. Kot privzeto bomo vse shranili vsakič, ko se posodobi, vendar sem tudi določil nekaj časovnih strategij za določene senzorje. Temperature me ne motijo ​​preveč, zato sem si nastavil, da bom prihranil samo vsako uro, vendar me vlaga veliko skrbi, zato želim videti, kako se spreminja vsako minuto. Če obstajajo drugi podatki, ki jih želite shraniti v določenih časih, jih dodajte zdaj ali jih prilagodite po potrebi.

Opomba: če želite podatke tudi graficirati, jih MORATE shraniti vsaj enkrat na minuto. Ni važno, ali so podatki vašega senzorja to hitro posodobljeni, preprosto morate povedati rr4dj, da jih shranite enkrat na minuto.

S tem definiranim, bi morali začeti videti nekaj odpravljanja napak, ki pove, da se vrednosti shranjujejo.

rrd4j shranjevanje podatkov

Naprej naredimo nekaj lepih grafov vseh teh podatkov. Res je enostavno. Če želite narediti graf posameznega senzorja, dodajte na zemljevid svojega spletnega mesta naslednje:

Postavka grafikona = Spalnica_Hodnost vlage = h

To je dobesedno vse, kar potrebujete. Veljavne vrednosti za obdobje so h, 4h, 8h, 12h, D, 3D, Š, 2W, M, 2M, 4M, Y; jasno bi moralo biti, kaj to pomeni. Če privzeto ni določeno, je D za cel dan podatkov.

Če želite ustvariti graf z več elementi, namesto tega preprosto narišite ime skupine:

Postavka grafikona = Obdobje vlažnosti = h
grafikon

Morda bi vas tudi zanimalo, da lahko ta graf uporabite drugje; ustvarja sliko z naslednjim URL-jem: http://YOUROPENHABURL: 8080 / grafikon? skupine = vlažnost in obdobje = h

Kako Vaš Prihaja sistem OpenHAB?

Tako je za ta del priročnika, vendar ne pričakujte, da boste zadnjič slišali od nas o OpenHAB-u. Upajmo, da sta vam ta in priročnik za začetnike dala trdno podlago za razvoj lastnega celotnega sistema OpenHAB - vendar je to postopek, ki nikoli ni povsem končan.

K sreči lahko OpenHAB doseže lestvico od nekaj naprav do sto, od preproste zapletenosti pravil do največje avtomatizacije doma - torej, kako napreduje vaš sistem? Katere naprave ste izbrali? Kateri je naslednji veliki projekt, ki se ga boste lotili?

Pogovorimo se v komentarjih - in prosim, če se vam zdi ta priročnik koristen, kliknite te gumbe za skupno rabo in svojim prijateljem sporočite, kako lahko tudi sami postavijo svoj sistem OpenHAB.

James ima doktorat iz področja umetne inteligence in ima certifikat CompTIA A + in Network +. Je vodilni razvijalec MakeUseOf in svoj prosti čas preživlja z igranjem VR paintball in družabnih iger. Z računalniki gradi že od malih nog.