OpenHAB rokasgrāmata iesācējiem 2. daļa: ZWave, MQTT, noteikumi un diagrammas

OpenHAB rokasgrāmata iesācējiem 2. daļa: ZWave, MQTT, noteikumi un diagrammas

Bezmaksas ne vienmēr nozīmē “nav tik laba kā apmaksāta”, un OpenHAB nav izņēmums. Atvērtā pirmkoda mājas automatizācijas programmatūra ievērojami pārsniedz jebkuras citas tirgū esošās mājas automatizācijas sistēmas iespējas, taču to nav viegli izveidot. Patiesībā tas var būt neapmierinoši.





Ceļveža 1. daļā es jūs iepazīstināju OpenHAB instalēšana Raspberry Pi , iepazīstināja ar OpenHAB pamatjēdzieniem un parādīja, kā sistēmā pievienot pirmos vienumus. Š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 instalējam MQTT brokeri savā Pi ar sensoriem Arduino
  • Datu ierakstīšana un grafiku veidošana

Ievads Z-Wave

Z-Wave gadiem ilgi ir bijis dominējošais mājas automatizācijas protokols: tas ir uzticams, ir plaši izstrādāts un darbojas daudz plašākā diapazonā nekā jebkurš cits viedās mājas produkts. Jums ir pieejami simtiem Z-Wave sensoru, kas veic plašu uzdevumu klāstu. OpenHAB var strādāt ar Z-Wave, taču uzstādīšana ir apgrūtinoša, un uzticamība netiek garantēta.





Ja apsverat iespēju iegādāties māju, kas pilna ar Z-Wave sensoriem un kas paredzēta lietošanai ar OpenHAB, es aicinu jūs pārdomāt. Jums tas var izdoties lieliski, vai arī to var nomocīt nelielas, bet pastāvīgas problēmas. Vismaz nepērciet māju, kas pilna ar sensoriem, kamēr nav bijusi iespēja izmēģināt dažus. Vienīgais iemesls, kāpēc izvēlēties Z-Wave, ir, ja neesat 100% apņēmies izmantot OpenHAB un vēlaties atstāt savas iespējas atvērtas: piemēram, Z-Wave darbojas ar Samsung SmartThings centrmezglu, kā arī specifiskiem Z-Wave centrmezgliem piemēram, Homeseer, un virkne citu programmatūras iespēju, piemēram domoticz .

Lai gan OpenHAB ietver Z-Wave saiti, jums tas joprojām ir nepieciešams vispirms konfigurējiet Z-Wave tīklu , pirms OpenHAB var sākt pieprasīt datus. Ja jums ir Rasberry kontrollera plate, jums ir pieejama programmatūra tīkla konfigurēšanai, tāpēc mēs to šeit neaptversim. Ja esat iegādājies Aeotec USB Z-Stick kontrolieri vai tamlīdzīgu, visticamāk, jums nav iekļauta programmatūra, tāpēc lasiet tālāk.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB, lai izveidotu vārteju (parasts balts) PIRKT TŪLĪT AMAZON

Ja jums jau ir iestatīts Z-Wave tīkls , jūs varat vienkārši savienot savu kontrolieri ar Pi un sākt konfigurēt iesiešanu un vienumus. Ja šis ir jūsu pirmais mēģinājums Z-Wave, tas ir nedaudz sarežģītāk.

Pirmkārt, no aparatūras puses: katram kontrolierim ir savs savienošanas veids 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ē atvienot to no USB porta un vienu reizi nospiest pogu, lai to ievietotu iekļaušanas režīmā. Pēc tam novietojiet to ierīces tuvumā, ar kuru veicat savienošanu pārī, un arī uz tās nospiediet iekļaušanas pogu (tas arī mainīsies: manai Everspring ligzdai ir nepieciešama poga, kas jānospiež 3 reizes pēc kārtas, tāpēc šeit ir mācība izlasīt jūsu ierīces rokasgrāmatu) .





Z-Stick īslaicīgi mirgo, norādot uz panākumiem. Tas rada problēmas, pievienojot to atpakaļ Pi, jo tiek piešķirts jauns ports. Restartējiet savu Pi, lai tas tiktu atiestatīts uz standarta portu, ja konstatējat, ka tas ir dinamiski pārdalīts citā. Vēl labāk: nepievienojiet to Pi, pirms neesat veicis visus aparatūras savienojumus.

HABmin un Z-Wave Bindings instalēšana

Tā kā OpenHAB faktiski nav Z-Wave konfigurācijas utilīta, mēs instalēsim citu tīmekļa pārvaldības rīku, kas to dara-kaut ko sauc par HABmin. Dodieties uz HABmin Github krātuve lejupielādēt pašreizējo laidienu. Kad esat to izpakojis, jūs atradīsit 2 .jar failus pievienojumprogrammu direktorijā - tie jāievieto jūsu OpenHAB mājas koplietošanas atbilstošajā papildinājumu direktorijā (ja izmantojat arī Aotec gen5 Z-Stick, pārliecinieties, vai jums ir vismaz Z-Wave iesiešanas versija 1.8) .





Pēc tam izveidojiet jaunu mapi tīmekļa lietojumprogrammu direktorijā un nosauciet to par “habmin” (mazie burti ir svarīgi). Kopējiet tur pārējos lejupielādētos failus.

Piezīme: Ir arī a HABmin 2 aktīvā attīstībā. Instalēšana ir tāda pati, bet ar vienu papildu .jar papildinājumu. Iespējams, ir vērts izmēģināt abus, lai redzētu, kurš no tiem jums patīk.

Ja vēl neesat to izdarījis, pievienojiet kontrolieri savam Pi. Ievadiet tālāk norādīto, lai atrastu pareizo portu.

ls /dev /tty*

Jūs meklējat jebko, kam nosaukumā ir USB, vai manā konkrētajā gadījumā Z-stick parādījās kā / dev / ttyACM0 (modems). Varētu būt vieglāk izpildīt komandu vienu reizi pirms pievienošanas un vienu reizi pēc tam, lai jūs varētu redzēt, kas mainās, ja neesat pārliecināts.

Atveriet OpenHAB konfigurācijas failu un mainiet sadaļu par Z-Wave, nekomentējot abas rindas un norādot faktisko ierīces adresi. Pēdējais solis man bija ļaut OpenHAB lietotājam piekļūt modemam.

sudo usermod -a -G dialout openhab

Tagad, lai viss sāktos darbībā, 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 par 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, pārbaudot HABMIN, lai redzētu, kas tas ir atrasts: http: //openhab.local: 8080/habmin/index.html (aizstājot openhab.local ar savu Raspberry Pi resursdatora nosaukumu vai IP adresi).

HABMIN ir daudz ko redzēt, bet mēs esam patiesi nobažījušies tikai par Konfigurācija -> Saites -> Z -Wave -> Ierīces cilni, kā redzat zemāk. Izvērsiet mezglu, lai atvieglotu atsauci, lai rediģētu atrašanās vietu un nosaukuma etiķeti.

Z-Wave vienumu 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 jūsu rīcībā jau būs piemēri. Neatpazītu pielāgotu ierīču konfigurēšana krietni pārsniedz šīs rokasgrāmatas darbības jomu, taču pieņemsim, ka pagaidām tā tiek atbalstīta.

Pirmkārt, man ir pamata Everspring AN158 barošanas slēdzis un skaitītājs 3. mezglā. Ātra googlēšana noveda mani pie emuāra ziņas vietnē Wetwa.re ar vienuma konfigurācijas paraugu. Es to pielāgoju šādi:

Pārslēgt sausinātāju_Pārslēgt sausinātāju {zwave = '3: command = switch_binary'}

Skaits Dehumidifier_Watts 'Mitrinātāja enerģijas patēriņš [%.1f W]' {zwave = '3: command = meter'}

Perfekti.

Nākamais ir Aeotec Gen5 daudzu sensoru.

Aeon Labs Aeotec Z-Wave Gen5 vairāku sensoru (Z-Wave Plus) PIRKT TŪLĪT AMAZON

Šim nolūkam es atradu konfigurācijas paraugu vietnē iwasdot.com , un mans multisensors ir 2. mezglā.

Skaits Priekšnama_temperatūra 'Priekšnama temperatūra [%.1f ° C]' (priekšnams, temperatūra) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0'}

Skaits Priekšnama_mitrums 'Priekšnama mitrums [%.0f %%]' (Priekšnams, Mitrums) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

Skaits Priekšnama gaišums 'Priekšnama spilgtums [%.0f Lux]' (priekšnams) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

Sazinieties ar Hallway_Motion 'Priekšnama kustība [%s]' (priekšnams, kustība) {zwave = '2: 0: command = sensor_binary, answer_to_basic = true'}

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

Ja šī formāts jums šķiet dīvains, lūdzu, atgriezieties pie pirmā iesācēja ceļvedis , īpaši sadaļā Hue saistīšana, kur es paskaidroju, kā tiek pievienoti vienumi. Jums, iespējams, vajadzēs tikai kopēt šādus ielīmēšanas piemērus, taču, ja jums ir jauna ierīce, visa saistošā dokumentācija ir detalizēta komandas .

Logitech Harmony Binding

Pirms ķeramies pie noteikumiem, es vēlējos pievienot īsu piezīmi par darbu ar Harmony saiti. Es esmu liels Harmony sērijas gala tālvadības pults ventilators, lai vienkāršotu mājas mediju centra pieredzi, taču tās bieži vien ir atsevišķa sistēma viedajā mājā. Izmantojot OpenHAB, Logitech Harmony aktivitātes un pilnīga ierīces vadība tagad var būt daļa no jūsu centralizētās sistēmas un pat iekļautas automatizācijas noteikumos.

Sāciet, instalējot trīs saistošos failus, kurus atrodat, izmantojot apt-cache, lai meklētu “harmoniju”:

Neaizmirstiet klauns vēlreiz, kad esat pabeidzis, saistīšanas direktoriju:

sudo apt-get instalējiet openhab-addon-action-harmonyhub

sudo apt-get instalējiet openhab-addon-bind-harmonyhub

sudo apt-get instalējiet 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:

########## HARMONIJAS TĀLVADĪBAS KONTROLE ##########

harmonyhub: saimnieks = 192.168.1.181 vai tavs ip

harmonyhub: lietotājvārds = your-harmony-email-login

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ī jūsu pieteikšanās informācija, kas ievadīta, palaižot standarta Harmony konfigurācijas utilītu. Tieši tā. Restartējot nokrāsu, atkļūdošanas žurnālam vajadzētu pēkšņi iziet no saistīšanas.

Š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 lasīšanu vēl vieglāku ar saliekamiem mezgliem, ielīmējot tiešsaistes JSON formatētājā piemēram, šis .

Kā arī standarta PowerOff darbība, kas ir noklusējuma vērtība, jūs atradīsit savas definētās darbības, kas šeit uzskaitītas pēc nosaukuma. Tagad izveidosim vienkāršu vienas pogas vadīklu, lai sāktu darbības. Pirmkārt, vienumu failā pievienojiet šādu rindu. Ja vēlaties, mainiet grupu un ikonu.

/ * Harmony Hub */

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

Tas ir divvirzienu stīgu iesiešana , kas spēj gan ienest pašreizējo darbību, gan pavēlēt pašreizējai darbībai būt citai. Tagad mēs varam tam izveidot pogas vietnes kartes failā.

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

klēpjdators ir pievienots, netiek uzlādēts

Kvadrātiekavā redzēsit katru darbību kopā ar iezīmi. Parasti jūs varat atsaukties tieši uz darbībām tā, kā tās esat nosaucis tālvadības pultī, bet izņēmums šajā gadījumā, ko es atklāju, bija jebkas ar atstarpi aktivitātes nosaukumā, piemēram, “Skatīties TV”. Šajā gadījumā jums būs jāizmanto aktivitātes ID. Atkal jūs varat atrast ID JSON atkļūdošanas izvadā. Saglabājiet un atsvaidziniet saskarni, jums vajadzētu redzēt kaut ko līdzīgu šim:

Jūs varat arī atsaukties uz darbībām savos noteikumos, kā mēs redzēsim tālāk. Izlasiet wiki lapu, lai iegūtu vairāk informācijas par Harmonijas iesiešana .

Vispārīgs ievads noteikumos

Lielākajā daļā viedo māju centrmezglu ir izveidota kāda veida noteikumu izveide, lai jūs varētu automātiski reaģēt uz sensoru datiem un notikumiem mājās. Patiesībā es gribētu apgalvot, ka patiesi gudra māja nav tāda, kas jums jāpavada, mijiedarbojoties ar mobilajām lietotnēm - tā ir tāda, kas galalietotājam ir neredzama un pilnībā automatizēta. Šajā nolūkā OpenHAB ietver arī jaudīgu noteikumu skriptu valodu, kuru varat programmēt, tālu pārsniedzot sarežģītību lielākajā daļā viedo mājas centrmezglu vai IFTTT receptes.

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 gaisma iedegas, kad Džeimss ir klāt”

kad

Vienums JamesInOffice ir mainīts no OFF uz ON

tad

sendCommand (Office_Hue, ieslēgts)

beigas

noteikums “Biroja gaisma izslēdzas, kad Džeimss aiziet”

kad

Vienums JamesInOffice ir mainīts no ON uz OFF

tad

sendCommand (Office_Hue, OFF)

beigas

Pirmkārt, mēs nosaucam noteikumu - esiet aprakstošs, lai jūs zināt, kāds notikums tiek aktivizēts. Tālāk mēs definējam savu vienkāršo noteikumu, sakot ja x ir taisnība, tad dariet y . Beigas nozīmē konkrētā noteikuma slēgšanu. Noteikumos varat izmantot vairākus īpašus vārdus, taču pagaidām mēs nodarbojamies ar diviem vienkāršiem sintakses bitiem - Lieta , kas ļauj vaicāt kāda stāvokļa vaicājumu; un sendCommand , kas dara tieši to, ko jūs domājat. Es jums teicu, ka tas ir viegli.

Iespējams, nav nepieciešams izmantot noteikumu pāri, taču, tā kā mana loģika kļūst sarežģītāka, būs lietderīgi tos nošķirt neatkarīgi no tā, vai es ieeju apgabalā vai izbraucu no tā - un varētu būt lietderīgi kaut kur pievienot gaismas sensoru. vienādojumā, lai mēs nevajadzīgi neieslēgtu gaismas.

Apskatīsim citu piemēru, lai izveidotu ieplānotu kārtulu.

noteikums “Vingrojiet katru rītu”

kad

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

tad

harmonyStartActivity (vingrinājums)

beigas

Atkal mēs nosaucam kārtulu, nosakām nosacījumus, kad tai jāaktivizē, un veicamās darbības. Bet šajā gadījumā mēs definējam laika modeli. Smieklīgais kods, ko redzat pēdiņās, ir kvarca plānotāja CRON izteiksme (formāts nedaudz atšķiras no parastā CRONtab). ES izmantoju cronmaker.com lai palīdzētu izveidot izteiksmi, taču varat arī izlasīt formāta rokasgrāmatu [vairs nav pieejams], lai iegūtu detalizētu skaidrojumu un citus piemērus.

CronMaker.com izmantoja, lai ģenerētu pareizi formatētu Cron izteiksmi

Manos noteikumos ir vienkārši teikts: „Katru rītu pulksten 8:00, katru nedēļas dienu, sakiet manai Harmony Ultimate sistēmai, lai tā sāk vingrinājumu”, kas savukārt aktivizē televizoru, Xbox, pastiprinātāju un pēc minūtes nospiež pogu A, lai sāktu disks diskdzinī.

Diemžēl OpenHAB vēl nevar veikt vingrinājumu manā vietā.

Vēl viens noteikums, ko es vēlos jums parādīt, ir tas, 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ārvietojas visur, kur nepieciešams, tāpēc es nolēmu apskatīt visus savus mitruma sensorus, atrast augstāko un saglabāt to mainīgā. Pašlaik tas tiek aktivizēts katru minūti, bet to var viegli samazināt. Vispirms apskatiet:

importēt org.openhab.core.library.types.*

importēt org.openhab.model.script.actions.*

importēt java.lang.String

noteikums 'Mitruma monitors'

kad laiks cron '0 * * * *?'

tad

var prevHigh = 0

var highHum = '

Mitrums?. Biedri.par katru [hum |

logDebug ('mitruma.noteikumi', hum.nosaukums);

if (hum.state kā DecimalType> prevHigh) {

prevHigh = hum.valsts

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

}

cik daudz vietas cietajā diskā izmanto Windows 10

]

logDebug ('mitruma.noteikumi', highHum);

postUpdate (Dehumidifier_Needed, highHum);

beigas

Noteikumu kodols ir Mitrums?. Locekļi līnija. Mitrums ir manu mitruma sensoru grupas nosaukums; .locekļi satver visus šīs grupas priekšmetus; katram atkārto tos (izmantojot ziņkārīgu kvadrātiekavu formātu, kuru jūs, iespējams, nepazīstat). Noteikumu sintakse ir Xtend atvasinājums, tāpēc jūs varat izlasīt Xtend dokumentācija ja nevarat atrast piemērotu piemēru.

Jums, iespējams, nevajadzēs - ir simtiem noteikumu piemēru:

MQTT OpenHAB un lietu internetam

MQTT ir viegla ziņojumapmaiņas sistēma komunikācijai starp mašīnām un mašīnām-sava veida Twitter, lai jūsu Arduinos vai Raspberry Pis sarunātos savā starpā (lai gan, protams, tas darbojas ar daudz ko citu. Tā strauji gūst popularitāti un atrod sev māju ar lietiskā interneta ierīcēm, kas parasti ir zema resursa mikrokontrolleri, kuriem nepieciešams uzticams veids, kā nosūtīt sensora datus atpakaļ uz jūsu centrmezglu vai saņemt attālās komandas. Tieši to mēs ar to darīsim.

Bet kāpēc no jauna izgudrot riteni?

MQ Telemetry Transport tika izgudrots tālajā 1999. gadā, lai savienotu naftas cauruļvadus, izmantojot lēnus satelīta savienojumus, kas īpaši izstrādāti, lai samazinātu akumulatora patēriņu un joslas platumu, vienlaikus nodrošinot uzticamu datu piegādi. Gadu gaitā dizaina principi ir palikuši nemainīgi, taču lietošanas gadījums ir mainījies no specializētajām iegultajām sistēmām uz vispārējām lietiskā interneta ierīcēm. 2010. gadā protokols tika izlaists bez atlīdzības, un to varēja izmantot un ieviest ikviens. Mums patīk bez maksas.

Jums varētu rasties jautājums, kāpēc mēs pat rūpējamies par vēl vienu protokolu - galu galā mums jau ir HTTP -, ko var izmantot, lai nosūtītu ātrus ziņojumus starp visa veida tīmeklī savienotām sistēmām (piemēram, OpenHAB un IFTTT, jo īpaši jaunajā veidotāja kanālā) ). Un jums būtu taisnība. Tomēr HTTP servera apstrādes izmaksas ir diezgan lielas - tik daudz, ka jūs nevarat to viegli palaist iegultā mikrokontrollerī, piemēram, Arduino (vismaz varat, bet jums nebūs daudz atmiņas citam) ). MQTT, no otras puses, ir viegls, tāpēc ziņojumu sūtīšana pa tīklu neaizsedz caurules, un tas var viegli iekļauties mūsu mazajā Arduino atmiņas telpā.

Kā darbojas MQTT?

MQTT ir nepieciešams gan serveris (saukts par “starpnieku”), gan viens vai vairāki klienti. Serveris darbojas kā starpnieks, saņem ziņojumus un retranslē tos visiem ieinteresētajiem klientiem.

Turpināsim ar Twitter-mašīnām analoģija gan. Tāpat kā Twitter lietotāji var čivināt savas bezjēdzīgās 140 rakstzīmes un lietotāji var “sekot” citiem lietotājiem, lai redzētu veidotu ziņu straumi, MQTT klienti var abonēt noteiktu kanālu, lai saņemtu visus ziņojumus no turienes, kā arī publicēt savus ziņojumus uz šo kanālu. Šo publicēšanas un abonēšanas modeli sauc par krogs / apakš , pretstatā tradīcijai klients/serveris HTTP modelis.

HTTP pieprasa, lai jūs sazinātos ar iekārtu, ar kuru sazināties, piemēram, sveiki, un pēc tam turpiniet un apstipriniet viens otru, kamēr iegūstat vai ievietojat datus. Izmantojot pub/sub, klientam, kas publicē, nav jāzina, kuri klienti ir abonēti: tas vienkārši izsūknē ziņojumus, un brokeris tos izplata visiem abonētajiem klientiem. Jebkurš 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 līdz 140 rakstzīmēm. Tas ir datu agnostiķis, tāpēc jūs varat nosūtīt mazus skaitļus vai lielus teksta blokus, JSON formatētas datagrammas vai pat attēlus un binārus failus.

Nav tā, ka MQTT ir labāks par HTTP visam - bet tas ir vairāk piemērots, ja mums visā mājā būs daudz sensoru, kas pastāvīgi ziņos.

Ir arī svarīgi zināt, ka OpenHAB nedarbosies kā jūsu MQTT brokeris - mēs par to runāsim vēlāk. Tomēr OpenHAB darbosies kā klients: tas var gan publicēt jūsu OpenHAB darbību žurnālu, gan saistīt noteiktus kanālus ar ierīcēm, lai, piemēram, jums varētu būt slēdzis, ko konkrētā kanālā kontrolē MQTT ziņojumi. Tas ir ideāli piemērots, lai izveidotu māju, kas pilna 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. Lai to izdarītu, jums vai nu jāizmanto tīmekļa MQTT brokeris (maksas vai bezmaksas), vai arī jāinstalē bezmaksas programmatūra savā Pi. Es gribētu to visu saglabāt savā mājā, tāpēc esmu instalējis Mosquitto uz Pi.

Diemžēl versija, kas pieejama, izmantojot parasto apt-get, ir pilnīgi 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 portā 1883.

Pārbaudiet, vai jūsu MQTT serveris darbojas, izmantojot bezmaksas platformu MQTT.fx. Noklikšķiniet uz iestatījumu ikonas, lai izveidotu jaunu profilu, un ievadiet Raspberry Pi IP adresi vai vārdu. Saglabājiet un nospiediet savienojumu. Ja mazais luksofors augšējā labajā stūrī kļūst zaļš, varat doties.

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 tagad abonējat, lai saņemtu ziņojumu par tēmu, kas nosaukta programmā Topic, lai gan tajā tiks rādīts 0 ziņojumu. Atgriezieties cilnē Publicēt, mazajā lodziņā ierakstiet tēma un zemāk esošajā lielajā tekstlodziņā - īsziņa. Sist Publicēt dažas reizes un atskatieties uz abonēšanas cilni. Jums vajadzētu redzēt dažus ziņojumus, kas parādījušies šajā tēmā.

Pirms mēs savam tīklam pievienojam dažus faktiskos sensorus, mums jāapgūst tēmu līmeņi, kas ļauj strukturēt un filtrēt MQTT tīklu. Tēmu nosaukumi ir reģistrjutīgi, nedrīkst sākties ar $, tajos nedrīkst būt atstarpes vai rakstzīmes, kas nav ASCII-standarta programmēšanas prakse mainīgo nosaukumiem.

/ Atdalītājs norāda tēmas līmeni, kas ir hierarhisks, piemēram, visi tālāk norādītie ir derīgi tēmu līmeņi.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/temperatūra

myHome/livingRoom/mitrums

myHome/virtuve/temperatūra

myHome/virtuve/mitrums

Jums jau vajadzētu redzēt, kā šī koka struktūra ir ideāli piemērota viedai mājai, kas pilna ar sensoriem un ierīcēm. Labākā prakse lietošanai kopā ar vairākiem sensoriem vienā telpā ir publicēt katru sensora mainīgo tā tēmas līmenī - sazarojoties līdz konkrētākam (kā iepriekš minētajos piemēros) - nevis mēģināt publicēt vairāku veidu sensorus vienā kanālā. .

Pēc tam klienti var publicēt vai abonēt jebkuru skaitu atsevišķu tēmu līmeņu vai izmantot īpašas aizstājējzīmes, lai filtrētu no koka augstāk.

+ Aizstājējzīme aizstāj jebkuru tēmas līmeni. Piemēram:

myHome/+/temperatūra

abonētu klientu abus

myHome/livingRoom/temperatūra

myHome/virtuve/temperatūra

... bet ne mitruma līmenis.

# Ir daudzlīmeņu aizstājējzīme, tāpēc jūs varat izgūt jebko no livingRoom sensoru masīva, izmantojot:

myHome/livingRoom/#

Tehniski jūs varat arī abonēt saknes līmeni #, kurā jūs saņemsiet absolūti visu, kas iet caur brokeri, bet tas var būt kā ugunsdzēsības šļūtenes iespiešana sejā: mazliet satriecoši. Mēģiniet izveidot savienojumu ar publisko MQTT brokeri no HiveMQ un abonēt #. Dažu sekunžu laikā saņēmu aptuveni 300 ziņojumu, pirms mans klients tikko avarēja.

MQTT padoms iesācējiem: ' /Manas mājas/' tā ir cita tēma Manas mājas/' - iekļaujot slīpsvītru sākumā, tiek izveidots tukšs tēmas līmenis, kas, lai arī ir tehniski derīgs, nav ieteicams, jo tas var būt mulsinoši.

Tagad, kad mēs zinām teoriju, sāksim ar Arduino, Ethernet vairogu un DHT11 temperatūras un mitruma sensoru - iespējams, jums tas ir jūsu sākuma komplektā, bet, ja nē, vienkārši nomainiet vides sensoru pret kustību. sensoru (vai pat pogu).

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, tam arī vajadzētu darboties. Galu galā mēs vēlēsimies labāku/lētāku saziņas veidu, kurā jāizmanto tīkla savienojums katrā telpā, taču tas palīdz apgūt pamatus.

Sāciet ar lejupielādi pubsubclient bibliotēka no Github . Ja esat izmantojis pogu Lejupielādēt kā ZIP, struktūra ir nedaudz nepareiza. Izsaiņojiet, pārdēvējiet mapi uz tikai kroga pasūtītājs , pēc tam izņemiet divus failus no src mapi un pārvietojiet tos par vienu līmeni uz lejuplādētās mapes sakni. Pēc tam pārvietojiet visu mapi uz savu Arduino/bibliotēkas direktoriju.

Šeit ir mans parauga kods, kuru varat pielāgot : DHT11 signāla izvade ir uz 7. kontakta. Mainiet sava Pi servera IP adresi šādā rindā:

client.setServer ('192.168.1.99', 1883);

Diemžēl mēs nevaram izmantot tā draudzīgo nosaukumu (OpenHAB.local manā gadījumā) tā kā Arduino TCP/IP steks ir ļoti vienkāršots un koda pievienošana Bonjour nosaukšanai 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:

ogļu buferšķīdums [10];

dtostrf (t, 0, 0, buferis);

client.publish ('openhab/himitsu/temperatūra', buferis);

dtostrf (h, 0, 0, buferis);

client.publish ('openhab/himitsu/mitrums', buferis);

Kods ietver arī komandu kanāla abonēšanu. Atrodiet un pielāgojiet šādu rindu:

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

Pārbaudiet kodu tur, un jūs redzēsit, ka jūs varētu viegli kontrolēt gaismas diodi vai releju, piemēram, nosūtot komandas noteiktiem kanāliem. Piemēra kodā tas vienkārši nosūta atpakaļ ziņojumu, apstiprinot komandas saņemšanu.

Augšupielādējiet savu kodu, pievienojiet Arduino tīklam un, izmantojot MQTT.fx, abonējiet kādu no tiem # vai openhab / himitsu / # (vai uz ko jūs mainījāt telpas nosaukumu, bet beigās neaizmirstiet iekļaut #). Diezgan drīz jums vajadzētu redzēt ziņojumus; un, nosūtot komandu tēmai IESLĒGT vai IZSLĒGT, redzēsiet arī apstiprinājumus.

MQTT iesiešana OpenHAB

Pēdējais vienādojuma solis ir to savienot ar OpenHAB. Lai to izdarītu, mums, protams, ir vajadzīgs saistošs.

sudo apt-get install openhab-addon-bind-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 vienu vai divus vienumus:

/ * MQTT sensori */

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

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

Tagad jums vajadzētu saprast formātu; tas kļūst a Skaitlis no MQTT iesiešanas, par noteiktu tēmu. Šis ir vienkāršs piemērs, iespējams, vēlēsities atsaukties uz wiki lapu, kur tā atrodas var kļūt daudz sarežģītāka .

Apsveicam, tagad jums ir pamats lētam uz Arduino balstītam sensoru blokam. Nākotnē mēs to pārskatīsim un ievietosim Arduino savā pilnīgi atsevišķā RF tīklā. Es arī izveidoju identisku versiju Wizwiki 7500 dēļiem ja jums ir kāds no tiem.

Noturības un grafikas dati

Šobrīd jūs, iespējams, esat izveidojis virkni sensoru-gan no Z-Wave, gan pielāgotiem Arduinos, kuros darbojas MQTT-lai jūs jebkurā laikā varētu apskatīt šo sensoru pašreizējo stāvokli, kā arī jums vajadzētu reaģēt uz to vērtību noteikumos. Bet interesanti par sensoru vērtībām parasti ir tas, ka tās laika gaitā mainās: tieši šeit parādās noturība un grafiku attēlojums. Noturība OpenHAB nozīmē datu saglabāšanu laika gaitā. Dosimies uz priekšu un iestatīsim RRD4J (Round Robin Database for Java), tā saukto, jo dati tiek saglabāti apaļā kārtā - vecāki dati tiek izmesti, lai saspiestu datu bāzes lielumu.

Instalējiet rrd4j pakotnes ar šādām komandām.

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

Pēc tam izveidojiet jaunu failu ar nosaukumu rrd4j.pastāv iekš konfigurācijas/noturība mape. Ielīmējiet šādi:

Stratēģijas {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

katru dienu: '0 0 0 * *?'

noklusējums = everyChange

}

Vienumi {

// saglabāt visu, kad vērtība tiek atjaunināta, tikai noklusējuma, un atjaunot tos no datu bāzes startēšanas laikā

*: stratēģija = everyChange, restoreOnStartup

// tālāk mēs definējam konkrētas katra stundas stratēģijas jebko temperatūras grupai un katru minūti mitrumam

kā nomainīt tīkla paroli Windows 10

Temperatūra*: stratēģija = everyHour

Mitrums*: stratēģija = everyMinute

// kā alternatīvu šeit varat pievienot konkrētus vienumus, piemēram,

// Guļamistabas_mitrums, JamesInOffice: stratēģija = everyMinute

}

Šī 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 darījām ar My.OpenHAB, taču šoreiz mēs izveidojam dažas jaunas stratēģijas, kuras varam izmantot katru dienu, katru stundu un katru minūti. Es vēl neesmu tos visus izmantojis, bet varbūt nākotnē.

Faila otrajā pusē mēs rr4dj norādām, kuras datu vērtības jāsaglabā. Pēc noklusējuma mēs visu saglabāsim katru reizi, kad tas tiks atjaunināts, bet esmu arī norādījis dažas stratēģijas, kas balstītas uz laiku konkrētiem sensoriem. Temperatūra, par kuru es pārāk neuztraucos, tāpēc esmu to iestatījis, lai ietaupītu tikai katru stundu, bet mitrums man rada lielas bažas, tāpēc es vēlos redzēt, kā tas mainās katru minūti. Ja ir citi dati, kurus vēlaties saglabāt noteiktā laikā, pievienojiet tos šeit tūlīt vai pielāgojiet pēc vajadzības.

Piezīme: ja arī vēlaties grafiski attēlot datus, tie OBLIGĀTI jāsaglabā vismaz reizi minūtē. Nav svarīgi, vai jūsu sensoru dati tiek ātri atjaunināti, jums vienkārši jāpasaka rr4dj, lai tie tiktu saglabāti reizi minūtē.

Kad tas ir definēts, jums vajadzētu sākt redzēt kādu atkļūdošanas izvadi, kas norāda, ka vērtības tiek saglabātas.

Tālāk izveidosim skaistus grafikus no visiem šiem datiem. Tas tiešām ir viegli. Lai izveidotu atsevišķa sensora grafiku, vietnes kartei pievienojiet šādu informāciju:

Diagrammas vienums = Guļamistaba_ Mitruma periods = h

Tas ir burtiski viss, kas jums nepieciešams. Derīgās perioda 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 pēc noklusējuma norāda visu dienas datus.

Lai izveidotu diagrammu ar vairākiem vienumiem, vienkārši attēlojiet grupas nosaukumu:

Diagrammas vienums = Mitruma periods = h

Jūs varētu interesēt arī informācija, ka šo grafiku varat izmantot citur; tas ģenerē attēlu, izmantojot šo URL: http: // YOUROPENHABURL: 8080/chart? groups = Mitrums un periods = h

Kā ir Jūsu Vai nāk OpenHAB sistēma?

Tas ir viss šajā rokasgrāmatas daļā, taču negaidiet, ka tas būs pēdējais, ko dzirdēsit no mums par OpenHAB. Cerams, ka šī un iesācēja rokasgrāmata ir devusi jums stabilu pamatu savas pilnīgās OpenHAB sistēmas izstrādei, taču tas ir process, kas nekad nav pilnībā pabeigts.

Par laimi, OpenHAB var labi mērogot no dažām ierīcēm līdz simtiem, sākot no vienkāršu noteikumu sarežģītības un beidzot ar mājas automatizāciju - kā jūsu sistēma darbojas? Kādas ierīces izvēlējāties? Kāds ir nākamais lielais projekts, kuru plānojat risināt?

Parunāsim komentāros - un, lūdzu, ja šī rokasgrāmata jums šķita noderīga, noklikšķiniet uz šīm kopīgošanas pogām, lai pastāstītu saviem draugiem, kā arī viņi var iestatīt savu OpenHAB sistēmu.

Mēs ceram, ka jums patīk mūsu ieteiktie un apspriestie priekšmeti! MUO ir saistītas un sponsorētas partnerattiecības, tāpēc mēs saņemam daļu no ieņēmumiem no dažiem jūsu pirkumiem. Tas neietekmēs jūsu maksājamo cenu un palīdzēs mums piedāvāt labākos produktu ieteikumus.

Kopīgot Kopīgot Čivināt E -pasts Rokas animācijas rokasgrāmata iesācējiem

Runas animēšana var būt izaicinājums. Ja esat gatavs sākt pievienot dialogu savam projektam, mēs to sadalīsim jūsu vietā.

Lasīt Tālāk
Saistītās tēmas
  • DIY
  • Viedā māja
  • Arduino
  • Mājas automatizācija
  • Longform
  • Longform ceļvedis
Par autoru Džeimss Brūss(Publicēti 707 raksti)

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņam ir CompTIA A+ un Network+ sertifikāts. Kad viņš nav aizņemts kā aparatūras pārskatu redaktors, viņam patīk LEGO, VR un galda spēles. Pirms pievienošanās MakeUseOf viņš bija gaismas tehniķis, angļu valodas skolotājs un datu centra inženieris.

Vairāk no Džeimsa Brūsa

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu