Reklāma
Bezmaksas ne vienmēr nozīmē “ne tik labi kā apmaksāts”, un OpenHAB nav izņēmums. Atvērtā koda mājas automatizācijas programmatūra ievērojami pārsniedz jebkuras citas tirgū esošas mājas automatizācijas sistēmas iespējas, taču to nav viegli iestatīt. Faktiski tas var būt pilnīgi nomākts.
Ceļveža 1. daļā es jūs caurskatīju instalējot OpenHAB uz Raspberry Pi Darba sākšana ar OpenHAB mājas automatizāciju vietnē Raspberry PiOpenHAB ir nobriedusi, atvērtā koda mājas automatizācijas platforma, kas darbojas ar dažādu aparatūru un ir protokols agnostisks, kas nozīmē, ka tas var izveidot savienojumu ar gandrīz jebkuru mājas automatizācijas aparatūru tirgū šodien. Lasīt vairāk , iepazīstināja ar OpenHAB pamatkoncepcijām un parādīja, kā pievienot pirmos vienumus sistēmā. Šodien mēs iesim tālāk:
- ZWave ierīču pievienošana
- Harmony Ultimate kontroliera pievienošana
- Iepazīstinām ar noteikumiem
- Iepazīstinām ar MQTT un uzstādām MQTT starpnieku uz jūsu Pi ar sensoriem uz Arduino
- Datu reģistrēšana un grafika
Ievads Z-Wave
Z-Wave gadiem ilgi ir bijis dominējošais mājas automatizācijas protokols: tas ir uzticams, daudz attīstīts un darbojas daudz lielākā diapazonā nekā jebkurš cits viedais mājas izstrādājums. Jums ir pieejami simtiem Z-Wave sensoru, kas veic plašu uzdevumu klāstu. OpenHAB var strādājiet ar Z-Wave, taču to uzstādīšana ir sarežģīta, un uzticamība netiek garantēta.
Ja apsverat tādas mājas iegādi, kurā pilna ar Z-Wave sensoriem un kas paredzēta lietošanai tieši ar OpenHAB, es aicinu jūs vēlreiz apsvērt. Tas var jums noderēt, vai arī jūs var nomocīt nelielas, bet pastāvīgas problēmas. Vismaz nepērciet māju, kas pilna ar sensoriem, kamēr jums nav bijusi iespēja izmēģināt dažus. Vienīgais iemesls, kāpēc izvēlēties Z-Wave, ir tad, ja 100% neesat apmetušies uz OpenHAB un vēlaties nākotnē atstāt savas iespējas atvērtas: piemēram, Z-Wave darbojas ar Samsung SmartThings Kurš Smart Hub mājas automatizācijai ir vislabākais jums?Kādu laiku cilvēki domāja, ka šī ideja nav nekas vairāk kā viltība, taču jaunākie produktu izlaidumi parādīja, ka viedā mājas automatizācija sāk pildīt savus solījumus. Lasīt vairāk centrmezgls, kā arī Z-Wave specifiski centrmezgli, piemēram, Homeseer, un virkne citu programmatūras iespēju, piemēram, Domotišs.
Lai gan OpenHAB ietver Z-Wave iesiešanu, jums tas joprojām ir jādara vispirms konfigurējiet Z-Wave tīklu, pirms OpenHAB var sākt meklēt datus pēc tā. Ja jums ir Rasberry kontrollera plate, jums ir piegādāta kāda programmatūra tīkla konfigurēšanai, tāpēc mēs šeit to neaptversim. Ja esat iegādājies Aeotec USB Z-Stick kontrolieri vai līdzīgu, iespējams, ka jums nav programmatūras, tāpēc lasiet tālāk.
Aeotec Z-Stick Gen5, Z-Wave Plus USB vārtejas izveidošanaiAeotec Z-Stick Gen5, Z-Wave Plus USB vārtejas izveidošanai Pērciet tagad vietnē Amazon $44.95
Ja jums jau ir Z-Wave tīkla iestatīšana, jūs vienkārši varat iespraust kontrolieri Pi un sākt konfigurēt iesiešanu un elementus. Ja šis ir jūsu pirmais uzvedums Z-Wave, tas ir nedaudz sarežģītāk.
Pirmkārt, no aparatūras puses: katram kontrolierim ir savs veids, kā izveidot savienojumu pārī ar ierīcēm (tehniski pazīstams kā “iekļaušanas režīms”, kurā tiek piešķirts mezgla ID). Aotec Z-Stick gadījumā tas nozīmē to atvienot no USB porta un vienreiz nospiest pogu, lai ievietotu iekļaušanas režīmā. Pēc tam aizvediet to tuvu ierīcei, kuru savienojat pārī, un arī tajā piespiediet iekļaušanas pogu (tas arī atšķirsies: manā Everspring kontaktligzdā ir nepieciešama pogas nospiešana 3 reizes ātri pēc kārtas, tāpēc šeit ir jānolasa ierīces rokasgrāmata).
Z-Stick īsi mirgo, lai norādītu uz panākumiem. Tas rada problēmas, pievienojot to atpakaļ Pi, jo tiek piešķirts jauns ports. Restartējiet Pi, lai tas tiktu atiestatīts atpakaļ uz standarta portu, ja uzskatāt, ka tas ir dinamiski piešķirts citam. Vēl labāk: neiespraudiet to Pi, kamēr vispirms neesat veicis visas aparatūras pārus.
HABmin un Z-Wave saistījumu uzstādīšana
Tā kā OpenHAB faktiski nav Z-Wave konfigurācijas utilīta, mēs instalēsim vēl vienu tīmekļa pārvaldības rīku, kas to dara - kaut ko sauc par HABmin. Dodieties tālāk uz HABmin Github krātuve lejupielādējiet pašreizējo izlaidumu. Kad esat to izsaiņojis, atradīsit 2 .jar faili pievienojumprogrammu direktorijā - tie jāievieto atbilstošajā pievienojumprogrammu direktorijā jūsu OpenHAB mājas koplietošanā (ja izmantojat arī Aotec gen5 Z-Stick, pārliecinieties, vai esat ieguvis vismaz Z-Wave iesiešanas versiju 1.8).
Pēc tam izveidojiet jaunu mapi tīmekļa lapu direktorijā un nosauca to par “habmin” (svarīgi ir mazi burti). Nokopējiet pārējos lejupielādētos failus tur.
Piezīme. Ir arī HABmin 2 aktīvi attīstās. Instalācija ir gandrīz vienāda, bet ar vienu papildu .jar papildinājumu. Varbūt ir vērts izmēģināt abus, tikai lai redzētu, kurš jums patīk.
Ja vēl neesat to izdarījis, pievienojiet kontrolieri savam Pi. Ievadiet šo, lai atrastu pareizo portu.
ls / dev / tty *
Jūs kaut ko meklējat, izmantojot vārdu USB, vai manā gadījumā Z-stick sevi parādīja kā /dev/ttyACM0 (modems). Varētu būt vieglāk izpildīt komandu vienreiz pirms tās pievienošanas un vienu reizi pēc tam, lai redzētu, kādas izmaiņas tiek veiktas, ja neesat pārliecināts.
Atveriet OpenHAB konfigurācijas failu un pārveidojiet Z-Wave sadaļu, nekomentējot abas līnijas un norādot faktisko ierīces adresi. Pēdējais solis man bija atļaut OpenHAB lietotājam piekļūt modemam.
sudo usermod -a -G dialogut openhab
Tagad, lai viss darbotos, restartējiet OpenHAB
sudo pakalpojuma openhab restartēšana
Cerams, ka, pārbaudot atkļūdošanas žurnālu, jūs redzēsit kaut ko līdzīgu. Apsveicam, jūs tagad runājat ar Z-Wave. Jūs varat arī atrast atkļūdošanas žurnālu, kas pārpildīts ar ziņojumiem no dažādiem Z-Wave mezgliem. Sāksim ar pārbaudi HABMIN, lai redzētu atrasto: http://openhab.local: 8080 / habmin / index.html (aizstājot openhab.local ar savu Raspberry Pi resursdatoru vai IP adresi).
Vietnē HABMIN ir daudz ko redzēt, bet mēs rūpējamies tikai par Konfigurācija -> Iesiešana -> Z-Wave -> Ierīces kā redzat zemāk. Paplašiniet mezglu, lai rediģētu atrašanās vietas un nosaukuma etiķeti ērtākai atsaucei.
Z-Wave elementu konfigurēšana
Katrai Z-Wave ierīcei būs īpaša OpenHAB konfigurācija. Par laimi, lielākā daļa ierīču jau ir izpētītas, un tur jau atradīsit piemērus. Neatpazītu pielāgotu ierīču konfigurēšana ir tālu ārpus šīs rokasgrāmatas darbības jomas, taču pieņemsim, ka šobrīd tā tiek atbalstīta.
Pirmkārt, 3. mezglā esmu ieguvis pamata Everspring AN158 barošanas slēdzi un skaitītāju. Ātra Google meklēšana noveda mani uz emuāra ierakstu vietnē Wetwa.re ar vienuma parauga konfigurāciju. Es to pielāgoju šādi:
Slēdzis Dehumidifier_Switch "Dehumidifier" {zwave = "3: command = switch_binary"} Number Dehumidifier_Watts "Dehumidifier enerģijas patēriņš [% .1f W]" {zwave = "3: command = meter"}
Perfekti.
Nākamais ir Aeotec Gen5 multi-sensors.
Aeon Labs Aeotec Z-Wave Gen5 daudzsensors (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 daudzsensors (Z-Wave Plus) Pērciet tagad vietnē Amazon $69.27
Šim vienam es atradu konfigurācijas paraugu vietnē iwasdot.com, un mans multisensors ir 2. mezglā.
Skaits Gaitenis_Temperatūra "Gaiteņa temperatūra [% .1f ° C]" (Gaitenis, Temperatūra) {zwave = "2: 0: komanda = sensors_modeļa līmenis, sensora tips = 1, sensora_skala = 0"} Numurs Priekšnams_Humidity "Priekšnama mitrums [% .0f %%]" (Priekšnams, Mitrums) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 5"} Numurs Priekšnams_Luminance "Priekšnama apgaismojums [% .0f Lux]" (Priekšnams) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 3"} Sazinieties ar priekšnams_Motion "Priekšnama kustība [% s]" (Gaitenis, Kustība) {zwave = "2: 0: komanda = sensora_binārs, reaģēt_bas_ = patiess"} Ciparu sensors_1_baterija "Akumulators [% s %%]" (kustība) {zwave = "2: 0: komanda = akumulators"}
Ja šī formāta jums šķiet dīvaini, lūdzu, atgriezieties pie pirmās iesācēja ceļvedis Darba sākšana ar OpenHAB mājas automatizāciju vietnē Raspberry PiOpenHAB ir nobriedusi, atvērtā koda mājas automatizācijas platforma, kas darbojas ar dažādu aparatūru un ir protokols agnostisks, kas nozīmē, ka tas var izveidot savienojumu ar gandrīz jebkuru mājas automatizācijas aparatūru tirgū šodien. Lasīt vairāk , jo īpaši sadaļa “Krāsu iesiešana”, kur es izskaidroju, kā preces tiek pievienotas. Jums, iespējams, kādreiz būs tikai jākopē šādi ielīmēšanas piemēri, taču gadījumā, ja jums ir jauna ierīce, saistošajā dokumentācijā ir norādīti visi komandas.
Logitech Harmony iesiešana
Pirms mēs pārdomājām noteikumus, es gribēju pievienot īsu piezīmi par darbu ar saiti Harmony. Esmu liels Ultimate tālvadības ierīču harmonijas sērija Logitech Harmony Ultimate pārskats un dāvanu komplektsJūsu dzīvojamā istaba ir haosa - atzīstiet to. Jums tiek piedots, ka domājat, kuru tālvadības pulti kura ierīce. Ko darīt ar televizoru, pastiprinātāju, TiVO, BluRay atskaņotāju, varbūt pat ar apgaismojumu - pārslēgšanas darbības kļūst garas ... Lasīt vairāk lai vienkāršotu mājas multivides centra pieredzi, taču viedajā mājā tie bieži vien ir kā atsevišķa sistēma. Izmantojot OpenHAB, Logitech Harmony aktivitātes un pilnīga ierīces vadība tagad var būt jūsu centralizētās sistēmas sastāvdaļa un pat iekļauta automatizācijas noteikumos.
Sāciet instalēt trīs iesiešanas failus, kurus atradāt, izmantojot apt-cache, lai meklētu “harmoniju”:
Neaizmirsti to darīt chown iesiešanas direktoriju atkal, kad esat pabeidzis:
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
Lai konfigurētu iesiešanu, atveriet failu openhab.cfg un pievienojiet jaunu sadaļu šādi:
########## HARMONY TĀLVADĪBAS VADĪBA ########### harmonyhub: host = 192.168.1.181vai jūsu ip harmonyhub: lietotājvārds =tava harmonija-e-pasts-pieteikšanās harmonyhub: parole =Tava parole
IP adrese ir jūsu Harmony centrmezgla adrese. Lai to uzzinātu, izmantojiet tīkla skeneri. Jums būs jāievada arī pieteikuminformācija, tā, kuru ievadāt, palaižot standarta Harmony config utilītu. Tieši tā. Restartējot nokrāsu, atkļūdošanas žurnālā pēkšņi vajadzētu parādīties saistoša izvade.
Šis ir JSON formatēts saraksts ar visām jūsu darbībām, ierīcēm un komandām, kuras var nosūtīt. Ieteicams to kopēt turpmākai izmantošanai. jūs varat padarīt vēl vieglāk lasāmu ar saliekamiem mezgliem, ielīmējot tiešsaistes JSON formātā piemēram, šo.
Papildus standarta PowerOff darbībai, kas ir noklusējuma vērtība, jūs atradīsit arī savas definētās darbības, kas šeit norādītas pēc nosaukuma. Tagad izveidosim vienkāršu vienas pogas vadību darbību sākšanai. Pirmkārt, savu vienumu failā pievienojiet šo rindu. Ja vēlaties, nomainiet grupu un ikonu.
/ * Harmony Hub * / Stīgu harmonija_Aktivitāte "Harmonija [% s]"(Living_Room) {harmonyhub = "* [currentActivity]"}
Tas ir divvirzienu stīgu iesiešana, kas var gan ielādēt pašreizējo darbību, gan arī norādīt, ka pašreizējā darbība ir kaut kas cits. Tagad vietnes kartes failā mēs tam varam izveidot pogu.
Switch item = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Exercise', 13858434 = 'TV', Karaoke = 'Karaoke']
Kvadrātiekavā redzēsit katru darbību kopā ar etiķeti. Parasti jūs varat atsaukties tieši uz darbībām, kā jūs tās esat nosaucis uz tālvadības pults, bet izņēmums, ko es atradu, bija kaut kas ar atstarpi aktivitātes nosaukumā, piemēram, “Skatīties TV”. Šajā gadījumā jums būs jāizmanto aktivitātes ID. Atkal ID var atrast JSON atkļūdošanas izejā. Saglabājiet un atsvaidziniet interfeisu, jums vajadzētu redzēt kaut ko līdzīgu šim:
Varat arī atsaukties uz darbībām savos noteikumos, kā mēs to redzēsim tālāk. Izlasiet wiki lapu, lai iegūtu vairāk informācijas par Harmonijas saistošs.
Vispārīgs noteikumu ievads
Lielākajā daļā viedo māju centru ir sava veida noteikumu izveidošana, lai jūs varētu automātiski reaģēt uz sensoru datiem un notikumiem mājās. Patiesībā es uzskatu, ka patiesi gudra māja nav tā, kas jums jāpavada laikā, mijiedarbojoties ar mobilajām lietotnēm - tā ir tāda, kas ir neredzama galalietotājam un pilnībā automatizēta. Šajā nolūkā OpenHAB ir iekļauta arī jaudīga programmu skriptu valoda, kuru varat programmēt, ievērojami pārspējot lielāko daļu sarežģītības viedās mājas mezgli Kauja ar viedajiem mājas centriem: kas tur ir un kas nāk? Lasīt vairāk vai IFTTT receptes IFTTT tagad ir saistīts ar jebko: Maker Channel iepazīstināšanaIFTTT iespējamie lietojumi ir bezgalīgi. Bet līdz šim to bija grūti sasaistīt ar saviem aparatūras projektiem. Mūsdienās tas viss ir mainījies. Lasīt vairāk .
Programmēšanas noteikumi izklausās sliktāk, nekā tas ir. Sāksim vienkārši ar pāris noteikumiem, kas ieslēdz vai izslēdz gaismu atkarībā no klātbūtnes sensora:
noteikums "Biroja apgaismojums, kad Džeimss ir klāt" kad vienums JamesInOffice tika mainīts no OFF uz ON. pēc tam sendCommand (Office_Hue, ON) beigu noteikums "Biroja gaisma izslēgta, kad Džeimss aiziet" kad vienums JamesInOffice tika mainīts no ON uz OFF. pēc tam sendCommand (Office_Hue, OFF) beigas
Pirmkārt, mēs nosaucam noteikumu - esiet aprakstošs, lai jūs zināt, kāds notikums šauj. Tālāk mēs definējam savu vienkāršo noteikumu, sakot kad x ir taisnība, tad dariet y. Beigas norāda uz šī noteikuma slēgšanu. Noteikumos var izmantot vairākus īpašus vārdus, taču pagaidām mēs runājam par diviem vienkāršiem sintakses bitiem - Lieta, kas ļauj jums jautāt kaut ko stāvokli; un sendCommand, kas dara tieši to, kā jūs domājat. Es jums teicu, ka tas bija viegli.
Droši vien nevajadzēs izmantot pāris noteikumus, bet, tā kā mana loģika kļūst sarežģītāka, būs lietderīgi tos atdalīt neatkarīgi no tā, vai iebraukšana apgabalā vai iziešana no tā - un varētu būt laba ideja kaut kur vienādojumā pievienot gaismas sensoru, lai mēs nevajadzīgi neieslēgtos gaismas.
Apskatīsim citu piemēru, lai izveidotu ieplānotu kārtulu.
noteikums "Vingro katru rītu" kad Laiks cron "0 0 8 1/1 *? *" tad harmonyStartActivity ("Exercise") beigas.
Atkal mēs nosaucam noteikumu, stāvokļa nosacījumus, kad tam vajadzētu iedarbināties, un veicamās darbības. Bet šajā gadījumā mēs definējam laika modeli. Smieklīgais kods, ko redzat pēdiņās, ir CRON izteiksme Quartz Scheduler (formāts nedaudz atšķiras no parastā CRONtab). ES izmantoju cronmaker.com lai palīdzētu izveidot izteiksmi, bet sīkāku skaidrojumu un citus piemērus varat izlasīt arī formāta ceļvedī [vairs nav pieejams].
Mani noteikumi saka: “Katru rītu, katru nedēļas dienu pulksten 8:00, sakiet manai Harmony Ultimate sistēmai sākt vingrošanu”, kas savukārt aktivizē televizoru, Xbox, pastiprinātāju un pēc minūtes nospiež pogu A, lai palaistu disku diskdzinī.
Diemžēl OpenHAB pagaidām nevar man izpildīt vingrinājumu.
Vēl viens noteikums, ko es gribu jums parādīt, ir kaut kas, ko es izmantoju, lai pārvaldītu mitruma līmeni savās mājās. Man ir viens sausinātājs, kas man jāpārvieto visur, kur nepieciešams, tāpēc es nolēmu aplūkot visus savus mitruma sensorus, atrast, kurš no tiem ir visaugstākais, un uzglabāt to mainīgajā. Pašlaik tas tiek iedarbināts katru minūti, bet to var viegli nolaist. Vispirms apskatiet:
importēt org.openhab.core.library.types. * importēt org.openhab.model.script.actions. * importa java.lang. Virknes noteikums "Mitruma monitors" kad Time cron "0 * * * *?" tad var prevHigh = 0 var highHum = "" Mitrums? .members.forEach [hum | logDebug ("mitrums.rules", hum.nosaukums); if (hum.state kā DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("humid.rules", highHum); postUpdate (sausinātājs_ nepieciešams, augstsHum); beigas.
Noteikumu kodols ir Mitrums? līnija. Mitrums ir manu mitruma sensoru grupas nosaukums; .biedri satver visus šīs grupas priekšmetus; katram atkārtojas pa tām (ar kuriozu kvadrātiekavas formātu, kuru jūs, iespējams, nezināt). Kārtulu sintakse ir Xtend atvasinājums, tāpēc jūs varat lasīt Xtend dokumentācija ja nevarat atrast piemēru pielāgošanai.
Jums, iespējams, nevajadzēs - tur ir simtiem noteikumu noteikumu:
- Sīks noteikumu skaidrojums oficiālajā wiki
- oficiālo noteikumu paraugi wiki lapa
- Noteikumu ievērošana jaunos augstumos
- Uzlaboti paraugi vietnē IngeniousFool.net
MQTT OpenHAB un lietu internetam
MQTT ir viegla ziņojumapmaiņas sistēma komunikācijai starp mašīnām - sava veida Twitter jūsu Arduinos vai Aveņu Pis, lai sarunātos savā starpā (lai gan, protams, tas darbojas ar daudz vairāk nekā tikai tie). Tas strauji gūst popularitāti un atrod sev māju ar lietiskā interneta ierīcēm, kuru parasti ir maz resursu mikrokontrolleri, kuriem nepieciešams uzticams veids, kā pārsūtīt sensora datus atpakaļ uz centru vai saņemt tālvadību komandas. Tieši to mēs darīsim ar to.
Bet kāpēc izgudrot riteni?
MQ Telemetry Transport tika izgudrots tālajā 1999. gadā, lai savienotu naftas cauruļvadus, izmantojot lēnu satelītu savienojumi, kas īpaši izstrādāti, lai samazinātu akumulatora patēriņu un joslas platumu, vienlaikus nodrošinot uzticamu datu piegāde. Gadu gaitā projektēšanas principi ir palikuši nemainīgi, bet lietošanas gadījums ir mainījies no specializētām iegultām sistēmām uz vispārējām lietiskā interneta ierīcēm. 2010. gadā protokols tika izdots bez atlīdzības, atvērts ikvienam, lai to varētu izmantot un ieviest. Mums patīk bezmaksas.
Jums varētu rasties jautājums, kāpēc mēs pat uztraucamies ar vēl vienu protokolu - mums jau galu galā ir HTTP, kas to var izmantojams, lai nosūtītu ātrus ziņojumus starp visām ar internetu savienotajām sistēmām (piemēram, OpenHAB un IFTTT, īpaši ar jauno) makeranas kanls IFTTT tagad ir saistīts ar jebko: Maker Channel iepazīstināšanaIFTTT iespējamie lietojumi ir bezgalīgi. Bet līdz šim to bija grūti sasaistīt ar saviem aparatūras projektiem. Mūsdienās tas viss ir mainījies. Lasīt vairāk ). Un jums būtu taisnība. Tomēr HTTP servera pārstrādes izmaksas ir diezgan lielas - tik daudz, lai jūs to nevarētu viegli palaist iegultu mikrokontrolleru, piemēram, Arduino (vismaz jūs varat, bet jums neko daudz nepaliks cits). MQTT, no otras puses, ir viegls, tāpēc ziņojumu sūtīšana visā tīklā neaizsprosto caurules un to var viegli ievietot mūsu mazajā Arduino atmiņas telpā.
Kā darbojas MQTT?
MQTT nepieciešams gan serveris (saukts par “starpnieku”), gan viens vai vairāki klienti. Serveris darbojas kā starpnieks, saņemot ziņojumus un pārsūtot tos visiem ieinteresētajiem klientiem.
Turpināsim ar Twitter mašīnām analoģija gan. Tāpat kā Twitter lietotāji var čivināt paši savas bezjēdzīgās 140 rakstzīmes, bet lietotāji var “sekot” citiem lietotājiem, lai redzētu izkārtotu ziņu straumi, MQTT klienti var abonēt noteiktu kanālu, lai no turienes saņemtu visus ziņojumus, kā arī tajā publicētu savus ziņojumus kanāls. Šis publicēšanas un abonēšanas modelis tiek saukts par krogs / sub, pretstatā tradīcijai klients / serveris HTTP paraugs.
HTTP prasa, lai jūs sazinātos ar mašīnu, ar kuru sazināties, piemēram, Sveiki, pēc tam turpiniet un turpiniet nepārtraukti atzīt viens otru, kamēr saņemat vai ievietojat datus. Izmantojot pub / sub, klientam, kurš veic publicēšanu, nav jāzina, kuri klienti tiek abonēti: tas vienkārši izsūknē ziņojumus, un brokeris tos atkārtoti izplata visiem abonētajiem klientiem. Ikviens klients var gan publicēt, gan abonēt tēmas, tāpat kā Twitter lietotājs.
Tomēr atšķirībā no Twitter MQTT nav ierobežots ar 140 rakstzīmēm. Tas ir datu agnostisks, tāpēc jūs varat nosūtīt nelielu numuru vai lielu teksta bloku, JSON formāta datu diagrammas vai pat attēlus un bināros failus.
Nav tā, ka MQTT visam ir labāka par HTTP - bet tā ir ir piemērotāks, ja visā mājā būs daudz sensoru, kas pastāvīgi ziņos.
Svarīgi arī zināt, ka OpenHAB nedarbosies kā jūsu MQTT starpnieks - mēs to uzrunāsim mazliet vēlāk. Tomēr OpenHAB darbosies kā klients: tas var gan publicēt jūsu OpenHAB darbību žurnālu, gan arī saistīt konkrēto kanālus uz ierīcēm, lai jūs, piemēram, varētu izmantot slēdzi, ko kontrolē MQTT ziņojumi par konkrētu kanāls. Tas ir ideāli piemērots, lai izveidotu māju ar sensoriem.
Instalējiet Mosquitto savā Pi
Lai gan OpenHAB ir iekļauts MQTT klients, lai jūs varētu abonēt tēmu un arī publicēt ziņojumus, tas nedarbosies kā serveris. Šim nolūkam jums vai nu jāizmanto tīmekļa MQTT starpnieks (maksas vai bezmaksas), vai arī jāinstalē bezmaksas programmatūra savā Pi. Es gribētu to visu uzglabāt, tāpēc esmu uzstādījis Mosquitto uz Pi.
Diemžēl versija, kas pieejama caur parasto apt-get, ir pilnībā novecojusi. Tā vietā pievienosim jaunākos avotus.
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key pievienot 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.
Tas ir viss, kas mums jādara, lai vietējā tīklā darbotos MQTT serveris. Jūsu starpnieks pēc noklusējuma darbojas ostā 1883.
Pārbaudiet, vai jūsu MQTT serveris darbojas, izmantojot bezmaksas MQTT.fx, kas ir vairāku platformu savienojums. Noklikšķiniet uz iestatījumu ikonas, lai izveidotu jaunu profilu, un ievadiet Raspberry Pi IP adresi vai vārdu. Saglabājiet un nospiediet savienot. Ja mazais luksofors augšējā labajā stūrī kļūst zaļš, dodieties labi.
Lai veiktu ātru pārbaudi, noklikšķiniet uz cilnes “abonēt” un ierakstiet inTopic / tekstlodziņā, pēc tam nospiediet taustiņu Abonēt pogu. Jūs esat abonējis ziņojumu saņemšanu par tēmu, kas nosaukts inTopic, lai gan tajā tiks rādīti 0 ziņojumi. Atgriezieties cilnē Publicēt, mazajā lodziņā ierakstiet inTopic un zemāk esošajā lielajā tekstlodziņā īsu ziņojumu. Sist Publicēt pāris reizes un atskatieties uz abonēšanas cilni. Jums vajadzētu redzēt dažus ziņojumus, kas parādīti šajā tēmā.
Pirms savam tīklam pievienojam dažus faktiskos sensorus, mums jāapgūst tēmu līmeņi, kas mums ļauj strukturēt un filtrēt MQTT tīklu. Tēmu nosaukumi ir reģistrjutīgi, tiem nav jāsākas ar USD, tajos nedrīkst iekļaut atstarpi vai rakstzīmes, kas nav ASCII - patiesi mainīgu vārdu standarta programmēšanas prakse.
/ Atdalītājs norāda tēmas līmeni, kas ir hierarhisks, piemēram, visi šie derīgie tēmu līmeņi ir šādi.
inTopic / smallSubdivision / evenSmallerSubdivision. myHome / livingRoom / temperatūra. myHome / livingRoom / mitrums. myHome / virtuve / temperatūra. myHome / virtuve / mitrums
Jau jums vajadzētu redzēt, kā šī koka struktūra ir lieliski piemērota viedai mājai, kas pilna ar sensoriem un ierīcēm. Labākā prakse lietošanai ar vairākiem sensoriem vienā telpā ir publicēt katru sensoru mainīgo tā, kā tas ir pats temats - sazarojas ar lielāku specifiskumu (kā iepriekšminētajos piemēros) - tā vietā, lai mēģinātu vienā un tajā pašā veidā publicēt vairākus sensoru veidus kanāls.
Pēc tam klienti var publicēt vai abonēt neierobežotu skaitu atsevišķu tēmu līmeņu vai izmantot dažas īpašas aizstājējzīmes, lai filtrētu no koka augstāk.
+ Aizstājējzīme aizvieto jebkuru tēmas līmeni. Piemēram:
myHome / + / temperatūra
abonētu klientu abiem
myHome / livingRoom / temperatūra. myHome / virtuve / temperatūra
… Bet ne mitruma līmeni.
# Ir daudzlīmeņu aizstājējzīme, tāpēc jūs varat iegūt kaut ko no livingRoom sensora masīva ar:
myHome / livingRoom / #
Tehniski jūs varat arī parakstīties uz saknes līmeni #, ar kuru jūs iegūstat absolūti visu, kas notiek cauri brokerim, bet tas var būt kā ugunsdzēsības šļūtenes uzlīmēšana sejā: mazliet milzīgs. Mēģiniet izveidot savienojumu ar publisko MQTT starpnieku no HiveMQ un abonēt #. Es saņēmu apmēram 300 ziņojumus dažās sekundēs, pirms mans klients vienkārši avarēja.
MQTT padoms iesācējiem: “/myHome/” ir atšķirīga tēma nekā “Manas mājas/" - iekļaujot slīpsvītru sākumā, tiek izveidots tukšs tēmas līmenis, kurš, kaut arī tehniski derīgs, nav ieteicams, jo tas var radīt neskaidrības.
Tagad, kad mēs zinām teoriju, pamēģināsim ar Arduino, Ethernet Shield un DHT11 temperatūras un mitruma sensoru - jūs, iespējams, esat to atradis savā sākuma komplektā, bet, ja nē, vienkārši nomainiet vides sensoru pret kustības sensoru (vai pat poga).
MQTT publicēšana no Arduino ar Ethernet savienojumu
Ja jums ir ar Arduino saderīga hibrīda ierīce ar iebūvētu Wi-Fi vai Ethernet, tai arī vajadzētu darboties. Galu galā mēs gribēsim labāku / lētāku saziņas veidu, ja tīkla savienojums jāizmanto katrā telpā, taču tas noder pamatiem.
Sāciet ar lejupielādi krodziņa klienta bibliotēka no Github. Ja esat izmantojis pogu Lejupielādēt kā ZIP, struktūra ir nedaudz nepareiza. Unzip, pārdēvējiet mapi tikai krodzinieks, pēc tam izņemiet divus failus no src mapi un pārvietojiet tos augšup pa vienu līmeni augšup līdz lejupielādētās mapes saknei. Pēc tam pārvietojiet visu mapi uz mapi Arduino / bibliotēkas direktoriju.
Šeit ir mans koda kods, kuru varat pielāgot: DHT11 signāla izeja ir uz 7. kontaktu. Mainiet sava Pi servera IP šādā rindā:
klients.setServer ("192.168.1.99", 1883. gads);
Diemžēl mēs nevaram izmantot tā draudzīgo vārdu (OpenHAB.local manā gadījumā) tā kā TCP / IP kaudze Arduino ir ļoti vienkāršota un Bonjour nosaukšanas koda pievienošana būtu daudz atmiņas, kuru mēs nevēlamies tērēt. Lai mainītu tēmas, kurās tiek pārraidīti sensoru dati, ritiniet uz leju līdz šīm rindām:
char buferis [10]; dtostrf (t, 0, 0, buferis); client.publish ("openhab / himitsu / temperatuur", buferis); dtostrf (h, 0, 0, buferis); client.publish ("openhab / himitsu / mitrums", buferis);
Kods ietver arī komandas kanāla abonēšanu. Atrodiet un pielāgojiet šo rindu:
klients.subscribe ("openhab / himitsu / command");
Pārbaudiet tur esošo kodu, un jūs redzēsit, ka jūs viegli varat kontrolēt gaismas diodi vai releju, piemēram, nosūtot komandas uz noteiktiem kanāliem. Kodu piemērā tas vienkārši nosūta ziņojumu atpakaļ, apstiprinot komandas saņemšanu.
Augšupielādējiet savu kodu, pievienojiet Arduino tīklā un, izmantojot MQTT.fx, abonējiet abus # vai openhab / himitsu / # (vai neatkarīgi no tā, vai mainījāt istabas nosaukumu uz, bet neaizmirstiet beigās iekļaut #). Diezgan drīz jums vajadzētu redzēt ziņojumus; un, ja komandu tēmai nosūtīsit ieslēgtu vai izslēgtu, jūs redzēsit arī apstiprinājumus.
MQTT iesiešana OpenHAB
Pēdējais vienādojuma solis ir to iespraust OpenHAB. Tam, protams, mums ir nepieciešama saistoša prasība.
sudo apt-get instalēt openhab-addon-binding-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab
Un rediģējiet konfigurācijas failu, lai iespējotu iesiešanu.
mqtt: broker.url = tcp: // localhost: 1883. mqtt: broker.clientId = openhab
Restartējiet OpenHAB
sudo pakalpojuma openhab restartēšana
Tad pievienosim vienumu vai divus:
/ * MQTT sensori * / Skaits Himitsu_Temp "Himitsu temperatūra [% .1f ° C]"(Himitsu, temperatūra) {mqtt = " (Himitsu, Mitrums) {mqtt = "
Tagad jums vajadzētu saprast formātu; tas kļūst a Skaitļa vienums no MQTT iesiešanas noteiktā tēmā. Šis ir vienkāršs piemērs, iespējams, vēlēsities atsaukties uz wiki lapu, kur tā atrodas var iegūt daudz sarežģītāku.
Apsveicam! Tagad jums ir lēta sensora masīva pamatā Arduino. Nākotnē mēs to pārskatīsim un arduīni ievietos viņu pašu pilnīgi atsevišķā RF tīklā. Es arī esmu izveidojis identisku versiju Wizwiki 7500 dēļiem ja jums gadās kāds no tiem.
Noturība un grafiku dati
Tagad jūs, iespējams, esat iestatījis sensoru ķekars, neatkarīgi no tā, vai tas ir no Z-Wave vai pielāgota Arduinos, kurš darbojas ar MQTT - lai jūs jebkurā laikā var apskatīt šo sensoru stāvokli, un jums arī jāreaģē uz to vērtību noteikumiem. Bet interesanta lieta par sensoru vērtībām parasti ir tā, ka tās laika gaitā mainās: tas ir, ja rodas noturība un grafika. Noturība OpenHAB nozīmē datu saglabāšanu laika gaitā. Ļaujiet mums iet uz priekšu un iestatiet RRD4J (Java apaļo robotu datu bāze), tā saukto, jo dati tiek saglabāti apaļā robina veidā - vecāki dati tiek izmesti, lai saspiestu datu bāzes lielumu.
Instalējiet rrd4j pakotnes ar šādām komandām.
sudo apt-get instalēt openhab-addon-persistence-rrd4j. sudo chown -hR openhab: openhab / usr / share / openhab.
Pēc tam izveidojiet jaunu failu ar nosaukumu rrd4j.persist iekš konfigurācijas / noturība mape. Ielīmējiet šādi:
Stratēģijas {everyMinute: "0 * * * *?" everyHour: "0 0 * * *?" everyDay: "0 0 0 * *?" noklusējums = everyChange. } Vienumi {// saglabājas viss, kad vērtība tiek atjaunināta, tikai noklusējuma, un atjaunojot tos no datu bāzes, startējot *: stratēģija = everyChange, restoOnStartup // tālāk mēs definējam īpašas everyHour stratēģijas jebko temperatūras grupā un katru minūti mitruma temperatūrā *: stratēģija = everyHour Humidity *: stratēģija = everyMinute // kā alternatīvu šeit varat pievienot noteiktus vienumus, piemēram, // Bedroom_Humidity, JamesInOffice: stratēģija = katru minūti. }
Šī faila pirmajā daļā mēs definējam stratēģijas, kas nozīmē tikai nosaukuma piešķiršanu CRON izteiksmei. Tas ir tas pats, ko mēs jau izdarījām ar My. OpenHAB, taču šoreiz mēs izveidojam dažas jaunas stratēģijas, kuras mēs varam izmantot katru dienu, katru stundu un katru minūti. Es tos visus vēl neesmu izmantojis, bet nākotnē varētu būt.
Faila otrajā pusē mēs pastāstām rr4dj, kuras datu vērtības jāsaglabā. Kā noklusējuma mēs katru reizi atjaunināsim visu, bet es arī norādīju uz dažām laika noteiktām stratēģijām konkrētiem sensoriem. Temperatūra, par kuru es pārāk neuztraucos, tāpēc esmu nolēmis ietaupīt tikai katru stundu, bet mitrums mani satrauc, tāpēc es vēlos redzēt, kā tas mainās katru minūti. Ja ir citi dati, kurus konkrēti vēlaties saglabāt noteiktā laikā, pievienojiet tos šeit tagad vai pielāgojiet pēc nepieciešamības.
Piezīme: ja vēlaties arī grafizēt datus, jums tie OBLIGĀTI jāsaglabā vismaz reizi minūtē. Nav svarīgi, vai jūsu sensora dati tiek ātri atjaunināti, jums vienkārši jāpasaka rr4dj, lai tas tiktu saglabāts reizi minūtē.
Kad tas ir definēts, jums jāsāk redzēt atkļūdošanas izvade, kas stāsta, ka vērtības tiek saglabātas.
Pēc tam izveidosim dažus glītus visu šo datu grafikus. Tas ir patiešām viegli. Lai izveidotu atsevišķa sensora diagrammu, vietnes kartē pievienojiet šo:
Diagrammas vienums = Guļamistabas_ Mitruma periods = h
Tas ir burtiski viss, kas jums nepieciešams. Perioda derīgās vērtības ir h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; vajadzētu būt skaidrs, ko tie nozīmē. Ja tas nav norādīts, tas noklusē vērtību D datu pilnas dienas laikā.
Lai izveidotu diagrammu ar vairākiem vienumiem, vienkārši noformējiet grupas nosaukumu:
Diagrammas vienība = Mitruma periods = h
Jūs varētu interesēt arī zināt, ka šo diagrammu varat izmantot citur; tas ģenerē attēlu, izmantojot šo URL: http://YOUROPENHABURL: 8080 / diagramma? grupas = Mitrums un periods = h
Kā ir Jūsu Atnāk OpenHAB sistēma?
Tas attiecas uz šo ceļveža daļu, taču negaidiet, ka tas būs pēdējais, ko dzirdējāt no mums par OpenHAB. Cerams, ka šis un iesācēja ceļvedis ir devis jums labu pamatu, lai izstrādātu pats savu pilnīgo OpenHAB sistēmu, taču tas ir process, kas nekad nav pilnībā pabeigts.
Par laimi, OpenHAB var mērogot no dažām ierīcēm līdz simtiem, sākot ar vienkāršu noteikumu sarežģītību un beidzot ar mājas automātiku - tātad, kā darbojas jūsu sistēma? Kuras ierīces jūs izvēlējāties? Kāds ir nākamais lielais projekts, kuru plānojat īstenot?
Parunāsim komentāros - un, ja jums šī rokasgrāmata šķita noderīga, noklikšķiniet uz šīm kopīgošanas pogām, lai pastāstītu draugiem, kā arī viņi var iestatīt savu OpenHAB sistēmu.
Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.