OpenHAB Průvodce pro začátečníky Část 2: ZWave, MQTT, pravidla a grafy

OpenHAB Průvodce pro začátečníky Část 2: ZWave, MQTT, pravidla a grafy

Zdarma neznamená vždy „ne tak dobré jako placené“ a OpenHAB není výjimkou. Open source software pro domácí automatizaci daleko přesahuje možnosti jakéhokoli jiného systému domácí automatizace na trhu - ale nastavení není snadné. Ve skutečnosti to může být vyloženě frustrující.





V části 1 průvodce jsem vás provedl instalace OpenHAB na Raspberry Pi , představil základní koncepty OpenHAB a ukázal vám, jak přidat své první položky do systému. Dnes půjdeme dále:





  • Přidání zařízení ZWave
  • Přidání ovladače Harmony Ultimate
  • Představujeme pravidla
  • Představujeme MQTT a instalaci MQTT brokera na váš Pi se senzory na Arduinu
  • Zaznamenávání dat a jejich vykreslování

Úvod do Z-Wave

Z-Wave je již léta dominantním protokolem domácí automatizace: je spolehlivý, byl rozsáhle vyvinut a pracuje v mnohem delším rozsahu než jakékoli jiné produkty pro chytrou domácnost. K dispozici máte stovky senzorů Z-Wave, které provádějí širokou škálu úkolů. OpenHAB umět pracovat se Z-Wave, ale jeho nastavování je obtížné a spolehlivost není zaručena.





Pokud zvažujete koupi domu plného Z-Wave senzorů speciálně pro použití s ​​OpenHAB, naléhavě vás žádám, abyste to znovu zvážili. Může to pro vás fungovat skvěle, 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 několik vyzkoušet. Jediným důvodem, proč si vybrat Z-Wave, je to, že nejste 100% usazeni na OpenHAB a chtěli byste nechat své možnosti v budoucnu otevřené: Z-Wave například funguje s rozbočovačem Samsung SmartThings a také s rozbočovači specifickými pro Z-Wave jako je Homeseer, a řada dalších softwarových možností, jako je domoticz .

Ačkoli OpenHAB obsahuje vazbu Z-Wave, stále musíte nejprve nakonfigurujte síť Z-Wave , než jej může OpenHAB začít dotazovat na data. Pokud máte ovládací desku Rasberry, máte dodaný software pro konfiguraci sítě, takže se zde nebudeme zabývat. Pokud jste si koupili ovladač Aeotec USB Z-Stick nebo podobný, pravděpodobně nemáte žádný software, takže čtěte dál.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB pro vytvoření brány (obyčejná bílá) KOUPIT HNED NA AMAZONU

Pokud již máte nastavení sítě Z-Wave , stačí zapojit ovladač do Pi a začít konfigurovat vazbu a položky. Pokud je to váš první vpád do Z-Wave, je to trochu složitější.

Za prvé, po stránce hardwaru: každý řadič má svůj vlastní způsob párování se zařízeními (technicky známý jako „režim zahrnutí“, ve kterém je přiřazeno ID uzlu). V případě Aotec Z-Stick to znamená odpojit jej z USB portu a jedním stisknutím tlačítka jej přepnout do režimu začlenění. Poté jej vezměte poblíž zařízení, které spárujete, a také na něm stiskněte tlačítko pro zahrnutí (to se bude také lišit: moje zásuvka Everspring vyžaduje, aby bylo tlačítko stisknuto 3krát za sebou, takže zde je lekce přečíst si příručku k vašemu zařízení) .





Z-Stick krátce bliká, aby indikoval ú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řeřazen na jiný port, restartujte Pi, aby se resetovalo zpět na standardní port. Ještě lépe: nezapojujte jej do Pi, dokud neprovedete nejprve všechna párování hardwaru.

Instalace vazeb HABmin a Z-Wave

Protože OpenHAB ve skutečnosti není konfiguračním nástrojem pro Z-Wave, nainstalujeme další nástroj pro správu webu, který ano-něco, co se nazývá HABmin. Přejděte na Úložiště HABmin Github stáhnout aktuální verzi. Jakmile jej rozbalíte, najdete 2 .sklenice soubory v adresáři doplňků - ty by měly být umístěny v odpovídajícím adresáři doplňků ve vaší sdílené složce OpenHAB Home (Pokud používáte také 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 nazvěte ji 'habmin' (důležitá je malá písmena). Zkopírujte do něj zbytek stažených souborů.

Poznámka: Existuje také a HABmin 2 v aktivním vývoji. Instalace je téměř stejná, ale s jedním doplňkem .jar. Možná by stálo za to vyzkoušet obojí, abyste zjistili, kterému dáváte přednost.

Pokud jste to ještě neudělali, zapojte ovladač do Pi. Zadejte následující port a najděte správný port.

ls /dev /tty*

Hledáte cokoli s USB v názvu, nebo v mém konkrétním případě se Z-stick představil jako / dev / ttyACM0 (modem). Může být snazší provést příkaz jednou před připojením a jednou po něm, abyste mohli vidět, co se změní, pokud si nejste jisti.

Otevřete konfigurační soubor OpenHAB a upravte sekci na Z-Wave, odkomentujte oba řádky a vložte svoji skutečnou adresu zařízení. Posledním krokem pro mě bylo umožnit uživateli OpenHAB přístup k modemu.

sudo usermod -a -G dialout openhab

Nyní, abyste vše uvedli do činnosti, restartujte OpenHAB

restartování služby sudo openhab

Naštěstí, pokud kontrolujete protokol ladění, uvidíte něco takového. Gratulujeme, teď mluvíte o Z-Wave. Protokol ladění můžete také zaplavit zprávami z různých uzlů Z-Wave. Začněme kontrolou HABMIN, abychom zjistili, co našel: http: //openhab.local: 8080/habmin/index.html (nahrazení openhab.local hostitelským jménem nebo IP adresou Raspberry Pi).

V HABMIN je toho hodně k vidění, ale my se opravdu zajímáme jen o Konfigurace -> Vazby -> Z -Wave -> Zařízení kartu, jak vidíte níže. Rozbalte uzel a upravte štítek umístění 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 již existují příklady pro vaše. Konfigurace vlastních zařízení, která nejsou rozpoznána, přesahuje rámec této příručky, ale předpokládejme, že je prozatím podporována.

Nejprve mám základní vypínač a měřič Everspring AN158 na uzlu 3. Rychlé Googlování mě přivedlo na blog na Wetwa.re s konfigurací ukázkové položky. Upravil jsem to takto:

Přepnout odvlhčovač_Spínač 'Odvlhčovač' {zwave = '3: command = switch_binary'}

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

Perfektní.

Další na řadě je multisenzor Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) KOUPIT HNED NA AMAZONU

Pro tento jsem našel ukázkovou konfiguraci na iwasdot.com , a můj multisenzor je na Node 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'}

Číslo sensor_1_battery 'Baterie [%s %%]' (pohyb) {zwave = '2: 0: příkaz = baterie'}

Pokud vám tento formát připadá divný, vraťte se zpět k prvnímu průvodce pro začátečníky , konkrétně část vazby Hue, kde vysvětluji, jak jsou přidávány položky. Pravděpodobně budete muset pouze zkopírovat příklady vložení, jako je tento, ale v případě, že máte nové zařízení, dokumentace vazby podrobně popisuje všechny příkazy .

Vázání Logitech Harmony

Než přejdeme k pravidlům, chtěl jsem přidat krátkou poznámku o práci s vazbou Harmony. Jsem velkým fanouškem řady dokonalých dálkových ovladačů Harmony pro zjednodušení zážitku z domácího mediálního centra, ale často stojí jako samostatný systém v inteligentní domácnosti. Díky OpenHAB mohou být nyní činnosti Logitech Harmony a plné ovládání zařízení součástí vašeho centralizovaného systému a dokonce zahrnuty do pravidel automatizace.

Začněte instalací tří vazebných souborů, které najdete, pomocí apt-cache pro hledání 'harmonie':

Nezapomeň žrádlo adresář vazeb, až budete hotovi:

sudo apt-get install openhab-addon-action-harmoniehub

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

sudo apt-get install openhab-addon-io-harmoniehub

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

Chcete -li konfigurovat vazbu, otevřete soubor openhab.cfg a přidejte novou sekci následujícím způsobem:

########### HARMONY DÁLKOVÉ OVLÁDÁNÍ ############

Harmonyhub: hostitel = 192.168.1.181 nebo tvoje ip

harmoniehub: uživatelské jméno = vaše-harmonie-email-přihlášení

harmoniehub: heslo = vaše heslo

IP adresa je adresa vašeho rozbočovače Harmony. Zjistěte to pomocí síťového skeneru. Budete také muset zadat své přihlašovací údaje, které zadáte při spuštění standardního konfiguračního nástroje Harmony. A je to. Po restartování Hue by váš protokol ladění měl mít náhlou dávku 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í. vložením do online formátovače JSON můžete čtení pomocí skládacích uzlů ještě usnadnit jako je tento .

Stejně jako standardní aktivita PowerOff, která je výchozí, najdete zde své vlastní definované aktivity uvedené zde podle názvu. Nyní vytvořme jednoduchý ovládací prvek pro spouštění aktivit jedním tlačítkem. Nejprve do souboru položek přidejte následující řádek. Pokud chcete, změňte skupinu a ikonu.

/ * Harmony Hub */

Řetězec Harmony_Activity 'Harmony [%s]' (Living_Room) {harmoniehub = '*[currentActivity]'}

Toto je a obousměrná řetězcová vazba , který je schopen načíst aktuální aktivitu a přikázat aktuální aktivitě, aby byla něčím jiným. Nyní pro něj můžeme vytvořit tlačítko v souboru mapy webu.

Přepnout položku = Mapování harmonie_aktivity = [PowerOff = 'Vypnuto', Cvičení = 'Cvičení', 13858434 = 'TV', Karaoke = 'Karaoke']

notebook zapojený, nenabíjí se

V hranaté závorce uvidíte každou aktivitu spolu se štítkem. Obecně můžete na aktivity odkazovat přímo tak, jak jste je pojmenovali na dálkovém ovladači, ale výjimkou z toho, co jsem našel, bylo cokoli s mezerou v názvu aktivity, například „Sledovat televizi“. V takovém případě budete muset použít ID aktivity. ID opět najdete ve výstupu ladění JSON. Uložte a obnovte své rozhraní, měli byste vidět něco podobného:

Můžete také odkazovat na aktivity ve vašich pravidlech, jak uvidíme dále. Další informace o souboru najdete na stránce wiki Vazba harmonie .

Obecný úvod do pravidel

Většina hubů pro chytrou domácnost obsahuje nějaký druh vytváření pravidel, takže můžete automaticky reagovat na data senzorů a události v domácnosti. Ve skutečnosti bych tvrdil, že skutečně inteligentní dům není ten, který byste potřebovali trávit čas interakcí s mobilními aplikacemi - je to takový, který je pro koncového uživatele neviditelný a zcela automatizovaný. Za tímto účelem obsahuje OpenHAB také výkonný skriptovací jazyk pravidel, který můžete naprogramovat, což výrazně překračuje složitost většiny center inteligentní domácnosti nebo receptů IFTTT.

Programovací pravidla zní hůř, než je. Začněme jednoduše dvojicí pravidel, která zapínají nebo vypínají světlo v závislosti na senzoru přítomnosti:

pravidlo „Svítí kancelář, když je přítomen James“

když

Položka JamesInOffice se změnila z OFF na ON

pak

sendCommand (Office_Hue, ON)

konec

pravidlo „Světlo kanceláře zhasne, když James odejde“

když

Položka JamesInOffice se změnila z ON na OFF

pak

sendCommand (Office_Hue, VYPNUTO)

konec

Nejprve pojmenujeme pravidlo - buďte popisní, abyste věděli, jaká událost se spouští. Dále definujeme naše jednoduché pravidlo slovy když x je pravda, pak ano . Konec znamená uzavření konkrétního pravidla. V pravidlech můžete použít řadu speciálních slov, ale prozatím se zabýváme dvěma jednoduchými bity syntaxe - Položka , což vám umožňuje dotazovat se na stav něčeho; a sendCommand , který dělá přesně to, co si myslíte, že bude. Řekl jsem ti, že to bylo snadné.

Pravděpodobně není nutné používat dvojici pravidel, ale jak se moje logika stává složitější, bude užitečné mít je oddělená, ať už vstupuji nebo opouštím oblast - a možná by bylo dobré přidat někde světelný senzor do rovnice, abychom zbytečně nerozsvěcovali světla.

Podívejme se na další příklad vytvoření naplánovaného pravidla.

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

když

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

pak

harmonieStartActivity ('cvičení')

konec

Opět pojmenujeme pravidlo, uvedeme podmínky, kdy by se mělo spustit, a akce, které je třeba provést. Ale v tomto případě definujeme časový vzor. Legrační kód, který vidíte v uvozovkách, je výrazem CRON pro Quartz Scheduler (formát se mírně liší od běžného CRONtabu). Použil jsem cronmaker.com k vytvoření výrazu, ale můžete si také přečíst průvodce formátem [již není k dispozici], kde najdete podrobné vysvětlení a další příklady.

CronMaker.com slouží ke generování správně formátovaného výrazu Cron

Moje pravidla říkají jednoduše „každé ráno v 8 hodin, každý den v týdnu, řekni mému systému Harmony Ultimate, aby zahájil cvičení“, což zase aktivuje TV, Xbox, zesilovač a po minutě stiskne tlačítko A disk v jednotce.

OpenHAB bohužel toto cvičení za mě zatím nedokáže.

Ještě jedno pravidlo, které vám chci ukázat, je něco, co používám ke správě úrovní vlhkosti v mém domě. Mám jediný odvlhčovač, se kterým se musím pohybovat, kdekoli je potřeba, a tak jsem se rozhodl podívat se na všechny své senzory vlhkosti, zjistit, který je nejvyšší, a uložit jej do proměnné. Aktuálně se spouští každou minutu, ale to lze snadno snížit. Nejprve se podívejte:

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

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

import java.lang.String

pravidlo „Monitor vlhkosti“

když Time cron '0 * * * *?'

pak

var předchozíHigh = 0

var highHum = ''

Vlhkost? .Členů.pro každý [hukot.

logDebug ('vlhkost.pravidla', jméno.hum);

if (hum.state as DecimalType> prevHigh) {

předchozíHigh = hum.state

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

}

více serverů plex na stejném počítači

]

logDebug ('vlhkost. pravidla', highHum);

postUpdate (Odvlhčovač_Needed, highHum);

konec

Jádro pravidla je v Vlhkost? .Členové. Vpřed čára. Vlhkost je název skupiny pro mé snímače vlhkosti; .členové popadne všechny položky v této skupině; pro každého iteruje nad nimi (s podivným formátem hranatých závorek, který 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í stovky příkladů pravidel:

MQTT pro OpenHAB a internet věcí

MQTT je lehký systém zasílání zpráv pro komunikaci stroj-stroj-jakýsi Twitter, aby si vaše Arduinos nebo Raspberry Pis mohly navzájem povídat (i když to samozřejmě funguje s mnohem více než jen s těmi). Rychle získává na popularitě a nachází se jako domov se zařízeními internetu věcí, což jsou obvykle mikrořadiče s nízkými zdroji, které potřebují spolehlivý způsob přenosu dat ze senzorů zpět do vašeho rozbočovače nebo přijímání vzdálených příkazů. Přesně to s tím uděláme.

Proč ale znovu objevovat kolo?

MQ Telemetry Transport byl vynalezen již v roce 1999, aby propojil ropovody prostřednictvím pomalého satelitního připojení, speciálně navrženého tak, aby minimalizoval využití baterie a šířku pásma a současně poskytoval spolehlivé poskytová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 uvolněn bez licenčních poplatků, otevřený komukoli k použití a implementaci. Máme rádi zdarma.

Možná se divíte, proč se vůbec obtěžujeme s dalším protokolem - konec konců už máme HTTP - který lze použít k odesílání rychlých zpráv mezi všemi druhy systémů připojených k webu (jako OpenHAB a IFTTT, zejména s novým kanálem výrobce) ). A měl bys pravdu. Režie zpracování serveru HTTP je však poměrně velká - natolik, že ji nemůžete snadno spustit na vestavěném mikrokontroléru, jako je Arduino (alespoň můžete, ale na nic jiného vám nezbude mnoho paměti ). MQTT je naopak lehký, takže odesílání zpráv po vaší síti nezanáší 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 zainteresovaným klientům.

Pokračujme v Twitter pro stroje ale analogie. Stejně jako uživatelé Twitteru mohou tweetovat svých nesmyslných 140 znaků a uživatelé mohou 'sledovat' ostatní uživatele, aby viděli kurátorský proud příspěvků, mohou se klienti MQTT přihlásit k odběru konkrétního kanálu a přijímat odtud všechny zprávy a také publikovat své vlastní zprávy na ten kanál. Tento vzor publikování a odběru se označuje jako hospoda / sub , na rozdíl od tradice klient-server model HTTP.

Protokol HTTP vyžaduje, abyste se obrátili na počítač, se kterým komunikujete, a řekněte „Dobrý den“, a poté se tam a tam neustále navzájem uznávali, zatímco získáváte nebo vkládáte data. U pub/sub nemusí klient provádějící publikování vědět, kteří klienti jsou přihlášeni k odběru: pouze pumpuje zprávy a broker je znovu distribuuje všem přihlášeným klientům. Každý klient může publikovat a přihlašovat se k tématům, stejně jako uživatel Twitteru.

Na rozdíl od Twitteru však MQTT není omezeno na 140 znaků. Je to agnostika dat, takže můžete posí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 je vhodnější, pokud budeme mít spoustu senzorů po celém domě a neustále se hlásit.

Je také důležité vědět, že OpenHAB nebude fungovat jako váš MQTT broker - tomu se budeme věnovat později. OpenHAB však bude fungovat jako klient: může jak publikovat váš protokol aktivit OpenHAB, tak i vázat konkrétní kanály k zařízením, takže například můžete mít přepínač, který je ovládán zprávami MQTT na konkrétním kanálu. To je ideální pro vytvoření domu plného senzorů.

Nainstalujte si Mosquitto na svůj Pi

Přestože OpenHAB obsahuje klienta MQTT, takže se můžete přihlásit k odběru tématu a také publikovat zprávy, nebude fungovat jako server. K tomu musíte buď použít webového brokera MQTT (placeného nebo bezplatného), nebo nainstalovat bezplatný software na svůj Pi. Chtěl bych to mít všechno interně, takže jsem na Pi nainstaloval Mosquitto.

Verze dostupná prostřednictvím obvyklého apt-get je bohužel zcela zastaralá. Místo toho přidejme 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 spuštěn v místní síti. Váš makléř ve výchozím nastavení běží na portu 1883.

Zkontrolujte, zda váš server MQTT funguje, pomocí bezplatného MQTT.fx, který je multiplatformní. Kliknutím na ikonu nastavení vytvořte nový profil a zadejte IP adresu nebo jméno vašeho Raspberry Pi. Uložte a připojte se. Pokud malý semafor vpravo nahoře zezelená, můžete vyrazit.

Chcete -li provést rychlý test, klikněte na kartu „Přihlásit se k odběru“ a napište inTopic / do textového pole, poté stiskněte předplatit knoflík. Nyní jste přihlášeni k odběru zpráv na téma s názvem inTopic, přestože se zobrazí 0 zpráv. Vraťte se na kartu publikování, do malého pole zadejte inTopic a do velkého textového pole níže krátkou zprávu. Udeřil Publikovat několikrát a podívejte se zpět na kartu odběru. Měli byste vidět několik zpráv, které se objevily v tomto tématu.

Než do naší sítě přidáme nějaké skutečné senzory, musíme se seznámit s úrovněmi témat, které nám umožňují strukturovat a filtrovat síť MQTT. Názvy témat rozlišují malá a velká písmena, neměly by začínat znakem $ nebo by měly obsahovat mezeru nebo znaky jiné než ASCII-standardní programovací postupy pro názvy proměnných, opravdu.

Oddělovač / označuje úroveň tématu, která je hierarchická, například následující jsou všechny platné úrovně témat.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingMístnost/teplota

myHome/livingMístnost/vlhkost

myHome/kuchyně/teplota

myHome/kuchyně/vlhkost

Už byste měli vidět, jak je tato stromová struktura ideální pro inteligentní dům plný senzorů a zařízení. Osvědčeným postupem pro použití s ​​více senzory v jedné místnosti je publikovat každou proměnnou senzoru tak, jak je to její vlastní tematická úroveň - rozvětvující se na větší specifičnost (jako v příkladech výše) - než se pokoušet publikovat více typů senzorů na stejný 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í z vyšší úrovně ve stromu.

Zástupný znak + nahrazuje libovolnou úroveň tématu. Například:

myHome/+/teplota

by si předplatil klienta pro oba

myHome/livingMístnost/teplota

myHome/kuchyně/teplota

... ale ne úrovně vlhkosti.

# Je víceúrovňový zástupný znak, takže z pole senzorů livingRoom můžete načíst cokoli pomocí:

myHome/livingRoom/#

Technicky se můžete také přihlásit k odběru kořenové úrovně #, která vám poskytne absolutně vše, co projde brokerem, ale to může být jako přilepit si požární hadici do obličeje: trochu zdrcující. Zkuste se připojit k veřejnému brokerovi MQTT z HiveMQ a přihlásit se k odběru #. Během několika sekund jsem dostal asi 300 zpráv, než můj klient právě havaroval.

Tip MQTT pro začátečníky: ' /můj domov/' 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 to může být matoucí.

Nyní, když známe teorii, pojďme se podívat na Arduino, Ethernet Shield a snímač teploty a vlhkosti DHT11 - pravděpodobně ho máte ve své startovací sadě, ale pokud ne, jednoduše vyměňte snímač prostředí za pohyb senzor (nebo dokonce tlačítko).

Publikování MQTT z Arduina 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ý vyžaduje použití síťového připojení v každé místnosti, ale slouží to k naučení základů.

Začněte stažením pubsubclient knihovna od Github . Pokud jste použili tlačítko „Stáhnout jako ZIP“, struktura je trochu špatná. Rozbalte, přejmenujte složku na just pubsubclient , poté vyjměte dva soubory z src složku a přesuňte je o úroveň výš 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 přizpůsobit : výstup signálu DHT11 je na pinu 7. Na následujícím řádku změňte IP serveru pro IP vašeho Pi:

client.setServer ('192.168.1.99', 1883);

Jeho přátelský název 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šený a přidání kódu pro pojmenování Bonjour by znamenalo spoustu paměti, kterou nechceme ztrácet. Chcete -li změnit témata, na kterých se vysílají data ze senzorů, přejděte dolů na tyto řádky:

char buffer [10];

dtostrf (t, 0, 0, vyrovnávací paměť);

client.publish ('openhab/himitsu/temperature', buffer);

dtostrf (h, 0, 0, vyrovnávací paměť);

client.publish ('openhab/himitsu/vlhkost', vyrovnávací paměť);

Kód také zahrnuje předplatné kanálu příkazů. Najděte 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 odesláním příkazů na konkrétní kanály. V ukázkovém kódu jednoduše odešle zprávu potvrzující přijetí příkazu.

Nahrajte svůj kód, zapojte Arduino do sítě a pomocí MQTT.fx se přihlaste k odběru jednoho z nich # nebo openhab / himitsu / # (nebo cokoli, co jste změnili na název místnosti, ale nezapomeňte na konci přidat #). Brzy byste měli vidět přicházející zprávy; a pokud odešlete ZAPNUTO nebo VYPNUTO do tématu příkazu, uvidíte také potvrzení.

Vazba MQTT pro OpenHAB

Posledním krokem v rovnici je připojit to do OpenHAB. K tomu samozřejmě potřebujeme vazbu.

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

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

A upravením konfiguračního souboru povolte vazbu.

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

mqtt: broker.clientId = openhab

Restartujte OpenHAB

restartování služby sudo openhab

Poté přidáme jednu nebo dvě položky:

/ * Senzory MQTT */

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

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

Teď už byste měli rozumět formátu; dostává a Číselná položka z vazby MQTT na zadané téma. Toto je jednoduchý příklad, možná budete chtít odkázat na wiki stránku, kde to je může být mnohem složitější .

Blahopřejeme, nyní máte základ levného senzorového pole na bázi Arduina. V budoucnu to přehodnotíme a umístíme Arduino do vlastní zcela oddělené RF sítě. Také jsem vytvořil identickou verzi pro desky Wizwiki 7500 pokud náhodou některý z nich máte.

Perzistence a grafy dat

Nyní jste pravděpodobně nastavili spoustu senzorů, ať už z Z-Wave nebo vlastních Arduinos s MQTT-takže si můžete kdykoli zobrazit aktuální stav těchto senzorů a měli byste také reagovat na jejich hodnotu v pravidlech. Zajímavé na hodnotách senzorů je obecně to, že se v průběhu času mění: tam přichází vytrvalost a grafy. Vytrvalost v OpenHAB znamená ukládání dat v průběhu času. Pojďme do toho a nastavme RRD4J (Round Robin Database pro Javu), takzvaně proto, že data se ukládají způsobem každý s každým - starší data se zahodí, aby se zmenšila velikost databáze.

Nainstalujte balíčky rrd4j pomocí následujících příkazů.

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 {

// zachovat vše, když je hodnota aktualizována, pouze výchozí, a obnovit je z databáze při spuštění

*: strategy = everyChange, restoreOnStartup

// dále definujeme konkrétní strategie everyHour pro cokoli ve skupině Temperature a každou minutu pro Humidity

jak mohu zrušit svůj kindle neomezeně

Teplota*: strategie = každou hodinu

Vlhkost*: strategie = každý minuta

// alternativně zde můžete přidat konkrétní položky, například

// Ložnice_Vlhkost, JamesInOffice: strategy = everyMinute

}

V první části tohoto souboru definujeme strategie, což znamená pouze pojmenovat výraz CRON. To je stejné, jako jsme to již udělali s My.OpenHAB, ale tentokrát vytvoříme několik nových strategií, které můžeme použít každý den, každou hodinu a každou minutu. Ještě jsem je všechny nepoužil, ale v budoucnu možná budu.

V druhé polovině souboru řekneme rr4dj, jaké hodnoty dat uložit. Ve výchozím nastavení budeme ukládat vše pokaždé, když se aktualizuje, ale také jsem specifikoval některé časové strategie pro konkrétní senzory. Teploty, které mě příliš netrápí, jsem nastavil tak, aby šetřily pouze každou hodinu, ale vlhkost je pro mě velkým problémem, takže chci vidět, jak se každou minutu mění. Pokud existují další data, která chcete konkrétně uložit ve stanovených časech, přidejte je sem nyní nebo je upravte podle potřeby.

Poznámka: Pokud chcete data také grafovat, MUSÍTE je ukládat alespoň jednou za minutu. Nezáleží na tom, jestli jsou vaše data ze senzorů dokonce rychle aktualizována, stačí říct rr4dj, aby je ukládala jednou za minutu.

Když je to definováno, měli byste začít vidět nějaký výstup ladění, který vám řekne, že se ukládají hodnoty.

Další, pojďme udělat nějaké hezké grafy všech těchto dat. Je to opravdu snadné. Chcete -li vytvořit graf jednotlivého senzoru, přidejte do mapy svého webu následující:

Položka grafu = Ložnice_Vlhkost = h

To je doslova vše, co potřebujete. Platné hodnoty pro 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í zadáno, je výchozí hodnota D pro celý den dat.

Chcete -li vytvořit graf s více položkami, jednoduše namalujte název skupiny:

Položka grafu = Období vlhkosti = h

Také by vás mohlo zajímat, že tento graf můžete použít i jinde; generuje obrázek pomocí následující adresy URL: http: // YOUROPENHABURL: 8080/chart? groups = Vlhkost & období = h

Jak je Vaše Chystá se systém OpenHAB?

To je pro tuto splátku průvodce vše, ale nečekejte, že to bude naposledy, co o nás uslyšíte o OpenHAB. Naštěstí vám toto a průvodce pro začátečníky poskytly solidní základy pro vývoj vašeho vlastního kompletního systému OpenHAB - ale je to proces, který nikdy není úplně dokončen.

OpenHAB se naštěstí může dobře škálovat od několika zařízení po stovky, od jednoduché složitosti pravidel až po dokonalou automatizaci domácnosti - jak si tedy váš systém vede? Která zařízení jste vybrali? Jaký další velký projekt budete řešit?

Promluvme si v komentářích - a pokud se vám tato příručka zdá užitečná, klikněte na tato tlačítka sdílení a řekněte svým přátelům, jak si také mohou nastavit vlastní systém OpenHAB.

Doufáme, že se vám budou líbit položky, které doporučujeme a diskutujeme! Společnost MUO má partnerská a sponzorovaná partnerství, takže dostáváme část příjmů z některých vašich nákupů. To neovlivní cenu, kterou zaplatíte, a pomůže nám to nabídnout nejlepší doporučení produktů.

Podíl Podíl tweet E-mailem Průvodce pro začátečníky k animované řeči

Animační řeč může být výzva. Pokud jste připraveni začít s přidáváním dialogu do svého projektu, proces za vás rozdělíme.

Číst dále
Související témata
  • DIY
  • Chytrý domov
  • Arduino
  • Automatizace domácnosti
  • Dlouhá forma
  • Longform Guide
O autorovi James Bruce(707 článků zveřejněno)

James má bakalářský titul v oboru umělé inteligence a je certifikován společností CompTIA A+ a Network+. Když není zaneprázdněn jako editor recenzí hardwaru, rád si hraje s LEGO, VR a deskovými hrami. Před nástupem do MakeUseOf byl osvětlovacím technikem, učitelem angličtiny a technikem datového centra.

Více od Jamese Bruce

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru