Vodnik za začetnike OpenHAB 2. del: ZWave, MQTT, pravila in grafikoni

Vodnik za začetnike OpenHAB 2. del: ZWave, MQTT, pravila in grafikoni

Brezplačno ne pomeni vedno 'ni tako dobro kot plačano', OpenHAB pa ni izjema. Odprtokodna programska oprema za domačo avtomatizacijo daleč presega zmogljivosti vseh drugih sistemov za avtomatizacijo doma na trgu - vendar je ni enostavno nastaviti. Pravzaprav je lahko naravnost frustrirajoče.





V prvem delu vodnika sem vas popeljal skozi namestitev OpenHAB na Raspberry Pi , predstavil temeljne koncepte OpenHAB -a in vam pokazal, kako v sistem dodate svoje prve postavke. Danes gremo še dlje:





  • Dodajanje naprav ZWave
  • Dodajanje krmilnika Harmony Ultimate
  • Predstavljamo pravila
  • Predstavljamo MQTT in namestimo posrednika MQTT na svoj Pi s senzorji na Arduinu
  • Zapisovanje podatkov in njihovo grafiranje

Uvod v Z-Wave

Z-Wave je že vrsto let prevladujoč protokol avtomatizacije doma: zanesljiv je, obsežno razvit in deluje na veliko daljšem razponu kot kateri koli drugi izdelki za pametne domove. Na voljo vam je na stotine senzorjev Z-Wave, ki opravljajo široko paleto nalog. OpenHAB lahko delo z Z-Waveom, vendar je pri nastavljanju težava, zanesljivost pa ni zagotovljena.





Če razmišljate o nakupu hiše, polne senzorjev Z-Wave, posebej za uporabo z OpenHAB, vas prosim, da premislite. Morda vam bo to odlično uspelo ali pa vas bodo pestile majhne, ​​a vztrajne težave. Vsaj hiše, polne senzorjev, ne kupujte, dokler ne boste imeli možnosti preizkusiti nekaj. Edini razlog, da se odločite za Z-Wave, je, če niste 100% zadovoljni z OpenHAB-om in bi želeli v prihodnje pustiti odprte možnosti: Z-Wave na primer deluje s središčem Samsung SmartThings, pa tudi z vozlišči, specifičnimi za Z-Wave kot je Homeseer in številne druge možnosti programske opreme, kot so domoticz .

Čeprav OpenHAB vključuje vezavo Z-Wave, morate to še vedno storiti najprej konfigurirajte omrežje Z-Wave , preden lahko OpenHAB začne iskati podatke. Če imate krmilno ploščo Rasberry, imate na voljo nekaj programske opreme za konfiguriranje omrežja, zato tega tukaj ne bomo obravnavali. Če ste kupili krmilnik Aeotec USB Z-Stick ali podoben, verjetno nimate vključene programske opreme, zato berite naprej.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB za ustvarjanje prehoda (navadna bela) KUPITE ZDAJ NA AMAZONU

Če že imate nastavljeno omrežje Z-Wave , lahko samo priključite krmilnik v Pi in začnete konfigurirati vezavo in predmete. Če je to vaš prvi napad v Z-Wave, je nekoliko bolj zapleteno.

Prvič, na strani strojne opreme: vsak krmilnik ima svoj način seznanjanja 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 odklopite iz vrat USB in enkrat pritisnete gumb, da ga preklopite v način vključevanja. Nato ga približajte napravi, ki jo seznanjate, in tudi na njej pritisnite gumb za vključitev (to se bo tudi razlikovalo: moja vtičnica Everspring zahteva, da se gumb trikrat zaporedoma pritisne, zato se tukaj naučite prebrati priročnik za svojo napravo) .





Z-Stick na kratko utripa, kar kaže na uspeh. To predstavlja težave pri priključitvi nazaj v Pi, saj so dodeljena nova vrata. Znova zaženite Pi, da ga ponastavite na standardna vrata, če ugotovite, da je bil dinamično dodeljen drugačnemu. Še bolje: ne priključite ga v Pi, dokler najprej ne opravite vseh povezav strojne opreme.

Namestitev vezi HABmin in Z-Wave

Ker OpenHAB dejansko ni konfiguracijski pripomoček za Z-Wave, bomo namestili drugo orodje za spletno upravljanje, ki to počne-nekaj, kar se imenuje HABmin. Pojdite na Skladišče HABmin Github prenesite trenutno izdajo. Ko ga razpakirate, 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 Aotec 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 poimenujte 'habmin' (male črke so pomembne). Prenesite preostale naložene datoteke.

Opomba: Obstaja tudi a HABmin 2 v aktivnem razvoju. Namestitev je skoraj enaka, vendar z enim dodatkom .jar. Morda bi bilo vredno poskusiti oboje, samo da bi videli, kaj vam je ljubše.

Če še niste, priključite krmilnik v svoj Pi. Če želite najti ustrezna vrata, vnesite naslednje.

ls /dev /tty*

Iščete karkoli z imenom USB ali v mojem konkretnem primeru se je Z-stick predstavil kot / dev / ttyACM0 (modem). Morda bi bilo lažje enkrat narediti ukaz, preden ga priključite, in enkrat potem, da boste lahko videli, kaj se spremeni, če niste prepričani.

Odprite konfiguracijsko datoteko OpenHAB in spremenite razdelek o Z-Wave, razkomentirajte obe vrstici in vnesite dejanski naslov naprave. Zadnji korak zame je bil uporabniku OpenHAB -a omogočiti dostop do modema.

sudo usermod -a -G dialout openhab

Zdaj, če želite vse sprožiti, znova zaženite OpenHAB

sudo storitev openhab restart

Upajmo, da če preverite dnevnik odpravljanja napak, boste videli nekaj takega. Čestitamo, zdaj govorite o Z-Waveu. Morda boste našli tudi dnevnik za odpravljanje napak, preplavljen s sporočili iz različnih vozlišč Z-Wave. Začnimo s preverjanjem HABMIN -a, da vidimo, kaj smo našli: http: //openhab.local: 8080/habmin/index.html (zamenjavo openhab.local z imenom gostitelja Raspberry Pi ali naslovom IP).

V HABMIN -u je veliko za videti, vendar nas resnično skrbi le Konfiguracija -> Veze -> Z -Wave -> Naprave zavihek, kot lahko vidite spodaj. Razširite vozlišče, da uredite oznako lokacije in imena za lažjo uporabo.

Konfiguriranje elementov Z-Wave

Vsaka naprava Z-Wave bo imela posebno konfiguracijo za OpenHAB. Na srečo je večina naprav že raziskana in za vas bodo že primeri. Konfiguriranje naprav po meri, ki niso prepoznane, presega obseg tega priročnika, vendar predpostavimo, da je za zdaj podprto.

Najprej imam osnovno stikalo in merilnik moči Everspring AN158 na vozlišču 3. Hitro Googlanje me je pripeljalo do objave v spletnem dnevniku na spletnem mestu Wetwa.re z vzorčno konfiguracijo artikla. To sem prilagodil na naslednji način:

Preklopite razvlaževalec_Spreklopite 'Razvlaževalec' {zwave = '3: command = switch_binary'}

Število Razvlaževalec_Watts 'Poraba razvlaževalnika [%.1f W]' {zwave = '3: ukaz = meter'}

Popolno.

Naslednji je večosebni senzor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 več-senzor (Z-Wave Plus) KUPITE ZDAJ NA AMAZONU

Za to sem našel vzorčno konfiguracijo na naslovu iwasdot.com , moj multisensor pa je na vozlišču 2.

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

Število Hallway_Humidity 'Vlažnost hodnika [%.0f %%]' (Hodnik, vlažnost) {zwave = '2: 0: ukaz = sensor_multilevel, sensor_type = 5'}

Število Hallway_Luminance 'Hodnik Luminance [%.0f Lux]' (Hodnik) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

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

Številčni senzor_1_battery 'Battery [%s %%]' (Motion) {zwave = '2: 0: command = battery'}

Če se vam oblika zapisa zdi čudna, se vrnite na prvo vodnik za začetnike , natančneje razdelek vezave Hue, kjer razlagam, kako se dodajajo elementi. Verjetno boste morali samo kopirati take primere lepljenja, če pa imate novo napravo, zavezujoča dokumentacija podrobno opisuje vse ukaze .

Logitech Harmony vez

Preden skočimo na pravila, sem želel dodati kratek zapis o delu z vezavo Harmony. Sem velik oboževalec serije vrhunskih daljincev Harmony za poenostavitev izkušnje domačega medijskega središča, vendar pogosto predstavljajo ločen sistem v pametnem domu. Z OpenHAB -om so lahko dejavnosti Logitech Harmony in popoln nadzor nad napravami del vašega centraliziranega sistema in celo vključene v pravila avtomatizacije.

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

Ne pozabite chown imenik vezi, ko končate:

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

Če želite konfigurirati vezavo, odprite datoteko openhab.cfg in dodajte nov razdelek, kot sledi:

########## HARMONSKI DALJINSKI NADZORI ##########

harmonyhub: gostitelj = 192.168.1.181 ali vaš ip

harmonyhub: uporabniško ime = your-harmony-email-login

harmonyhub: geslo = Vaše geslo

Naslov IP je naslov vašega vozlišča Harmony. Če želite to ugotoviti, uporabite omrežni bralnik. Vnesti morate tudi podatke za prijavo, ki jih vnesete ob zagonu standardnega pripomočka za konfiguracijo Harmony. To je to. Ko znova zaženete Hue, bi moral dnevnik odpravljanja napak nenadoma izhajati iz vezave.

To je seznam vseh vaših dejavnosti, naprav in ukazov, ki jih je mogoče poslati, v obliki JSON. To je dobro, da to kopirate za prihodnjo uporabo. lahko z zložljivimi vozlišči še olajšate branje z lepljenjem v spletni oblikovalnik JSON kot je ta .

Poleg standardne dejavnosti PowerOff, ki je privzeta, boste tukaj našli svoje opredeljene dejavnosti, navedene po imenu. Ustvarimo preprost gumb z enim gumbom za začetek dejavnosti. Najprej v datoteko elementov dodajte naslednjo vrstico. Če želite, spremenite skupino in ikono.

/ * Harmony Hub */

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

To je a dvosmerna vezava nizov , ki je sposoben tako pridobiti trenutno dejavnost kot ukaz trenutne dejavnosti, da je nekaj drugega. Sedaj lahko zanj ustvarimo gumb v datoteki zemljevida mesta.

Preklopi element = Preslikave usklajenosti_aktivnosti = [PowerOff = 'Izključeno', Vaja = 'Vaja', 13858434 = 'TV', Karaoke = 'Karaoke']

kako pospešiti delovanje ps4

V oglatem oklepaju boste videli vsako dejavnost skupaj z oznako. Na splošno se lahko neposredno sklicujete na dejavnosti, kot ste jih poimenovali na daljinskem upravljalniku, toda izjema pri tem 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. Shranite in osvežite vmesnik, videti bi morali nekaj podobnega:

V svojih pravilih se lahko sklicujete tudi na dejavnosti, kot bomo videli v nadaljevanju. Preberite wiki stran za več informacij o Harmonična vezava .

Splošen uvod v pravila

Večina vozlišč za pametne domove vključuje ustvarjanje pravil, tako da se lahko samodejno odzovete na podatke senzorjev in dogodke v domu. Pravzaprav bi trdil, da resnično pameten dom ni tisti, ki ga morate porabiti za interakcijo z mobilnimi aplikacijami - je tisti, ki je za končnega uporabnika neviden in popolnoma avtomatiziran. V ta namen OpenHAB vključuje tudi zmogljiv skriptni jezik za pravila, ki ga lahko programirate, kar precej presega kompleksnost večine pametnih domačih vozlišč ali receptov IFTTT.

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

pravilo 'Lučka v pisarni prižge, ko bo James navzoč'

kdaj

Element JamesInOffice se je spremenil iz OFF v ON

potem

sendCommand (Office_Hue, ON)

konec

pravilo 'Uradna luč ugasne, ko James odide'

kdaj

Element JamesInOffice se je spremenil iz VKLJUČENO v IZKLOPLJENO

potem

sendCommand (Office_Hue, OFF)

konec

Najprej poimenujemo pravilo - bodite opisni, da boste vedeli, kateri dogodek se sproži. Nato določimo naše preprosto pravilo tako, da rečemo ko je x res, potem naredite y . Konec pomeni zaprtje tega posebnega pravila. V pravilih lahko uporabite številne posebne besede, vendar zaenkrat obravnavamo dva preprosta dela sintakse - Artikel , ki vam omogoča, da poizvedujete o stanju nečesa; in sendCommand , ki naredi točno to, kar mislite, da bo. Rekel sem ti, da je to enostavno.

Verjetno je nepotrebno uporabiti par pravil, toda ko postane moja logika bolj zapletena, bi bilo koristno, če bi jih ločili glede na to, ali vstopam ali zapuščam območje - in morda bi bilo dobro, če bi kamor koli dodali senzor svetlobe v enačbo, da ne bomo po nepotrebnem prižigali luči.

Poglejmo še en primer za ustvarjanje razporejenega pravila.

pravilo 'Vsako jutro telovadite'

kdaj

Čas cron '0 0 8 1/1 *? *'

potem

harmonyStartActivity ('Vaja')

konec

Ponovno imenujemo pravilo, pogoje, kdaj naj se sproži, in ukrepe, ki jih je treba sprejeti. Toda v tem primeru definiramo časovni vzorec. Smešna koda, ki jo vidite v narekovajih, je izraz CRON za Quartz Scheduler (oblika je nekoliko drugačna od običajne CRONtab). uporabil sem cronmaker.com za pomoč pri ustvarjanju izraza, lahko pa preberete tudi vodič po obliki [Ni več na voljo] za podrobno razlago in več primerov.

CronMaker.com se uporablja za ustvarjanje pravilno oblikovanega izraza Cron

Moja pravila pravijo preprosto: 'Vsako jutro zjutraj, vsak dan v tednu, povej sistemu Harmony Ultimate, naj začne z vadbo', ki nato aktivira televizor, Xbox, ojačevalnik in pritisne gumb A za zagon po eni minuti. disk v pogonu.

Na žalost OpenHAB zame še ne more narediti vaje.

Še eno pravilo, ki vam ga želim pokazati, je nekaj, kar uporabljam za uravnavanje vlažnosti v mojem domu. Imam en sam razvlaževalec zraka, ki ga moram premikati povsod, kjer je to potrebno, zato sem se odločil, da pogledam vse svoje senzorje vlažnosti, poiščem, kateri je najvišji, in to shranim v spremenljivko. Trenutno se sproži vsako minuto, vendar jo je mogoče zlahka znižati. Najprej si oglejte:

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

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

uvoz java.lang.String

pravilo 'Nadzor vlažnosti'

kdaj Time cron '0 * * * *?'

potem

var prevHigh = 0

var highHum = ''

Vlažnost? .Členi.za vsakega [brnenje |

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

if (hum.state kot DecimalType> prevHigh) {

prevHigh = hum.state

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

}

trgovina Microsoft ne deluje v sistemu Windows 10

]

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

postUpdate (Dehumidifier_Needed, highHum);

konec

Jedro pravila je v Vlažnost? .Člani. Daleč vrstica. Vlažnost je ime skupine mojih senzorjev vlažnosti; .člani zgrabi vse predmete v tej skupini; za vsakogar jih ponavlja (s čudno obliko oglatih oklepajev, ki je verjetno ne poznate). Sintaksa pravil je izpeljanka iz Xtenda, zato lahko preberete Xtend dokumentacija če ne najdete primera za prilagoditev.

Verjetno vam ne bo treba - obstaja na stotine primerov pravil:

MQTT za OpenHAB in internet stvari

MQTT je lahek sistem sporočil za komunikacijo med stroji-nekakšen Twitter za vaš Arduinos ali Raspberry Pis, da se pogovarjata (čeprav seveda deluje veliko več kot le ta). Hitro pridobiva na priljubljenosti in se znajde kot dom z napravami Internet of Things, ki so običajno mikrokrmilniki z nizkimi viri, ki potrebujejo zanesljiv način za prenos podatkov senzorjev nazaj v vaše zvezdišče ali za sprejem oddaljenih ukazov. Ravno to bomo počeli s tem.

Toda zakaj bi znova izumili kolo?

MQ Telemetry Transport je bil izumljen že leta 1999 za povezovanje naftovoda prek počasnih satelitskih povezav, posebej zasnovan tako, da zmanjša porabo baterije in pasovno širino, hkrati pa zagotavlja zanesljivo dostavo podatkov. Z leti so načela oblikovanja ostala enaka, vendar se je primer uporabe preusmeril s specializiranih vgrajenih sistemov na splošne naprave interneta stvari. Leta 2010 je bil protokol objavljen brezplačno, odprt za uporabo in izvajanje vsem. Radi imamo brezplačno.

Morda se sprašujete, zakaj se sploh trudimo s še enim protokolom - navsezadnje že imamo HTTP -, ki ga je mogoče uporabiti za pošiljanje hitrih sporočil med vsemi sistemi, povezanimi s spletom (na primer OpenHAB in IFTTT, zlasti pri novem kanalu izdelovalca). ). In imeli bi prav. Vendar so stroški obdelave strežnika HTTP precej veliki - tako, da jih ne morete zlahka zagnati na vgrajenem mikrokrmilniku, kot je Arduino (vsaj lahko, vendar vam ne bo ostalo veliko pomnilnika za kaj drugega ). MQTT je po drugi strani lahek, zato pošiljanje sporočil po vašem omrežju ne bo zamašilo cevi in ​​se zlahka prilega našemu malemu pomnilniškemu prostoru Arduino.

Kako deluje MQTT?

MQTT zahteva strežnik (imenovan 'posrednik') in eno ali več strank. Strežnik deluje kot posrednik, sprejema sporočila in jih ponovno oddaja vsem zainteresiranim strankam.

Nadaljujmo z Twitter za stroje vseeno analogija. Tako kot lahko uporabniki Twitterja tvitajo svoje nesmiselne 140 znake, uporabniki pa lahko 'sledijo' drugim uporabnikom, da vidijo kuriran tok objav, se lahko odjemalci MQTT naročijo na določen kanal, da prejemajo vsa sporočila od tam, pa tudi objavijo svoja sporočila na ta kanal. Ta vzorec objave in naročnine se imenuje pub / sub v nasprotju s tradicijo odjemalec/strežnik model HTTP.

HTTP zahteva, da se obrnete na računalnik, s katerim komunicirate, recimo Pozdravljeni, nato pa se med prihodom ali dajanjem podatkov medsebojno medsebojno priznavate. Pri pub/sub odjemalcu, ki objavlja, ni treba vedeti, na katere stranke so naročeni: samo izčrpa sporočila, posrednik pa jih ponovno razdeli vsem naročenim odjemalcem. Vsak odjemalec lahko objavi teme in se na njih naroči, tako kot uporabnik Twitterja.

Za razliko od Twitterja pa MQTT ni omejen na 140 znakov. Je podatkovno agnostičen, zato lahko pošiljate majhna števila ali velike besedilne bloke, datagrame v formatu JSON ali celo slike in binarne datoteke.

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

Pomembno je tudi vedeti, da OpenHAB ne bo deloval kot vaš posrednik MQTT - to bomo obravnavali kasneje. Vendar pa bo OpenHAB deloval kot odjemalec: lahko objavi vaš dnevnik dejavnosti OpenHAB in tudi poveže določene kanale z napravami, tako da imate lahko na primer stikalo, ki ga nadzirajo sporočila MQTT na določenem kanalu. 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 objavite tudi sporočila, ta ne bo deloval kot strežnik. Za to morate uporabiti spletnega posrednika MQTT (plačanega ali brezplačnega) ali namestiti brezplačno programsko opremo na svoj Pi. Vse bi rad obdržal v hiši, zato sem Mosquitto namestil na Pi.

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

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 vse, kar moramo storiti, da strežnik MQTT deluje in deluje v lokalnem omrežju. Vaš posrednik privzeto deluje na vratih 1883.

Preverite, ali vaš strežnik MQTT deluje z brezplačnim MQTT.fx, ki je namenjen več platformam. Če želite ustvariti nov profil, kliknite ikono nastavitev in vnesite naslov ali ime vašega Raspberry Pi. Shranite in pritisnite povezavo. Če mali semafor v zgornjem desnem kotu zasveti zeleno, ste pripravljeni.

Za hiter test kliknite zavihek 'naročite se' in vnesite inTopic / v besedilno polje, nato pritisnite Naročite se gumb. Zdaj ste naročeni na prejemanje sporočil na temo z imenom inTopic, čeprav bo prikazano 0 sporočil. Vrnite se na zavihek za objavo, v majhno polje vnesite inTopic in kratko sporočilo v veliko polje spodaj. Zadel Objavi nekajkrat in se ozrite nazaj na zavihek naročnina. V tej temi bi morali videti nekaj sporočil.

Preden v svoje omrežje dodamo nekaj dejanskih senzorjev, se moramo seznaniti z nivoji tem, ki nam omogočajo strukturiranje in filtriranje omrežja MQTT. Imena tem razlikujejo med velikimi in malimi črkami, ne smejo se začeti z $ ali vsebovati presledkov ali znakov, ki niso ASCII-standardne programske prakse za imena spremenljivk.

/ Ločilo označuje hierarhično raven teme, na primer naslednje veljavne ravni teme.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/temperatura

myHome/livingRoom/vlažnost

myHome/kuhinja/temperatura

myHome/kuhinja/vlažnost

Morali bi že 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, da vsako spremenljivko senzorja objavite kot lastno raven teme - razčlenite se na več podrobnosti (kot v zgornjih primerih) - namesto da poskušate objaviti več vrst senzorjev v istem kanalu .

Naročniki lahko nato objavijo ali se naročijo na poljubno število ravni posameznih tem ali uporabijo nekatere posebne nadomestne znake za filtriranje od zgoraj v drevesu.

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

myHome/+/temperatura

bi naročnika naročil na oboje

myHome/livingRoom/temperatura

myHome/kuhinja/temperatura

... ne pa tudi ravni vlažnosti.

# Je nadomestni znak na več ravneh, zato lahko iz matrike senzorjev livingRoom pridobite kar koli z:

myHome/livingRoom/#

Tehnično se lahko naročite tudi na korensko raven #, s katero dobite popolnoma vse, kar gre skozi posrednika, vendar je to lahko podobno, kot če bi si v obraz zataknili požarno cev: nekoliko premočno. Poskusite se povezati z javnim posrednikom MQTT iz HiveMQ in se naročiti na #. V nekaj sekundah sem prejel približno 300 sporočil, preden se je moja stranka sesula.

Nasvet za začetnike MQTT: ' /moj dom/' je druga tema od ' moj dom/' - vključitev poševnice 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 Arduinom, Ethernetnim ščitom in senzorjem temperature in vlažnosti DHT11 - verjetno ga imate v začetnem kompletu, če pa ne, pa okoljski senzor zamenjajte za gibanje. senzor (ali celo gumb).

Objavljanje MQTT iz Arduina z Ethernetno povezavo

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

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

Tukaj je moja vzorčna koda, ki jo lahko prilagodite : izhod signala DHT11 je na nožici 7. Spremenite IP strežnika za IP vašega Pi v naslednji vrstici:

client.setServer ('192.168.1.99', 1883);

Na žalost ne moremo uporabiti njegovega prijaznega imena (OpenHAB.local v mojem primeru) ker je sklad TCP/IP na Arduinu zelo poenostavljen, bi bilo dodajanje kode za poimenovanje Bonjour veliko spomina, ki ga ne želimo izgubiti. Če želite spremeniti teme, na katerih se predvajajo podatki senzorjev, se pomaknite navzdol na te vrstice:

medpomnilnik char [10];

dtostrf (t, 0, 0, pufer);

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

dtostrf (h, 0, 0, pufer);

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

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

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

Preglejte kodo in videli boste, da lahko preprosto upravljate LED ali rele, na primer s pošiljanjem ukazov na določene kanale. V vzorčni kodi preprosto pošlje sporočilo nazaj, ki potrjuje prejem ukaza.

Naložite svojo kodo, priključite Arduino v omrežje in se z uporabo MQTT.fx naročite na katero koli # ali openhab / himitsu / # (ali karkoli ste spremenili ime sobe, vendar ne pozabite na koncu vključiti #). Kmalu bi morali videti sporočila, ki prihajajo; in če pošljete VKLOP ali IZKLOP na temo ukaza, se bodo vrnila tudi priznanja.

Vezava MQTT za OpenHAB

Zadnji korak v enačbi je, da to priključite na OpenHAB. Za to seveda potrebujemo vezavo.

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

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

Uredite konfiguracijsko datoteko, da omogočite vezavo.

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

mqtt: broker.clientId = odprta hab

Znova zaženite OpenHAB

sudo storitev openhab restart

Nato dodajmo element ali dva:

/ * Senzorji MQTT */

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

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

Doslej bi morali razumeti obliko; dobiva a Številka iz vezave MQTT na določeno temo. To je preprost primer, na katerega se lahko obrnete na wiki strani lahko postane veliko bolj zapleteno .

Čestitamo, zdaj imate osnovo poceni senzorskega niza na osnovi Arduina. V prihodnosti bomo to ponovno pregledali in Arduino postavili na njihovo popolnoma ločeno RF omrežje. Ustvaril sem tudi identično različico za plošče Wizwiki 7500 če slučajno imate enega od teh.

Obstojnost in grafični podatki

Verjetno ste že nastavili kup senzorjev, bodisi iz Z-Wave ali Arduinosa po meri, ki izvaja MQTT-tako da si lahko kadar koli ogledate trenutno stanje teh senzorjev, prav tako pa bi se morali odzvati na njihovo vrednost v pravilih. Zanimivo pri vrednostih senzorjev pa je, da se sčasoma spreminjajo: tu pride do vztrajnosti in grafičnega prikaza. Vztrajnost v OpenHAB pomeni shranjevanje podatkov skozi čas. Gremo naprej in nastavimo RRD4J (Round Robin Database for Java), ki se imenuje, ker se podatki shranjujejo na krog - starejši podatki se zavržejo, da se stisne velikost baze podatkov.

Namestite pakete rrd4j z naslednjimi ukazi.

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

Nato ustvarite novo datoteko z imenom rrd4j.persist v konfiguracije/vztrajnost mapo. Prilepite naslednje:

Strategije {

vsake minute: '0 * * * *?'

everyHour: '0 0 * * *?'

vsak dan: '0 0 0 * *?'

privzeto = vsaka sprememba

}

Predmeti {

// ohranijo vse, ko se vrednost posodobi, samo privzeto, in jih ob zagonu obnovijo iz zbirke podatkov

*: strategy = everyChange, restoreOnStartup

// Nato določimo posebne strategije vsake ure za karkoli v skupini Temperature in vsako minuto za vlažnost

kdaj je bil ustvarjen moj google račun

Temperatura*: strategija = vsaka ura

Vlažnost*: strategija = vsaka minuta

// lahko tudi tukaj dodate posebne postavke, na primer

// Spalnica_Vlažnost, JamesInOffice: strategija = vsaka minuta

}

V prvem delu te datoteke opredeljujemo strategije, kar pomeni samo dati ime izrazu CRON. To je enako, kot smo že počeli z My.OpenHAB, vendar tokrat ustvarjamo nekaj novih strategij, ki jih lahko uporabljamo vsak dan, vsako uro in vsako minuto. Nisem jih še porabil, morda pa bom v prihodnosti.

V drugi polovici datoteke rr4dj povemo, katere podatkovne vrednosti shraniti. Privzeto bomo shranili vse ob vsaki posodobitvi, vendar sem določil tudi nekaj časovno zasnovanih strategij za posebne senzorje. Temperature me ne motijo ​​preveč, zato sem to nastavil tako, da prihranim samo vsako uro, vendar me vlaga zelo skrbi, zato želim videti, kako se spreminja vsako minuto. Če želite ob določenih urah shraniti še druge podatke, jih dodajte zdaj ali prilagodite po potrebi.

Opomba: če želite tudi grafično prikazati podatke, jih morate MORATI shraniti vsaj enkrat na minuto. Ni važno, ali se podatki vašega senzorja tako hitro posodobijo, preprosto morate povedati rr4dj, da jih shrani enkrat na minuto.

Ko je to definirano, bi morali začeti videti nekaj izhoda za odpravljanje napak, ki vam pove, da se vrednosti shranjujejo.

Nato naredimo nekaj lepih grafov vseh teh podatkov. Res je lahko. Če želite izdelati graf posameznega senzorja, na zemljevid spletnega mesta dodajte naslednje:

Postavka grafikona = Spalnica_Vlažnost = h

To je dobesedno vse, kar potrebujete. Veljavne vrednosti za obdobje so h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; jasno bi moralo biti, kaj to pomenijo. Privzeto je D za celodnevni prenos podatkov, če ni določeno.

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

Postavka grafikona = Obdobje vlažnosti = h

Morda vas bo zanimalo tudi, da lahko ta graf uporabite drugje; ustvarja sliko z naslednjim URL -jem: http: // YOUROPENHABURL: 8080/chart? groups = Vlažnost in obdobje = h

Kako je Vaš Prihaja sistem OpenHAB?

To je to za ta del vodnika, vendar ne pričakujte, da boste to zadnjič slišali od nas o OpenHAB -u. Upajmo, da sta vam ta in vodnik za začetnike zagotovila trdno podlago za razvoj lastnega celotnega sistema OpenHAB - vendar je to proces, ki nikoli ni popolnoma dokončan.

Na srečo se lahko OpenHAB razširi od nekaj naprav do stotine, od preproste kompleksnosti pravil do vrhunske avtomatizacije doma - kako torej napreduje vaš sistem? Katere naprave ste izbrali? Kateri je naslednji velik projekt, s katerim se boste lotili?

Pogovorimo se v komentarjih - in prosim, če se vam je zdel ta vodnik uporaben, kliknite te gumbe za skupno rabo in svojim prijateljem povejte, kako lahko tudi oni nastavijo svoj sistem OpenHAB.

Upamo, da so vam predmeti, ki jih priporočamo in razpravljali, všeč! MUO ima pridružena in sponzorirana partnerstva, zato od nekaterih vaših nakupov prejemamo del prihodka. To ne vpliva na ceno, ki jo plačate, in nam pomaga ponuditi najboljša priporočila za izdelke.

Deliti Deliti Cvrkutati E-naslov Vodnik za začetnike po animaciji govora

Animacija govora je lahko izziv. Če ste pripravljeni na začetek dodajanja dialoga v svoj projekt, bomo za vas razčlenili postopek.

Preberite Naprej
Sorodne teme
  • DIY
  • Pametni dom
  • Arduino
  • Domača avtomatizacija
  • Dolga oblika
  • Vodnik po dolgi obliki
O avtorju James Bruce(707 objavljenih člankov)

James je diplomiral iz umetne inteligence in je certificiran za CompTIA A+ in Network+. Ko ni zaposlen kot urednik pregledov strojne opreme, uživa v igrah LEGO, VR in družabnih igrah. Preden se je pridružil MakeUseOf, je bil tehnik razsvetljave, učitelj angleščine in inženir podatkovnega centra.

Več od Jamesa Brucea

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite