OpenHAB Vodič za početnike 2. dio: ZWave, MQTT, pravila i grafikoni

OpenHAB Vodič za početnike 2. dio: ZWave, MQTT, pravila i grafikoni

Besplatno ne znači uvijek 'nije toliko dobro koliko se plaća', a OpenHAB nije iznimka. Softver za kućnu automatizaciju otvorenog koda daleko premašuje mogućnosti bilo kojeg drugog sustava kućne automatizacije na tržištu - ali nije ga lako postaviti. Zapravo, to može biti potpuno frustrirajuće.





U prvom dijelu vodiča provela sam vas instaliranje OpenHAB -a na Raspberry Pi , predstavio je osnovne koncepte OpenHAB -a i pokazao vam kako dodati prve stavke u sustav. Danas idemo dalje:





  • Dodavanje ZWave uređaja
  • Dodavanje kontrolera Harmony Ultimate
  • Uvođenje pravila
  • Predstavljamo MQTT i instaliramo MQTT brokera na svoj Pi sa senzorima na Arduinu
  • Snimanje podataka i njihovo grafičko prikazivanje

Uvod u Z-Wave

Z-Wave je već godinama dominantan protokol kućne automatizacije: pouzdan je, opsežno razvijen i radi u mnogo većem rasponu od bilo kojih drugih proizvoda za pametnu kuću. Na raspolaganju su vam stotine Z-Wave senzora koji izvode širok raspon zadataka. OpenHAB limenka raditi sa Z-Waveom, ali postavljanje je gnjavaža, a pouzdanost nije zajamčena.





Ako razmišljate o kupnji kuće pune Z-Wave senzora posebno za upotrebu s OpenHAB-om, pozvao bih vas da razmislite. Možda će vam to odlično uspjeti, ili će vas mučiti mali, ali trajni problemi. Barem nemojte kupovati kuću punu senzora dok ne budete imali priliku isprobati nekoliko. Jedini razlog za odabir Z-Wave je ako niste 100% zadovoljni s OpenHAB-om i želite ostaviti svoje mogućnosti otvorenim u budućnosti: Z-Wave, na primjer, radi sa Samsung SmartThings čvorištem, kao i sa specifičnim čvorištima Z-Wave kao što je Homeseer, te niz drugih softverskih opcija poput domoticz .

Iako OpenHAB uključuje vezivanje Z-Wave, ipak morate najprije konfigurirajte Z-Wave mrežu , prije nego što ga OpenHAB počne pitati za podatke. Ako imate upravljačku ploču Rasberry, imate isporučen softver za konfiguriranje mreže, pa to ovdje nećemo pokriti. Ako ste kupili Aeotec USB Z-Stick kontroler ili slično, vjerojatno nemate uključen softver, pa čitajte dalje.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB za stvaranje pristupnika (obična bijela) KUPITE ODMAH NA AMAZONU

Ako već imate postavljenu mrežu Z-Wave , možete samo uključiti svoj kontroler u Pi i početi konfigurirati povez i stavke. Ako vam je ovo prvi upad u Z-Wave, to je malo složenije.

Prvo, sa hardverske strane: 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-Sticka, to znači da ga morate isključiti iz USB priključka i jednom pritisnuti gumb kako biste ga prebacili u način uključivanja. Zatim ga približite uređaju koji uparujete i pritisnite gumb za uključivanje (ovo će također varirati: moja Everspring utičnica zahtijeva da se gumb pritisne 3 puta uzastopno, pa je pouka ovdje pročitati priručnik za vaš uređaj) .





Z-Stick kratko bljeska kako bi označio uspjeh. To predstavlja probleme pri ponovnom priključivanju na Pi jer je dodijeljen novi port. Ponovo pokrenite svoj Pi da biste ga vratili na standardni port ako otkrijete da mu je dinamički dodijeljen drugi. Još bolje: nemojte ga uključivati ​​u Pi sve dok prethodno ne obavite sve uparivanje hardvera.

Ugradnja HABmin i Z-Wave vezova

Budući da OpenHAB zapravo nije uslužni program za konfiguraciju za Z-Wave, instalirat ćemo drugi alat za upravljanje webom koji to radi-nešto što se zove HABmin. Prijeđite na HABmin Github spremište preuzmite trenutno izdanje. Nakon što ga raspakirate, pronaći ćete 2 .jar datoteke u direktoriju dodataka - one bi trebale biti smještene u odgovarajući direktorij dodataka u vašem OpenHAB Home udjelu (ako koristite i Aotec gen5 Z-Stick, provjerite imate li barem verziju 1.8 povezivanja Z-Wave) .





Zatim stvorite novu mapu u direktoriju webapps i nazovite je 'habmin' (mala slova su važna). Kopirajte ostatak preuzetih datoteka tamo.

Napomena: Postoji i a HABmin 2 u aktivnom razvoju. Instalacija je uglavnom ista, ali s jednim dodatkom .jar. Možda bi bilo vrijedno pokušati oboje samo da vidite što vam se više sviđa.

Ako već niste, uključite kontroler u svoj Pi. Upišite sljedeće kako biste pronašli ispravan priključak.

ls /dev /tty*

Tražite bilo što s USB-om u nazivu, ili se u mom konkretnom slučaju Z-stick predstavio kao / dev / ttyACM0 (modem). Možda bi bilo lakše izvršiti naredbu jednom prije nego što je uključite, a nakon toga kako biste mogli vidjeti što se mijenja ako niste sigurni.

Otvorite konfiguracijsku datoteku OpenHAB i izmijenite odjeljak o Z-Waveu, dekomentirajući obje linije i stavljajući svoju stvarnu adresu uređaja. Zadnji korak za mene bio je omogućiti korisniku OpenHAB -a pristup modemu.

sudo usermod -a -G dialout openhab

Da biste sve pokrenuli, ponovno pokrenite OpenHAB

sudo usluga openhab restart

Nadamo se da ćete, ako provjeravate dnevnik otklanjanja pogrešaka, vidjeti nešto poput ovoga. Čestitamo, sada govorite Z-Wave. Dnevnik otklanjanja pogrešaka možda ćete pronaći i preplavljenim porukama iz različitih čvorova Z-Wave. Počnimo provjerom HABMIN -a da vidimo što se nalazi: http: //openhab.local: 8080/habmin/index.html (zamjenu openhab.local sa vašim imenom ili IP adresom Raspberry Pi).

U HABMIN -u se ima što vidjeti, ali nas samo brine Konfiguracija -> Veze -> Z -Wave -> Uređaji karticu, kao što možete vidjeti u nastavku. Proširite čvor da biste uredili oznaku lokacije i naziva radi lakšeg snalaženja.

Konfiguriranje Z-Wave stavki

Svaki Z-Wave uređaj imat će određenu konfiguraciju za OpenHAB. Srećom, većina je uređaja već istražena, a za vas će već biti primjera. Konfiguriranje prilagođenih uređaja koji nisu prepoznati daleko je od dosega ovog vodiča, ali pretpostavimo da je zasad podržan.

Prvo, imam osnovni prekidač napajanja i mjerač Everspring AN158 na Čvoru 3. Brzo me guglanje dovelo do posta na blogu na Wetwa.re, s uzorkom konfiguracije stavke. To sam prilagodio na sljedeći način:

Prekidač za odvlaživač zraka_Prebacite 'Odvlaživač zraka' {zwave = '3: naredba = prekidač_binarni'}

Broj Odvlaživač_Watts 'Potrošnja energije odvlaživača [%.1f W]' {zwave = '3: naredba = mjerač'}

Savršen.

Sljedeći je Aeotec Gen5 multi-senzor.

Aeon Labs Aeotec Z-Wave Gen5 višeosjetni senzor (Z-Wave Plus) KUPITE ODMAH NA AMAZONU

Za ovu sam našao primjer konfiguracije na adresi iwasdot.com , a moj multisenzor je na Čvoru 2.

Broj Hodnik_Temperatura 'Temperatura hodnika [%.1f ° C]' (Hodnik, temperatura) {zwave = '2: 0: naredba = senzor_multilevel, sensor_type = 1, sensor_scale = 0'}

Broj Hodnik_Vlažnost 'Vlažnost hodnika [%.0f %%]' (Hodnik, Vlažnost) {zwave = '2: 0: naredba = senzor_višerazinski, tip_osjetnika = 5'}

Broj Hodnik_osvjetljenje 'Osvjetljenje hodnika [%.0f Lux]' (Predsoblje) {zwave = '2: 0: naredba = senzor_multilevel, senzor_tip = 3'}

Kontaktirajte Hallway_Motion 'Hallway Motion [%s]' (Hallway, Motion) {zwave = '2: 0: command = sensor_binary, response_to_basic = true'}

Senzor broja_1_baterija 'Baterija [%s %%]' (Kretanje) {zwave = '2: 0: naredba = baterija'}

Ako vam ovaj format izgleda čudno, vratite se na prvi vodič za početnike , posebno odjeljak vezanja Hue, gdje objašnjavam kako se stavke dodaju. Vjerojatno ćete samo morati kopirati ovakve primjere zalijepljenja, ali u slučaju da imate novi uređaj, obvezujuća dokumentacija detaljno opisuje sve naredbe .

Logitech Harmony povezivanje

Prije nego što prijeđemo na pravila, htio sam dodati kratku napomenu o radu s povezom Harmony. Veliki sam obožavatelj serije ultimativnih daljinskih upravljača Harmony kako bismo pojednostavili iskustvo rada s kućnim medijskim centrom, ali oni često stoje kao zaseban sustav unutar pametne kuće. S OpenHAB -om, Logitech Harmony aktivnosti i potpuna kontrola uređaja sada mogu biti dio vašeg centraliziranog sustava, pa čak i uključeni u pravila automatizacije.

Počnite instaliranjem tri datoteke za vezivanje koje pronađete pomoću apt-cache za traženje 'harmonije':

Ne zaboravi chown direktorij vezanja ponovno kad završite:

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

Da biste konfigurirali povezivanje, otvorite datoteku openhab.cfg i dodajte novi odjeljak na sljedeći način:

########## HARMONIJSKI DALJINSKI UPRAVLJAČI ##########

harmonyhub: host = 192.168.1.181 ili vaš ip

harmonyhub: korisničko ime = your-harmony-email-login

harmonyhub: lozinka = tvoja lozinka

IP adresa je adresa vašeg Harmony čvorišta. Da biste to saznali, upotrijebite mrežni skener. Također ćete morati unijeti svoje podatke za prijavu, one koje unesete prilikom pokretanja standardnog pomoćnog programa za konfiguraciju Harmony. To je to. Nakon ponovnog pokretanja Hue, vaš dnevnik otklanjanja pogrešaka trebao bi imati iznenadni ispis izlaz iz vezanja.

Ovo je popis svih vaših aktivnosti, uređaja i naredbi koje je moguće poslati u JSON formatu. Bilo bi dobro prepisati ovo za buduću upotrebu. možete učiniti još lakšim čitanje sa sklopivim čvorovima lijepljenjem u mrežni JSON formatter kao što je ovaj .

Osim standardne PowerOff aktivnosti koja je zadana, ovdje ćete pronaći i svoje definirane aktivnosti navedene po imenu. Sada napravimo jednostavnu kontrolu jednim gumbom za početak aktivnosti. Prvo u datoteku stavki dodajte sljedeći redak. Promijenite grupu i ikonu ako želite.

/ * Harmony Hub */

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

Ovo je dvosmjerno vezanje nizova , koji je u stanju dohvatiti trenutnu aktivnost i narediti trenutnoj aktivnosti da bude nešto drugo. Sada možemo stvoriti gumb za to u datoteci karte web stranice.

Promijeni stavku = Mapiranje harmonijske aktivnosti = [PowerOff = 'Isključeno', Vježba = 'Vježba', 13858434 = 'TV', Karaoke = 'Karaoke']

operativni sustavi nisu pronađeni windows 7

U uglatim zagradama vidjet ćete svaku aktivnost zajedno s oznakom. Općenito se možete izravno odnositi na aktivnosti kako ste ih nazvali na daljinskom upravljaču, no iznimka od ovoga što sam otkrio bilo je sve s razmakom u nazivu aktivnosti, kao što je 'Gledanje televizije'. U tom slučaju morat ćete koristiti ID aktivnosti. Opet, ID možete pronaći u JSON izlazu za ispravljanje pogrešaka. Spremite i osvježite sučelje, trebali biste vidjeti nešto slično ovome:

Također se možete pozvati na aktivnosti u svojim pravilima, što ćemo vidjeti dalje. Pročitajte wiki stranicu za više informacija o Harmonično vezivanje .

Opći uvod u pravila

Većina čvorišta pametnih kuća uključuje neku vrstu stvaranja pravila tako da možete automatski reagirati na podatke senzora i događaje u kući. Zapravo, rekao bih da uistinu pametan dom nije onaj koji trebate potrošiti na interakciju s mobilnim aplikacijama - to je dom koji je nevidljiv za krajnjeg korisnika i potpuno automatiziran. U tu svrhu OpenHAB također uključuje snažan skriptni jezik za pravila koji možete programirati, što daleko nadilazi složenost većine pametnih kućnih čvorišta ili IFTTT recepata.

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

pravilo 'Svjetlo u uredu svijetli kad je James prisutan'

kada

Stavka JamesInOffice promijenjena je iz OFF u ON

zatim

sendCommand (Office_Hue, UKLJ.)

kraj

pravilo 'Ugasi svjetlo u uredu kad James ode'

kada

Stavka JamesInOffice promijenjena je iz ON u OFF

zatim

sendCommand (Office_Hue, OFF)

kraj

Prvo, imenujemo pravilo - budite opisni, tako da znate koji događaj pokreće. Zatim definiramo naše jednostavno pravilo govoreći kada je x točno, tada učinite y . Kraj označava zatvaranje tog posebnog pravila. Postoji nekoliko posebnih riječi koje možete koristiti u pravilima, ali za sada imamo posla s dva jednostavna bita sintakse - Artikal , koji vam omogućuje da ispitujete stanje nečega; i sendCommand , koji radi upravo ono što mislite da hoće. Rekao sam ti da je ovo lako.

Vjerojatno je nepotrebno koristiti par pravila, ali kako mi logika postaje sve složenija, bit će korisno da ih odvojimo o tome ulazim li ili izlazim iz područja - i možda bi bilo dobro dodati negdje svjetlosni senzor u jednadžbu pa nećemo bez potrebe paliti svjetla.

Pogledajmo još jedan primjer za stvaranje zakazanog pravila.

pravilo 'Vježbajte svako jutro'

kada

Vremenski kron '0 0 8 1/1 *? *'

zatim

harmonyStartActivity ('Vježba')

kraj

Opet imenujemo pravilo, navedimo uvjete kada bi se trebalo aktivirati i radnje koje treba poduzeti. Ali u ovom slučaju definiramo vremenski uzorak. Smiješni kôd koji vidite u navodnicima je CRON izraz za Quartz Scheduler (format se malo razlikuje od običnog CRONtaba). Koristio sam cronmaker.com kako biste lakše stvorili izraz, ali također možete pročitati vodič za oblikovanje [No Longer Available] za detaljno objašnjenje i više primjera.

CronMaker.com se koristi za generiranje ispravno oblikovanog Cron izraza

Moja pravila jednostavno govore: 'Svako jutro u 8 sati, svaki dan u tjednu, reci mom sustavu Harmony Ultimate da pokrene aktivnost vježbanja', što zauzvrat aktivira televizor, Xbox, pojačalo i nakon minute pritisne gumb A za pokretanje disk u pogonu.

Nažalost, OpenHAB još ne može izvesti vježbu umjesto 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 koji se moram kretati gdje god je potrebno, pa sam odlučio pogledati sve svoje senzore vlažnosti, pronaći koji je najviši i spremiti ga u varijablu. Trenutno se aktivira svake minute, ali to se lako može smanjiti. Prvo pogledajte:

uvoz org.openhab.core.library.types.*

uvoz org.openhab.model.script.actions.*

uvoz java.lang.String

pravilo 'Monitor vlažnosti'

kada Time cron '0 * * * *?'

zatim

var prevHigh = 0

var highHum = ''

Vlažnost? .Članovi.za svakog [pjevušenje |

logDebug ('vlažnost.rules', hum.name);

if (hum.state kao DecimalType> prevHigh) {

prevHigh = hum.stanje

highHum = hum.name + ':' + hum.state + '%'

}

kako besplatno dobiti riječ na mac

]

logDebug ('vlažnost.rules', highHum);

postUpdate (Odvlaživač_Potrebno, visoka vlažnost);

kraj

Srž pravila je u Vlažnost zraka. .Članovi.daleko crta. Vlažnost je naziv grupe za moje senzore vlažnosti; .članovi hvata sve stavke u toj grupi; za svakoga ponavlja ih (s neobičnim formatom uglatih zagrada s kojim vjerojatno niste upoznati). Sintaksa pravila izvedenica je Xtenda, pa možete pročitati Xtend dokumentacija ako ne možete pronaći primjer za prilagodbu.

Vjerojatno nećete morati - postoje stotine primjera pravila:

MQTT za OpenHAB i Internet stvari

MQTT je lagani sustav razmjene poruka za komunikaciju između strojeva-neka vrsta Twittera za vaš Arduinos ili Raspberry Pis da međusobno razgovaraju (iako naravno radi s mnogo više od njih). Brzo dobiva na popularnosti i postaje dom s uređajima Internet of Things, koji su obično mikrokontroleri s niskim resursima koji trebaju pouzdan način za prijenos podataka senzora natrag u vaše čvorište ili primanje udaljenih naredbi. Upravo ćemo to učiniti s tim.

Ali zašto ponovno izumiti kotač?

MQ Telemetry Transport izumljen je daleke 1999. godine za povezivanje naftovoda putem sporih satelitskih veza, posebno osmišljen kako bi minimizirao potrošnju baterije i propusnost, a istovremeno osigurao pouzdanu dostavu podataka. Principi dizajna tijekom godina ostali su isti, ali se slučaj upotrebe iz specijaliziranih ugrađenih sustava premjestio na opće uređaje Interneta stvari. 2010. protokol je objavljen bez naknade, otvoren za svakoga da ga koristi i implementira. Volimo besplatno.

Možda se pitate zašto se uopće mučimo s još jednim protokolom - uostalom, već imamo HTTP - koji se može koristiti za slanje brzih poruka između svih vrsta sustava povezanih s webom (poput OpenHAB -a i IFTTT -a, posebno s novim kanalom za izradu) ). I bili biste u pravu. Međutim, troškovi obrade HTTP poslužitelja su prilično veliki - toliko da ih ne možete jednostavno pokrenuti na ugrađenom mikrokontroleru poput Arduina (barem možete, ali nećete imati puno memorije za ništa drugo ). S druge strane, MQTT je lagan, pa slanje poruka po vašoj mreži neće začepiti cijevi i lako se može uklopiti u naš mali Arduino memorijski prostor.

Kako funkcionira MQTT?

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

Nastavimo s Twitter za strojeve ipak analogija. Baš kao što korisnici Twittera mogu tvitati vlastitih besmislenih 140 znakova, a korisnici mogu 'slijediti' druge korisnike kako bi vidjeli odabrani tok postova, klijenti MQTT -a mogu se pretplatiti na određeni kanal kako bi primali sve poruke s tog mjesta, kao i objavljivati ​​vlastite poruke na taj kanal. Ovaj obrazac objavljivanja i pretplate naziva se pub / pod , za razliku od tradicije klijent/poslužitelj model HTTP -a.

HTTP zahtijeva da se obratite stroju s kojim komunicirate, recimo Pozdrav, a zatim da imate naprijed -natrag neprestano međusobno priznavanje dok primate ili stavljate podatke. S pub/sub -om, klijent koji objavljuje ne mora znati koji su klijenti pretplaćeni: on samo ispumpava poruke, a posrednik ih dalje distribuira svim pretplaćenim klijentima. Svaki klijent može objavljivati ​​teme i pretplatiti se na njih, baš poput korisnika Twittera.

Za razliku od Twittera, MQTT nije ograničen na 140 znakova. Agnostičan je za podatke pa možete slati male brojeve ili velike tekstualne blokove, datagrame u JSON formatu ili čak slike i binarne datoteke.

Nije da je MQTT bolji od HTTP -a za sve - ali jest je prikladnije ako ćemo po kući imati puno senzora, koji se stalno javljaju.

Također je važno znati da OpenHAB neće djelovati kao vaš MQTT posrednik - to ćemo riješiti kasnije. Međutim, OpenHAB će djelovati kao klijent: može objaviti vaš dnevnik aktivnosti OpenHAB -a, kao i povezati određene kanale s uređajima, tako da na primjer možete imati prekidač kojim upravljaju MQTT poruke na određenom kanalu. Ovo je idealno za stvaranje kuće pune senzora.

Instalirajte Mosquitto na svoj Pi

Iako OpenHAB uključuje MQTT klijenta pa se možete pretplatiti na temu i objavljivati ​​poruke, on neće djelovati kao poslužitelj. Za to morate ili koristiti MQTT posrednika na webu (plaćen ili besplatan) ili instalirati besplatni softver na svoj Pi. Htio bih sve zadržati 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 add mosquitto-repo.gpg.key

cd /etc/apt/sources.list.d/

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

sudo apt-get install mosquitto

To je sve što trebamo učiniti da bi MQTT poslužitelj bio pokrenut i pokrenut na lokalnoj mreži. Vaš posrednik prema zadanim postavkama radi na priključku 1883.

Provjerite radi li vaš MQTT poslužitelj pomoću besplatnog MQTT.fx-a koji je za više platformi. Pritisnite ikonu postavki za stvaranje novog profila i unesite IP adresu ili ime svoje Raspberry Pi. Spremite i pritisnite Connect. Ako mali semafor u gornjem desnom kutu svijetli zeleno, spremni ste.

Za brzi test kliknite karticu 'pretplati se' i upišite inTopic / u okvir za tekst, a zatim pritisnite Pretplatite se dugme. Sada ste pretplaćeni na primanje poruka na temu zvana inTopic, iako će prikazivati ​​0 poruka. Vratite se na karticu za objavljivanje, u mali okvir upišite inTopic, a u veliko tekstualno polje ispod kratku poruku. Pogoditi Objaviti nekoliko puta i pogledajte unatrag na kartici pretplate. Trebali biste vidjeti da se u toj temi pojavilo nekoliko poruka.

Prije nego što u svoju mrežu dodamo neke stvarne senzore, moramo naučiti o razinama tema koje nam omogućuju strukturiranje i filtriranje MQTT mreže. Nazivi tema razlikuju velika i mala slova, ne bi trebali započinjati s $ ili uključivati ​​razmak ili znakove koji nisu ASCII-što je standardna programska praksa za nazive varijabli.

/ Odvajač označava hijerarhijsku razinu teme, na primjer sljedeće su sve valjane razine teme.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/temperatura

myHome/livingRoom/vlažnost

myHome/kuhinja/temperatura

myHome/kuhinja/vlaga

Već biste trebali vidjeti kako je ova struktura stabla savršena za pametan dom prepun senzora i uređaja. Najbolja praksa za korištenje s više senzora u jednoj prostoriji je objaviti svaku varijablu senzora kao vlastitu temu - razgranavši se na više specifičnosti (kao u gornjim primjerima) - umjesto da pokušate objaviti više vrsta senzora na istom kanalu .

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

Zamjenski znak + zamjenjuje bilo koju razinu teme. Na primjer:

myHome/+/temperatura

pretplatio bi klijenta na oboje

myHome/livingRoom/temperatura

myHome/kuhinja/temperatura

... ali ne i razine vlažnosti.

# Je zamjenski znak na više razina, pa možete dohvatiti bilo što iz niza senzora livingRoom sa:

myHome/livingRoom/#

Tehnički, također se možete pretplatiti na korijensku razinu # za koju dobivate apsolutno sve što prolazi kroz posrednika, ali to može biti kao da vam zabijete vatrogasno crijevo u lice: pomalo neodoljivo. Pokušajte se povezati s javnim posrednikom MQTT s HiveMQ -a i pretplatiti se na #. Dobio sam oko 300 poruka u nekoliko sekundi prije nego što se moj klijent upravo srušio.

Savjet za početnike u MQTT -u: ' /moj dom/' druga je tema od ' moj dom/' - uključivanje kose crte na početku stvara praznu razinu teme, koja iako je tehnički valjana, ne preporučuje se jer može biti zbunjujuća.

Sad kad znamo teoriju, idemo s Arduinom, Ethernet štitom i DHT11 senzorom temperature i vlažnosti - vjerojatno ga imate u svom početnom kompletu, ali ako ne, zamijenite osjetnik okoliša za kretanje senzor (ili čak gumb).

Objavljivanje MQTT -a s Arduina s Ethernet vezom

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

Počnite preuzimanjem biblioteka pubsubclient iz Githuba . Ako ste koristili gumb 'Preuzmi kao ZIP', struktura je pomalo pogrešna. Raspakirajte, preimenujte mapu u samo pubsubclient , zatim izvadite dvije datoteke iz src mapu i pomaknite ih za jednu razinu do korijena preuzete mape. Zatim premjestite cijelu mapu u svoju Arduino/knjižnice imenik.

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

client.setServer ('192.168.1.99', 1883);

Nažalost, ne možemo koristiti njegovo prijateljsko ime (OpenHAB.local u mom slučaju) budući da je TCP/IP stog na Arduinu vrlo pojednostavljen, a dodavanje koda za imenovanje Bonjour bilo bi puno memorije koju ne želimo izgubiti. Da biste promijenili teme na kojima se emitiraju podaci senzora, pomaknite se dolje do ovih redaka:

me uspremnik [10];

dtostrf (t, 0, 0, pufer);

client.publish ('openhab/himitsu/temperatura', tampon);

dtostrf (h, 0, 0, pufer);

client.publish ('openhab/himitsu/vlažnost', tampon);

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

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

Ispitajte kod tamo i vidjet ćete da možete jednostavno kontrolirati LED ili relej, na primjer slanjem naredbi na određene kanale. U primjeru koda jednostavno šalje poruku natrag potvrđujući primitak naredbe.

Prenesite svoj kôd, priključite svoj Arduino u mrežu, a koristeći MQTT.fx pretplatite se na bilo koji od njih # ili openhab / himitsu / # (ili kako god promijenili naziv sobe, ali ne zaboravite na kraju unijeti #). Uskoro biste trebali vidjeti poruke koje dolaze; a ako pošaljete ON ili OFF na temu naredbe, vidjet ćete i povratne potvrde.

MQTT povezivanje za OpenHAB

Posljednji korak u jednadžbi je priključiti ovo na OpenHAB. Za to nam naravno treba povez.

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

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

I uredite konfiguracijsku datoteku kako biste omogućili povezivanje.

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

mqtt: broker.clientId = openhab

Ponovno pokrenite OpenHAB

sudo usluga openhab restart

Zatim dodajmo jednu ili dvije stavke:

/ * MQTT senzori */

Broj Himitsu_Temp 'Himitsu temperatura [%.1f ° C]' (Himitsu, temperatura) {mqtt = '<[broker:openhab/himitsu/temperature:state:default]'}

Broj Himitsu_Vlažnost'Himitsu vlažnost [%.1f %%] '(Himitsu, Vlažnost) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

Do sada biste trebali razumjeti format; postaje a Stavka broja iz povezivanja MQTT, na određenu temu. Ovo je jednostavan primjer. Možda ćete se htjeti obratiti na wiki stranicu na kojoj se nalazi može biti mnogo složeniji .

Čestitamo, sada imate osnovu jeftinog niza senzora temeljenih na Arduinu. U budućnosti ćemo ovo ponovno posjetiti i postaviti Arduino na njihovu potpuno zasebnu RF mrežu. Također sam stvorio identičnu verziju za ploče Wizwiki 7500 ako slučajno imate jednu od njih.

Podaci o postojanosti i grafičkom prikazivanju

Do sada ste vjerojatno postavili hrpu senzora, bilo iz Z-Wavea ili prilagođenih Arduinosa koji rade s MQTT-tako da u svakom trenutku možete vidjeti trenutno stanje tih senzora, a trebali biste reagirati i na njihovu vrijednost u pravilima. No, zanimljivost u vezi s vrijednostima senzora općenito je ta da se one mijenjaju s vremenom: tu dolazi do postojanosti i grafikona. Upornost u OpenHAB -u znači spremanje podataka tijekom vremena. Idemo naprijed i postavimo RRD4J (Round Robin Database for Java), takozvani jer se podaci spremaju na okrugli način - stariji se podaci odbacuju radi komprimiranja veličine baze podataka.

Instalirajte rrd4j pakete sa sljedećim naredbama.

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

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

Strategije {

svaka minuta: '0 * * * *?'

everyHour: '0 0 * * *?'

svaki dan: '0 0 0 * *?'

zadana = svaka promjena

}

Stavke {

// zadržati sve kada se vrijednost ažurira, samo zadana vrijednost i vratiti ih iz baze podataka pri pokretanju

*: strategy = everyChange, restoreOnStartup

// zatim definiramo posebne strategije svakog sata za bilo što u grupi Temperatura i svake minute za vlažnost

USB port ne radi za Windows 10

Temperatura*: strategija = svaki sat

Vlažnost*: strategija = svake minute

// alternativno ovdje možete dodati određene stavke, kao što je

// Spavaća_ vlažnost, JamesInOffice: strategija = svaka minuta

}

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

U drugoj polovici datoteke rr4dj kažemo koje podatke treba spremiti. Prema zadanim postavkama, spremit ćemo sve pri svakom ažuriranju, ali također sam naveo neke strategije temeljene na vremenu za određene senzore. Temperature me ne muče previše, pa sam to postavio tako da štedi samo svaki sat, ali vlaga me zabrinjava pa želim vidjeti kako se mijenja svake minute. Ako postoje drugi podaci koje želite spremiti u zadano vrijeme, dodajte ih ovdje sada ili ih prilagodite prema potrebi.

Napomena: ako želite i grafički prikazati podatke, MORATE ih pohraniti barem jednom u minuti. Nije važno ažuriraju li se vaši senzorski podaci ovako brzo, jednostavno morate reći rr4dj da ih pohrani jednom u minuti.

S tim definiranjem, trebali biste početi vidjeti neke ispravljačke pogreške koje vam govore da se vrijednosti spremaju.

Sljedeće, napravimo nekoliko lijepih grafikona svih ovih podataka. Zaista je lako. Da biste napravili grafikon pojedinačnog senzora, dodajte sljedeće na kartu svoje web lokacije:

Stavka grafikona = Spavaća soba_Vlažnost = h

To je doslovno sve što vam treba. Valjane vrijednosti za razdoblje su h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; trebalo bi biti jasno što to znači. Zadana je vrijednost D za podatke za cijeli dan ako nisu navedeni.

Da biste izradili grafikon s više stavki, jednostavno iscrtajte naziv grupe:

Stavka grafikona = Razdoblje vlažnosti = h

Možda će vas također zanimati podatak da ovaj grafikon možete koristiti i drugdje; stvara sliku pomoću sljedećeg URL -a: http: // YOUROPENHABURL: 8080/chart? groups = Vlažnost & period = h

Kako je Vaše Dolazi OpenHAB sustav?

To je to za ovaj dio vodiča, ali nemojte očekivati ​​da ćete ovo zadnji put čuti o OpenHAB -u. Nadajmo se da su vam ovo i vodič za početnike dali solidne temelje za razvoj vašeg vlastitog cjelovitog sustava OpenHAB - ali to je proces koji nikada nije do kraja dovršen.

Srećom, OpenHAB se može dobro skalirati od nekoliko uređaja do stotina, od jednostavne složenosti pravila do krajnje u kućnoj automatizaciji - pa kako napreduje vaš sustav? Koje ste uređaje odabrali? Koji je sljedeći veliki projekt kojim ćete se baviti?

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

Nadamo se da vam se sviđaju stavke koje preporučujemo i raspravljate! MUO ima pridružena i sponzorirana partnerstva, pa od nekih vaših kupnji primamo dio prihoda. To neće utjecati na cijenu koju plaćate i pomaže nam da ponudimo najbolje preporuke proizvoda.

Udio Udio Cvrkut E -pošta Vodič za animaciju govora za početnike

Oživljavanje govora može biti izazov. Ako ste spremni započeti dodavanje dijaloga u svoj projekt, mi ćemo za vas razbiti postupak.

Pročitajte Dalje
Povezane teme
  • Uradi sam
  • Pametna kuća
  • Arduino
  • Kućna automatizacija
  • Dugi oblik
  • Vodič za dugačke oblike
O autoru James Bruce(707 objavljenih članaka)

James je diplomirao umjetnu inteligenciju i ima CompTIA A+ i Network+ certifikat. Kad nije zaposlen kao urednik pregleda hardvera, uživa u LEGO -u, VR -u i društvenim igrama. Prije nego što se pridružio MakeUseOfu, bio je tehničar rasvjete, učitelj engleskog jezika i inženjer podatkovnog centra.

Više od Jamesa Brucea

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu