OpenHAB Príručka pre začiatočníkov Časť 2: ZWave, MQTT, pravidlá a grafy

OpenHAB Príručka pre začiatočníkov Časť 2: ZWave, MQTT, pravidlá a grafy

Zadarmo neznamená vždy „nie tak dobré ako platené“ a OpenHAB nie je výnimkou. Open source softvér pre domácu automatizáciu vysoko prevyšuje možnosti akéhokoľvek iného systému pre domácu automatizáciu na trhu - jeho nastavenie však nie je jednoduché. V skutočnosti to môže byť úplne frustrujúce.





V časti 1 sprievodcu som vás previedol inštalácia OpenHAB na Raspberry Pi , predstavil základné koncepty OpenHAB a ukázal vám, ako pridať svoje prvé položky do systému. Dnes pôjdeme ďalej:





  • Pridanie zariadení ZWave
  • Pridanie ovládača Harmony Ultimate
  • Predstavujeme pravidlá
  • Predstavujeme MQTT a inštaláciu brokera MQTT na váš Pi so senzormi na Arduino
  • Zaznamenávanie údajov a ich vykreslenie

Úvod do Z-Wave

Z-Wave je už roky dominantným protokolom pre domácu automatizáciu: 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ť pracovať so Z-Wave, ale je to nastavenie a spoľahlivosť nie je zaručená.





Ak zvažujete kúpu domu plného Z-Wave senzorov špeciálne na použitie s OpenHAB, žiadam vás, aby ste to znova zvážili. Môže vám to fungovať skvele, alebo vás môžu trápiť malé, ale pretrvávajúce problémy. Minimálne si nekúpte dom plný senzorov, kým ich nebudete mať možnosť vyskúšať. Jediným dôvodom, prečo si vybrať Z-Wave, je to, že nie ste stopercentne usadení na OpenHAB a chceli by ste nechať svoje možnosti v budúcnosti otvorené: Z-Wave napríklad funguje s rozbočovačom Samsung SmartThings a so špecifickými rozbočovačmi pre Z-Wave ako Homeseer, a množstvo ďalších softvérových možností, ako napr domoticz .

Aj keď OpenHAB obsahuje väzbu Z-Wave, stále musíte najskôr nakonfigurujte sieť Z-Wave , predtým, ako sa v ňom OpenHAB začne dotazovať na údaje. Ak máte riadiacu dosku Rasberry, máte dodaný softvér na konfiguráciu siete, takže sa tu nebudeme zaoberať. Ak ste si kúpili ovládač Aeotec USB Z-Stick alebo podobný, pravdepodobne nemáte žiadny softvér, takže čítajte ďalej.



Rozbočovač Aeotec Z-Stick Gen5 Z-Wave Z-Wave Plus USB na vytvorenie brány (obyčajný biely) KÚPIŤ TERAZ NA AMAZÓNE

Ak už máte nastavenie siete Z-Wave , stačí zapojiť ovládač do Pi a začať konfigurovať väzbu a položky. Ak je to váš prvý vpád do Z-Wave, je to trochu zložitejšie.

Po prvé, po hardvérovej stránke: každý radič má svoj vlastný spôsob párovania so zariadeniami (technicky známy ako „režim zahrnutia“, v ktorom je priradené ID uzla). V prípade Aotec Z-Stick to znamená odpojenie z portu USB a jedným stlačením tlačidla ho uvediete do režimu zahrnutia. Potom ho dajte blízko zariadenia, ktoré párujete, a tiež na ňom stlačte tlačidlo zahrnutia (to sa bude tiež líšiť: moja zásuvka Everspring vyžaduje, aby bolo tlačidlo stlačené 3 krát za sebou, takže lekciou je prečítať si príručku k svojmu zariadeniu) .





Z-Stick krátko zabliká, aby signalizoval úspech. To spôsobuje problémy pri jeho opätovnom zapojení do Pi, pretože je priradený nový port. Ak zistíte, že mu bol dynamicky priradený iný port, reštartujte ho, aby sa resetoval späť na štandardný port. Ešte lepšie: nepripájajte ho k Pi, kým najskôr nevykonáte všetky párovania hardvéru.

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, nainštalujeme ďalší nástroj na správu webu, ktorý to robí-niečo, čo sa nazýva HABmin. Choďte na to Úložisko HABmin Github stiahnuť aktuálne vydanie. Keď ho rozbalíte, nájdete 2 .jar súbory v adresári doplnkov - tieto by mali byť umiestnené v zodpovedajúcom adresári doplnkov vo vašom zdieľanom priečinku OpenHAB Home (Ak používate aj Zot Stick Aotec gen5, uistite sa, že máte aspoň verziu 1.8 väzby Z-Wave) .





Potom vytvorte nový priečinok v adresári webapps a nazývajte ho „habmin“ (dôležité sú malé písmená). Skopírujte tam ostatné stiahnuté súbory.

Poznámka: Existuje aj a HABmin 2 v aktívnom vývoji. Inštalácia je veľmi rovnaká, ale s jedným ďalším doplnkom .jar. Možno by stálo za to vyskúšať oboje, aby ste zistili, ktorému dávate prednosť.

Ak ste to ešte neurobili, zapojte ovládač do svojho Pi. Zadajte nasledujúci port, aby ste našli správny port.

ls /dev /tty*

Hľadáte čokoľvek s názvom USB alebo v mojom konkrétnom prípade sa Z-stick predstavil ako / dev / ttyACM0 (modem). Mohlo by byť jednoduchšie vykonať príkaz raz pred jeho zapojením a potom znova, aby ste v prípade neistoty zistili, čo sa zmení.

Otvorte konfiguračný súbor OpenHAB a upravte sekciu na Z-Wave, odkomentujte oba riadky a zadajte svoju skutočnú adresu zariadenia. Posledným krokom pre mňa bolo umožniť používateľovi OpenHAB prístup k modemu.

sudo usermod -a -G dialout openhab

Teraz, aby ste všetko uviedli do činnosti, reštartujte OpenHAB

reštartujte službu sudo openhab

Našťastie, ak kontrolujete denník ladenia, uvidíte niečo také. Gratulujeme, teraz hovoríte o Z-Wave. Denník ladenia môže byť tiež zaplavený správami z rôznych uzlov Z-Wave. Začnime tým, že skontrolujeme HABMIN, aby sme zistili, čo našiel: http: //openhab.local: 8080/habmin/index.html (nahradenie súboru openhab.local názvom hostiteľa alebo adresy IP Raspberry Pi).

V HABMIN je toho veľa, čo sa dá vidieť, ale skutočne sa zaujímame iba o Konfigurácia -> Väzby -> Z -Wave -> Zariadenia kartu, ako vidíte nižšie. Rozbaľte uzol a upravte štítok umiestnenia a názvu pre jednoduchšiu orientáciu.

Konfigurácia položiek Z-vlny

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

Najprv mám na Node 3 základný vypínač a merač Everspring AN158. Rýchle Googlingovanie ma viedlo k blogovému príspevku na Wetwa.re so vzorovou konfiguráciou položky. Prispôsobil som to nasledovne:

Prepnúť odvlhčovač_Spínač 'Odvlhčovač' {zwave = '3: command = switch_binary'}

Číslo Odvlhčovač_Watts 'Spotreba energie odvlhčovača [%.1f W]' {zwave = '3: command = meter'}

Perfektné.

Ďalej je multisenzor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) KÚPIŤ TERAZ NA AMAZÓNE

Pre tento som našiel ukážkovú konfiguráciu 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 Humidity [%.0f %%]' (Hallway, Humidity) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 5'}

Číslo Hallway_Luminance 'Hallway Luminance [%.0f Lux]' (Hallway) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 3'}

Kontaktujte Hallway_Motion 'Hallway Motion [%s]' (Hallway, Motion) {zwave = '2: 0: command = sensor_binary, respond_to_basic = true'}

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

Ak sa vám zdá tento formát zvláštny, vráťte sa späť k prvému príručka pre začiatočníkov , konkrétne sekcia väzby Hue, kde vysvetľujem, ako sa položky pridávajú. Pravdepodobne budete niekedy musieť skopírovať príklady prilepenia, ako je tento, ale v prípade, že máte nové zariadenie, dokumentácia k väzbe obsahuje všetky podrobnosti príkazy .

Viazanie Logitech Harmony

Predtým, ako sa vrhneme na pravidlá, chcel som pridať krátku poznámku k práci s väzbou Harmony. Som veľkým fanúšikom série dokonalých diaľkových ovládačov Harmony na zjednodušenie práce s domácim mediálnym centrom, ale často stoja ako samostatný systém v rámci inteligentnej domácnosti. S OpenHAB môžu byť činnosti Logitech Harmony a úplné ovládanie zariadenia teraz súčasťou vášho centralizovaného systému a dokonca môžu byť zahrnuté v pravidlách automatizácie.

Začnite inštaláciou troch väzbových súborov, ktoré nájdete, pomocou apt-cache na hľadanie výrazu „harmónia“:

Nezabudnite žrádlo adresár väzieb, keď budete hotoví:

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

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

########### HARMONY DÁLKOVÉ OVLÁDANIE ############

Harmonyhub: hostiteľ = 192.168.1.181 alebo tvoja ip

Harmonyhub: užívateľské meno = vaše-harmónia-email-prihlásenie

Harmonyhub: heslo = tvoje heslo

Adresa IP je adresa vášho centra Harmony. Zistite to pomocou sieťového skenera. Budete tiež musieť zadať svoje prihlasovacie údaje, ktoré zadáte pri spustení štandardného konfiguračného programu Harmony. To je všetko. Po reštarte Hue by mal váš denník ladenia mať náhly výbuch výstupu 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 vhodné to skopírovať pre budúce použitie. vložením do online formátovača JSON môžete čítanie pomocou sklopných uzlov ešte jednoduchšie ako je tento .

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

/ * Harmony Hub */

Reťazec Harmony_Activity 'Harmony [%s]' (Living_Room) {Harmonyhub = '*[currentActivity]'}

Toto je obojsmerná väzba na reťazce , ktorý je schopný načítať aktuálnu aktivitu, a prikázať aktuálnej aktivite, aby bola niečím iným. Teraz pre to môžeme vytvoriť tlačidlo v súbore mapy webu.

Prepnúť položku = Mapovania harmonie_aktivity = [Vypnutie = 'Vypnuté', Cvičenie = 'Cvičenie', 13858434 = 'TV', Karaoke = 'Karaoke']

Naučte sa hrať na bezplatnú aplikáciu na gitaru

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

Ako ďalej uvidíme, môžete sa tiež odvolávať na činnosti vo svojich pravidlách. Na wiki stránke nájdete ďalšie informácie o Väzba harmónie .

Všeobecný úvod do pravidiel

Väčšina centier inteligentnej domácnosti obsahuje nejaký druh vytvárania pravidiel, aby ste mohli automaticky reagovať na údaje senzorov a udalosti v domácnosti. V skutočnosti by som tvrdil, že skutočne inteligentný dom nie je ten, v ktorom by ste museli tráviť čas interakciou s mobilnými aplikáciami - je to taký, ktorý je pre koncového používateľa neviditeľný a úplne automatizovaný. Za týmto účelom OpenHAB obsahuje aj výkonný skriptovací jazyk pre pravidlá, ktorý môžete naprogramovať, čím ďaleko presahuje zložitosť väčšiny centier inteligentných domácich centier alebo receptov IFTTT.

Programovacie pravidlá znie horšie, ako to je. Začnime jednoducho dvojicou pravidiel, ktoré zapínajú alebo vypínajú svetlo v závislosti od snímača prítomnosti:

pravidlo „Kancelárska lampa svieti, keď je prítomný James“

kedy

Položka JamesInOffice sa zmenila z OFF na ON

potom

sendCommand (Office_Hue, ON)

koniec

pravidlo „Kancelária zhasne, keď James odíde“

kedy

Položka JamesInOffice sa zmenila z ON na OFF

potom

sendCommand (Office_Hue, VYPNUTÉ)

koniec

Najprv pomenujeme pravidlo - buďte popisní, aby ste vedeli, ktorá udalosť spúšťa. Ďalej definujeme naše jednoduché pravidlo tým, že povieme keď x je pravda, potom áno . Koniec znamená zatvorenie tohto konkrétneho pravidla. Existuje niekoľko špeciálnych slov, ktoré môžete použiť v pravidlách, ale zatiaľ sa zaoberáme dvoma jednoduchými bitmi syntaxe - Položka , čo vám umožňuje spýtať sa na stav niečoho; a sendCommand , ktorý robí presne to, čo si myslíte, že bude. Povedal som ti, že to bolo ľahké.

Pravdepodobne nie je potrebné používať dvojicu pravidiel, ale keďže sa moja logika stáva komplexnejšou, bude prospešné ich oddeliť, či už vstupujem alebo opúšťam oblasť - a môže byť vhodné niekde pridať svetelný senzor. do rovnice, aby sme zbytočne nezapínali svetlá.

Pozrime sa na ďalší príklad vytvorenia naplánovaného pravidla.

pravidlo „Cvičte každé ráno“

kedy

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

potom

HarmonyStartActivity ('Cvičenie')

koniec

Opäť pomenujeme pravidlo, uvedieme podmienky, kedy by sa malo spustiť, a opatrenia, ktoré je potrebné vykonať. Ale v tomto prípade definujeme časový vzor. Zábavný kód, ktorý vidíte v úvodzovkách, je výrazom CRON pre Quartz Scheduler (formát sa mierne líši od bežného CRONtabu). použil som cronmaker.com pomôcť vytvoriť výraz, ale môžete si tiež prečítať sprievodcu formátom [Už nie je k dispozícii], kde nájdete podrobné vysvetlenie a ďalšie príklady.

Web CronMaker.com slúžil na generovanie správne formátovaného výrazu Cron

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

OpenHAB bohužiaľ toto cvičenie zatiaľ nemôže urobiť za mňa.

Ešte jedno pravidlo, ktoré vám chcem ukázať, je niečo, čo používam na riadenie úrovní vlhkosti v mojom dome. Mám jeden odvlhčovač, s ktorým sa potrebujem pohybovať kdekoľvek, a tak som sa rozhodol pozrieť sa na všetky svoje snímače vlhkosti, zistiť, ktorý je najvyšší, a uložiť ho do premennej. V súčasnosti sa spúšťa každú minútu, ale dá sa ľahko znížiť. Najprv sa pozrite:

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

importovať org.openhab.model.script.actions.*

import java.lang.String

pravidlo „Monitor vlhkosti“

keď Time cron '0 * * * *?'

potom

var prevHigh = 0

var highHum = ''

Vlhkosť? .Členov.pre každý [hukot

logDebug ('vlhkost.pravidla', hum.name);

if (hum.state as DecimalType> prevHigh) {

prevHigh = hum.state

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

}

vyberte všetky farby vo Photoshope

]

logDebug ('vlhkosť.pravidlá', vysokýHum);

postUpdate (odvlhčovač_Needed, highHum);

koniec

Jadro pravidla je v Vlhkosť? .Členi.náhrad riadok. Vlhkosť je názov skupiny pre moje snímače vlhkosti; .členi uchopí všetky položky v tejto skupine; pre každý iteruje ich (so zvláštnym formátom hranatých zátvoriek, ktorý pravdepodobne nepoznáte). Syntax pravidiel je odvodená od Xtend, takže si môžete prečítať príponu Dokumentácia Xtend ak nemôžete nájsť príklad na prispôsobenie.

Pravdepodobne to nebudete potrebovať - ​​existujú stovky príkladov pravidiel:

MQTT pre OpenHAB a internet vecí

MQTT je ľahký systém na odosielanie správ medzi strojmi a strojmi-druh Twitteru, pomocou ktorého sa môžu navzájom rozprávať vaše Arduinos alebo Raspberry Pis (aj keď to samozrejme funguje oveľa viac ako len tie). Rýchlo si získava na popularite a nachádza sa ako domov v zariadeniach internetu vecí, ktorými sú zvyčajne mikrořadiče s nízkymi zdrojmi a ktoré vyžadujú spoľahlivý spôsob prenosu údajov zo senzorov späť do vášho rozbočovača alebo prijímania diaľkových príkazov. Presne to s tým urobíme.

Ale prečo znovu objavovať koleso?

MQ Telemetry Transport bol vynájdený už v roku 1999 na prepojenie ropovodov prostredníctvom pomalých satelitných pripojení, špeciálne navrhnutých tak, aby minimalizovali využitie batérie a šírku pásma a zároveň poskytovali spoľahlivé doručovanie údajov. V priebehu rokov zostali zásady návrhu rovnaké, ale prípad použitia sa presunul zo špecializovaných vstavaných systémov na všeobecné zariadenia internetu vecí. V roku 2010 bol protokol bezplatne vydaný a otvorený pre kohokoľvek na použitie a implementáciu. Máme radi zadarmo.

Možno sa čudujete, prečo sa vôbec obťažujeme s ďalším protokolom - koniec koncov už máme HTTP - ktorý je možné použiť na odosielanie rýchlych správ medzi všetkými systémami prepojenými s webom (ako OpenHAB a IFTTT, najmä s novým kanálom výrobcu) ). A mal by si pravdu. Réžia spracovania servera HTTP je však dosť veľká - natoľko, že ju nemôžete ľahko spustiť na vstavanom mikrokontroléri, akým je Arduino (prinajmenšom môžete, ale na nič iné vám nezostane veľa pamäte ). MQTT je naopak ľahký, takže odosielanie správ po vašej sieti nezanáša potrubia a ľahko sa zmestí do nášho malého pamäťového priestoru Arduino.

Ako funguje MQTT?

MQTT vyžaduje server (nazývaný „maklér“) a jedného alebo viacerých klientov. Server funguje ako sprostredkovateľ, ktorý prijíma správy a opätovne ich vysiela všetkým zainteresovaným klientom.

Pokračujme v Twitter pre stroje analógia však. Rovnako ako používatelia Twitteru môžu tweetovať svojich vlastných nezmyselných 140 znakov a používatelia môžu „sledovať“ ostatných používateľov, aby videli upravený prúd príspevkov, môžu sa klienti MQTT prihlásiť na odber konkrétneho kanála a prijímať odtiaľ všetky správy, ako aj publikovať svoje vlastné správy. na ten kanál. Tento vzor zverejnenia a prihlásenia na odber sa označuje ako krčma / sub , na rozdiel od tradície Klientsky server model HTTP.

Protokol HTTP vyžaduje, aby ste sa obrátili na počítač, s ktorým komunikujete, a povedzte „Ahoj“, potom aby ste sa navzájom informovali, kým získavate alebo zadávate údaje. V prípade pub/sub nemusí klient, ktorý publikuje, vedieť, ktorí klienti sú prihlásení na odber: jednoducho pumpuje správy a sprostredkovateľ ich znova distribuuje všetkým prihláseným klientom. Každý klient môže publikovať témy a prihlásiť sa na ich odber, rovnako ako používateľ Twitteru.

Na rozdiel od Twitteru však MQTT nie je obmedzený na 140 znakov. Je to agnostika údajov, 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 vo všetkom lepší ako HTTP - ale je to tak je vhodnejšie, ak budeme mať v okolí domu veľa senzorov, ktoré sa neustále hlásia.

Je tiež dôležité vedieť, že OpenHAB nebude fungovať ako váš maklér MQTT - tomu sa budeme venovať neskôr. OpenHAB však bude fungovať ako klient: môže publikovať váš protokol aktivít OpenHAB, ako aj viazať konkrétne kanály na zariadenia, takže napríklad môžete mať prepínač, ktorý je ovládaný správami MQTT na konkrétnom kanáli. To je ideálne pre vytvorenie domu plného senzorov.

Nainštalujte Mosquitto na svoj Pi

Aj keď OpenHAB obsahuje klienta MQTT, takže sa môžete prihlásiť na odber témy a tiež publikovať správy, nebude fungovať ako server. Na to musíte buď použiť webového brokera MQTT (plateného alebo bezplatného), alebo nainštalovať bezplatný softvér na svoj Pi. Chcel by som to mať všetko vo vlastnej réžii, preto som na Pi nainštaloval Mosquitto.

Verzia dostupná prostredníctvom obvyklého apt-get je bohužiaľ ú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 v miestnej sieti spustený. Váš maklér štandardne beží na porte 1883.

Skontrolujte, či váš server MQTT funguje, pomocou bezplatného servera MQTT.fx, ktorý je multiplatformový. Kliknutím na ikonu nastavení vytvorte nový profil a zadajte IP adresu alebo meno vášho Raspberry Pi. Uložte a kliknite na Pripojiť. Ak sa malý semafor vpravo hore zazelená, môžete ísť.

Ak chcete rýchly test, kliknite na kartu „Prihlásiť sa na odber“ a napíšte inTopic / do textového poľa, potom kliknite na Prihlásiť sa na odber tlačidlo. Teraz ste sa prihlásili na odber správ na tému s názvom inTopic, hoci sa bude zobrazovať 0 správ. Vráťte sa na kartu publikovania, do malého poľa zadajte inTopic a do veľkého textového poľa nižšie zadajte krátku správu. Hit Publikovať niekoľkokrát a pozrite sa späť na kartu prihlásenia na odber. Mali by ste vidieť niekoľko správ, ktoré sa objavili v tejto téme.

Predtým, ako do našej siete pridáme niekoľko skutočných senzorov, musíme sa zoznámiť s úrovňami tém, ktoré nám umožňujú štruktúrovať a filtrovať sieť MQTT. Názvy tém rozlišujú malé a veľké písmena, nemali by začínať znakom $ alebo by mali obsahovať medzeru alebo znaky iné ako ASCII-štandardné programovacie postupy pre názvy premenných.

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

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingMiesto/teplota

myHome/livingMiesto/vlhkosť

myHome/kuchyňa/teplota

myHome/kuchyňa/vlhkosť

Už by ste mali vidieť, ako je táto stromová štruktúra ideálna pre inteligentný domov plný senzorov a zariadení. Osvedčeným postupom na použitie s viacerými senzormi v jednej miestnosti je publikovať každú premennú senzora podľa jeho vlastnej tematickej úrovne - s rozvetvením na väčšiu špecifickosť (ako v príkladoch vyššie) - a nie pokúšať sa publikovať viacero typov senzorov pre ten istý kanál. .

Klienti potom môžu publikovať alebo sa prihlásiť na odber ľubovoľného počtu jednotlivých úrovní tém alebo pomocou niektorých špeciálnych zástupných znakov filtrovať zhora v strome.

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

myHome/+/teplota

prihlásil by klienta k obom

myHome/livingMiesto/teplota

myHome/kuchyňa/teplota

... ale nie úrovne vlhkosti.

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

myHome/livingRoom/#

Technicky sa môžete prihlásiť aj na koreňovú úroveň #, vďaka ktorej získate úplne všetko, čo prechádza cez makléra, ale môže to byť ako prilepenie požiarnej hadice k tvári: trochu zdrvujúce. Skúste sa pripojiť k verejnému maklérovi MQTT z HiveMQ a prihlásiť sa na odber #. Dostal som asi 300 správ za niekoľko sekúnd, než môj klient práve havaroval.

Tip MQTT pre začiatočníkov: ' /môj domov/' je iná téma ako môj domov/' - Zahrnutím lomky na začiatku sa vytvorí prázdna ú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 teóriu, vyskúšajme Arduino, Ethernet Shield a snímač teploty a vlhkosti DHT11 - pravdepodobne ho máte v štartovacej súprave, ale ak nie, vymeňte snímač prostredia za pohyb. senzor (alebo dokonca tlačidlo).

Publikovanie MQTT z Arduina s ethernetovým pripojením

Ak máte hybridné zariadenie kompatibilné s Arduino so vstavaným rozhraním Wi-Fi alebo Ethernet, malo by to tiež fungovať. Nakoniec budeme chcieť lepší/lacnejší spôsob komunikácie, ktorý spočíva v použití sieťového pripojenia v každej miestnosti, ale slúži to na naučenie sa základov.

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

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

client.setServer ('192.168.1.99', 1883);

Jeho priateľské meno bohužiaľ nemôžeme používať (OpenHAB.local v mojom prípade) pretože zásobník TCP/IP na Arduine je veľmi zjednodušený a pridanie kódu pre pomenovanie Bonjour by bolo veľa pamäte, ktorú nechceme plytvať. Ak chcete zmeniť témy, na ktorých sa údaje zo senzorov vysielajú, posuňte sa nadol na tieto riadky:

char buffer [10];

dtostrf (t, 0, 0, pufer);

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

dtostrf (h, 0, 0, pufer);

client.publish ('openhab/himitsu/vlhkosť', nárazník);

Kód tiež zahŕňa predplatné na príkazový kanál. Nájdite a upravte nasledujúci riadok:

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

Pozrite sa na kód tam a uvidíte, že LED alebo relé môžete ovládať napríklad odosielaním príkazov na konkrétne kanály. V ukážkovom kóde jednoducho odošle správu potvrdzujúcu prijatie príkazu.

Nahrajte svoj kód, zapojte Arduino do siete a pomocou MQTT.fx sa prihláste na odber jedného z nich # alebo openhab / himitsu / # (alebo čokoľvek, čo ste zmenili na názov miestnosti, ale nezabudnite na koniec uviesť #). Čoskoro by ste mali vidieť prichádzajúce správy; a ak odošlete ZAPNUTO alebo VYPNUTÉ do témy príkazov, zobrazí sa aj potvrdenie.

Väzba MQTT pre OpenHAB

Posledným krokom v rovnici je prepojenie s OpenHAB. Na to samozrejme potrebujeme väzbu.

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

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

A upravte konfiguračný súbor, aby ste povolili väzbu.

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

mqtt: broker.clientId = openhab

Reštartujte OpenHAB

reštartujte službu sudo openhab

Potom pridáme jednu alebo dve položky:

/ * Senzory MQTT */

Číslo Himitsu_Temp „Teplota Himitsu [%.1f ° C]“ (Himitsu, teplota) {mqtt = '<[broker:openhab/himitsu/temperature:state:default]'}

Číslo Himitsu_Humidity'Himitsu Vlhkosť [%.1f %%] '(Himitsu, Vlhkosť) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

Teraz by ste už mali rozumieť formátu; začína byť a Číselná položka z väzby MQTT, na zadanú tému. Toto je jednoduchý príklad, možno budete chcieť odkazovať na stránku wiki, kde sa nachádza môže byť oveľa komplexnejšie .

Blahoželáme, teraz máte základ lacného senzorového poľa na báze Arduina. V budúcnosti to prehodnotíme a umiestnime Arduino do ich vlastnej úplne oddelenej RF siete. Tiež som vytvoril identickú verziu pre dosky Wizwiki 7500 ak náhodou jeden z nich máš.

Perzistencia a údaje v grafoch

Teraz ste pravdepodobne nastavili veľa senzorov, či už zo Z-Wave alebo vlastných Arduinos s MQTT-takže si môžete kedykoľvek pozrieť aktuálny stav týchto senzorov a mali by ste tiež reagovať na ich hodnotu v pravidlách. Na hodnotách senzorov je však zaujímavé, že sa v priebehu času menia: tam nastupuje vytrvalosť a grafy. Vytrvalosť v OpenHAB znamená ukladanie údajov v priebehu času. Pokračujme a nastavme RRD4J (Round Robin Database for Java), takzvane preto, že údaje sa ukladajú spôsobom každý s každým - staršie údaje sa zahodia, aby sa skomprimovala veľkosť databázy.

Nainštalujte balíky rrd4j pomocou nasledujúcich príkazov.

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ácie/vytrvalosť priečinok. Prilepte nasledovné:

Stratégie {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

everyDay: '0 0 0 * *?'

default = everyChange

}

Položky {

// zachovať všetko, keď je hodnota aktualizovaná, iba predvolené, a obnoviť ich z databázy pri spustení

*: strategy = everyChange, restoreOnStartup

// ďalej definujeme konkrétne stratégie everyHour pre čokoľvek v skupine Temperature a každú minútu pre Humidity

ako používať airpods v systéme Android

Teplota*: stratégia = každú hodinu

Vlhkosť*: stratégia = každá minúta

// alternatívne tu môžete pridať konkrétne položky, ako napríklad

// Spálňa_Vlhkosť, JamesInOffice: strategy = everyMinute

}

V prvej časti tohto súboru definujeme stratégie, čo znamená pomenovať výraz CRON. Je to rovnaké, ako sme to už urobili s programom My.OpenHAB, ale tentoraz vytvoríme niekoľko nových stratégií, ktoré môžeme používať každý deň, každú hodinu a každú minútu. Ešte som ich všetky nepoužil, ale možno budem v budúcnosti.

V druhej polovici súboru rr4dj povieme, ktoré hodnoty údajov sa majú uložiť. V predvolenom nastavení budeme ukladať všetko pri každej aktualizácii, ale špecifikoval som aj niektoré časové stratégie pre konkrétne senzory. Teploty, ktoré ma príliš netrápia, som nastavil tak, aby šetrili iba každú hodinu, ale vlhkosť je pre mňa veľkým problémom, a preto chcem vidieť, ako sa každú minútu mení. Ak existujú ďalšie údaje, ktoré chcete konkrétne uložiť v stanovených časoch, pridajte ich sem teraz alebo ich podľa potreby upravte.

Poznámka: Ak chcete údaje vykresliť aj v grafe, MUSÍTE ich ukladať aspoň raz za minútu. Nezáleží na tom, či sú vaše údaje zo senzorov aktualizované aj tak rýchlo, stačí, ak rr4dj poviete, aby ich ukladal raz za minútu.

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

Ďalej urobme niekoľko pekných grafov všetkých týchto údajov. Je to naozaj ľahké. Ak chcete vytvoriť graf jednotlivého senzora, pridajte na mapu svojej stránky nasledujúce položky:

Položka grafu = Spálňa_Vlhkosť = h

To je doslova všetko, čo potrebujete. Platné hodnoty pre bodku sú h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; malo by byť zrejmé, čo to znamená. Ak nie je uvedené, predvolene sa použije D pre celý deň údajov.

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

Položka grafu = Obdobie vlhkosti = h

Tiež by vás mohlo zaujímať, že tento graf môžete použiť inde; generuje obrázok pomocou nasledujúcej adresy URL: http: // YOUROPENHABURL: 8080/chart? groups = Vlhkosť & bodka = h

Ako je Tvoj Prichádza systém OpenHAB?

To je tejto časti príručky všetko, ale nečakajte, že to bude naposledy, čo sa od nás o OpenHAB dozviete. Našťastie toto a príručka pre začiatočníkov vám poskytnú solídny základ pre 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 škálovať od niekoľkých zariadení po stovky, od jednoduchosti zložitých pravidiel až po maximálnu automatizáciu domácnosti - ako sa teda váš systém vyvíja? Aké zariadenia ste si vybrali? Aký ďalší veľký projekt sa chystáte riešiť?

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

Dúfame, že sa vám budú páčiť položky, ktoré odporúčame a diskutujeme! MUO má pridružené a sponzorované partnerstvá, takže dostávame časť výnosov z niektorých vašich nákupov. To neovplyvní cenu, ktorú zaplatíte, a pomôže nám to ponúknuť najlepšie odporúčania produktov.

zdieľam zdieľam Tweet E -mail Príručka pre začiatočníkov k animovanej reči

Animovaná reč môže byť výzvou. Ak ste pripravení začať pridávať dialógy do svojho projektu, proces za vás rozložíme.

Čítajte ďalej
Súvisiace témy
  • DIY
  • Inteligentný domov
  • Arduino
  • Domáca automatizácia
  • Dlhý formulár
  • Longform Guide
O autorovi James Bruce(707 publikovaných článkov)

James má bakalársky titul v odbore umelá inteligencia a je certifikovaný CompTIA A+ a Network+. Keď nie je zaneprázdnený ako editor recenzií hardvéru, baví ho hry LEGO, VR a stolné hry. Pred nástupom do MakeUseOf bol svetelným technikom, učiteľom angličtiny a inžinierom dátového centra.

Viac od Jamesa Brucea

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber