Oglas

Besplatno ne znači uvijek "nije dobro kao plaćeno", a OpenHAB nije iznimka. Softver za kućnu automatizaciju otvorenog koda daleko nadmašuje mogućnosti bilo kojeg drugog sustava kućne automatizacije na tržištu - ali to nije lako postaviti. U stvari, to može biti ravno frustrirajuće.

Ovaj je vodič dostupan za preuzimanje kao besplatni PDF. Preuzmite OpenHAB vodič za početnike 2. dio: ZWave, MQTT, Pravila i grafikoni sada. Slobodno kopirajte i dijelite ovo sa svojim prijateljima i obitelji.

U 1. dijelu vodiča, prošao sam vas kroz instaliranje OpenHAB-a na Raspberry Pi Prvi koraci s OpenHAB kućnom automatizacijom na Raspberry PiOpenHAB je zrela platforma za kućnu automatizaciju otvorenog koda koja radi na različitim hardverima i jest protokol agnostički, što znači da se može povezati s gotovo svim hardverom kućne automatizacije na tržištu danas. Čitaj više , predstavio je osnovne koncepte OpenHAB-a i pokazao vam kako dodati svoje prve stavke u sustav. Danas ćemo ići dalje:

  • Dodavanje ZWave uređaja
  • instagram viewer
  • Dodavanje Harmony Ultimate kontrolera
  • Uvođenje pravila
  • Predstavljamo MQTT i instaliramo MQTT brokera na svoj Pi, sa senzorima na Arduinu
  • Snimanje podataka i graficiranje

Uvod u Z-val

Z-Wave je već godinama dominantan protokol automatizacije kućanstava: pouzdan je, široko razvijen i radi u puno većem rasponu od bilo kojeg drugog proizvoda za pametni dom. Na raspolaganju vam je na stotine Z-Wave senzora koji obavljaju širok raspon zadataka. OpenHAB limenka radite sa Z-Waveom, ali potrebno je postaviti poteškoće, a pouzdanost nije zagarantovana.

Ako razmišljate o kupovini kuće koja je puna Z-Wave senzora posebno za upotrebu s OpenHAB-om, savjetujem vas da ponovno razmislite. Možda će vam uspjeti ili vas muče sitni, ali trajni problemi. Barem, nemojte kupiti kuću punu senzora dok ne budete imali priliku isprobati nekoliko njih. Jedini razlog odabira Z-Wave-a je ako se niste stopostotno naselili na OpenHAB-u i želite u budućnosti ostaviti svoje mogućnosti otvorenima: Z-Wave primjerice radi s Samsung SmartThings Koji Smart Hub za kućnu automatizaciju je najbolji za vas?Jedno vrijeme su ljudi tu ideju smatrali tek kao trik, ali nedavna izdanja proizvoda pokazala su da automatizacija pametnih kuća počinje ispunjavati svoja obećanja. Čitaj više čvorište, kao i koncentratori na Z-Waveu kao što je Homeseer i niz drugih softverskih opcija kao što su Domoticz.

Iako OpenHAB uključuje vezanje Z-Wave, to još uvijek morate učiniti prvo konfigurirajte mrežu Z-Wave, prije nego što OpenHAB može započeti s upitom podataka. Ako imate ploču kontrolera Rasberry, imate neki softver za konfiguriranje mreže, tako da to ovdje nećemo pokrivati. Ako ste kupili Aeotec USB Z-Stick kontroler ili slično, vjerojatno nemate nijedan softver pa pročitajte dalje.

Aeotec Z-Stick Gen5, Z-Wave Plus USB za stvaranje gateway-aAeotec Z-Stick Gen5, Z-Wave Plus USB za stvaranje gateway-a Kupite sada na Amazonu $44.95

Ako već imate postavljanje Z-Wave mrežemožete samo uključiti svoj kontroler u Pi i započeti konfiguriranje veza i stavki. Ako vam je ovo prvo nalet u Z-Wave, to je malo složenije.

Prvo, na hardverskoj strani: svaki kontroler ima svoj način uparivanja s uređajima (tehnički poznat kao "način uključivanja" u kojem je dodijeljen ID čvora). U slučaju Aotec Z-Stick-a to znači da ćete ga iskopčati iz USB priključka i jednom pritisnuti gumb da biste ga prebacili u način uključivanja. Zatim ga približite uređaju koji uparujete i na njemu pritisnite gumb za uključivanje (ovo će se također razlikovati: moja Everspring utičnica zahtijeva da tipku 3 puta brzo pritisnem, tako da je ovdje lekcija čitanje priručnika za vaš uređaj).

Z-Stick nakratko treperi kako bi ukazao na uspjeh. Ovo predstavlja probleme kada ga vraćate natrag u Pi, jer je dodijeljen novi priključak. Ponovo pokrenite svoj Pi da biste ga vratili na standardni port ako utvrdite da je dinamički dodijeljen nekom drugom. I još bolje: nemojte ga uključivati ​​u Pi sve dok prvo niste napravili sve hardverske parove.

Ugradnja HABmin i Z-Wave veza

Budući da OpenHAB zapravo nije uslužni program za konfiguraciju za Z-Wave, instalirat ćemo još jedan alat za upravljanje webom koji - nešto što se zove HABmin. Idi preko HABmin Github repozitorij preuzmite trenutnu verziju. Kad ga otvorite, pronaći ćete 2 .jar datoteke u imeniku addons - te bi trebale biti smještene u odgovarajuću direktoriju addonsa u vašem ShareHAB Home dijeljenju (ako koristite i Aotec gen5 Z-Stick, imajte barem verziju 1.8 obvezujućeg Z-Wave-a).

Zatim kreirajte novu mapu u webapps direktoriju i nazivamo je "habmin" (mala slova su važna). Kopirajte ostatak preuzetih datoteka tamo.

Napomena: postoji i a HABmin 2 pod aktivnim razvojem. Instalacija je gotovo ista, ali s jednim dodatnim .jar dodatkom. Možda bi bilo vrijedno pokušati oboje samo da vidite koji vam je draži.

Ako već niste, uključite kontroler u svoj Pi. Upišite sljedeće da biste pronašli ispravni ulaz.

ls / dev / tty *

Tražite bilo što s USB-om u nazivu, ili u mom određenom slučaju, Z-stick predstavio se kao /dev/ttyACM0 (modem). Možda će biti lakše izvršiti naredbu jednom prije nego što je priključite i nakon toga, tako da možete vidjeti što se mijenja ako niste sigurni.

devtty

Otvorite OpenHAB konfiguracijsku datoteku i izmijenite odjeljak na Z-Waveu, komentirajući oba retka i dodajući stvarnu adresu uređaja. Posljednji korak za mene bio je omogućiti korisnicima OpenHAB-a pristup modemu.

sudo usermod -a -G dialout openhab

Sada, da pokrenete sve u akciju, ponovno pokrenite OpenHAB

ponovno pokretanje sudo servisa openhab

Nadamo se da ako provjeravate dnevnik pogrešaka, vidjet ćete ovako nešto. Čestitamo, sada govorite Z-Wave. Također možete pronaći zapisnik pogrešaka preplavljen porukama raznih Z-Wave čvorova. Započnimo provjerom HABMIN-a da vidimo što je pronađeno: http://openhab.local: 8080 / habmin / index.html (zamjena openhab.local vašim imenom hosta Raspberry Pi ili IP adresom).

zwave započinje u dnevniku openhab

Mnogo toga možemo vidjeti u HABMIN-u, ali to se nas tiče Konfiguracija -> Vezovi -> Z-val -> Uređaji kao što možete vidjeti dolje. Proširite čvor da biste uredili oznaku lokacije i imena radi lakšeg snalaženja.

uredite naziv uređaja

Konfiguriranje Z-Wave stavki

Svaki Z-Wave uređaj imat će specifičnu konfiguraciju za OpenHAB. Srećom, većina uređaja je već istražena i tamo će već biti primjera za vaše. Konfiguriranje prilagođenih uređaja koji nisu prepoznati znatno je izvan okvira ovog vodiča, ali pretpostavimo da je za sada podržan.

Prvo imam osnovni prekidač i mjerač napajanja Everspring AN158 na čvoru 3. Brzo googlenje dovelo me do posta na blogu na Wetwa.re, s konfiguracijom uzorka. Prilagodio sam ovo na sljedeći način:

Prebacite Dehumidifier_Switch "Dehumidifier" {zwave = "3: naredba = switch_binary"} Broj Dehumidifier_Watts "Potrošnja energije dehumidifier [% .1f W]" {zwave = "3: naredba = metar"}

Savršen.

Slijedi Aeotec Gen5 multi-senzor.

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

Za ovaj sam pronašao primjer konfiguracije na iwasdot.com, a moj multisenzor je na čvoru 2.

Broj hodnika_temperacija "temperatura hodnika [% .1f ° C]" (hodnik, temperatura) {zwave = "2: 0: naredba = senzor_multilevel, senzor_tip = 1, senzor_scale = 0"} Broj hodnika_ vlažnost "vlažnost hodnika [% .0f %%]" (hodnik, vlažnost) {zwave = "2: 0: naredba = senzor_multilevel, senzor_tip = 5"} Broj Hallway_Luminance "Osvjetljenje hodnika [% .0f Lux]" (Hodnik) {zwave = "2: 0: naredba = sensor_multilevel, sensor_type = 3"} Obratite se Hallway_Motion "Hallway Motion [% s]" (Hallway, Motion) {zwave = "2: 0: naredba = senzor_binar, odgovor_to_basic = istina"} Broj senzora_1_baterija "Baterija [% s %%]" (Motion) {zwave = "2: 0: naredba = baterija"}

Ako vam format ovog izgleda čudno, vratite se na prvo vodič za početnike Prvi koraci s OpenHAB kućnom automatizacijom na Raspberry PiOpenHAB je zrela platforma za kućnu automatizaciju otvorenog koda koja radi na različitim hardverima i jest protokol agnostički, što znači da se može povezati s gotovo svim hardverom kućne automatizacije na tržištu danas. Čitaj više , posebno odjeljak vezivanja za Hue, gdje objašnjavam kako se dodaju stavke. Vjerojatno ćete trebati kopirati takve primjere, ali u slučaju da imate novi uređaj, obvezujuća dokumentacija sadrži sve naredbe.

Povezivanje Logitech Harmony

Prije nego što uskočimo u pravila, želio sam dodati kratku bilješku o radu s vezom Harmony. Veliki sam obožavatelj Harmony serija vrhunskih daljina Logitech Harmony Ultimate pregled i izdavanjeU vašoj je dnevnoj sobi kaos - priznajte. Opraštate se što se pitate koji daljinski upravljači koji uređaj. Što s TV-om, pojačalom, TiVO-om, BluRay playerom, možda čak i aktivnostima prebacivanja rasvjete postaje dugo ... Čitaj više pojednostaviti iskustvo kućnog medijskog centra, ali oni često stoje kao poseban sustav unutar pametne kuće. Uz OpenHAB, aktivnosti Logitech Harmony i potpuna kontrola uređaja sada mogu biti dio vašeg centraliziranog sustava, pa čak i uključeni u pravila automatizacije.

Započnite instaliranjem tri obvezujuće datoteke koje pronađete pomoću apt-cachea za pretraživanje "harmonije":

traži apt-cache za openhab za vezanje harmonije

Ne zaboravite chown direktorij veza opet kada ste gotovi:

sudo apt-get install openhab-addon-action-harmonyhub. sudo apt-get install openhab-addon-obvezujući-harmonhub. sudo apt-get install openhab-addon-io-harmonyhub. sudo chown -hR openhab: openhab / usr / share / openhab

Za konfiguriranje vezanja otvorite datoteku openhab.cfg i dodajte novi odjeljak na sljedeći način:

########## HARMONY REMOTE CONTROLS ########### harmonyhub: domaćin = 192.168.1.181ili vaš ip
harmonyhub: korisničko ime =vaše-sklad-e-prijavu
harmonyhub: lozinka =tvoja lozinka

IP adresa je vašeg centra Harmony. Da biste to saznali, upotrijebite mrežni skener. Također ćete trebati unijeti svoje podatke za prijavu, one koje unosite kad pokrenete standardni uslužni program Harmony config. To je to. Nakon ponovnog pokretanja vašeg Huea, vaš zapisnik za uklanjanje pogrešaka trebao bi imati nagli skok izlaza iz vezanja.

Ovo je popis svih vaših aktivnosti, uređaja i naredbi koje je moguće poslati u formatu JSON. Dobro je kopirati ovo za buduću upotrebu. možete olakšati čitanje sa sklopivim čvorovima lijepljenjem u internetski JSON formatter kao što je ovaj.

json formatirani izlaz iz openhab-a

Kao i standardna PowerOff aktivnost koja je zadana, ovdje ćete pronaći vlastite definirane aktivnosti navedene po nazivima. Sada ćemo stvoriti jednostavnu kontrolu s jednim gumbom za početak aktivnosti. Prvo, u datoteku stavki dodajte sljedeći redak. Ako želite, promijenite grupu i ikonu.

/ * Centar za harmoniju * ​​/ Niz Harmony_Activity "Harmonija [% s]" (Living_Room) {harmonyhub = "* [trenutna aktivnost]"}

Ovo je dvosmjerno vezanje žice, koja može dohvatiti trenutnu aktivnost i narediti trenutnoj aktivnosti da bude nešto drugo. Sada možemo stvoriti gumb za to u datoteci sitemap.

Switch item = Harmony_Activity mappings = [PowerOff = 'Isključeno', Vježba = 'Vježba', 13858434 = 'TV', Karaoke = 'Karaoke']

U uglatom zagradi vidjet ćete svaku aktivnost zajedno s naljepnicom. Općenito se na aktivnosti možete izravno pozivati ​​kako ste ih imenovali na daljinskom upravljaču, ali izuzetak od ovoga što sam pronašao je bilo što s razmakom u nazivu aktivnosti, poput "Gledajte TV". U tom slučaju morat ćete koristiti ID aktivnosti. Opet možete pronaći ID u izlazu za uklanjanje pogrešaka JSON. Ako spremite i osvježite sučelje, trebali biste vidjeti nešto slično ovome:

harmonija na otvorenom mjestu u kazalištu

Možete se uputiti i na aktivnosti u svojim pravilima, kao što ćemo vidjeti sljedeće. Pročitajte wiki stranicu za više informacija o web stranici Povezivanje harmonije.

Opći uvod u pravila

Većina čvorišta pametne kuće uključuju stvaranje nekih pravila, tako da možete automatski reagirati na podatke senzora i događaje u kući. Zapravo, tvrdim da istinski pametan dom nije ono na što trebate provoditi vrijeme u interakciji s mobilnim aplikacijama - krajnji je korisnik nevidljiv i potpuno automatiziran. U tu svrhu OpenHAB također uključuje snažni skriptni jezik pravila koji možete programirati, što znatno prelazi složenost većine čvorišta za pametne kuće Battle of the Smart Home Hubs: Što je tamo i što dolazi? Čitaj više ili IFTTT recepti IFTTT se sada povezuje na bilo što: predstavljanje kanala za kavuMoguće uporabe IFTTT-a su beskrajne. Ali dosad ga je bilo teško povezati s vlastitim hardverskim projektima. Danas se to sve promijenilo. Čitaj više .

Pravila programiranja zvuče gore nego što jesu. Započnimo s par pravila koja uključuju ili isključuju svjetlo, ovisno o senzoru prisutnosti:

pravilo "Uključite svjetlo u uredu kada je James prisutan" kada se stavka JamesInOffice promijenila iz OFF u ON. zatim pošaljiteCommand (Office_Hue, ON) krajno pravilo "Ugasi uredsko svjetlo kad James ode" kada se stavka JamesInOffice promijenila iz ON u OFF. zatim pošaljiteCommand (Office_Hue, OFF) kraj

Prvo imenujemo pravilo - budite opisni, tako da znate koji događaj puca. Zatim definiramo naše jednostavno pravilo izgovaranjem kad je x istina, tada učinite y. Kraj označava zatvaranje tog određenog pravila. Postoji nekoliko posebnih riječi koje možete koristiti u pravilima, ali zasad se bavimo s dva jednostavna bita sintakse - Artikal, koji vam omogućuje da zapitate stanje nečega; i sendCommand, koji radi upravo ono što mislite da hoće. Rekao sam ti da je to lako.

Vjerojatno je nepotrebno upotrijebiti par pravila, ali kako je moja logika složenija, bit će korisno imati ih odvojeno za to hoću li ulazak ili izlazak iz područja - i možda bi bilo dobro negdje dodati jednadžbu svjetla u jednadžbu kako se ne bismo nepotrebno uključivali svjetla.

Pogledajmo još jedan primjer za izradu zakazanog pravila.

pravilo "Vježbajte svako jutro" kada Vremenski kron "0 0 8 1/1 *? *" zatim harmonijaStartActivity ("Vježba") kraj.

Opet imenujemo pravilo, stanje uvjeta kada bi trebala pucati i radnje koje treba poduzeti. Ali u ovom slučaju definiramo vremenski obrazac. Smiješni kod koji vidite u navodnicima je izraz CRON za Quartz Scheduler (format je malo drugačiji od uobičajenog CRONtab). Koristio sam cronmaker.com da biste pomogli u stvaranju izraza, ali možete pročitati i vodič vodiča [No Longer Available] za detaljno objašnjenje i još primjera.

kron generator
CronMaker.com koristi se za generiranje ispravno oblikovanog izraza Cron

Moja pravila glase jednostavno: "8 sati svako jutro, svaki dan u tjednu, recite svom sustavu Harmony Ultimate da započne vježbanje", koji zauzvrat aktivira TV, Xbox, pojačalo i pritisne gumb A nakon minute da pokrene disk u pogonu.

Nažalost, OpenHAB još nije u stanju napraviti vježbu za mene.

Još jedno pravilo koje vam želim pokazati je nešto što koristim za upravljanje razinom vlažnosti u svom domu. Imam jedan odvlaživač zraka kojim se moram kretati gdje god je potrebno, pa sam odlučio pogledati sve svoje senzore vlažnosti, pronaći koji je najviši i pohraniti ga u varijablu. Trenutno se aktivira svake minute, ali to se lako može spustiti. Prvo pogledajte:

uvesti org.openhab.core.library.types. * uveze org.openhab.model.script.action. * import java.lang. Pravilo strune "Monitor vlage" kad Vremenski kron "0 * * * *?" tada je var prevHigh = 0 var highHum = "" Vlažnost? .člani.forEach [hum | logDebug ("vlažnost.rules", hum.name); if (hum.state as DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("vlažnost.vrstanja", highHum); postUpdate (Dehumidifier_Needed, highHum); kraj.

Srž pravila je u Vlažnost? .Members.foreach crta. Vlažnost je skupni naziv za moje senzore vlažnosti; .members hvata sve predmete u toj grupi; za svakoga ponavlja preko njih (s znatiželjnim formatom zagradnih zagrada koji vjerojatno niste upoznati). Sintaksa pravila je derivat Xtenda, tako da možete čitati Xtend dokumentacija ako ne možete pronaći primjer za prilagodbu.

Vjerojatno vam to neće trebati - postoje stotine primjera pravila vani:

  • Detaljno objašnjenje pravila na službenom wikiju
  • službena pravila uzoraka wiki stranica
  • Usvajanje pravila do novih visina
  • Napredni uzorci na IngeniousFool.net

MQTT za OpenHAB i Internet of Things

MQTT je lagani sustav za razmjenu poruka za komunikaciju stroj - stroj - svojevrsni Twitter za vaš Arduinos ili Raspberry Pis kako bi razgovarali jedni s drugima (iako, naravno, to djeluje i puno više od toga oni). Brzo dobiva na popularnosti i pronalazi se dom s uređajima Interneta stvari, koji su obično niski mikrokontroleri resursa kojima je potreban pouzdan način prijenosa podataka senzora natrag na središte ili primanja na daljinu naredbe. Upravo to ćemo učiniti s tim.

Ali zašto izumiti volan?

MQ Telemetry Transport izumljen je još 1999. godine za povezivanje naftovoda putem sporog satelita veze, posebno dizajnirane da minimaliziraju potrošnju baterije i širinu pojasa, a istovremeno nude pouzdanu dostava podataka. Tijekom godina principi dizajna ostali su isti, ali slučaj uporabe pomaknuo se s specijaliziranih ugrađenih sustava na općenite uređaje Internet of Things. U 2010. godini protokol je oslobođen autorskih prava, otvoren za upotrebu i implementaciju za svakoga. Volimo besplatno.

Možda se pitate zašto se uopće mučimo sa još jednim protokolom - već imamo HTTP - što može koristi se za slanje brzih poruka između svih vrsta web povezanih sustava (poput OpenHAB-a i IFTTT-a, posebno s novim kanal za kavu IFTTT se sada povezuje na bilo što: predstavljanje kanala za kavuMoguće uporabe IFTTT-a su beskrajne. Ali dosad ga je bilo teško povezati s vlastitim hardverskim projektima. Danas se to sve promijenilo. Čitaj više ). I u pravu si. Međutim, obrasci za obradu HTTP poslužitelja su prilično veliki - toliko da ih jednostavno ne možete pokrenuti na an ugrađeni mikrokontroler poput Arduino-a (barem možete, ali nećete imati puno memorije za bilo što drugo). MQTT je s druge strane lagan, tako da slanje poruka širom vaše mreže neće začepiti cijevi i lako se može uklopiti u naš mali Arduinov memorijski prostor.

Kako djeluje MQTT?

MQTT zahtijeva i poslužitelj (koji se naziva "broker") i jednog ili više klijenata. Poslužitelj djeluje kao posrednik, prima poruke i ponovno ih emitira svim zainteresiranim klijentima.

Nastavimo sa Twitter-za-strojeve analogija ipak. Baš kao što korisnici Twittera mogu cvrkutati svojih besmislenih 140 znakova, a korisnici mogu "pratiti" druge korisnike da bi vidjeli kultivirani niz postova, Klijenti MQTT-a mogu se pretplatiti na određeni kanal kako bi od njega mogli primiti sve poruke, kao i na to objaviti vlastite poruke kanal. Ovaj obrazac objave i pretplate naziva se pub / sub, za razliku od tradicije klijent / poslužitelj model HTTP-a.

HTTP zahtijeva da posegnete za uređajem s kojim komunicirate, recimo Pozdrav, a zatim se neprestano međusobno priznajte dok primate ili stavljate podatke. S pub / sub, klijent koji objavljuje ne mora znati koji su klijenti pretplaćeni: on samo učitava poruke, a broker ih distribuira svim klijentima koji su pretplaćeni. Svaki klijent može i objavljivati ​​i pretplaćivati ​​se na teme, baš kao i korisnik Twittera.

Za razliku od Twittera, MQTT nije ograničen na 140 znakova. To je agnostik podataka, tako da možete slati male brojeve ili velike tekstualne blokove, datagrame u formatu JSON ili čak slike i binarne datoteke.

Nije MQTT bolji od HTTP-a za sve - nego to je prikladnije ako ćemo imati puno senzora po cijeloj kući i neprestano se javljamo u njih.

Također je važno znati da OpenHAB neće djelovati kao vaš MQTT broker - odgovorit ćemo na to nešto kasnije. No, OpenHAB će se ponašati kao klijent: može objaviti i vaš OpenHAB dnevnik aktivnosti, kao i posebno vezivanje kanala do uređaja, tako da na primjer možete imati prekidač koji se kontrolira određenim MQTT porukama kanal. Ovo je idealno za stvaranje kuće pune senzora.

Instalirajte Mosquitto na svoj Pi

Iako OpenHAB uključuje MQTT klijent tako da se možete pretplatiti na temu i objaviti poruke, neće se ponašati kao poslužitelj. Za to morate koristiti internetski MQTT broker (plaćeni ili besplatni) ili instalirati besplatni softver na svoj Pi. Želio bih sve to održavati u kući, pa sam instalirao Mosquitto na Pi.

Nažalost, verzija dostupna putem uobičajenog apt-get-a potpuno je zastarjela. Umjesto toga, dodajmo najnovije izvore.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key dodati mosquitto-repo.gpg.key. cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list. sudo apt-get instalacija komaraca.

To je sve što trebamo učiniti da se MQTT poslužitelj pokrene i pokrene na lokalnoj mreži. Vaš broker zadano radi na priključku 1883.

Provjerite radi li vaš MQTT poslužitelj pomoću besplatnog MQTT.fx koji je cross-platformski. Kliknite ikonu postavki da biste stvorili novi profil i unesite IP adresu ili ime vašeg Raspberry Pi. Spremite i pritisnite povezivanje. Ako malo semafor u gornjem desnom kutu postane zeleno, dobro je krenuti.

mqttfx primjer profila

Za brzi test kliknite karticu "pretplati se" i utipkajte inTopic / u tekstni okvir, a zatim pritisnite pretplatiti dugme. Sada ste pretplaćeni na primanje poruka na temu koja se zove inTopic, iako će se prikazivati ​​0 poruka. Vratite se na karticu za objavljivanje, u mali okvir upišite inTopic, a kratku poruku u veliki tekstni okvir ispod. Pogoditi Objaviti nekoliko puta i osvrnite se na kartici za pretplatu. Trebali biste vidjeti nekoliko poruka koje su se pojavile u toj temi.

inTopic MQTT test

Prije nego što u našu mrežu dodamo neke stvarne senzore, moramo naučiti o razinama tema koje nam omogućuju strukturiranje i filtriranje MQTT mreže. Imena tema razlikuju velika i mala slova, ne bi trebala započeti s $ ili ne sadrže razmake ili znakove koji nisu ASCII - uobičajena programska praksa za imena varijabli.

/ Separator označava razinu teme, koja je hijerarhijska, na primjer sljedeće su sve važeće razine tema.

inTopic / smallSubdivision / evenSmallerSubdivision. myhome / dnevni boravak / temperature. myhome / dnevni boravak / vlažnosti. myhome / kuhinja / temperature. myhome / kuhinja / vlažnosti

Već bi trebali vidjeti kako je ova struktura stabala savršena za pametni dom pun senzora i uređaja. Najbolja praksa za upotrebu s više senzora u jednoj sobi je objavljivanje svake varijable senzora kao vlastite razine teme - razgraničavati se na više specifičnosti (kao u gornjim primjerima) - umjesto da pokušate na isti objaviti više vrsta senzora kanal.

Klijenti tada mogu objaviti ili se pretplatiti na bilo koji broj pojedinačnih razina teme ili koristiti posebne posebne znakove za filtriranje s višeg dijela stabla.

Zamjena + zamjenjuje bilo koju razinu teme. Na primjer:

myhome / + / temperatura

pretplatio bi klijenta na oboje

myhome / dnevni boravak / temperature. myhome / kuhinja / temperatura

… Ali ne i razine vlage.

# Je znak s više razina, tako da možete preuzeti bilo što iz nizova LivingRoom senzora pomoću:

myhome / Dnevni boravak / #

Tehnički se možete pretplatiti na korijensku razinu # za koju vam se daje apsolutno sve što ide prolazeći posrednika, ali to može biti poput zabijanja vatrogasnog crijeva u lice: malo neodoljiv. Pokušajte se povezati s javnim MQTT posrednikom HiveMQ-a i pretplatite se na #. Primio sam oko 300 poruka u nekoliko sekundi prije nego što se moj klijent jednostavno srušio.

MQTT Savjet za početnike: "/myHome/” drugačija je tema "moj dom/" - uključujući crtanje na početku stvara praznu temu teme, koja se, iako je tehnički valjana, ne preporučuje jer može biti zbunjujuća.

Sada kada znamo teoriju, krenimo s Arduinom, Ethernet štitom i DHT11 senzorom temperature i vlage - vjerojatno ga imate u svom startnom kompletu, ali ako ne, samo zamijenite senzor okoliša za senzor pokreta (ili čak dugme).

Objavljivanje MQTT-a s Arduino-a s Ethernet vezom

Ako imate hibridni Arduino-kompatibilan uređaj s ugrađenim Wi-Fi ili Ethernet-om, to bi također trebalo raditi. Na kraju ćemo htjeti bolji / jeftiniji način komuniciranja toga da trebate koristiti mrežnu vezu u svakoj sobi, ali ovo služi za učenje osnova.

Započnite s preuzimanjem pubsubclient knjižnica iz Githuba. Ako ste koristili gumb "Preuzmi kao ZIP", struktura je pomalo pogrešna. Raspakujte, preimenujte mapu u pravednu pubsubclient, zatim izvadite dvije datoteke iz src mape i pomaknite ih na jednu razinu prema korijenu preuzete mape. Zatim premjestite cijelu mapu na svoju Arduino / knjižnice imenik.

Evo mog uzorka koda koji možete prilagoditi: izlaz signala DHT11 je na pin 7. Promijenite IP poslužitelja za vaš Pi u sljedećem retku:

client.setServer ("192.168.1.99", 1883.);

Nažalost, ne možemo upotrijebiti to prijateljsko ime (OpenHAB.local u mom slučaju) Kako je TCP / IP stack na Arduinu vrlo pojednostavljen, dodavanje koda za Bonjour imenovanje bilo bi puno memorije koju ne želimo gubiti. Da biste promijenili teme na kojima se emituju podaci senzora, pomaknite se prema dolje do tih redaka:

pufer za char [10]; dtostrf (t, 0, 0, međuspremnik); client.publish ( "/ openhab himitsu / temperatura", pufer); dtostrf (h, 0, 0, međuspremnik); client.publish ( "openhab / himitsu / vlagu" pufer);

Kod također uključuje pretplatu na naredbeni kanal. Pronađite i prilagodite sljedeći redak:

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

Ispitajte kôd tamo i vidjet ćete da biste lako mogli upravljati LED-om ili relejem, na primjer, slanjem naredbi određenim kanalima. U primjeru koda jednostavno vraća poruku natrag u potvrdu primitka naredbe.

Učitajte svoj kôd, povežite svoj Arduino u mrežu i pomoću MQTT.fx pretplatite se na bilo koji # ili openhab / himitsu / # (ili na što god promijenili ime sobe, ali na kraju ne zaboravite uključiti #). Uskoro biste trebali vidjeti poruke koje dolaze; a ako pošaljete ON ili OFF na temu naredbe, vidjet ćete i potvrde.

mqtt arduino poruke se vraćaju

MQTT Vezivanje za OpenHAB

Posljednji korak jednadžbe je spojiti ovo u OpenHAB. Za to nam je, naravno, potrebno uvezivanje.

sudo apt-get install openhab-addon-obvezujuće-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab

I uredite config datoteku da biste omogućili uvezivanje.

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

Ponovo pokrenite OpenHAB

ponovno pokretanje sudo servisa openhab

Zatim dodajmo stavku ili dvije:

/ * MQTT senzori * / Broj Himitsu_Temp "Temperatura Himitsu [% .1f ° C]"(Himitsu, temperatura) {mqtt = " (Himitsu, vlaga) {mqtt = "

Do sad biste trebali razumjeti format; dobiva se Stavka s brojem iz MQTT vezivanja, na određenu temu. Ovo je jednostavan primjer, koji se odnosi na wiki stranicu na kojoj se nalazi može dobiti puno složenije.

Čestitamo, sada imate osnovu jeftinog senzorskog niza temeljenog na Arduino-u. To ćemo ubuduće revidirati i smjestiti Arduino u svoju potpuno zasebnu RF mrežu. Također sam stvorio identičnu verziju za Wizwiki 7500 ploče ako vam se desi da imate jedan od takvih.

Postojanost i grafički podaci

Do sada ste postavili gomilu senzora, bilo od Z-Wave-a ili od prilagođenih Arduinosa koji pokreću MQTT - dakle možete vidjeti trenutno stanje tih senzora, a vi biste također trebali reagirati na njihovu vrijednost u Pravila. Ali zanimljivo je da se vrijednosti senzora uglavnom mijenjaju s vremenom: tu dolazi do postojanosti i graficiranja. Upornost u OpenHAB-u znači uštedu podataka tijekom vremena. Krenimo naprijed i postavimo RRD4J (Round Robin Database za Java), takozvani jer se podaci spremaju na način okruglog robina - stariji se podaci odbacuju radi komprimiranja veličine baze podataka.

Instalirajte rrd4j pakete sa sljedećim naredbama.

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

Zatim stvorite novu datoteku pod nazivom rrd4j.persist u konfiguracije / upornost mapu. Zalijepite sljedeće:

Strategije {everyMinute: "0 * * * *?" svaki sat: "0 0 * * *?" svaki dan: "0 0 0 * *?" zadano = svakiPromijeni. } Stavke {// traju sve kada se vrijednost ažurira, samo zadana vrijednost i vratite ih iz baze podataka pri pokretanju *: strategy = everyChange, RestoOnStartup // slijedeće definiramo specifične strategije EveryHour za bilo što u grupi temperature i svaku minutu za temperaturu vlažnosti *: Strategy = everyHour Humidity *: strategy = everyMinute // alternativno možete ovdje dodati određene stavke, poput // Spavaće sobe_Humidity, JamesInOffice: Strategy = svaki minut. }

U prvom dijelu ove datoteke definiramo strategije, što znači samo davanje imena izrazu CRON. To je isto što smo već učinili s Mojim. OpenHAB, ali ovaj put smo stvorili neke nove strategije koje možemo koristiti svaki dan, svaki sat i svaki minut. Nisam ih još sve koristio, ali možda ću biti u budućnosti.

U drugoj polovici datoteke kažemo rr4dj koje podatkovne vrijednosti treba spremiti. Kao zadanu stvar spremit ćemo sve pri svakom ažuriranju, ali također sam odredio vremenske strategije za određene senzore. Temperature se ne pretjerano mučim, pa sam odredio da se štedi samo svaki Čas, ali vlaga mi predstavlja veliku brigu, pa želim vidjeti kako se mijenja svake minute. Ako postoje drugi podaci koje posebno želite spremiti u zadano vrijeme, dodajte ih sada ovdje ili prilagodite prema potrebi.

Napomena: ako želite i grafički prikazati podatke, MORAJU ih pohraniti najmanje jednom u minuti. Nije važno jesu li se podaci vašeg senzora čak i ovako brzo ažurirali, jednostavno morate reći rr4dj da ih pohranjujete jednom minutu.

S tim definiranim, trebali biste početi vidjeti izlazni program za uklanjanje pogrešaka koji vam govori da se vrijednosti pohranjuju.

rrd4j pohranjivanje podataka

Dalje, napravimo nekoliko lijepih grafova svih tih podataka. To je stvarno jednostavno. Da biste napravili graf pojedinačnog senzora, dodajte sljedeće na kartu web mjesta:

Stavka grafikona = Spavaća soba_ razdoblje vlažnosti = h

To je doslovno sve što trebate. Vrijedne su vrijednosti za razdoblje h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; trebalo bi biti očito što to znače. Zadano je D za cijeli dan podataka ako nije navedeno.

Da biste stvorili graf s više stavki, umjesto toga jednostavno nacrtajte naziv grupe:

Stavka grafikona = razdoblje vlažnosti = h
grafikon

Možda će vas zanimati i da ovaj grafikon možete koristiti negdje drugdje; stvara sliku pomoću sljedećeg URL-a: http://YOUROPENHABURL: 8080 / grafikon? Vlaga i skupine = vrijeme = h

kako je vaš Dolazi li OpenHAB sustav?

To je to za ovaj dio vodiča, ali nemojte očekivati ​​da će ovo posljednje vrijeme čuti od nas o OpenHAB-u. Nadamo se da su vam ovaj i vodič za početnike dali solidnu osnovu za razvoj vlastitog cjelovitog sustava OpenHAB - ali to je proces koji zapravo nikad nije potpuno završen.

Srećom, OpenHAB može dobro rasporediti od nekoliko uređaja do stotine, od složenosti pravila do krajnje automatizacije kod kuće - pa kako ide vaš sustav? Koje ste uređaje odabrali? Koji je sljedeći veliki projekt koji ćete započeti?

Razgovarajmo u komentarima - i molim vas, ako smatrate da je ovaj vodič koristan, kliknite te gumbe za dijeljenje kako biste rekli svojim prijateljima kako i oni mogu postaviti svoj vlastiti OpenHAB sustav.

James je diplomirao iz umjetne inteligencije i certificiran je CompTIA A + i Network +. Vodeći je programer MakeUseOf-a, a svoje slobodno vrijeme provodi igrajući VR paintball i boardgames. Gradio je računala još od djeteta.