reklama
Zdarma neznamená vždy „ne tak dobré jako placené“ a OpenHAB není výjimkou. Software pro domácí automatizaci s otevřeným zdrojovým kódem daleko přesahuje možnosti jakéhokoli jiného systému domácí automatizace na trhu - nastavení však není snadné. Ve skutečnosti to může být naprosto frustrující.
V části 1 průvodce jsem vás provedl instalace OpenHAB na Raspberry Pi Začínáme s domácí automatizací OpenHAB na Raspberry PiOpenHAB je vyspělá platforma pro domácí automatizaci s otevřeným zdrojovým kódem, která běží na různých hardwarech a je protokol agnostický, což znamená, že se může připojit k téměř jakémukoli hardwaru domácí automatizace na trhu dnes. Přečtěte si více , představil základní koncepty OpenHAB a ukázal, jak přidat první položky do systému. Dnes půjdeme dále:
- Přidání zařízení ZWave
- Přidání ovladače Harmony Ultimate
- Zavádění pravidel
- Představujeme MQTT a instalujeme makléře MQTT na váš Pi se senzory na Arduino
- Zaznamenávání dat a jejich grafování
Úvod do Z-Wave
Z-Wave je po léta dominantním protokolem domácí automatizace: je spolehlivý, byl rozsáhle vyvinut a funguje v mnohem delším rozsahu než jakékoli jiné inteligentní domácí produkty. K dispozici jsou stovky senzorů Z-Wave, které provádějí celou řadu úkolů. OpenHAB umět pracovat s Z-Wave, ale je obtížné jej nastavit a spolehlivost není zaručena.
Pokud uvažujete o koupi domu plného senzorů Z-Wave speciálně pro použití s OpenHAB, vyzývám vás, abyste přehodnotili. Může to pro vás být skvělé, nebo to může být sužováno malými, ale přetrvávajícími problémy. Alespoň nekupujte dům plný senzorů, dokud nebudete mít možnost vyzkoušet si pár. Jediným důvodem, proč jste si vybrali Z-Wave, je, pokud nejste 100% spokojeni s OpenHAB, a chtěli byste nechat své možnosti otevřené v budoucnu: Z-Wave například pracuje s Samsung SmartThings Který inteligentní hub pro domácí automatizaci je pro vás nejlepší?Na chvíli si lidé mysleli, že myšlenka není ničím jiným než trikem, ale nedávná vydání produktů ukázala, že inteligentní domácí automatizace začíná plnit své sliby. Přečtěte si více rozbočovač, jakož i rozbočovače specifické pro Z-Wave, jako je Homeseer, a řadu dalších softwarových možností, jako je Domoticz.
Přestože OpenHAB obsahuje vázání Z-Wave, musíte to udělat Nejprve nakonfigurujte síť Z-Wave, než může OpenHAB začít dotazovat data. Pokud máte řídicí desku Rasberry, máte k dispozici nějaký software pro konfiguraci sítě, takže to zde nebudeme pokrývat. Pokud jste si zakoupili řadič Aeotec USB Z-Stick nebo podobný, pravděpodobně nemáte žádný software, takže čtěte dále.
Aeotec Z-Stick Gen5, Z-Wave Plus USB k vytvoření brányAeotec Z-Stick Gen5, Z-Wave Plus USB k vytvoření brány Kup teď na Amazonu $44.95
Pokud již máte nastavení sítě Z-Wave, stačí připojit váš řadič do Pi a začít konfigurovat vázání a položky. Pokud je to váš první vpád do Z-Wave, je to trochu složitější.
Zaprvé, na straně hardwaru: každý řadič má svůj vlastní způsob párování se zařízeními (technicky známý jako „režim začlenění“, ve kterém je přiřazeno ID uzlu). V případě zařízení Aotec Z-Stick to znamená odpojení od portu USB a jedním stisknutím tlačítka jej uvedete do režimu inkluze. Poté ji přiveďte do blízkosti zařízení, které spárujete, a na tom také stiskněte tlačítko zahrnutí (to se také bude lišit: moje zásuvka Everspring vyžaduje, aby tlačítko stisklo 3krát rychle za sebou, takže lekcí je přečíst si příručku k vašemu zařízení).
Z-Stick krátce bliká, což znamená úspěch. To představuje problémy při připojování zpět do Pi, protože je přiřazen nový port. Pokud zjistíte, že byl dynamicky přidělen jiný, restartujte svůj Pi tak, aby byl resetován zpět na standardní port. Ještě lepší: Nezapojujte jej do Pi, dokud nejdřív neprovedete všechny hardwarové párování.
Instalace vazeb HABmin a Z-Wave
Protože OpenHAB ve skutečnosti není konfiguračním nástrojem pro Z-Wave, budeme instalovat další nástroj pro správu webu, který funguje - něco jako HABmin. Zamiřte na HABmin úložiště Github stáhnout aktuální verzi. Jakmile to rozbalíte, najdete 2 .sklenice soubory v adresáři addons - ty by se měly umístit do odpovídajícího adresáře addons ve vaší sdílené složce OpenHAB Home (Pokud používáte také Z-Stick Aotec gen5 Z-Stick, ujistěte se, že máte alespoň verzi 1.8 vazby Z-Wave).
Dále vytvořte novou složku v adresáři webapps a nazvejte ji „habmin“ (důležité je malé písmeno). Zkopírujte do něj zbývající stažené soubory.
Poznámka: K dispozici je také HABmin 2 za aktivního vývoje. Instalace je téměř stejná, ale s jedním dalším .jar addonem. Možná by stálo za to vyzkoušet oba, abyste zjistili, které dáváte přednost.
Pokud jste tak ještě neučinili, připojte svůj řadič k Pi. Zadejte následující a vyhledejte správný port.
ls / dev / tty *
Hledáte něco s USB jménem, nebo v mém konkrétním případě, Z-stick se prezentoval jako /dev/ttyACM0 (modem). Může být snazší provést příkaz jednou před jeho připojením a jednou poté, abyste viděli, jaké změny, pokud si nejste jisti.
Otevřete konfigurační soubor OpenHAB a upravte sekci na Z-Wave, odkomentujte oba řádky a zadejte svou skutečnou adresu zařízení. Jedním z posledních kroků pro mě bylo umožnit uživateli OpenHAB přístup k modemu.
sudo usermod -a -G dialout openhab
Nyní, aby vše proběhlo v akci, restartujte OpenHAB
sudo service openhab restart
Doufejme, že pokud kontrolujete protokol ladění, uvidíte něco podobného. Gratulujeme, nyní mluvíte Z-Wave. Můžete také najít protokol ladění zaplavený zprávami z různých uzlů Z-Wave. Začněme kontrolou HABMIN a zjistíme, co je nalezeno: http://openhab.local: 8080 / habmin / index.html (nahrazení openhab.local názvem hostitele Raspberry Pi nebo IP adresou).
V HABMINU je toho hodně, ale my se zajímáme jen o Konfigurace -> Vázání -> Z-Wave -> Zařízení jak vidíte níže. Rozbalte uzel a upravte označení místa a názvu pro snadnější orientaci.
Konfigurace položek Z-Wave
Každé zařízení Z-Wave bude mít specifickou konfiguraci pro OpenHAB. Naštěstí většina zařízení již byla prozkoumána a pro vaše už budou existovat příklady. Konfigurace vlastních zařízení, která nejsou rozpoznána, značně přesahuje rozsah této příručky, ale předpokládejme, že je zatím podporována.
Nejprve mám základní vypínač Everspring AN158 a měřič na uzlu 3. Rychlý Googling mě zavedl na blogový příspěvek na Wetwa.re s ukázkovou konfigurací položky. Upravil jsem to takto:
Switch Dehumidifier_Switch "Dehumidifier" {zwave = "3: command = switch_binary"} Number Dehumidifier_Watts "Spotřeba energie odvlhčovače [% .1f W]" {zwave = "3: command = meter"}
Perfektní.
Další na řadě je Aeotec Gen5 Multi-Sensor.
Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) Kup teď na Amazonu $69.27
Pro tohle jsem našel ukázkovou konfiguraci na iwasdot.coma můj multisenzor je na uzlu 2.
Number Hallway_Temperature "Hallway Temperature [% .1f ° C]" (Hallway, Temperature) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0"} Number Hallway_Humidity "Hallway Vlhkost [% .0f %%]" (Hallway, Vlhkost) {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 Hallway_Motion "Hallway Motion [% s]" (Hallway, Motion) {zwave = "2: 0: command = sensor_binary, response_to_basic = true"} Number sensor_1_battery "Battery [% s %%]" (Motion) {zwave = "2: 0: command = battery"}
Pokud vám tento formát vypadá divně, zamířte prosím zpět k prvnímu průvodce pro začátečníky Začínáme s domácí automatizací OpenHAB na Raspberry PiOpenHAB je vyspělá platforma pro domácí automatizaci s otevřeným zdrojovým kódem, která běží na různých hardwarech a je protokol agnostický, což znamená, že se může připojit k téměř jakémukoli hardwaru domácí automatizace na trhu dnes. Přečtěte si více , konkrétně Hue závazná část, kde vysvětlím, jak jsou přidány položky. Pravděpodobně budete muset jen někdy zkopírovat příklady vložení, jako je tento, ale v případě, že máte nové zařízení, bude závazná dokumentace obsahovat podrobnosti příkazy.
Vazba Logitech Harmony
Než jsme skočili do pravidel, chtěl jsem přidat krátkou poznámku o práci s vazbou Harmony. Jsem velkým fanouškem Harmony série konečných ovladačů Logitech Harmony Ultimate Review a prozradíVáš obývací pokoj je chaos - připusťte. Je vám odpuštěno, že jste přemýšlel, které dálkové ovládání které zařízení. Co s TV, zesilovačem, TiVO, BluRay přehrávačem, možná i osvětlení - spínání se stává dlouhou ... Přečtěte si více pro zjednodušení práce s domácím mediálním centrem, ale často fungují jako samostatný systém v inteligentním domě. Díky OpenHAB mohou být činnosti Logitech Harmony a plné ovládání zařízení nyní součástí vašeho centralizovaného systému a dokonce zahrnuty do pravidel automatizace.
Začněte instalací tří vázaných souborů, které najdete, pomocí apt-cache k vyhledání „harmonie“:
Nezapomeňte chown až budete hotovi, adresář vázání znovu:
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
Chcete-li nakonfigurovat vazbu, otevřete soubor openhab.cfg a přidejte novou sekci takto:
########## HARMONY DÁLKOVÉ OVLÁDÁNÍ ########### harmonyhub: hostitel = 192.168.1.181nebo váš ip harmonyhub: username =vaše-harmonie-e-mail-přihlášení Harmonyhub: heslo =vaše heslo
IP adresa je adresa vašeho Harmony hubu. To zjistíte pomocí síťového skeneru. Musíte také zadat své přihlašovací údaje, ty, které zadáte při spuštění standardního konfiguračního nástroje Harmony. A je to. Po restartování vašeho odstínu by měl mít protokol ladění náhlý výboj výstupu z vazby.
Toto je seznam všech vašich aktivit, zařízení a příkazů, které lze odeslat, ve formátu JSON. Je dobré to zkopírovat pro budoucí použití. můžete ještě snáze číst pomocí skládacích uzlů vložením do online formátovače JSON jako je tento.
Kromě standardní činnosti PowerOff, která je výchozí, najdete zde také své vlastní definované aktivity uvedené podle názvu. Nyní vytvořme jednoduché ovládání jedním tlačítkem pro zahájení činnosti. Nejprve do souboru položek přidejte následující řádek. Pokud chcete, změňte skupinu a ikonu.
/ * Harmony Hub * / String Harmony_Activity "Harmony [% s]"(Living_Room) {harmonyhub = "* [currentActivity]"}}
Toto je obousměrné vázání String, který je schopen načíst aktuální aktivitu a zároveň přikázat současné činnosti, aby byla něčím jiným. Nyní pro něj můžeme vytvořit tlačítko v souboru Sitemap.
Přepnout položku = Mapování Harmony_Activity = [PowerOff = 'Off', Cvičení = 'Cvičení', 13858434 = 'TV', Karaoke = 'Karaoke']
V hranaté závorce uvidíte každou aktivitu spolu se štítkem. Obecně se můžete přímo odkazovat na aktivity, jak jste je pojmenovali na dálkovém ovladači, ale výjimku z toho, co jsem našel, bylo cokoli s mezerou v názvu aktivity, například „Sledování televize“. V tomto případě budete muset použít ID aktivity. ID opět najdete ve výstupu ladicího JSON. Uložte a aktualizujte své rozhraní, měli byste vidět něco podobného tomuto:
Jak uvidíme dále, můžete také odkazovat na aktivity ve vašich pravidlech. Přečtěte si wiki stránku pro více informací na Vázání harmonie.
Obecný úvod do pravidel
Většina inteligentních domácích uzlů obsahuje nějaký druh pravidel, takže můžete automaticky reagovat na data senzorů a události v domácnosti. Ve skutečnosti bych tvrdil, že skutečně chytrý domov není ten, který musíte trávit čas interakcí s mobilními aplikacemi - je to ten, který je pro koncového uživatele neviditelný a zcela automatizovaný. Za tímto účelem OpenHAB také obsahuje výkonný skriptovací jazyk pravidel, který můžete naprogramovat, což daleko překračuje složitost většiny inteligentní domácí rozbočovače Battle of the Smart Home Hubs: Co je tam a co se děje? Přečtěte si více nebo Recepty IFTTT IFTTT se nyní připojuje k čemukoli: Představujeme kanál výrobcePotenciální využití IFTTT je nekonečné. Až dosud však bylo obtížné propojit jej s vašimi vlastními hardwarovými projekty. Dnes se to všechno změnilo. Přečtěte si více .
Programovací pravidla zní horší, než je. Začněme jednoduchými pravidly, která zapínají a vypínají světlo v závislosti na senzoru přítomnosti:
pravidlo „Svítí Office, když je přítomen James“ když se položka JamesInOffice změnila z OFF na ON. pak pošleteCommand (Office_Hue, ON) konec pravidla "Office zhasne, když James odejde" když se položka JamesInOffice změnila z ON na OFF. pak pošleteCommand (Office_Hue, OFF) konec
Nejprve pojmenujeme pravidlo - buďte popisní, takže víte, na jakou událost se střílí. Dále definujeme naše jednoduché pravidlo vyslovením když je x pravdivé, pak y. End znamená uzavření tohoto konkrétního pravidla. Existuje několik zvláštních slov, která můžete v pravidlech použít, ale prozatím se zabýváme dvěma jednoduchými kousky syntaxe - Položka, což vám umožní zjistit stav něčeho; a sendCommand, což dělá přesně to, co si myslíte. Řekl jsem ti, že to bylo snadné.
Pravděpodobně není nutné používat pár pravidel, ale jak se moje logika stává složitější, bude užitečné mít je oddělená pro to, zda jsem vstupovat nebo opouštět oblast - a může být dobrý nápad přidat někde do rovnice světelný senzor, takže se zbytečně nezapínáme světla.
Podívejme se na další příklad a vytvoříme naplánované pravidlo.
pravidlo „Cvičit každé ráno“ kdy Time cron "0 0 8 1/1 *? *" pak harmonieStartActivity ("Cvičení") konec.
Opět pojmenujeme pravidlo, stavové podmínky, kdy by se mělo střílet, a kroky, které je třeba podniknout. Ale v tomto případě definujeme časový model. Zábavný kód, který vidíte v uvozovkách, je výraz CRON pro Quartz Scheduler (formát se mírně liší od běžného CRONtab). Použil jsem cronmaker.com k vytvoření výrazu, ale také si můžete přečíst průvodce formátem [Už není k dispozici] pro podrobné vysvětlení a další příklady.
Moje pravidla říká jednoduše: „Každé ráno v 8 hodin ráno, každý den v týdnu, řekněte svému systému Harmony Ultimate, aby zahájil cvičební aktivitu“, což zase aktivuje televizor, Xbox, zesilovač a po minutě stiskne tlačítko A pro spuštění disku v jednotce.
Je smutné, že OpenHAB zatím pro mě cvičení nedokáže.
Ještě jedno pravidlo, které vám chci ukázat, je něco, co používám k řízení úrovně vlhkosti v mém domě. Mám jeden odvlhčovač, který se musím pohybovat všude tam, kde je to potřeba, a tak jsem se rozhodl podívat se na všechny své senzory vlhkosti, najít, který z nich je nejvyšší, a uložit jej do proměnné. Momentálně se spouští každou minutu, ale to lze snadno snížit. Podívejte se nejprve:
import org.openhab.core.library.types. * import org.openhab.model.script.actions. * import java.lang. Řetězcové pravidlo "Monitor vlhkosti" kdy Time cron "0 * * * *?" pak var prevHigh = 0 var highHum = "" Vlhkost? .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); konec.
Jádro pravidla je v EU Vlhkost? řádek. Vlhkost je název skupiny pro mé senzory vlhkosti; .members chytne všechny položky v této skupině; pro každého iteruje nad nimi (ve formátu zvědavého hranatého závorky pravděpodobně neznáte). Syntaxe pravidel je derivátem Xtend, takže si můžete přečíst Dokumentace Xtend pokud nemůžete najít příklad k přizpůsobení.
Pravděpodobně nebudete muset - existují tam stovky příkladů pravidel:
- Podrobné vysvětlení pravidel na oficiální wiki
- ukázky oficiálních pravidel wiki stránka
- Převzetí pravidel do nových výšin
- Pokročilé ukázky na IngeniousFool.net
MQTT pro OpenHAB a internet věcí
MQTT je lehký systém zasílání zpráv pro komunikaci mezi stroji - jakýsi druh Twitteru pro vaše Arduinos nebo Raspberry Pis spolu mluvit (i když samozřejmě funguje mnohem víc než jen ty). Rychle si získává na popularitě a nachází si domov se zařízeními internetu věcí, které jsou obvykle nízké zdrojové mikrořadiče, které potřebují spolehlivý způsob, jak přenášet data senzorů zpět do vašeho rozbočovače nebo přijímat dálkové ovladače příkazy. Přesně to s tím uděláme.
Ale proč znovu vynalézat kolo?
MQ Telemetry Transport byl vynalezen v roce 1999 pro připojení ropovodů přes pomalý satelit připojení, speciálně navržená tak, aby minimalizovala spotřebu baterie a šířku pásma, a přitom stále spolehlivá dodání dat. V průběhu let zůstaly principy návrhu stejné, ale případ použití se přesunul ze specializovaných vestavěných systémů na obecná zařízení internetu věcí. V roce 2010 byl protokol propuštěn bez poplatku, otevřený pro kohokoli, kdo jej může používat a implementovat. Máme rádi zdarma.
Možná by vás zajímalo, proč se vůbec obtěžujeme s dalším protokolem - máme přece jen HTTP - což může slouží k odesílání rychlých zpráv mezi všemi druhy systémů připojených k webu (jako jsou OpenHAB a IFTTT, zejména s novými) kanál výrobce IFTTT se nyní připojuje k čemukoli: Představujeme kanál výrobcePotenciální využití IFTTT je nekonečné. Až dosud však bylo obtížné propojit jej s vašimi vlastními hardwarovými projekty. Dnes se to všechno změnilo. Přečtěte si více ). A měl bys pravdu. Režie zpracování HTTP serveru je však poměrně velká - natolik, že jej nelze snadno spustit vestavěný mikrokontrolér jako Arduino (přinejmenším můžete, ale na nic nemáte zbytečně mnoho paměti) jiný). MQTT je naopak velmi lehký, takže odesílání zpráv po síti nebude zanášet potrubí a snadno se vejde do našeho malého paměťového prostoru Arduino.
Jak MQTT funguje?
MQTT vyžaduje server (nazývaný „broker“) a jednoho nebo více klientů. Server funguje jako prostředník, přijímá zprávy a znovu je vysílá všem zájemcům.
Pojďme pokračovat Twitter-for-machines analogie však. Stejně jako uživatelé Twitteru mohou tweetovat své vlastní nesmyslné 140 znaků a uživatelé mohou „sledovat“ ostatní uživatele, aby si mohli prohlédnout proud příspěvků, Klienti MQTT se mohou přihlásit k odběru určitého kanálu, aby odtud mohli přijímat všechny zprávy, a také k tomu publikovat své vlastní zprávy kanál. Tento vzor publikování a odběru se označuje jako hospoda / sub, na rozdíl od tradice klient-server model HTTP.
HTTP vyžaduje, abyste oslovili zařízení, se kterým komunikujete, řekněme Ahoj, a pak se musíte dozadu a dopředu neustále navzájem uznávat, zatímco získáváte nebo vkládáte data. V případě pub / sub nemusí klient provádějící publikování vědět, kteří klienti jsou přihlášeni k odběru. Prostě vyčerpá zprávy a zprostředkovatel je přerozdělí všem odběratelům. Jakýkoli klient může publikovat a přihlásit se k odběru témat, stejně jako uživatel Twitteru.
Na rozdíl od Twitteru však není MQTT omezeno na 140 znaků. Je to datová agnostika, takže můžete odesílat malá čísla nebo velké textové bloky, datagramy ve formátu JSON nebo dokonce obrázky a binární soubory.
Není to tak, že MQTT je pro všechno lepší než HTTP - ale je to tak je vhodnější, pokud budeme mít po celém domě spoustu senzorů, neustále se hlásíme.
Je také důležité vědět, že OpenHAB nebude fungovat jako váš zprostředkovatel MQTT - my se o to později budeme zabývat. OpenHAB se však bude chovat jako klient: může publikovat váš protokol aktivit OpenHAB, jakož i vázat konkrétní kanály na zařízení, takže můžete mít například přepínač, který je řízen zprávami MQTT na konkrétní kanál. To je ideální pro vytvoření domu plného senzorů.
Nainstalujte Mosquitto na svůj Pi
Ačkoli OpenHAB obsahuje klienta MQTT, takže se můžete přihlásit k odběru určitého tématu a také publikovat zprávy, nebude fungovat jako server. K tomu je třeba použít webový broker MQTT (placený nebo bezplatný) nebo nainstalovat bezplatný software do vašeho Pi. Chtěl bych si to nechat všechno doma, takže jsem nainstaloval Mosquitto na Pi.
Bohužel verze dostupná prostřednictvím obvyklého apt-get je zcela zastaralá. Místo toho přidáme nejnovější zdroje.
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key přidat 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še, co musíme udělat, aby byl server MQTT nainstalován a spuštěn v místní síti. Váš broker je ve výchozím nastavení spuštěn na portu 1883.
Zkontrolujte, zda váš server MQTT funguje pomocí bezplatného serveru MQTT.fx, který je multiplatformový. Kliknutím na ikonu nastavení vytvořte nový profil a zadejte IP adresu nebo jméno Raspberry Pi. Uložte a stiskněte připojení. Pokud se malá semafor v pravém horním rohu změní na zelenou, je dobré jít.
Pro rychlý test klikněte na záložku „přihlásit se“ a napište inTopic / do textového pole a poté stiskněte předplatit knoflík. Nyní jste přihlášeni k odběru příjmu zprávy na téma s názvem inTopic, i když ukáže 0 zpráv. Vraťte se na kartu publikování, do malého pole zadejte inTopic a krátkou zprávu do velkého textového pole níže. Udeřil Publikovat několikrát a ohlédněte se zpět na kartě Přihlásit se k odběru. Měli byste vidět několik zpráv, které se objevily v tomto tématu.
Před přidáním některých skutečných senzorů do naší sítě se musíme naučit o tematických úrovních, které nám umožňují strukturovat a filtrovat síť MQTT. Názvy témat rozlišují velká a malá písmena, neměla by začínat $, ani obsahovat mezeru nebo znaky jiné než ASCII - skutečně standardní programovací postupy pro názvy proměnných.
Oddělovač / označuje úroveň tématu, která je hierarchická, například následující jsou platné úrovně témat.
inTopic / smallSubdivision / evenSmallerSubdivision. myHome / livingRoom / teplota. myHome / livingRoom / vlhkosti. myHome / kuchyň / teplota. myHome / kuchyň / vlhkost
Už byste měli vidět, jak je tato stromová struktura ideální pro chytrý domov plný senzorů a zařízení. Nejlepší postup pro použití s více senzory v jedné místnosti je publikovat každou proměnnou senzoru jako vlastní tematickou úroveň - rozvětvení na specifičnost (jako ve výše uvedených příkladech) - namísto pokusu o publikování více typů senzorů kanál.
Klienti pak mohou publikovat nebo se přihlásit k odběru libovolného počtu jednotlivých úrovní témat, nebo použít některé speciální zástupné znaky k filtrování od shora nahoru ve stromu.
Zástupný znak + nahrazuje jakoukoli úroveň tématu. Například:
myHome / + / teplota
by objednal klienta k oběma
myHome / livingRoom / teplota. myHome / kuchyň / teplota
… Ale ne úroveň vlhkosti.
# Je víceúrovňový zástupný znak, takže byste mohli získat cokoli z pole senzorů livingRoom pomocí:
myHome / livingRoom / #
Technicky se také můžete přihlásit k odběru kořenové úrovně #, kterou dostanete naprosto vše, co se děje procházet brokerem, ale to může být jako nalepit si do tváře ohnivou hadici: trochu ohromující. Zkuste se připojit k veřejnému zprostředkovateli MQTT z HiveMQ a přihlaste se k odběru #. Během několika sekund jsem dostal asi 300 zpráv, než se můj klient právě zhroutil.
Tip pro začátečníky MQTT: “/myHome/” je jiné téma než „můj domov/" - včetně lomítka na začátku vytvoří prázdnou úroveň tématu, která je sice technicky platná, ale nedoporučuje se, protože může být matoucí.
Nyní, když známe tuto teorii, pojďme se vydat na Arduino, Ethernet Shield a DHT11 snímač teploty a vlhkosti - Pravděpodobně jeden máte ve své startovací sadě, ale pokud ne, stačí vyměnit snímač prostředí za senzor pohybu (nebo dokonce knoflík).
Publikování MQTT z Arduino s ethernetovým připojením
Pokud máte hybridní zařízení kompatibilní s Arduino s vestavěným Wi-Fi nebo Ethernetem, mělo by to také fungovat. Nakonec budeme chtít lepší / levnější způsob komunikace, který bude muset používat síťové připojení v každé místnosti, ale to slouží k osvojení základů.
Začněte stažením knihovna pubsubclient od společnosti Github. Pokud jste použili tlačítko „Stáhnout jako ZIP“, je struktura trochu špatná. Rozbalte složku a přejmenujte složku na pouhých pubsubclient, poté vyjměte dva soubory z src a přesunout je o jednu úroveň do kořenového adresáře stažené složky. Poté přesuňte celou složku do složky Arduino / knihovny adresář.
Zde je můj ukázkový kód, který můžete upravit: výstup signálu DHT11 je na pinu 7. Změňte IP adresu vašeho serveru na následující řádce:
client.setServer ("192.168.1.99", 1883);
Toto jméno bohužel nemůžeme použít (OpenHAB.local v mém případě) protože zásobník TCP / IP na Arduinu je velmi zjednodušující a přidání kódu pro pojmenování Bonjour by bylo spousta paměti, kterou nechceme ztrácet. Chcete-li změnit témata, na nichž jsou data senzoru vysílána, přejděte dolů na tyto řádky:
char buffer [10]; dtostrf (t, 0, 0, pufr); client.publish ("openhab / himitsu / teplota", buffer); dtostrf (h, 0, 0, pufr); client.publish ("openhab / himitsu / vlhkost", buffer);
Kód také zahrnuje předplatné kanálu příkazů. Vyhledejte a upravte následující řádek:
client.subscribe ("openhab / himitsu / command");
Prozkoumejte kód tam a uvidíte, že můžete snadno ovládat LED nebo relé, například posíláním příkazů na konkrétní kanály. V příkladu kódu jednoduše odešle zprávu zpět potvrzující přijetí příkazu.
Nahrajte svůj kód, připojte Arduino k síti a pomocí MQTT.fx se přihlaste # nebo openhab / himitsu / # (nebo cokoli jste změnili název pokoje na, ale nezapomeňte na konec uvést #). Brzy byste měli vidět zprávy přicházející; a pokud pošlete ZAPNUTO nebo VYPNUTO k tématu příkazu, zobrazí se vám i potvrzení.
Vazba MQTT pro OpenHAB
Posledním krokem v rovnici je zapojení do OpenHAB. K tomu samozřejmě potřebujeme vazbu.
sudo apt-get install openhab-addon-bind-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab
A upravte konfigurační soubor tak, aby vázání umožňovalo.
mqtt: broker.url = tcp: // localhost: 1883. mqtt: broker.clientId = openhab
Restartujte OpenHAB
sudo service openhab restart
Pak přidáme jednu nebo dvě položky:
/ * MQTT senzory * / Number Himitsu_Temp "Himitsu Teplota [% .1f ° C]"(Himitsu, teplota) {mqtt = " (Himitsu, Vlhkost) {mqtt = "
Nyní byste měli rozumět formátu; dostává se Číslo položky z vazby MQTT na zadané téma. Tento jednoduchý příklad můžete chtít odkázat na stránku wiki, kde je může být mnohem složitější.
Gratulujeme, nyní máte základ levné sestavy senzorů na bázi Arduino. Budeme to v budoucnu revidovat a umísťovat Arduino do své vlastní zcela samostatné RF sítě. Také jsem vytvořil identickou verzi pro desky Wizwiki 7500 pokud náhodou jednoho máte.
Perzistence a grafická data
V tuto chvíli jste pravděpodobně nastavili spoustu senzorů, ať už od Z-Wave nebo vlastních Arduinos s MQTT - takže vy můžete kdykoli zobrazit aktuální stav těchto senzorů a měli byste také reagovat na jejich hodnotu v pravidla. Zajímavé však je, že hodnoty senzorů se v průběhu času mění: odtud přichází vytrvalost a grafy. Vytrvalost v OpenHAB znamená ukládání dat v čase. Pojďme do toho a nastavíme RRD4J (Round Robin Database for Java), tzv. Protože data jsou ukládána způsobem round robin - starší data jsou vyřazena, aby se komprimovala velikost databáze.
Nainstalujte balíčky rrd4j s následujícími příkazy.
sudo apt-get install openhab-addon-persistence-rrd4j. sudo chown -hR openhab: openhab / usr / share / openhab.
Poté vytvořte nový soubor s názvem rrd4j.persist v konfigurace / vytrvalost složku. Vložte následující:
Strategie {everyMinute: "0 * * * *?" everyHour: "0 0 * * *?" everyDay: "0 0 0 * *?" default = everyChange. } Položky {// přetrvávají všechno, když je hodnota aktualizována, pouze výchozí a obnovují je z databáze při spuštění *: strategie = everyChange, restoreOnStartup // dále definujeme konkrétní strategie everyHour pro cokoli ve skupině Teplota a každou minutu pro Vlhkost *: strategy = everyHour Humidity *: strategy = everyMinute // alternativně sem můžete přidat konkrétní položky, například // Bedroom_Humidity, JamesInOffice: strategy = everyMinute. }
V první části tohoto souboru definujeme strategie, což znamená pouze pojmenování výrazu CRON. To je to samé, co jsme již s My. OpenHAB, ale tentokrát vytváříme nějaké nové strategie, které můžeme použít pro každý den, každý den a každý den. Ještě jsem je všechny nepoužil, ale možná budu v budoucnu.
Ve druhé polovině souboru řekneme rr4dj, jaké hodnoty dat mají být uloženy. Ve výchozím nastavení uložíme vše pokaždé, když se aktualizuje, ale také jsem specifikoval některé strategie založené na čase pro konkrétní senzory. Teploty, které mě příliš netrápí, tak jsem si stanovil, že abych zachránil všeHour, ale vlhkost je pro mě velkým problémem, takže chci vidět, jak se mění každou minutu. Pokud existují další data, která chcete konkrétně uložit v nastavených časech, přidejte je sem nebo upravte podle potřeby.
Poznámka: Pokud chcete data také grafovat, MUSÍTE je uložit alespoň jednou za minutu. Nezáleží na tom, zda jsou vaše data senzorů dokonce rychle aktualizována, stačí rr4dj říct, aby je uložil jednou za minutu.
S definovanou hodnotou byste měli začít vidět nějaký výstup ladění, který vám řekne, že jsou hodnoty ukládány.
Dále udělejme nějaké pěkné grafy všech těchto dat. Je to opravdu snadné. Chcete-li vytvořit graf jednotlivého senzoru, přidejte do mapy webu následující:
Položka grafu = Ložnice_Hididity period = h
To je doslova vše, co potřebujete. Platné hodnoty za období jsou h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; mělo by být zřejmé, co to znamená. Pokud není uvedeno, je výchozí hodnota D pro celý den dat.
Chcete-li vytvořit graf s více položkami, jednoduše namapujte název skupiny:
Položka grafu = Doba vlhkosti = h
Také by vás mohlo zajímat, že tento graf můžete použít jinde; generuje obrázek pomocí následující adresy URL: http://YOUROPENHABURL: 8080 / graf? skupiny = vlhkost a období = h
Jak se má Vaše Systém OpenHAB přichází?
To je pro tuto část průvodce, ale nečekejte, že to bude poslední, co od nás uslyšíte o OpenHAB. Doufejme, že vám tato příručka a příručka pro začátečníky poskytly solidní základ pro vývoj vlastního kompletního systému OpenHAB - ale je to proces, který nikdy není úplně dokončen.
Naštěstí může OpenHAB škálovat dobře od několika zařízení po stovky, od jednoduché složitosti pravidel až po dokonalou domácí automatizaci - jak se tedy váš systém blíží? Která zařízení jste si vybrali? Jaký další velký projekt se chystáte řešit?
Pojďme si promluvit v komentářích - a pokud vás tato příručka považuje za užitečnou, klikněte na tato tlačítka sdílení a řekněte svým přátelům, jak si mohou také nastavit svůj vlastní systém OpenHAB.
James má bakalářský titul v oboru umělé inteligence a je certifikován pro CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.