Reklama

Zadarmo neznamená vždy „nie také dobré ako platené“ a OpenHAB nie je výnimkou. Softvér pre domácu automatizáciu s otvoreným zdrojovým kódom ďaleko presahuje možnosti ktoréhokoľvek iného systému domácej automatizácie na trhu - nastavenie však nie je ľahké. V skutočnosti to môže byť úplne frustrujúce.

Táto príručka je k dispozícii na stiahnutie vo formáte PDF zdarma. Stiahnite si Príručku pre začiatočníkov OpenHAB, časť 2: ZWave, MQTT, pravidlá a grafy. Môžete to skopírovať a zdieľať so svojimi priateľmi a rodinou.

V časti 1 sprievodcu som vás prešiel inštalácia OpenHAB na Raspberry Pi Začíname s domácou automatizáciou OpenHAB na Raspberry PiOpenHAB je zrelá platforma pre domácu automatizáciu s otvoreným zdrojovým kódom, ktorá funguje na rôznych hardvéroch a je protokol agnostický, čo znamená, že sa môže pripojiť k takmer akémukoľvek hardvéru domácej automatizácie na trhu dnes. Čítaj viac , predstavili základné koncepty OpenHAB a ukázali vám, ako pridať prvé položky do systému. Dnes pôjdeme ďalej:

instagram viewer
  • Pridávanie ZWave zariadení
  • Pridanie ovládača Harmony Ultimate
  • Zavádzanie pravidiel
  • Predstavujeme MQTT a inštalujeme sprostredkovateľa MQTT na váš Pi so senzormi na Arduino
  • Zaznamenávanie a grafovanie údajov

Úvod do Z-Wave

Z-Wave je už roky dominantným protokolom domácej automatizácie: je spoľahlivý, bol rozsiahle vyvinutý a funguje v oveľa dlhšom rozsahu ako akékoľvek iné inteligentné domáce produkty. K dispozícii máte stovky senzorov Z-Wave, ktoré vykonávajú širokú škálu úloh. OpenHAB môcť pracujte so Z-Wave, ale je potrebné ho nastaviť a spoľahlivosť nie je zaručená.

Ak uvažujete o kúpe domu plného senzorov Z-Wave špeciálne pre použitie s OpenHAB, vyzývam vás, aby ste to znova zvážili. Môže to fungovať skvele pre vás, alebo to môže trpieť malými, ale pretrvávajúcimi problémami. Aspoň nekupujte dom plný senzorov, kým nebudete mať možnosť vyskúšať si pár. Jediným dôvodom, prečo ste si vybrali Z-Wave, je, ak nemáte 100% spokojnosť s OpenHAB a chceli by ste nechať svoje možnosti otvorené v budúcnosti: napríklad Z-Wave spolupracuje s Samsung SmartThings Ktorý inteligentný rozbočovač pre domácu automatizáciu je pre vás najlepší?Na chvíľu si ľudia mysleli, že ide o nič viac ako o trik, ale posledné vydania produktov ukázali, že inteligentná domáca automatizácia začína plniť svoje sľuby. Čítaj viac rozbočovač, ako aj rozbočovače špecifické pre Z-Wave, napríklad Homeseer, a množstvo ďalších softvérových volieb, ako napríklad Domoticz.

Aj keď OpenHAB obsahuje väzbu Z-Wave, stále musíte Najskôr nakonfigurujte sieť Z-Wave, predtým ako ho môže OpenHAB začať vyhľadávať údaje. Ak máte riadiacu dosku Rasberry, máte k dispozícii nejaký softvér na konfiguráciu siete, preto to nebudeme kryť. Ak ste si kúpili radič Aeotec USB Z-Stick alebo podobný, pravdepodobne nemáte žiadny softvér, takže si ho môžete prečítať ďalej.

Aeotec Z-Stick Gen5, Z-Wave Plus USB na vytvorenie brányAeotec Z-Stick Gen5, Z-Wave Plus USB na vytvorenie brány Kúpte si teraz na Amazone $44.95

Ak už máte nastavenie siete Z-Wave, stačí zapojiť ovládač do pi a začať konfigurovať viazanie a položky. Ak je to váš prvý úpadok do Z-Wave, je to o niečo zložitejšie.

Po prvé, na strane hardvéru: každý radič má svoj vlastný spôsob párovania so zariadeniami (technicky známy ako „režim začlenenia“, v ktorom je pridelené ID uzla). V prípade zariadenia Aotec Z-Stick to znamená, že ho odpojíte od portu USB a jedným stlačením ho prepnete do režimu začlenenia. Potom ju priblížte k zariadeniu, ktoré chcete spárovať, a stlačte na ňom aj tlačidlo zahrnutia (toto sa bude líšiť: moja zásuvka Everspring vyžaduje, aby tlačidlo stlačilo 3 krát za sebou, takže lekciou je prečítať si príručku k vášmu zariadeniu).

Z-Stick krátko bliká, čo znamená úspech. To predstavuje problémy pri jeho opätovnom pripojení k zariadeniu Pi, keďže je priradený nový port. Ak zistíte, že bol dynamicky pridelený iný port, reštartujte ho a vráťte ho späť na štandardný port. Ešte lepšie: nezapájajte ho do zariadenia Pi, kým najprv nevykonáte všetky hardvérové ​​párovania.

Inštalácia väzieb HABmin a Z-Wave

Pretože OpenHAB v skutočnosti nie je konfiguračným nástrojom pre Z-Wave, inštalujeme ďalší nástroj na správu webu, ktorý funguje - niečo ako HABmin. Zamierte na cestu Úložisko HABmin Github stiahnite si aktuálne vydanie. Po jeho rozbalení nájdete 2 .jar súbory v adresári addons - mali by ste ich umiestniť do príslušného adresára addons v zdieľanej zložke OpenHAB Home (ak používate aj Zot Stick Aotec gen5 Z, uistite sa, že máte aspoň verziu 1.8 väzby Z-Wave).

Potom vytvorte nový priečinok v adresári webapps a nazvite ho „habmin“ (malé písmeno je dôležité). Skopírujte doň zvyšok stiahnutých súborov.

Poznámka: K dispozícii je tiež HABmin 2 v aktívnom rozvoji. Inštalácia je takmer rovnaká, ale s jedným ďalším doplnkom .jar. Možno by stálo za to vyskúšať oboje, len aby ste zistili, ktoré preferujete.

Ak ste to ešte neurobili, zapojte ovládač do svojho pi. Zadajte nasledujúci port a nájdite správny port.

ls / dev / tty *

Hľadáte čokoľvek s menom USB alebo v mojom konkrétnom prípade sa Z-stick prezentoval ako /dev/ttyACM0 (modem). Môže byť jednoduchšie vykonať príkaz skôr, ako ho zapojíte, a potom, aby ste videli, aké zmeny sa prejavia, ak si nie ste istí.

devtty

Otvorte konfiguračný súbor OpenHAB a upravte oddiel na Z-Wave, zrušte označenie oboch riadkov a zadajte svoju skutočnú adresu zariadenia. Posledným krokom pre mňa bolo umožniť užívateľovi OpenHAB prístup k modemu.

sudo usermod -a-G dialout openhab

Teraz, ak chcete všetko naštartovať, reštartujte OpenHAB

reštart sudhovej služby

Dúfajme, že ak kontrolujete protokol ladenia, uvidíte niečo také. Gratulujeme, hovoríte teraz Z-Wave. Môžete tiež nájsť protokol ladenia zaplavený správami z rôznych uzlov Z-Wave. Začnime kontrolou HABMIN, aby sme zistili, čo sa našlo: http://openhab.local: 8080 / habmin / index.html (nahradenie adresy openhab.local názvom hostiteľa alebo IP adresou Raspberry Pi).

spustenie vlny v protokole openhab

V službe HABMIN je toho veľa, ale my sme len znepokojení Konfigurácia -> Viazania -> Z-Wave -> Zariadenia ako vidíte nižšie. Rozbaľte uzol a upravte umiestnenie a menovku pre ľahšiu orientáciu.

upravte názov zariadenia

Konfigurácia položiek Z-Wave

Každé Z-Wave zariadenie bude mať špecifickú konfiguráciu pre OpenHAB. Našťastie väčšina zariadení už bola preskúmaná a pre vaše už budú príklady. Konfigurácia vlastných zariadení, ktoré nie sú rozpoznané, značne presahuje rámec tejto príručky, ale predpokladajme, že je zatiaľ podporovaná.

Najprv mám základný vypínač Everspring AN158 a merač na uzle 3. Rýchly Googling ma priviedol k blogovému príspevku na Wetwa.re s ukážkovou konfiguráciou položky. Prispôsobil som to takto:

Prepínač Dehumidifier_Switch "Dehumidifier" {zwave = "3: command = switch_binary"} Number Dehumidifier_Watts "Spotreba energie odvlhčovača [% .1f W]" {zwave = "3: command = meter"}

Dokonalá.

Ďalej je Aeotec Gen5 Multi-Sensor.

Aeon Labs Aeotec Multi-senzor Z-Wave Gen5 (Z-Wave Plus)Aeon Labs Aeotec Multi-senzor Z-Wave Gen5 (Z-Wave Plus) Kúpte si teraz na Amazone $69.27

Pre tento som našiel ukážku konfigurácie na iwasdot.com, a môj multisenzor je na uzle 2.

Číslo Hallway_Temperature "Hallway Temperature [% .1f ° C]" (Hallway, Temperature) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0"} Number Hallway_Humidity "Hallway Vlhkosť [% .0f %%]" (Hallway, Vlhkosť) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 5"} Number Hallway_Luminance "Hallway Luminance [% .0f Lux]" (Hallway) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 3"} Kontaktujte spoločnosť Hallway_Motion "Hallway Motion [% s]" (Hallway, Motion) {zwave = "2: 0: command = sensor_binary, response_to_basic = true"} Číslo sensor_1_battery "Batéria [% s %%]" (pohyb) {zwave = "2: 0: command = battery"}

Ak vám tento formát vyzerá čudne, zamierte späť k prvému sprievodca pre začiatočníkov Začíname s domácou automatizáciou OpenHAB na Raspberry PiOpenHAB je zrelá platforma pre domácu automatizáciu s otvoreným zdrojovým kódom, ktorá funguje na rôznych hardvéroch a je protokol agnostický, čo znamená, že sa môže pripojiť k takmer akémukoľvek hardvéru domácej automatizácie na trhu dnes. Čítaj viac , konkrétne časť Hue závazná, kde vysvetľujem, ako sa pridávajú položky. Pravdepodobne budete pravdepodobne potrebovať len skopírovať príklady vloženia, ako je tento, ale v prípade, že máte nové zariadenie, záväzná dokumentácia obsahuje podrobnosti o všetkých príkazy.

Viazanie Logitech Harmony

Predtým, ako skočíme do pravidiel, som chcel pridať krátku poznámku o práci s väzbou Harmony. Som veľký fanúšik Harmony séria špičkových diaľkových ovládačov Logitech Harmony Ultimate Recenzia a prezradíVaša obývacia izba je chaos - pripustite. Je vám odpustené, že ste zvedaví, ktoré diaľkové ovládanie ktoré zariadenie. Čo s televízorom, zosilňovačom, TiVO, prehrávačom BluRay, možno aj činnosti spojené s osvetľovaním sú dlhé ... Čítaj viac na zjednodušenie práce v domácom mediálnom centre, ale často stoja ako samostatný systém v rámci inteligentného domu. S OpenHAB môžu byť aktivity Logitech Harmony a úplné ovládanie zariadenia teraz súčasťou vášho centralizovaného systému a dokonca môžu byť súčasťou pravidiel automatizácie.

Najprv nainštalujte tri záväzné súbory, ktoré nájdete, pomocou apt-cache na vyhľadanie „harmónie“:

openhab apt-cache hľadá väzbu harmónie

Nezabudnite chown po dokončení znova adresár väzieb:

sudo apt-get install openhab-addon-action-harmonyhub. sudo apt-get install openhab-addon-bind-harmonyhub. sudo apt-get install openhab-addon-io-harmonyhub. sudo chown -hR openhab: openhab / usr / share / openhab

Ak chcete nakonfigurovať väzbu, otvorte súbor openhab.cfg a pridajte novú sekciu nasledovne:

########## HARMONY REMOTE CONTROLS ########### harmonyhub: host = 192.168.1.181alebo ip
harmonyhub: username =your-harmónia-email-login
harmonyhub: heslo =tvoje heslo

IP adresa je adresa vášho Harmony hubu. Zistite to pomocou sieťového skenera. Musíte tiež zadať svoje prihlasovacie údaje, tie, ktoré zadáte pri spustení štandardného konfiguračného programu Harmony. To je všetko. Po reštartovaní vášho odtieňa by mal mať váš denník ladenia náhle výstupy z väzby.

Toto je zoznam všetkých vašich aktivít, zariadení a príkazov, ktoré je možné odoslať, vo formáte JSON. Je dobré tento problém skopírovať pre budúce použitie. môžete ho ešte ľahšie čítať pomocou skladacích uzlov vložením do online formátovača JSON ako je tento.

výstup formátu openhab vo formáte json

Okrem štandardnej aktivity PowerOff, ktorá je predvolená, nájdete tu svoje vlastné definované aktivity uvedené podľa názvu. Teraz vytvorme jednoduché ovládanie jedným tlačidlom na spustenie aktivít. Najprv do súboru položiek pridajte nasledujúci riadok. Ak chcete, zmeňte skupinu a ikonu.

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

Toto je obojsmerné viazanie strún, ktorý je schopný načítať aktuálnu aktivitu a zároveň nariadiť, aby bola aktuálna aktivita niečo iné. Teraz preň môžeme vytvoriť tlačidlo v súbore sitemap.

Prepnúť položku = Mapovanie Harmony_Activity = [PowerOff = 'Off', Cvičenie = 'Cvičenie', 13858434 = 'TV', Karaoke = 'Karaoke']

V hranatej zátvorke uvidíte každú aktivitu spolu so štítkom. Vo všeobecnosti môžete priamo odkazovať na aktivity, ako ste ich na diaľkovom ovládači pomenovali, ale výnimkou toho, čo som našiel, bolo niečo s medzerou v názve aktivity, napríklad „Pozerať televíziu“. V takom prípade budete musieť použiť ID aktivity. ID znova nájdete vo výstupe ladenia JSON. Uložte a obnovte svoje rozhranie, mali by ste vidieť niečo podobné tomuto:

harmónia openhab v súbore Sitemap

Ako uvidíme ďalej, môžete tiež odkazovať na aktivity vo vašich pravidlách. Viac informácií nájdete na stránke wiki Viazanie harmónie.

Všeobecný úvod do pravidiel

Väčšina inteligentných domovských uzlov obsahuje určitý druh pravidiel, takže môžete automaticky reagovať na údaje senzorov a udalosti v domácnosti. V skutočnosti by som tvrdil, že skutočne inteligentný domov nie je domom, ktorý musíte tráviť čas interakciou s mobilnými aplikáciami - je to ten, ktorý je pre koncového používateľa neviditeľný a úplne automatizovaný. OpenHAB na tento účel obsahuje aj výkonný skriptovací jazyk pravidiel, ktorý môžete naprogramovať, čo výrazne presahuje zložitosť väčšiny inteligentné domáce uzly Bitka o inteligentné domáce uzly: Čo je tam a čo sa deje? Čítaj viac alebo Recepty IFTTT IFTTT sa teraz pripája k čomukoľvek: Predstavujeme kanál výrobcuMožné využitie IFTTT je nekonečné. Doteraz však bolo ťažké ho prepojiť s vašimi vlastnými hardvérovými projektmi. Dnes sa to všetko zmenilo. Čítaj viac .

Pravidlá programovania znejú horšie, ako to je. Začnime jednoduchými pravidlami, ktoré zapínajú alebo vypínajú svetlo v závislosti od senzora prítomnosti:

pravidlo „Svietidlo Office svieti, keď je prítomný James“ keď sa položka JamesInOffice zmenila z OFF na ON. potom pošliteCommand (Office_Hue, ON) koniec pravidla „Úrad sa vypne, keď James odíde“ keď sa položka JamesInOffice zmenila z ON na OFF. potom pošliteCommand (Office_Hue, OFF) koniec

Najprv pomenujeme pravidlo - buďte popisný, takže viete, čo sa začína. Ďalej definujeme naše jednoduché pravidlo vyslovením ak je x pravdivé, urobte y. End znamená ukončenie tohto konkrétneho pravidla. V pravidlách môžete použiť niekoľko špeciálnych slov, ale zatiaľ sa zaoberáme dvoma jednoduchými bitmi syntaxe - položka, čo vám umožňuje zisťovať stav niečoho; a sendCommand, čo robí presne to, čo si myslíte. Povedal som ti, že je to ľahké.

Pravdepodobne nie je potrebné používať pár pravidiel, ale keď sa moja logika stáva zložitejšou, bude užitočné mať ich oddelené od toho, či som pri vstupe alebo výstupe z oblasti - môže byť dobrý nápad niekde pridať rovnicu do rovnice, takže sa zbytočne nezapíname svetlá.

Pozrime sa na ďalší príklad a vytvoríme naplánované pravidlo.

pravidlo „Cvičiť každé ráno“ kedy Time cron "0 0 8 1/1 *? *" potom harmóniaStartActivity („Cvičenie“) koniec.

Opäť uvádzame pravidlo, podmienky štátu, kedy by malo dôjsť k paľbe, a kroky, ktoré treba podniknúť. V tomto prípade však definujeme časový plán. Vtipný kód, ktorý vidíte v úvodzovkách, je výraz CRON pre Plánovač kremeňa (formát sa mierne líši od bežného CRONtab). použil som cronmaker.com aby ste pomohli vytvoriť výraz, môžete si však prečítať sprievodcu formátom [Už nie je k dispozícii], kde nájdete podrobné vysvetlenie a ďalšie príklady.

generátor cron
CronMaker.com použil na vygenerovanie správne naformátovaného výrazu Cron

Moje pravidlá hovoria jednoducho „každé ráno v 8 hodín ráno, každý deň v týždni, povedzte svojmu systému Harmony Ultimate, aby začal cvičebnú aktivitu“, ktorý následne aktivuje televízor, Xbox, zosilňovač a po jednej minúte stlačí tlačidlo A, aby sa disk spustil v jednotke.

Je smutné, že OpenHAB zatiaľ pre mňa nemôže cvičiť.

Ešte jedno pravidlo, ktoré vám chcem ukázať, je niečo, čo používam na správu úrovne vlhkosti v mojom dome. Mám jeden odvlhčovač vzduchu, ktorý sa potrebujem pohybovať všade, kde je to potrebné, a tak som sa rozhodol pozrieť sa na všetky svoje senzory vlhkosti, nájsť, ktorý z nich je najvyšší, a uložiť ho do premennej. Momentálne sa spúšťa každú minútu, ale to sa dá ľahko znížiť. Najprv sa pozrite:

import org.openhab.core.library.types. * import org.openhab.model.script.actions. * import java.lang. Pravidlo reťazca "Monitor vlhkosti" kedy Time cron "0 * * * *?" potom var prevHigh = 0 var highHum = "" Vlhkosť? .members.forEach [hum | logDebug ("vlhkosti.rules", hum.name); if (hum.state as DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("vlhkosti.rules", highHum); postUpdate (Dehumidifier_Needed, highHum); koniec.

Jadro pravidla je v Vlhkosť? .Members.foreach linka. Vlhkosť je názov skupiny pre moje senzory vlhkosti; .members chytí všetky položky v tejto skupine; pre každý iteruje nad nimi (s formátom zátvorky s hranatými zátvorkami, s ktorými pravdepodobne nie ste oboznámení). Syntax pravidiel je odvodená od Xtend, takže si môžete prečítať Dokumentácia Xtend ak nenájdete príklad na prispôsobenie.

Pravdepodobne to nebudete musieť - existujú tam stovky vzorových pravidiel:

  • Podrobné vysvetlenie pravidiel na oficiálnej wiki
  • vzorky úradných pravidiel wiki stránka
  • Presadzovanie pravidiel do nových výšin
  • Pokročilé vzorky na stránkach IngeniousFool.net

MQTT pre OpenHAB a internet vecí

MQTT je ľahký systém zasielania správ pre komunikáciu medzi strojmi - druh Twitteru pre vaše Arduinos alebo Raspberry Pis spolu hovoriť (aj keď to samozrejme funguje omnoho viac než len) ty). Rýchlo si získava na popularite a nachádza si domov so zariadeniami internetu vecí, ktoré sú zvyčajne nízke mikroovládače zdrojov, ktoré potrebujú spoľahlivý spôsob prenosu údajov zo senzora späť do vášho rozbočovača alebo prijímania vzdialených údajov príkazy. To je presne to, čo s tým urobíme.

Ale prečo znovu vynájsť koleso?

Spoločnosť MQ Telemetry Transport bola vymyslená už v roku 1999 na pripojenie ropovodov cez pomalý satelit pripojenia osobitne navrhnuté tak, aby minimalizovali spotrebu batérie a šírku pásma, pričom stále poskytujú spoľahlivé pripojenie dodávka dát. V priebehu rokov zostali princípy dizajnu rovnaké, ale prípad použitia sa presunul zo špecializovaných zabudovaných systémov na všeobecné zariadenia internetu vecí. V roku 2010 bol protokol uvoľnený bez poplatkov, otvorený pre každého, kto ho môže používať a implementovať. Máme radi zadarmo.

Možno vás zaujíma, prečo sa obťažujeme ešte s ďalším protokolom - koniec koncov už máme HTTP - čo môže sa používajú na odosielanie rýchlych správ medzi všetkými druhmi systémov pripojených na web (napríklad OpenHAB a IFTTT, najmä s novými kanál výrobcu IFTTT sa teraz pripája k čomukoľvek: Predstavujeme kanál výrobcuMožné využitie IFTTT je nekonečné. Doteraz však bolo ťažké ho prepojiť s vašimi vlastnými hardvérovými projektmi. Dnes sa to všetko zmenilo. Čítaj viac ). A mali by ste pravdu. Prevádzková réžia servera HTTP je však dosť veľká - natoľko, že nemôžete na serveri ľahko bežať vstavaný mikrokontrolér ako Arduino (prinajmenšom môžete, ale na nič nezostane veľa pamäte) else). MQTT je na druhej strane ľahký, takže odosielanie správ v sieti nebude upchávať potrubia a ľahko sa zmestí do nášho malého pamäťového priestoru Arduino.

Ako MQTT účinkuje?

MQTT vyžaduje server (nazývaný „sprostredkovateľ“) a jedného alebo viacerých klientov. Server funguje ako sprostredkovateľ, prijímajúci správy a vysiela ich všetkým zainteresovaným klientom.

Pokračujme s Twitter for-strojov analogicky však. Rovnako ako používatelia služby Twitter môžu tweetovať svoje vlastné nezmyselné 140 znakov a používatelia môžu „sledovať“ ostatných používateľov, aby videli prúd správ, Klienti MQTT sa môžu prihlásiť na odber konkrétneho kanála, aby odtiaľto dostávali všetky správy, ako aj na to môžu publikovať svoje vlastné správy kanálov. Tento vzor zverejnenia a prihlásenia na odber sa označuje ako pub / sub, na rozdiel od tradície Klientsky server model HTTP.

HTTP vyžaduje, aby ste oslovili zariadenie, s ktorým komunikujete, povedzte ahoj, a potom ste neustále v kontakte s neustálym vzájomným potvrdzovaním, kým získavate alebo vkladáte údaje. Pri publikácii pub / sub nemusí klient, ktorý publikovanie vykonáva, vedieť, ktorí klienti sú prihlásení na odber: správy sa len vyčerpajú a sprostredkovateľ ich distribuuje všetkým prihláseným klientom. Každý klient môže publikovať a prihlásiť sa na odber tém, rovnako ako používateľ služby Twitter.

Na rozdiel od Twitteru však MQTT nie je obmedzený na 140 znakov. Je to dátová agnostika, takže môžete odosielať malé čísla alebo veľké textové bloky, datagramy vo formáte JSON alebo dokonca obrázky a binárne súbory.

Nie je to tak, že MQTT je pre všetko lepšie ako HTTP - ale je to tak je vhodnejšie, ak budeme mať po celom dome veľa senzorov, ktoré budú neustále hlásiť.

Je tiež dôležité vedieť, že OpenHAB nebude fungovať ako váš sprostredkovateľ MQTT - o chvíľu to oslovíme. OpenHAB však bude pôsobiť ako klient: môže publikovať váš denník aktivít OpenHAB, ako aj viazať konkrétne kanály na zariadenia, takže môžete mať napríklad prepínač, ktorý sa riadi konkrétnymi správami MQTT kanálov. To je ideálne na vytvorenie domu plného senzorov.

Nainštalujte Mosquitto na váš Pi

Aj keď OpenHAB obsahuje klienta MQTT, takže sa môžete prihlásiť na odber určitej témy a publikovať správy, nebude fungovať ako server. Na tento účel musíte použiť webový maklér MQTT (platený alebo bezplatný) alebo si do svojho Pi nainštalovať bezplatný softvér. Chcel by som to všetko nechať doma, takže som nainštaloval Mosquitta na Pi.

Bohužiaľ, verzia dostupná prostredníctvom obvyklého apt-get je úplne zastaraná. Namiesto toho pridajme najnovšie zdroje.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key pridať mosquitto-repo.gpg.key. cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list. sudo apt-get install mosquitto.

To je všetko, čo musíme urobiť, aby bol server MQTT spustený a spustený v miestnej sieti. Váš maklér je predvolene spustený na porte 1883.

Skontrolujte, či server MQTT funguje pomocou bezplatného servera MQTT.fx, ktorý je multiplatformový. Kliknite na ikonu nastavení a vytvorte nový profil a zadajte IP adresu alebo názov Raspberry Pi. Uložte a stlačte pripojenie. Ak sa malé semafor v pravom hornom rohu zmení na zelené, je dobré ísť.

vzorový profil mqttfx

Pre rýchly test kliknite na záložku „Prihlásiť sa na odber“ a napíšte inTopic / do textového poľa a stlačte predplatiť Tlačidlo. Teraz ste prihlásený / -á na odber správ na tému s názvom inTopic, zobrazuje sa však 0 správ. Vráťte sa na kartu publikovania, do malého políčka napíšte inTopic a krátku správu do veľkého textového poľa nižšie. hit publikovať niekoľkokrát a vráťte sa späť na kartu prihlásenia na odber. Mali by ste vidieť niekoľko správ, ktoré sa objavili v tejto téme.

inTopic MQTT test

Predtým, ako pridáme niektoré skutočné senzory do našej siete, musíme sa naučiť o tematických úrovniach, ktoré nám umožňujú štruktúrovať a filtrovať sieť MQTT. Názvy tém rozlišujú malé a veľké písmená, nemali by začínať znakom $, ani by nemali obsahovať medzeru ani znaky, ktoré nie sú znakmi ASCII - skutočne štandardné postupy programovania názvov premenných.

Separátor / označuje úroveň témy, ktorá je hierarchická, napríklad nasledujúce sú všetky platné úrovne tém.

inTopic / smallSubdivision / evenSmallerSubdivision. Mýho / obývacia izba / teplota. Mýho / obývačka / vlhkosť. Mýho / kuchyňa / teplota. Mýho / kuchyňa / vlhkosť

Už by ste mali vidieť, ako je táto stromová štruktúra ideálna pre inteligentný domov plný senzorov a zariadení. Najlepším postupom na použitie s viacerými senzormi v jednej miestnosti je zverejniť každú premennú senzora ako svoju vlastnú tému - rozvetvenie na konkrétnejšiu stránku (ako v príkladoch vyššie) - namiesto toho, aby ste sa pokúsili publikovať viacero typov senzorov kanálov.

Klienti potom môžu publikovať alebo sa prihlásiť na odber ľubovoľného počtu jednotlivých úrovní tém alebo použiť niektoré špeciálne zástupné znaky na filtrovanie zhora nadol v strome.

Zástupný znak + nahrádza akúkoľvek úroveň témy. Napríklad:

Mýho / + / teplota

by sa prihlásil na odber oboch

Mýho / obývacia izba / teplota. Mýho / kuchyňa / teplota

... ale nie úrovne vlhkosti.

# Je viacúrovňová zástupná karta, takže môžete získať čokoľvek z poľa senzora livingRoom pomocou:

Mýho / Obývacia izba / #

Technicky sa tiež môžete prihlásiť na odber koreňovej úrovne #, pomocou ktorej získate všetko, čo sa deje prechádzanie cez makléra, ale to môže byť ako nalepenie požiarnej hadice do tváre: trochu ohromujúci. Skúste sa pripojiť k verejnému sprostredkovateľovi MQTT z HiveMQ a prihlásiť sa na odber #. Za niekoľko sekúnd som dostal asi 300 správ, než sa môj klient práve zrútil.

Tip pre začiatočníkov MQTT: “/myHome/” je iná téma ako “môj domov/" - zahrnutie lomky na začiatku vytvorí prázdnu úroveň témy, ktorá je síce technicky platná, ale neodporúča sa, pretože môže byť mätúca.

Teraz, keď poznáme túto teóriu, poďme sa pozrieť na Arduino, ethernetový štít a snímač teploty a vlhkosti DHT11 - Pravdepodobne jeden máte vo vašej štartovacej súprave, ale ak nie, stačí vymeniť snímač prostredia za snímač pohybu (alebo dokonca Tlačidlo).

Publikovanie MQTT z Arduino s pripojením Ethernet

Ak máte hybridné zariadenie kompatibilné s Arduino so zabudovaným Wi-Fi alebo Ethernetom, malo by to tiež fungovať. Nakoniec budeme potrebovať lepší / lacnejší spôsob komunikácie, ako keby bolo potrebné používať sieťové pripojenie v každej miestnosti, ale to slúži na osvojenie si základov.

Začnite sťahovaním pubsubclient library from Github. Ak ste použili tlačidlo „Stiahnuť ako ZIP“, štruktúra je trochu nesprávna. Rozbaľte priečinok a premenujte priečinok na spravodlivý pubsubclient, potom vyberte dva súbory z src a presunúť ich o jednu úroveň vyššie do koreňa stiahnutého priečinka. Potom celý priečinok presuňte do priečinka Arduino / knižnice adresár.

Tu je môj ukážkový kód, ktorý si môžete prispôsobiť: výstup signálu DHT11 je na pine 7. Na nasledujúcom riadku zmeňte IP servera vášho servera Pi.

client.setServer ("192.168.1.99", 1883);

Je nám to ľúto, ale nemôžeme ho používať (OpenHAB.local v mojom prípade) pretože zásobník TCP / IP na Arduino je veľmi zjednodušený a pridanie kódu pre pomenovanie Bonjour by bolo veľkou pamäťou, ktorú nechceme strácať. Ak chcete zmeniť témy, na ktorých sa vysielajú údaje senzora, prejdite nadol na tieto riadky:

Char buffer [10]; dtostrf (t, 0, 0, tlmivý roztok); client.publish ( "openhab / Himitsu / teplota", pufor); dtostrf (h, 0, 0, pufor); client.publish ( "openhab / Himitsu / vlhkosť", pufor);

Kód tiež zahŕňa predplatenie príkazového kanála. Vyhľadajte a upravte nasledujúci riadok:

client.subscribe ( "openhab / Himitsu / príkaz");

Preskúmajte kód tam a uvidíte, že LED diódu alebo relé môžete ľahko ovládať napríklad odosielaním príkazov na konkrétne kanály. V príklade kódu jednoducho pošle správu späť potvrdzujúcu prijatie príkazu.

Nahrajte svoj kód, zapojte Arduino do siete a prihláste sa pomocou MQTT.fx # alebo openhab / Himitsu / # (alebo čokoľvek ste zmenili názov miestnosti na, ale na koniec nezabudnite uviesť #). Čoskoro by ste mali vidieť prichádzajúce správy; a ak odošlete ON alebo OFF k téme príkazov, zobrazí sa vám aj potvrdenie.

Mqtt arduino správy sa vracajú

Viazanie MQTT pre OpenHAB

Posledným krokom v rovnici je pripojenie k OpenHAB. Na to, samozrejme, potrebujeme väzbu.

sudo apt-get install openhab-addon-bind-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab

Ak chcete povoliť väzbu, upravte konfiguračný súbor.

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

Reštartujte OpenHAB

reštart sudhovej služby

Potom pridajme jednu alebo dve položky:

/ * MQTT senzory * / Číslo Himitsu_Temp "Teplota Himitsu [% .1f ° C]"(Himitsu, teplota) {mqtt = " (Himitsu, vlhkosť) {mqtt = "

Teraz by ste mali rozumieť formátu; je to a Číselná položka z väzby MQTT na zadanú tému. Toto je jednoduchý príklad, možno budete chcieť odkázať na stránku wiki, kde je môžu byť omnoho zložitejšie.

Blahoželáme, teraz máte základ lacného poľa senzorov na báze Arduino. Budeme to v budúcnosti revidovať a umiestňovať Arduino do svojej úplne samostatnej RF siete. Vytvoril som tiež identickú verziu pre dosky Wizwiki 7500 ak náhodou jeden z nich máš.

Údaje o perzistencii a grafe

V súčasnosti pravdepodobne máte nastavených veľa senzorov, či už od Z-Wave alebo vlastných Arduinos s MQTT - takže vy môžete kedykoľvek zobraziť aktuálny stav týchto senzorov a mali by ste tiež reagovať na ich hodnotu v pravidlá. Zaujímavé je však to, že hodnoty senzorov sa v priebehu času menia: odtiaľ prichádza vytrvalosť a grafy. Vytrvalosť v OpenHAB znamená ukladanie údajov v priebehu času. Poďme ďalej a nastavíme RRD4J (Round Robin Database for Java), tzv. Pretože dáta sa ukladajú spôsobom round robin - staršie údaje sa za účelom kompresie veľkosti databázy zahodia.

Nainštalujte balíčky rrd4j s nasledujúcimi príkazmi.

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

Potom vytvorte nový súbor s názvom rrd4j.persist v konfigurácia / perzistencie zložky. Vložte nasledujúce:

Stratégie {everyMinute: "0 * * * *?" everyHour: "0 0 * * *?" everyDay: "0 0 0 * *?" default = everyChange. } Položky {// pretrvávajú všetko, keď je hodnota aktualizovaná, iba predvolená a obnovujú ich z databázy pri spustení *: strategy = everyChange, restoreOnStartup // ďalej definujeme konkrétne stratégie everyHour pre čokoľvek v skupine Teplota a každú minútu pre Vlhkosť Teplota *: strategy = everyHour Humidity *: strategy = everyMinute // alternatívne sem môžete pridať konkrétne položky, napríklad // Bedroom_Humidity, JamesInOffice: strategy = everyMinute. }

V prvej časti tohto súboru definujeme stratégie, čo znamená iba pomenovanie výrazu CRON. To je to isté, čo sme už urobili s My. OpenHAB, ale tentoraz vytvárame nové stratégie, ktoré môžeme použiť v každý deň, každý deň a každý deň. Zatiaľ som ich všetky nevyužil, ale možno budem v budúcnosti.

V druhej polovici súboru povieme rr4dj, ktoré hodnoty údajov sa majú uložiť. V predvolenom nastavení ukladáme všetko pri každej aktualizácii, ale pre konkrétne senzory sme špecifikovali aj časové stratégie. Teploty, ktoré ma príliš neznepokojujú, tak som si stanovil, že aby som zachránil všetkoHour, vlhkosť je pre mňa veľkým problémom, takže chcem vidieť, ako sa mení každú minútu. Ak existujú ďalšie údaje, ktoré chcete konkrétne uložiť v nastavenom čase, pridajte ich tu alebo podľa potreby upravte.

Poznámka: Ak chcete údaje aj grafovať, musíte ich uložiť najmenej raz za minútu. Nezáleží na tom, či sú vaše údaje senzora dokonca aktualizované rýchlo, jednoducho musíte rr4dj povedať, aby ste ich uložili raz za minútu.

Ak je to definované, mali by ste začať vidieť nejaký výstup ladenia, ktorý vám povie, že hodnoty sa ukladajú.

rrd4j ukladanie údajov

Ďalej urobme niekoľko pekných grafov všetkých týchto údajov. Je to naozaj jednoduché. Ak chcete vytvoriť graf jednotlivého senzora, do mapy svojich stránok pridajte toto:

Položka grafu = Spálňa_Hididačné obdobie = h

To je doslova všetko, čo potrebujete. Platné hodnoty za obdobie sú h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; malo by byť zrejmé, čo to znamená. Ak nie je uvedené, štandardne sa nastaví na D pre celý deň.

Ak chcete vytvoriť graf s viacerými položkami, jednoducho namiesto toho namapujte názov skupiny:

Položka grafu = obdobie vlhkosti = h
graf

Mohlo by vás zaujímať, že tento graf môžete použiť inde; vytvára obrázok pomocou nasledujúcej adresy URL: http://YOUROPENHABURL: 8080 / chart? skupiny = vlhkosti a doba = h

ako ich tvoj Systém OpenHAB prichádza?

Je to pre túto časť sprievodcu, ale neočakávajte, že to bude posledné, čo od nás budete počuť o OpenHAB. Dúfajme, že vám táto príručka a príručka pre začiatočníkov poskytli solídne základy na vývoj vlastného kompletného systému OpenHAB - je to však proces, ktorý nikdy nie je úplne dokončený.

Našťastie sa OpenHAB môže dobre škálovať od niekoľkých zariadení po stovky, od jednoduchej zložitosti pravidiel až po konečnú domácu automatizáciu - tak ako sa váš systém blíži? Ktoré zariadenia ste si vybrali? Aký bude ďalší veľký projekt, s ktorým sa chystáš bojovať?

Porozprávajte sa v komentároch - a ak ste považovali túto príručku za užitočnú, kliknite na tieto tlačidlá zdieľania a povedzte svojim priateľom, ako môžu tiež nastaviť svoj vlastný systém OpenHAB.

James má bakalárske štúdium v ​​oblasti umelej inteligencie a je držiteľom certifikátu CompTIA A + a Network +. Je popredným vývojárom MakeUseOf a trávi svoj voľný čas hraním VR paintballu a spoločenských hier. Staval počítače od malička.