OpenHABi algajate juhend 2. osa: ZWave, MQTT, reeglid ja diagrammid

OpenHABi algajate juhend 2. osa: ZWave, MQTT, reeglid ja diagrammid

Tasuta ei tähenda alati 'pole nii hea kui tasuline' ja OpenHAB pole erand. Avatud lähtekoodiga koduautomaatika tarkvara ületab tunduvalt kõigi teiste turul olevate koduautomaatikasüsteemide võimalusi, kuid seadistamine pole lihtne. Tegelikult võib see olla lausa masendav.





Juhendi esimeses osas juhendasin teid läbi OpenHAB -i installimine Raspberry Pi -le , tutvustas OpenHABi põhikontseptsioone ja näitas, kuidas lisada oma esimesed üksused süsteemi. Täna läheme kaugemale:





  • ZWave seadmete lisamine
  • Harmony Ultimate kontrolleri lisamine
  • Reeglite tutvustamine
  • Tutvustame MQTT -d ja paigaldame oma Pi -le MQTT -maakleri, anduritega Arduino
  • Andmete salvestamine ja joonistamine

Sissejuhatus Z-Wave'i

Z-Wave on aastaid olnud domineeriv koduautomaatika protokoll: see on usaldusväärne, laialdaselt välja töötatud ja töötab palju pikemas vahemikus kui ükski teine ​​nutika kodu toode. Teil on saadaval sadu Z-Wave andureid, mis täidavad mitmesuguseid ülesandeid. OpenHAB saab töötavad koos Z-Wave'iga, kuid selle seadistamine on tülikas ja töökindlus pole garanteeritud.





Kui kaalute spetsiaalselt OpenHAB-iga kasutamiseks mõeldud Z-Wave andureid täis maja ostmist, soovitan teil uuesti kaaluda. See võib teie jaoks suurepäraselt välja tulla või võib see vaevata väikeste, kuid püsivate probleemidega. Vähemalt ärge ostke andureid täis maja enne, kui teil on olnud võimalus mõnda neist proovida. Ainus põhjus Z-Wave'i valimiseks on see, kui te pole 100% OpenHAB-i kasutanud ja soovite oma võimalused tulevikus avatuks jätta: näiteks Z-Wave töötab koos Samsungi SmartThingsi jaoturiga, aga ka Z-Wave'i spetsiifiliste jaoturitega nagu Homeseer, ja mitmeid muid tarkvaravalikuid, näiteks domoticz .

Kuigi OpenHAB sisaldab Z-Wave sidumist, peate seda siiski tegema seadistage esmalt Z-Wave võrk , enne kui OpenHAB saab sellelt andmeid pärida. Kui teil on Rasberry kontrollerplaat, on teil võrgu konfigureerimiseks kaasas tarkvara, nii et me ei käsitle seda siin. Kui ostsite Aeotec USB Z-Stick kontrolleri vms, pole teil tõenäoliselt tarkvara kaasas, seega lugege edasi.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB lüüsi loomiseks (tavaline valge) OSTA KOHE AMAZONILT

Kui teil on juba Z-Wave võrgu seadistus , saate lihtsalt ühendada oma kontrolleri Pi -ga ja alustada sidumise ja üksuste konfigureerimist. Kui see on teie esimene sissetung Z-Wave'i, on see natuke keerulisem.

Esiteks riistvara poolel: igal kontrolleril on oma viis seadmetega sidumiseks (tehniliselt tuntud kui „kaasamisrežiim”, milles on määratud sõlme ID). Aotec Z-Sticki puhul tähendab see, et eemaldate selle USB-pordist ja vajutate nuppu ühe korra, et see lülitada kaasamisrežiimi. Seejärel viige see siduva seadme lähedale ja vajutage ka sellel olevat kaasamisnuppu (see võib samuti varieeruda: minu Everspringi pistikupesa nõuab, et nuppu vajutataks kolm korda järjest, nii et õppetund on lugeda seadme kasutusjuhendit) .





Z-Stick vilgub korraks, et näidata edu. See tekitab probleeme selle uuesti ühendamisel Pi -ga, kuna on määratud uus port. Taaskäivitage oma Pi, et see lähtestada tagasi standardporti, kui leiate, et see on dünaamiliselt ümber määratud. Veelgi parem: ärge ühendage seda Pi -ga enne, kui olete kõigepealt kõik riistvara sidumised teinud.

HABmini ja Z-Wave-köidete paigaldamine

Kuna OpenHAB ei ole tegelikult Z-Wave'i konfigureerimisutiliit, installime teise veebihaldustööriista, mis seda teeb-midagi nimega HABmin. Mine edasi HABmin Githubi hoidla laadige alla praegune versioon. Kui olete selle lahti pakkinud, leiate 2 .jar failid kataloogis addons - need tuleks paigutada OpenHAB Home'i jagamise vastavasse lisandmoodulite kataloogi (kui kasutate ka Aotec gen5 Z-Stick'i, veenduge, et teil oleks vähemalt Z-Wave'i köite versioon 1.8) .





Seejärel looge veebirakenduste kataloogi uus kaust ja nimetage see 'habminiks' (väikesed tähed on olulised). Kopeerige ülejäänud allalaaditud failid sinna.

Märkus: seal on ka a HABmin 2 aktiivse arengu all. Installimine on peaaegu sama, kuid ühe täiendava .jar lisandiga. Võib -olla tasub proovida mõlemat, et näha, millist eelistate.

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

ls /dev /tty*

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

Avage OpenHAB konfiguratsioonifail ja muutke Z-Wave'i jaotist, tühistades mõlemad read ja lisades oma tegeliku seadme aadressi. Minu viimane samm oli lubada OpenHAB -i kasutajal modemile juurde pääseda.

sudo usermod -a -G dialout openhab

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

sudo teenuse openhab taaskäivitamine

Loodetavasti näete silumislogi vaatamisel midagi sellist. Palju õnne, nüüd räägite Z-Wave'ist. Samuti võite silumislogi üle vaadata erinevate Z-Wave'i sõlmede sõnumitega. Alustuseks kontrollime HABMIN -i, et näha, mida on leitud: http: //openhab.local: 8080/habmin/index.html (openhab.local asendamine teie Raspberry Pi hostinime või IP -aadressiga).

HABMINis on palju näha, kuid me oleme tõesti mures ainult selle pärast Seadistamine -> Köited -> Z -Wave -> Seadmed vahekaart, nagu näete allpool. Laiendage sõlme asukoha ja nimesildi muutmiseks, et neid oleks mugavam kasutada.

Z-Wave'i üksuste seadistamine

Igal Z-Wave-seadmel on OpenHAB-i jaoks konkreetne konfiguratsioon. Õnneks on enamik seadmeid juba uuritud ja teie jaoks on juba näiteid. Tundmatute kohandatud seadmete seadistamine väljub sellest juhendist palju, kuid oletame, et seda praegu toetatakse.

Esiteks on mul sõlmes 3 põhiline Everspring AN158 toitelüliti ja arvesti. Kiire guugeldamine viis mind ajaveebi postituseni saidil Wetwa.re koos näidisüksuse konfiguratsiooniga. Ma kohandasin seda järgmiselt:

Lülita õhukuivati_Lülita „Kuivati“ {zwave = '3: command = switch_binary'}

Number Dehumidifier_Watts 'Kuivati ​​energiatarve [%.1f W]' {zwave = '3: command = meter'}

Täiuslik.

Järgmine on Aeotec Gen5 multiandur.

Aeon Labs Aeotec Z-Wave Gen5 mitmeandur (Z-Wave Plus) OSTA KOHE AMAZONILT

Selle jaoks leidsin näidiskonfiguratsiooni aadressilt iwasdot.com ja minu multisensor on sõlmes 2.

Number Esiku_temperatuur 'Esiku temperatuur [%.1f ° C]' (esik, temperatuur) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0'}

Number Esiku_niiskus 'Esiku niiskus [%.0f %%]' (esik, niiskus) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

Number Esiku_Heledus 'Esiku heledus [%.0f Lux]' (Esik) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

Kontakt Hallway_Motion 'Esiku liikumine [%s]' (esik, liikumine) {zwave = '2: 0: command = sensor_binary, answer_to_basic = true'}

Numbriandur_1_battery 'Battery [%s %%]' (Motion) {zwave = '2: 0: command = battery'}

Kui selle vorming tundub teile kummaline, minge tagasi esimese juurde algaja juhend , täpsemalt jaotis Hue sidumine, kus selgitan, kuidas üksusi lisatakse. Tõenäoliselt peate kopeerima ainult selliseid näiteid, kuid kui teil on uus seade, on siduva dokumentatsiooni üksikasjad kõik käske .

Logitech Harmony Binding

Enne reeglite juurde asumist tahtsin lisada kiire märkuse Harmony köitega töötamise kohta. Ma olen koduse meediakeskuse kasutuskogemuse lihtsustamiseks Harmony sarja ülimate kaugjuhtimispultide fänn, kuid need on nutikodus sageli eraldi süsteemina. OpenHAB -i abil saavad Logitech Harmony tegevused ja seadme täielik juhtimine nüüd olla osa teie tsentraliseeritud süsteemist ja isegi automaatikareeglites.

Alustage kolme köitefaili installimisega, mille leiate, kasutades apt-cache'i, et otsida 'harmooniat':

Ärge unustage hüüdma sidumiste kataloogi uuesti, kui olete lõpetanud:

sudo apt-get install openhab-addon-action-harmonyhub

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

sudo apt-get install openhab-addon-io-harmonyhub

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

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

########## HARMONY kaugjuhtimispuldid ##########

harmonyhub: host = 192.168.1.181 või teie ip

harmonyhub: kasutajanimi = your-harmony-email-login

harmonyhub: parool = teie parool

IP -aadress on teie Harmony -jaoturi aadress. Selle leidmiseks kasutage võrguskannerit. Peate sisestama ka oma sisselogimisandmed, need, mis sisestate tavalise Harmony konfiguratsiooniliiti käivitamisel. See on kõik. Hue taaskäivitamisel peaks silumislogi sidumisest äkitselt väljuma.

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

Lisaks tavapärasele PowerOffi tegevusele, mis on vaikimisi, leiate siit ka oma määratletud tegevused nime järgi. Nüüd loome tegevuse alustamiseks lihtsa ühe nupuvajutuse. Esiteks lisage oma üksuste faili järgmine rida. Muutke soovi korral rühma ja ikooni.

/ * Harmony Hub */

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

See on kahesuunaline stringide sidumine , mis suudab nii praegust tegevust tuua kui ka käsu praeguseks tegevuseks midagi muud teha. Nüüd saame selle jaoks luua saidiplaani faili nupu.

Switch item = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Exercise', 13858434 = 'TV', Karaoke = 'Karaoke']

kuidas leida artikli avaldamise kuupäeva

Nurksulgudes näete iga tegevust koos sildiga. Üldiselt saate viidata tegevustele otse, nagu olete need oma kaugjuhtimispuldil nimetanud, kuid erand, mille leidsin, oli kõik, mille tegevuste nimes oli tühik, näiteks „Teleri vaatamine”. Sel juhul peate kasutama tegevuse ID -d. Jällegi leiate ID JSON -i silumisväljundist. Salvestage ja värskendage oma liidest, peaksite nägema midagi sarnast:

Samuti saate oma reeglites viidata tegevustele, nagu näeme järgmisena. Lisateabe saamiseks lugege wiki lehte Harmoonia sidumine .

Reeglite üldine sissejuhatus

Enamik nutikodu keskusi sisaldab teatud reeglite loomist, nii et saate automaatselt reageerida andurite andmetele ja kodus toimuvatele sündmustele. Tegelikult vaidleksin vastu sellele, et tõeliselt nutikas kodu pole see, mille jaoks peate kulutama aega mobiilirakendustega suhtlemiseks - see on lõppkasutajale nähtamatu ja täielikult automatiseeritud kodu. Sel eesmärgil sisaldab OpenHAB ka võimsat reeglite skriptikeelt, mida saate programmeerida, ületades kaugelt enamiku nutikodu jaoturite või IFTTT retseptide keerukuse.

Programmeerimisreeglid kõlavad halvemini kui on. Alustame lihtsate reeglite paarist, mis lülitavad valguse sisse või välja vastavalt olelusandurile:

reegel 'Kontorituli süttib, kui James kohal'

millal

Üksus JamesInOffice muudeti olekust VÄLJAS asendisse SEES

siis

sendCommand (Office_Hue, SEES)

lõpp

reegel 'Kontorituli kustub, kui James lahkub'

millal

Üksus JamesInOffice on asendatud olekuga VÄLJAS

siis

sendCommand (Office_Hue, OFF)

lõpp

Esiteks nimetame reegli - olge kirjeldav, nii et teate, milline sündmus käivitub. Järgmisena määratleme oma lihtsa reegli, öeldes kui x on tõene, tehke y . Lõpp tähendab selle konkreetse reegli sulgemist. Reeglites saate kasutada mitmeid erisõnu, kuid praegu käsitleme kahte lihtsat süntaksibitti - Üksus , mis võimaldab teil pärida millegi olekut; ja sendCommand , mis teeb täpselt seda, mida te arvate. Ütlesin, et see on lihtne.

Reeglipaari pole ilmselt vaja kasutada, kuid kuna minu loogika muutub keerulisemaks, on kasulik need eraldada, olenemata sellest, kas ma sisenen või lahkun piirkonnast - ja võib -olla oleks hea mõte lisada valgusandur kuhugi võrrandisse, et me asjatult tulesid sisse ei lülitaks.

Vaatame teist näidet ajastatud reegli loomiseks.

reegel 'Treeni igal hommikul'

millal

Aeg cron '0 0 8 1/1 *? *'

siis

harmonyStartActivity ('Harjutus')

lõpp

Jällegi nimetame reeglit, sätestame tingimused, millal see peaks vallanduma, ja toimingud, mida tuleb teha. Kuid sel juhul määratleme ajamustri. Huvitav kood, mida näete jutumärkides, on Quartz Scheduler'i CRON -avaldis (vorming erineb tavalisest CRONtabist veidi). ma kasutasin cronmaker.com Väljendi loomise hõlbustamiseks, kuid üksikasjaliku selgituse ja muude näidete jaoks saate lugeda ka vormingute juhendit [No Longer Available].

CronMaker.com kasutas õigesti vormindatud Croni avaldise loomist

Minu reeglid ütlevad lihtsalt: „Igal hommikul kell 8 igal nädalapäeval, öelge oma Harmony Ultimate süsteemile, et ta alustaks treeningtegevust”, mis omakorda aktiveerib teleri, Xboxi, võimendi ja vajutab käivitamiseks minuti pärast A -nuppu. kettas draivis.

Kahjuks ei saa OpenHAB minu eest harjutust veel teha.

Veel üks reegel, mida tahan teile näidata, on midagi, mida kasutan oma kodu niiskustaseme reguleerimiseks. Mul on üks õhukuivati, mida pean liikuma kõikjal, kus vaja, nii et otsustasin vaadata kõiki oma niiskusandureid, leida, milline neist on kõrgeim, ja salvestada see muutujale. Praegu käivitatakse see iga minut, kuid seda saab kergesti langetada. Vaadake kõigepealt:

impordi org.openhab.core.library.types.*

impordi org.openhab.model.script.actions.*

import java.lang.String

reegel 'Niiskuse monitor'

kui aeg cron '0 * * * *?'

siis

var prevHigh = 0

var highHum = '

Niiskus? .Liikmed.ja igale [hum |

logDebug ('niiskuseeskirjad', hum.nimi);

if (hum.state kui DecimalType> prevHigh) {

prevHigh = hum.state

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

}

kuidas google raamatuid pdf -i alla laadida

]

logDebug ('niiskuseeskirjad', highHum);

postUpdate (õhukuivati_vajalik, highHum);

lõpp

Reegli tuum on Niiskus? .Liikmed.eelistama rida. Niiskus on minu niiskusandurite rühma nimi; .liikmed haarab kõik selle rühma esemed; igaühele kordab neid (uudishimuliku nurksulgude vorminguga, mida te ilmselt ei tunne). Reeglite süntaks on Xtendi tuletis, nii et saate lugeda Xtendi dokumentatsioon kui te ei leia kohanemise näidet.

Tõenäoliselt pole teil seda vaja - seal on sadu näitereegleid:

MQTT OpenHAB -i ja asjade Interneti jaoks

MQTT on kerge sõnumside süsteem masinatevaheliseks suhtluseks-omamoodi Twitter teie Arduinos või Raspberry Pis omavahel suhtlemiseks (kuigi loomulikult töötab see palju enamaga kui ainult need). See on kiiresti populaarsust kogumas ja leiab endale kodu asjade interneti seadmetega, mis on tavaliselt vähese ressursiga mikrokontrollerid, mis vajavad usaldusväärset viisi andurite andmete edastamiseks teie jaoturile või kaugkäskluste vastuvõtmiseks. See on täpselt see, mida me sellega teeme.

Aga milleks ratast leiutada?

MQ telemetry transport leiutati juba 1999. aastal, et ühendada naftajuhtmeid aeglaste satelliitühenduste kaudu, mis on spetsiaalselt ette nähtud aku kasutamise ja ribalaiuse minimeerimiseks, pakkudes samal ajal usaldusväärset andmete edastamist. Aastate jooksul on disainipõhimõtted jäänud samaks, kuid kasutusjuhtum on muutunud spetsiaalsetelt manussüsteemidelt üldistele asjade Interneti -seadmetele. Aastal 2010 avaldati protokoll autoritasuta, avatud kõigile kasutamiseks ja rakendamiseks. Meile meeldib tasuta.

Teil võib tekkida küsimus, miks me isegi tülitseme mõne teise protokolliga - meil on ju HTTP juba olemas -, mida saab kasutada kiirsõnumite saatmiseks igasuguste veebiühendusega süsteemide (nt OpenHAB ja IFTTT) vahel, eriti uue tegijakanali puhul ). Ja sul oleks õigus. Kuid HTTP -serveri töötlemise üldkulud on üsna suured - nii palju, et te ei saa seda hõlpsalt käivitada sisseehitatud mikrokontrolleril nagu Arduino (vähemalt saate, kuid millegi muu jaoks ei jää palju mälu) ). Teisest küljest on MQTT kerge, nii et sõnumite saatmine võrgu ümber ei ummista torusid ja see mahub hõlpsalt meie väikesesse Arduino mäluruumi.

Kuidas MQTT töötab?

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

Jätkame Twitter masinate jaoks analoogia küll. Nii nagu Twitteri kasutajad saavad säutsuda oma mõttetuid 140 tähemärki ja kasutajad saavad „jälgida” teisi kasutajaid, et näha kureeritud postituste voogu, saavad MQTT kliendid tellida konkreetse kanali, et sealt kõik sõnumid vastu võtta, ja ka oma sõnumeid avaldada sellele kanalile. Seda avaldamis- ja tellimismustrit nimetatakse pubi / alam , vastupidiselt traditsioonile klient/server HTTP mudel.

HTTP nõuab, et pöörduksite masina poole, kellega suhtlete, näiteks Tere, ja seejärel andke andmeid edastades edasi -tagasi üksteise pidevat tunnustamist. Pubi/alampaketi puhul ei pea avaldamist teostav klient teadma, millised kliendid on tellitud: see lihtsalt pumpab sõnumid välja ja maakler jagab need ümber tellitud klientidele. Iga klient saab teemasid avaldada ja tellida, nagu Twitteri kasutaja.

Erinevalt Twitterist ei piirdu MQTT siiski 140 tähemärgiga. See on andmete agnostik, nii et saate saata väikeseid numbreid või suuri tekstiplokke, JSON-vormingus datagramme või isegi pilte ja binaarfaile.

Asi pole selles, et MQTT on kõige jaoks parem kui HTTP - kuid see on nii on sobivam, kui meil on kogu majas palju andureid, mis pidevalt teatavad.

Samuti on oluline teada, et OpenHAB ei tegutse teie MQTT vahendajana - me käsitleme seda natuke hiljem. Kuid OpenHAB toimib kliendina: see võib avaldada nii teie OpenHAB -i tegevuslogi kui ka siduda teatud kanalid seadmetega, nii et teil võib näiteks olla lüliti, mida juhivad konkreetse kanali MQTT -sõnumid. See sobib ideaalselt andureid täis maja loomiseks.

Installige Mosquitto oma Pi -le

Kuigi OpenHAB sisaldab MQTT -klienti, et saaksite teema tellida ja ka sõnumeid avaldada, ei tööta see serverina. Selleks peate kas kasutama veebipõhist MQTT maaklerit (tasuline või tasuta) või installima tasuta tarkvara oma Pi -sse. Tahaksin seda kõike majas hoida, nii et olen Mosquitto Pile installinud.

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

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

sudo apt-key lisab 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

See on kõik, mida peame tegema, et MQTT -server töötaks kohalikus võrgus. Teie maakler töötab vaikimisi pordil 1883.

Kontrollige, kas teie MQTT-server töötab, kasutades tasuta platvormideülest MQTT.fx. Uue profiili loomiseks klõpsake seadete ikooni ja sisestage oma Raspberry Pi IP -aadress või nimi. Salvestage ja klõpsake nuppu Ühenda. Kui parempoolses ülanurgas olev väike valgusfoor muutub roheliseks, võite minna.

Kiirtesti jaoks klõpsake vahekaarti „telli” ja tippige inTopic / tekstikasti, seejärel klõpsake nuppu Telli nuppu. Olete nüüd tellinud, et saaksite teemat teemal nimega Topic, kuigi see kuvab 0 sõnumit. Minge tagasi avaldamise vahekaardile, tippige väiksele väljale teema ja lühisõnum allolevale suurele tekstikastile. Tabas Avalda paar korda ja vaadake tagasi tellimise vahekaardile. Te peaksite nägema, et selles teemas on ilmunud mõned sõnumid.

Enne tegelike andurite lisamist oma võrku peame õppima tundma teemade taset, mis võimaldab meil MQTT -võrku struktureerida ja filtreerida. Teemade nimed on tõstutundlikud, ei tohiks alata tähega $ ega sisaldada tühikut või mitte-ASCII tähemärke-standardne programmeerimispraktika muutujate nimede jaoks.

/ Eraldaja tähistab teema taset, mis on hierarhiline, näiteks järgmised on kõik kehtivad teematasandid.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/temperatuur

myHome/livingRoom/niiskus

myHome/köök/temperatuur

myHome/köök/niiskus

Juba peaksite nägema, kuidas see puustruktuur sobib ideaalselt nutika kodu jaoks, mis on täis andureid ja seadmeid. Parim tava mitme anduri kasutamiseks ühes ruumis on iga anduri muutuja avaldamine oma teema tasemel - hargnedes täpsemaks (nagu ülaltoodud näidetes) - selle asemel, et üritada avaldada samale kanalile mitut tüüpi andureid .

Kliendid saavad seejärel avaldada või tellida suvalise arvu individuaalseid teematasandeid või kasutada puidu kõrgemalt otsast filtreerimiseks metamärke.

+ Metamärk asendab mis tahes teemataset. Näiteks:

myHome/+/temperatuur

telliks kliendi mõlemad

myHome/livingRoom/temperatuur

myHome/köök/temperatuur

... kuid mitte niiskustaset.

# On mitmetasandiline metamärk, nii et võite LivingRoom andurite massiivist midagi tuua järgmiselt.

myHome/livingRoom/#

Tehniliselt saate tellida ka algtaseme #, mille abil saate absoluutselt kõik, mis maaklerit läbib, kuid see võib olla nagu tuletõrjevooliku näkku pistmine: natuke üle jõu käiv. Proovige luua ühendus HiveMQ avaliku MQTT maakleriga ja tellida #. Sain mõne sekundiga umbes 300 sõnumit, enne kui mu klient lihtsalt kokku kukkus.

Näpunäide algajatele MQTT: ' /minu kodu/' on hoopis teine ​​teema minu kodu/' - kaldkriipsu lisamine alguses loob tühja teema taseme, mis on küll tehniliselt kehtiv, kuid pole soovitatav, kuna see võib segadust tekitada.

Nüüd, kui teooriat teame, proovime Arduino, Ethernet Shieldi ja DHT11 temperatuuri- ja niiskusanduriga - teil on see tõenäoliselt stardikomplektis olemas, aga kui ei, vahetage lihtsalt keskkonnaandur välja andur (või isegi nupp).

MQTT avaldamine Etherneti ühendusega Arduino'st

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

Alustage allalaadimisega pubi subclient raamatukogu Githubist . Kui olete kasutanud nuppu „Laadi alla ZIP -vormingus”, on struktuur pisut vale. Pakkige lahti, nimetage kaust ümber lihtsalt pubi allklient , seejärel eemaldage kaks faili kaustast src kausta ja teisaldage need ühe taseme võrra allalaaditud kausta juure. Seejärel teisaldage kogu kaust oma Arduino/raamatukogud kataloogi.

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

client.setServer ('192.168.1.99', 1883);

Kahjuks ei saa me selle sõbralikku nime kasutada (OpenHAB.local minu puhul) kuna Arduino TCP/IP -virn on väga lihtsustatud ja Bonjouri nime lisamise koodi lisamine oleks palju mälu, mida me ei taha raisata. Andmete andmete edastamise teemade muutmiseks kerige alla järgmistele ridadele:

söe puhver [10];

dtostrf (t, 0, 0, puhver);

client.publish ('openhab/himitsu/temperatuur', puhver);

dtostrf (h, 0, 0, puhver);

client.publish ('openhab/himitsu/niiskus', puhver);

Kood sisaldab ka käsukanali tellimist. Leidke ja reguleerige järgmine rida:

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

Uurige seal olevat koodi ja näete, et saate LED -i või releed hõlpsalt juhtida, näiteks saates käsklusi teatud kanalitele. Näidiskoodis saadab see lihtsalt sõnumi tagasi, kinnitades käsu kättesaamist.

Laadige oma kood üles, ühendage oma Arduino võrku ja tellige MQTT.fx abil kumbki # või openhab / himitsu / # (või mis iganes sa muutsid ruumi nimeks, kuid ära unusta lõppu märkida #). Üsna pea peaksite nägema saabuvaid sõnumeid; ja kui saadate käsu teemale SISSE või VÄLJA, näete ka kinnitusi.

MQTT sidumine OpenHAB -i jaoks

Võrrandi viimane samm on ühendada see OpenHAB -iga. Selleks vajame muidugi sidumist.

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

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

Ja muutke konfiguratsioonifaili sidumise lubamiseks.

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

mqtt: broker.clientId = openhab

Taaskäivitage OpenHAB

sudo teenuse openhab taaskäivitamine

Lisame siis üksuse või kaks:

/ * MQTT andurid */

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

Number Himitsu_Humidity'Himitsu Niiskus [%.1f %%] '(Himitsu, Niiskus) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

Nüüdseks peaksite vormist aru saama; hakkab saama a Numbriüksus alates MQTT sidumisest, konkreetsel teemal. See on lihtne näide, võib -olla soovite viidata vikilehele, kus see asub võib minna palju keerulisemaks .

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

Andmete püsivus ja joonistamine

Nüüdseks olete tõenäoliselt seadistanud hulga andureid, olgu need Z-Wave'i või kohandatud Arduinos, kus töötab MQTT-nii saate igal ajal vaadata nende andurite praegust olekut ja peaksite ka reageerima nende väärtusele reeglites. Kuid andurite väärtuste puhul on üldiselt huvitav see, et need muutuvad aja jooksul: just siin tuleb esile püsivus ja graafiline joonistamine. Püsivus OpenHAB -is tähendab andmete salvestamist aja jooksul. Jätkame ja seadistame RRD4J (Round Robin Database for Java), mida nimetatakse sellepärast, et andmed salvestatakse ümmarguses režiimis - vanemad andmed jäetakse andmebaasi suuruse kokkusurumiseks kõrvale.

Installige rrd4j paketid järgmiste käskudega.

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

Seejärel looge uus fail nimega rrd4j.püsima aastal konfiguratsioonid/püsivus kausta. Kleepige järgmine:

Strateegiad {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

iga päev: '0 0 0 * *?'

vaikimisi = everyChange

}

Üksused {

// säilitatakse kõik, kui väärtust värskendatakse, vaid vaikimisi, ja taastatakse need käivitamisel andmebaasist

*: strateegia = everyChange, restoreOnStartup

// järgmisena määratleme iga tunni konkreetsed strateegiad temperatuuri rühma jaoks ja iga minut niiskuse jaoks

kuidas xbox one kontrollerit lähtestada

Temperatuur*: strateegia = everyHour

Niiskus*: strateegia = iga minut

// Teise võimalusena saate siia lisada konkreetseid üksusi, näiteks

// Magamistuba_niiskus, JamesInOffice: strateegia = everyMinute

}

Selle faili esimeses osas määratleme strateegiad, mis tähendab lihtsalt CRON -avaldisele nime andmist. See on sama, mida My.OpenHAB -i puhul juba tegime, kuid seekord loome mõned uued strateegiad, mida saame kasutada iga päeva, iga tunni ja iga minuti kohta. Ma pole neid kõiki veel kasutanud, kuid võib -olla kasutan seda tulevikus.

Faili teises pooles ütleme rr4dj -le, millised andmeväärtused salvestada. Vaikimisi salvestame iga kord, kui seda värskendatakse, kuid olen täpsustanud ka teatud ajapõhiseid strateegiaid konkreetsete andurite jaoks. Temperatuurid mind väga ei häiri, nii et olen seadnud selle, et säästa ainult iga tund, kuid niiskus on minu jaoks suur mure, nii et ma tahan näha, kuidas see iga minut muutub. Kui on muid andmeid, mida soovite konkreetsel ajal salvestada, lisage need kohe siia või kohandage vastavalt vajadusele.

Märkus: kui soovite ka andmeid graafiliselt joonistada, peate need salvestama vähemalt kord minutis. Pole tähtis, kas teie anduri andmeid isegi nii kiiresti värskendatakse, peate lihtsalt ütlema rr4dj -le, et see salvestaks kord minutis.

Kui see on määratletud, peaksite nägema silumisväljundit, mis ütleb teile, et väärtused salvestatakse.

Järgmisena teeme kõigist nendest andmetest mõned ilusad graafikud. See on tõesti lihtne. Üksiku anduri graafiku koostamiseks lisage oma saidikaardile järgmine teave.

Diagrammi element = Magamistuba_niiskusperiood = h

See on sõna otseses mõttes kõik, mida vajate. Perioodi kehtivad väärtused on h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; peaks olema selge, mida need tähendavad. See on vaikimisi D kogu päeva andmete jaoks, kui seda pole määratud.

Mitme üksusega graafiku loomiseks joonistage selle asemel lihtsalt grupi nimi:

Diagrammi element = Niiskusperiood = h

Samuti võite olla huvitatud teadmisest, et saate seda graafikut kasutada ka mujal; see loob pildi järgmise URL -i abil: http: // YOUROPENHABURL: 8080/chart? groups = Niiskus ja periood = h

Kuidas on Sinu OpenHAB -süsteem on tulemas?

See on juhendi selle osa jaoks nii, kuid ärge oodake, et see on viimane, mida meilt OpenHAB -i kohta kuulete. Loodetavasti on see ja algajate juhend andnud teile tugeva aluse oma täieliku OpenHAB -süsteemi väljatöötamiseks - kuid see on protsess, mis pole kunagi täielikult lõppenud.

Õnneks suudab OpenHAB ulatuda mõnest seadmest sadadeks, alates lihtsatest reeglite keerukusest kuni koduautomaatika ülima lõpuni - kuidas teie süsteem läheb? Milliseid seadmeid valisite? Mis on järgmine suur projekt, millega kavatsete tegeleda?

Räägime kommentaarides - ja palun, kui see juhend oli teile kasulik, klõpsake neid jagamisnuppe ja rääkige oma sõpradele, kuidas ka nemad saavad oma OpenHAB -süsteemi seadistada.

Loodame, et teile meeldivad esemed, mida soovitame ja arutame! MUO -l on sidus- ja sponsoreeritud partnerlussuhted, nii et saame osa teie ostude tulust. See ei mõjuta teie makstavat hinda ja aitab meil pakkuda parimaid tootesoovitusi.

Jaga Jaga Piiksuma E -post Algaja juhend kõne animeerimiseks

Kõne animeerimine võib olla väljakutse. Kui olete valmis oma projektile dialoogi lisama, jagame teie jaoks protsessi.

Loe edasi
Seotud teemad
  • Isetegija
  • Nutikas kodu
  • Arduino
  • Koduautomaatika
  • Pikakujuline
  • Pika kujuga juhend
Autori kohta James Bruce(Avaldatud 707 artiklit)

Jamesil on tehisintellekti bakalaureusekraad ning ta on CompTIA A+ ja Network+ sertifikaadiga. Kui ta pole riistvara ülevaadete redaktorina hõivatud, naudib ta LEGO, VR ja lauamänge. Enne MakeUseOfiga liitumist oli ta valgustehnik, inglise keele õpetaja ja andmekeskuse insener.

Veel James Bruce'ilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin