Hirdetés

Az ingyenes nem mindig azt jelenti, hogy „nem olyan jó, mint fizetett”, és az OpenHAB sem kivétel. A nyílt forráskódú otthoni automatizálási szoftver messze meghaladja a piacon lévő bármely más otthoni automatizálási rendszer képességeit - de a telepítése nem könnyű. Valójában egyenesen frusztráló lehet.

Ez az útmutató ingyenes PDF formátumban tölthető le. Töltse le az OpenHAB kezdő útmutatójának 2. részét: ZWave, MQTT, szabályok és diagramok most. Nyugodtan másolhatja és megoszthatja ezt barátaival és családjával.

Az útmutató 1. részében áttekinttem az OpenHAB telepítése egy Raspberry Pi-re Az OpenHAB otthoni automatizálás első lépései a Raspberry Pi készülékenAz OpenHAB egy érett, nyílt forrású otthoni automatizálási platform, amely különféle hardverekkel működik és van Agnostic Protocol, azaz csatlakozhat szinte bármilyen otthoni automatizálási hardverhez a piacon Ma. Olvass tovább bevezette az OpenHAB alapfogalmait, és megmutatta, hogyan kell felvenni az első elemeket a rendszerbe. Ma tovább megyünk:

instagram viewer
  • ZWave eszközök hozzáadása
  • A Harmony Ultimate vezérlő hozzáadása
  • Bemutatjuk a szabályokat
  • Bemutatjuk az MQTT-t, és telepítünk egy MQTT-brókert Pi-jére, érzékelőkkel egy Arduino-ra
  • Adatok rögzítése és ábrázolása

Bevezetés a Z-Wave-ba

A Z-Wave évek óta a domináns otthoni automatizálási protokoll: megbízható, széles körben kifejlesztett és sokkal tágabb tartományban működik, mint bármely más intelligens otthoni termék. Több száz Z-Wave érzékelő áll rendelkezésre, amelyek széles körű feladatokat látnak el. OpenHAB tud dolgozzon a Z-Wave-lal, de a telepítés nehézség, és a megbízhatóság nem garantált.

Ha mérlegeli egy olyan ház megvásárlását, amely tele van Z-Wave érzékelőkkel, kifejezetten az OpenHAB-hoz való használatra, sürgetem, hogy fontolja meg újra. Lehet, hogy nagyszerűen működik az Ön számára, vagy káros lehet apró, de tartós problémákkal. Legalább ne vásároljon szenzorokkal teli házat, amíg nem volt lehetőséged kipróbálni néhányat. A Z-Wave kiválasztásának egyetlen oka az, ha nem 100% -ban települt az OpenHAB-ba, és a jövőben szeretné nyitni a lehetőségeket: például a Z-Wave Samsung SmartThings Melyik intelligens központ az otthoni automatizáláshoz a legmegfelelőbb?Az emberek egy ideig a gondolatról nem más, mint egy trükköt gondoltak, de a közelmúltban megjelenő termékjelentések azt mutatták, hogy az intelligens otthoni automatizálás kezdi teljesíteni ígéretét. Olvass tovább hub, valamint a Z-Wave specifikus hubok, például a Homeseer, és számos más szoftver opció, például Domoticz.

Noha az OpenHAB tartalmaz Z-Wave kötést, mégis meg kell tennie először konfigurálja a Z-Wave hálózatot, mielőtt az OpenHAB megkezdi az adatok lekérdezését. Ha van Rasberry vezérlőkártyája, akkor van valamilyen szoftver a hálózat konfigurálásához, így ezt nem fogjuk lefedni. Ha vásárolt egy Aeotec USB Z-Stick vezérlőt vagy hasonlót, valószínűleg nincs benne szoftver, ezért olvassa tovább.

Aeotec Z-Stick Gen5, Z-Wave Plus USB az átjáró létrehozásáhozAeotec Z-Stick Gen5, Z-Wave Plus USB az átjáró létrehozásához Vásároljon most az Amazonon $44.95

Ha már rendelkezik Z-Wave hálózattal, csak csatlakoztassa a vezérlőt a Pi-hez, és elindíthatja a kötés és az elemek konfigurálását. Ha ez az első csapás a Z-Wave-ba, akkor ez egy kicsit összetettebb.

Először: a hardver oldaláról: minden vezérlőnek megvan a maga módja az eszközök párosításához (technikai néven „beillesztési mód”, amelyben egy csomópont-azonosítót rendelnek). Az Aotec Z-Stick esetében ez azt jelenti, hogy húzza ki az USB portból, és egyszer nyomja meg a gombot, hogy beillesztési üzemmódba kerüljön. Ezután vigye közel a párosítandó eszközhöz, és nyomja meg is a beillesztési gombot (ez szintén változhat: az Everspring aljzathoz a gomb gyors egymás utáni 3-szor történő megnyomására van szükség, tehát itt az a lecke az, hogy olvassa el a készülék kézikönyvét).

A Z-Stick rövid ideig villog, hogy jelezze a sikert. Ez problémákat okoz, amikor visszadugja a Pi-hez, mivel új port van hozzárendelve. Indítsa újra a Pi-t, hogy visszaállítsa a normál portra, ha azt találja, hogy egy másikhoz dinamikusan van hozzárendelve. Még ennél is jobb: ne dugja be a Pi-be, amíg az összes hardverpárosítást előbb nem végezte el.

A HABmin és a Z-Wave kötések telepítése

Mivel az OpenHAB valójában nem a Z-Wave konfigurációs segédprogramja, telepíteni fogunk egy másik webkezelő eszközt, amely ezt megteszi - valamit HABmin néven. Menj tovább a HABmin Github tároló töltse le az aktuális kiadást. Miután kicsomagolta, megtalálja a 2-et .befőttes üveg fájlok az addons könyvtárban - ezeket a megfelelő addons könyvtárba kell helyezni az OpenHAB Home megosztásában (ha az Aotec gen5 Z-Stick-ot is használja, akkor ellenőrizze, hogy rendelkezik legalább a Z-Wave kötés 1.8-as verziójával).

Ezután hozzon létre egy új mappát a webapps könyvtárban, és azt „habmin” -nek hívja (kisbetűkkel fontos). Másolja át a letöltött fájlok fennmaradó részét oda.

Megjegyzés: Van egy a HABmin 2 aktív fejlesztés alatt áll. A telepítés nagyjából ugyanaz, de egy további .jar kiegészítéssel. Érdemes lehet kipróbálni mindkettőt, csak hogy megnézze, melyiket részesíti előnyben.

Ha még nem tette meg, csatlakoztassa a vezérlőt a Pi-hez. Írja be a következőt a megfelelő port megtalálásához.

ls / dev / tty *

Bármit keres az USB-vel a nevében, vagy az én esetemben a Z-stick a következőként mutatta be magát /dev/ttyACM0 (egy modem). Lehet, hogy könnyebb végrehajtani a parancsot egyszer, mielőtt bedugná, és egyszer aztán, így láthatja, hogy mi változtat, ha nem biztos benne.

devtty

Nyissa meg az OpenHAB konfigurációs fájlt, és módosítsa a Z-Wave fejezetet, mindkét sort megjegyzés nélkül, és megadva az eszköz tényleges címét. Az utolsó lépés számomra az volt, hogy lehetővé tegyem az OpenHAB felhasználó számára a modem elérését.

sudo usermod -a -G párbeszédpanel openhab

Most, hogy mindent cselekedjen, indítsa újra az OpenHAB-ot

sudo service openhab restart

Remélhetőleg, ha ellenőrzi a hibakeresési naplót, akkor valami ilyesmit fog látni. Gratulálok, most a Z-Wave-ról beszélsz. Előfordulhat, hogy a hibakeresési naplót elárasztják a különféle Z-Wave csomópontok üzenetei. Kezdjük azzal, hogy ellenőrizzük a HABMIN-et, hogy kiderítse, mit talált: http://openhab.local: 8080 / habmin / index.html (az openhab.local helyettesítése a Raspberry Pi gazdagépnévvel vagy IP-címmel).

A zwave indítása openhab naplóban

Még sok látnivaló van a HABMIN-ben, de valójában csak a Konfiguráció -> Kötések -> Z-Wave -> Eszközök fül, amint az alább látható. Bontsa ki a csomópontot a hely- és névcímke szerkesztéséhez az egyszerűbb hivatkozás érdekében.

szerkessze az eszköz nevét

A Z-Wave elemek konfigurálása

Minden Z-Wave eszköznek saját konfigurációja lesz az OpenHAB számára. Szerencsére a legtöbb eszközt már felfedezték, és ott lesz példák a tiédre is. A nem felismert egyéni eszközök konfigurálása jóval túlmutat ezen útmutató keretein, de tegyük fel, hogy most támogatjuk.

Először is van egy alapvető Everspring AN158 hálózati kapcsolóm és mérőm a 3. csomóponton. A gyors Google-ok egy blogbejegyzéshez vezettek a Wetwa.re webhelyen, egy mintaelem-konfigurációval. Ezt a következőképpen adaptáltam:

Kapcsolja ki a párátlanító_kapcsolót "Párátlanító" {zwave = "3: command = switch_binary"} Szám Dehumidifier_Watts "Párátlanító energiafogyasztása [% .1f W]" {zwave = "3: command = meter"}

Tökéletes.

Következő lépésként egy Aeotec Gen5 multi-szenzor található.

Aeon Labs Aeotec Z-Wave Gen5 többérzékelő (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 többérzékelő (Z-Wave Plus) Vásároljon most az Amazonon $69.27

Ehhez a következő helyen találtam egy mintakonfigurációt iwasdot.com, és a multiszenzorom a 2. csomóponton van.

Szám Folyosó_hőmérséklet "Folyosó hőmérséklete [% .1f ° C]" (Folyosó, hőmérséklet) {zwave = "2: 0: parancs = sensor_miltilevel, sensor_type = 1, sensor_scale = 0"} Szám Folyosó_páratartalom "Folyosó páratartalma [% .0f %%]" (Folyosó, Páratartalom) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 5"} Szám Folyosó_világítás "Folyosó fényereje [% .0f Lux]" (Előszoba) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 3"} Vegye fel a kapcsolatot a folyosó_mozgatásával: "Előszoba mozgása [% s]" (Előszoba, mozgás) {zwave = "2: 0: command = sensor_binary, respon_to_basic = true"} Szám-érzékelő_1_ akkumulátor "Akkumulátor [% s %%]" (mozgás) {zwave = "2: 0: command = battery"}

Ha ez a formátum furcsának tűnik számodra, kérjük, térjen vissza az elsőre kezdő útmutató Az OpenHAB otthoni automatizálás első lépései a Raspberry Pi készülékenAz OpenHAB egy érett, nyílt forrású otthoni automatizálási platform, amely különféle hardverekkel működik és van Agnostic Protocol, azaz csatlakozhat szinte bármilyen otthoni automatizálási hardverhez a piacon Ma. Olvass tovább , különösképp a Színárnyalat-kötés szakaszt, ahol elmagyarázom az elemek hozzáadásának módját. Valószínűleg csak ilyen példányokat kell másolnia, mint például ilyen, de ha van új eszköz, akkor a kötelező dokumentáció részletezi az összes parancsok.

Logitech Harmony kötés

Mielőtt belekezdenénk a szabályokba, szeretnék egy gyors megjegyzést fűzni a Harmony kötésével kapcsolatos munkához. Nagy rajongó vagyok a A harmonikus sorozat a végső távirányítókról A Logitech Harmony Ultimate áttekintése és átadásaNappali szobája káosz - elismerje be. Bocsánatot kap, hogy azon tűnődsz, melyik távirányítót melyik készüléket használja. Mi lesz a TV-vel, erősítővel, TiVO-val, BluRay lejátszóval, talán még a világítással is - a kapcsolási tevékenységek hosszúak lesznek ... Olvass tovább az otthoni médiaközpont élményének egyszerűsítése érdekében, de gyakran különálló rendszerként működnek az intelligens otthonban. Az OpenHAB használatával a Logitech Harmony tevékenységei és a teljes eszközvezérlés a központi rendszer része lehet, és akár az automatizálási szabályokban is szerepelhetnek.

Kezdje a három kötõfájl telepítésével, amelyet az apt-cache segítségével talál a „harmónia” keresésére:

openhab apt-cache a harmonikus kötés keresése

Ne felejtsd el chown a kötéskönyvtár újra, ha kész:

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

A kötés konfigurálásához nyissa meg az openhab.cfg fájlt, és adjon hozzá egy új részt az alábbiak szerint:

########## HARMONIA TÁVVEZÉRLŐK ########### harmonyhub: host = 192.168.1.181vagy az ip
harmonyhub: felhasználónév =A harmónia-email-bejelentkezés
harmonyhub: jelszó =a jelszavad

Az IP-cím a Harmony hub címe. Használja ezt egy hálózati szkennerrel. Meg kell adnia a bejelentkezési adatait is, azokat, amelyeket a szokásos Harmony konfigurációs segédprogram elindításakor ad meg. Ez az. A Hue újraindításakor a hibakeresési naplónak hirtelen megjelennie kell a kötésből.

Ez az elküldhető tevékenységek, eszközök és parancsok JSON formátumú listája. Ez egy jó ötlet, hogy ezt másolja ki későbbi referencia céljából. még egyszerűbbé teheti az összecsukható csomópontok olvasását, ha beilleszt egy online JSON-formázóba mint ez.

json formátumú openhab kimenet

A szokásos alapértelmezett PowerOff-tevékenységek mellett az itt felsorolt ​​saját nevezett tevékenységeket is megtalálja. Hozzunk létre egy egyszerű, egygombos vezérlőt a tevékenységek elindításához. Először az elemfájlban adja hozzá a következő sort. Változtassa meg a csoportot és az ikont, ha úgy tetszik.

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

Ez egy kétirányú húros kötés, amely képes mind az aktuális tevékenység lekérésére, mind pedig az utasítás megadására, hogy az aktuális tevékenység legyen valami más. Most létrehozhatunk egy gombot ehhez a sitemap fájlban.

Tétel váltása = Harmony_Activity mappings = [PowerOff = 'Ki', Gyakorlat = 'Gyakorlat', 13858434 = 'TV', Karaoke = 'Karaoke']

A szögletes zárójelben minden tevékenységet látni fog a címkével együtt. Általában közvetlenül hivatkozhat a tevékenységekre, amikor a távvezérlőn megnevezte őket, de ez alól a kivétel, amit találtam, bármi tartalmazott helyet a tevékenység nevében, például a „TV-nézés”. Ebben az esetben a tevékenység azonosítóját kell használnia. Ismét megtalálhatja az azonosítót a JSON hibakeresési kimeneten. Mentse el és frissítse a felületet, látnia kell ehhez hasonlót:

openhab harmónia a webhelytérképben

A szabályokban szereplő tevékenységekre is hivatkozhat, amint azt a következőkben látjuk. Olvassa el a wiki oldalt további információkért a Harmónia kötelező.

Általános bevezetés a szabályokba

A legtöbb intelligens otthoni hub tartalmaz valamilyen szabály létrehozását, így automatikusan reagálhat az érzékelő adatokra és az otthoni eseményekre. Valójában azt állítom, hogy egy valóban okos otthonnak nem kell időt töltenie a mobil alkalmazásokkal való interakcióra - ez egy olyan, amely a végfelhasználó számára láthatatlan és teljesen automatizált. Ebből a célból az OpenHAB tartalmaz egy nagy teljesítményű szabály-parancsfájl-nyelvet, amelyet programozhat, messze meghaladva a legtöbb bonyolultságot intelligens otthoni csomópontok Az intelligens otthoni csomók csata: mi van odakint és mi jön? Olvass tovább vagy IFTTT receptek Az IFTTT most bármihez csatlakozik: Bemutatjuk a Maker csatornátAz IFTTT lehetséges felhasználásai végtelenek. De eddig nehéz volt interfészbe helyezni a saját hardverprojekteivel. Ma ez mind megváltozott. Olvass tovább .

A programozási szabályok rosszabbnak hangzik, mint amilyen. Kezdjük az egyszerű szabályokkal, amelyek a jelenlét-érzékelőtől függően be- vagy kikapcsolják a fényt:

szabály: "Iroda világít, amikor James jelen van" amikor a JamesInOffice elem KI állásból BE állásba vált. majd sendCommand (Office_Hue, ON) végszabály: "Irodai világítás kialszik, amikor James távozik" amikor a JamesInOffice elem ON-ról OFF-ra vált. majd sendCommand (Office_Hue, OFF) vég

Először nevet adunk a szabálynak - legyen leíró, tehát tudja, melyik esemény lő. Ezután az egyszerű szabályt mondjuk Ha x igaz, akkor tegye y-t. A vége az adott szabály lezárását jelenti. Számos speciális szavak használhatók a szabályokban, de most két egyszerű szintaxis bittel foglalkozunk - Tétel, amely lehetővé teszi valami állapotának lekérdezését; és sendCommand, amely pontosan azt teszi, amit gondolsz. Mondtam, hogy ez könnyű.

Valószínűleg felesleges egy pár szabályt használni, de mivel a logikám bonyolultabbá válik, hasznos lenne, ha elkülönítjük őket attól, hogy a területre való belépés vagy onnan való távozás - és jó ötlet lehet, ha valamelyik fényérzékelőt felveszik az egyenletbe, hogy szükségtelenül ne kapcsoljuk be Lámpák.

Nézzünk meg egy másik példát egy ütemezett szabály létrehozására.

„Minden reggel gyakorolj” szabály amikor a Time cron "0 0 8 1/1 *? *" majd harmonyStartActivity ("gyakorlat") véget.

Megismételtük a szabályt, az állapot feltételeit, amikor az induljon, és a teendőket. De ebben az esetben az időmintát definiáljuk. Az idézetekben látható vicces kód a Quartz Scheduler CRON kifejezése (a formátum kissé eltér a normál CRONtab-tól). használtam cronmaker.com hogy segítsen a kifejezés létrehozásában, de elolvashatja a [Nincs már elérhető] formátum útmutatót is, amely részletes magyarázatot és további példákat tartalmaz.

cron generátor
A CronMaker.com a helyesen formázott Cron kifejezést hozta létre

A szabályaim egyszerűen azt mondják: „Minden reggel 8-kor, a hét minden napján mondd meg a Harmony Ultimate rendszeremnek, hogy indítsa el az edzéstevékenységet”, amely aktiválja a TV-t, az Xbox-ot, az erősítőt, és egy perc múlva megnyomja az A gombot, hogy elindítsa a lemezt a meghajtóban.

Sajnos az OpenHAB még nem tudja megtenni a gyakorlatomat értem.

Még egy szabály, amelyet meg akarok mutatni neked, valami olyasmit, amelyet otthonom nedvességtartalmának kezelésére használok. Van egy párátlanító, amelyet mindenhol el kell mozgatnom, tehát úgy döntöttem, hogy megnézem az összes páratartalom-érzékelőt, megkeresem a legmagasabbat, és ezt egy változóban tárolom. Jelenleg minden percben aktiválódik, de könnyen leengedhető. Vessen egy pillantást először:

import org.openhab.core.library.types. * import org.openhab.model.script.actions. * import java.lang. Húrszabály "Páratartalom figyelő" amikor a Time cron "0 * * * *?" akkor var prevHigh = 0 var highHum = "" Páratartalom? .members.forEach [hum | logDebug ("páratartalom.szabályok", hum.név); if (hum.state mint DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("isture.rules ", highHum); postUpdate (párátlanító_szükséglet, highHum); véget.

A szabály lényege a Páratartalom? .Members.foreach vonal. A páratartalom a páratartalom-érzékelőim csoportneve; .members megragadja a csoport összes elemét; az egyes ismétlődik rajtuk (egy furcsa szögletes zárójel formátumban, amelyben Ön valószínűleg nem ismeri). A szabályok szintaxisa az Xtend származéka, tehát elolvashatja a Xtend dokumentáció ha nem talál példát az alkalmazkodásra.

Valószínűleg nem is kell, de több száz példaszabály van odakint:

  • A szabályok részletes magyarázata a hivatalos wikiben
  • Az hivatalos szabályok mintái wiki oldal
  • Szabályok átvétele új magasságokba
  • Speciális minták az IngeniousFool.net webhelyen

MQTT az OpenHAB és a tárgyak internete számára

Az MQTT egy könnyű üzenetküldő rendszer a gépek közötti kommunikációhoz - egyfajta Twitter az Ön számára Arduinos vagy Raspberry Pis, hogy beszélgethessenek egymással (bár természetesen sokkal többet működik, mint pusztán azok). Gyorsan népszerűsíti és otthonát találja a tárgyak internete eszközeivel, amelyek jellemzően alacsonyak erőforrás-mikrovezérlők, amelyeknek megbízható módszerre van szükségük az érzékelő adatok visszajuttatásához az elosztóhoz vagy a távvezérlő fogadására parancsokat. Pontosan ezt fogjuk csinálni vele.

De miért találta fel újra a kereket?

Az MQ Telemetry Transport-et 1999-ben találták fel, hogy lassú műholdakon keresztül csatlakozzanak az olajvezetékekhez csatlakozások, amelyeket kifejezetten az akkumulátor és a sávszélesség minimalizálására terveztek, miközben továbbra is megbízhatóak adattovábbítás. Az évek során a tervezési alapelvek ugyanazok maradtak, de a használati eset a speciális beágyazott rendszerektől az általános tárgyak internetes eszközeire vált. 2010-ben a jegyzőkönyvet ingyenesen adták ki, bárki számára hozzáférhető és felhasználható. Szeretjük ingyen.

Kíváncsi lehet, miért zavarunk még egy újabb protokollt - elvégre már rendelkezünk a HTTP-vel -, amely képes gyors üzenetek küldésére használható mindenféle webes rendszerhez csatlakoztatott rendszer között (mint például az OpenHAB és az IFTTT, különösen az új rendszerekkel) készítő csatorna Az IFTTT most bármihez csatlakozik: Bemutatjuk a Maker csatornátAz IFTTT lehetséges felhasználásai végtelenek. De eddig nehéz volt interfészbe helyezni a saját hardverprojekteivel. Ma ez mind megváltozott. Olvass tovább ). És igazad lenne. A HTTP-kiszolgáló feldolgozási költségei viszont meglehetősen nagyok - annyira, hogy nem könnyedén futtathat egyet egy beágyazott mikrovezérlő, mint például az Arduino (legalábbis megteheti, de nincs sok memóriája semmire más). Az MQTT ugyanakkor könnyű, így az üzenetek hálózaton keresztüli küldése nem torzítja el a csöveket, és könnyen beilleszthető az Arduino kis memóriaterületünkbe.

Hogyan működik az MQTT?

Az MQTT kiszolgálóra („brókernek” neve) és egy vagy több kliensre is szükség van. A szerver közvetítőként működik, üzeneteket fogad és továbbítja azokat minden érdeklődő ügyfélnek.

Folytassuk a Twitter-for-gépek analógia azonban. Csakúgy, mint a Twitter felhasználók tweettelhetik saját értelmetlen 140 karakterüket, a felhasználók pedig „követhetik” a többi felhasználót, hogy lássa a kurzált üzenetfolyamokat, Az MQTT ügyfelek feliratkozhatnak egy adott csatornára, hogy onnan minden üzenetet fogadhassanak, és közzétehessék saját üzeneteiket csatorna. Erre a közzétételi és feliratkozási mintára hivatkozunk pub / sub, ellentétben a hagyományokkal kliens / szerver HTTP modell.

A HTTP megköveteli, hogy keresse meg azt a gépet, amellyel kommunikál, mondjuk Helló, majd oda-vissza folyamatosan elismerje egymást, miközben adatokat gyűjt vagy terjeszt. A pub / sub szolgáltatással a közzétételt végző kliensnek nem kell tudnia, melyik előfizetőt előfizette: csak kiszivárogja az üzeneteket, és a bróker újraelosztja azokat az összes feliratkozott ügyfél számára. Bármely ügyfél közzétehet és feliratkozhat témákra, akárcsak egy Twitter-felhasználó.

A Twittertel ellentétben az MQTT nem korlátozódik 140 karakterre. Ez az adat agnosztikus, így kis számot vagy nagy szöveges blokkot, JSON-formátumú adatábrákat, akár képeket és bináris fájlokat küldhet.

Nem az, hogy az MQTT mindennél jobb, mint a HTTP - de az jelentése megfelelőbb, ha a ház körül sok érzékelőnk lesz, folyamatosan jelentkezünk.

Fontos tudnunk, hogy az OpenHAB nem fogja az MQTT-brókered lenni - erre később foglalkozunk. Az OpenHAB ugyanakkor ügyfélként fog működni: képes közzétenni az OpenHAB tevékenységi naplóját, és külön-külön is megkötheti csatornákat eszközre, tehát rendelkezhet egy kapcsolóval, amelyet egy adott MQTT üzenetek vezérlhetnek csatorna. Ez ideális egy érzékelőkkel teli ház létrehozásához.

Telepítse a Mosquitto-t a Pi-jére

Noha az OpenHAB tartalmaz MQTT klienst, így feliratkozhat egy témára, és üzeneteket is közzétehet, nem fog kiszolgálóként működni. Ehhez használnia kell egy webalapú MQTT brókert (fizetett vagy ingyenes), vagy telepítenie kell az ingyenes szoftvert a Pi-re. Szeretném, ha mindezt házon belül tartanám, ezért telepítettem a Mosquitto-t a Pi-re.

Sajnos a szokásos apt-get-n keresztül elérhető verzió teljesen elavult. Ehelyett tegyük fel a legújabb forrásokat.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key add 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.

Ehhez csak annyit kell tennünk, hogy az MQTT szerver működjön és működjön a helyi hálózaton. Brókerje alapértelmezés szerint az 1883-as porton fut.

Ellenőrizze, hogy az MQTT szervere működik-e az ingyenes MQTT.fx használatával, amely platformokon átnyúló. Kattintson a beállítások ikonra egy új profil létrehozásához, majd írja be a Raspberry Pi IP-címét vagy nevét. Mentés, és nyomja meg a connect. Ha a jobb felső sarokban lévő kis lámpa zöldre vált, akkor jó menni.

mqttfx példa profil

A gyors teszthez kattintson az „előfizetés” fülre, és írja be inTopic / a szövegmezőbe, majd nyomja meg a Iratkozz fel gomb. Most feliratkoztál arra, hogy üzenetet kapjon az inTopic elnevezésű témában, bár 0 üzenet jelenik meg. Menjen vissza a közzététel lapra, írja be az inTopic mezőt a kicsi mezőbe, és egy rövid üzenetet az alábbi nagy mezőbe. Találat közzétesz néhányszor, és nézz vissza a feliratkozás fülre. Látnia kell néhány üzenet megjelenését a témában.

inTopic MQTT teszt

Mielőtt hozzáadunk néhány tényleges érzékelőt a hálózatunkhoz, meg kell tanulnunk a témaszinteket, amelyek lehetővé teszik az MQTT-hálózat felépítését és szűrését. A témanevek kis- és nagybetűket érzékenyek, nem kezdődhetnek meg a dollárral, nem tartalmazhatnak szóközt vagy nem ASCII karaktereket - valójában a változónevek szokásos programozási gyakorlata.

A / elválasztó jelzi a témaszintet, amely hierarchikus, például a következők mind érvényes témaszintek.

inTopic / smallSubdivision / evenSmallerSubdivision. Myhome / nappali / hőmérséklet. Myhome / nappali / páratartalom. Myhome / konyha / hőmérséklet. Myhome / konyha / páratartalom

Már látnia kellene, hogy ez a faszerkezet tökéletes-e egy intelligens otthonhoz, tele érzékelőkkel és eszközökkel. A helyiségben több érzékelővel történő alkalmazás esetén a legjobb gyakorlat az, hogy minden érzékelő-változót a saját témájuk szintjén tegyen közzé - inkább specifikussá válik (mint a fenti példákban) - ahelyett, hogy megpróbálna többféle érzékelőt közzétenni ugyanazon csatorna.

Az ügyfelek ezután tetszőleges számú egyedi szintű szintet közzétehetnek vagy feliratkozhatnak, vagy használhatnak speciális helyettesítő karaktereket a fa magasabb szintjéből történő szűréshez.

A + helyettesítő karakterek helyettesítik bármelyik témát. Például:

Myhome / + / hőmérséklet

feliratkozná az ügyfelet mindkettőre

Myhome / nappali / hőmérséklet. Myhome / konyha / hőmérséklet

… De nem a páratartalom.

A # egy többszintű helyettesítő karakter, így bármit beolvashat a livingRoom érzékelő tömbből:

Myhome / nappali / #

Technikailag is feliratkozhat a gyökér szintre #, amely segítségével mindent megtehetsz áthalad a brókeren, de ez olyan lehet, mintha tűztömlőt ragadt volna az arcodba: egy kicsit túlnyomó. Próbáljon meg csatlakozni a HiveMQ nyilvános MQTT-brókerjéhez, és iratkozzon fel a # -ra. Körülbelül 300 üzenetet kaptam néhány másodperc alatt, mielőtt az ügyfelem csak összeomlott.

MQTT kezdő tipp: “/myHome/” más téma, mint a „az otthonom/" - ha egy elején szerepel egy perjel, akkor létrehoz egy üres témát, amely műszakilag érvényes, de nem ajánlott, mert zavaró lehet.

Most, hogy tudjuk az elméletet, menjünk egy Arduino-val, Ethernet pajzsmal és egy DHT11 hőmérséklet- és páratartalom-érzékelővel - valószínűleg van ilyen az indítókészletben, de ha nem, cserélje ki a környezeti érzékelőt egy mozgásérzékelőre (vagy akár egy gomb).

MQTT közzététele egy Arduino-tól, Ethernet csatlakozással

Ha van hibrid Arduino-kompatibilis eszköz, beépített Wi-Fi-vel vagy Ethernet-kel, akkor ennek is működnie kell. Végül jobb / olcsóbb kommunikációs módszert akarunk, amelyhez minden szobában hálózati kapcsolatot kell használni, de ez az alapok megtanulását szolgálja.

Kezdje a letöltéssel pub publói könyvtár a Githubtól. Ha a „Letöltés ZIP formátumban” gombot használja, a szerkezet kissé hibás. Csomagolja ki, nevezze át a mappát igazságosnak pubsubclient, majd vegye ki a két fájlt a src mappát, és mozgassa őket egy szinttel feljebb a letöltött mappa gyökeréhez. Ezután helyezze át az egész mappát a mappájába Arduino / könyvtárak Könyvtár.

Íme a példakód, amelyet adaptálhat: a DHT11 jel kimenet a 7. érintkezőn van. Módosítsa a Pi kiszolgáló IP-jét a következő sorban:

client.setServer ("192.168.1.99", 1883);

Sajnos nem használhatjuk barátságos nevét (Az én esetemben az OpenHAB.local) mivel az Arduino TCP / IP verem nagyon egyszerű és a Bonjour elnevezéshez szükséges kód hozzáadása sok memória, amelyet nem akarunk pazarolni. Az érzékelő adatok sugárzott témájának megváltoztatásához görgessen le az alábbi sorokra:

char puffer [10]; dtostrf (t, 0, 0, puffer); client.publish ( "openhab / himitsu / hőmérséklet", puffer); dtostrf (h, 0, 0, puffer); client.publish ( "openhab / himitsu / páratartalom", puffer);

A kód tartalmazza a parancscsatorna előfizetését is. Keresse meg és állítsa be a következő sort:

client.subscribe ( "openhab / himitsu / parancs");

Vizsgálja meg a kódot ott, és látni fogja, hogy könnyedén vezérelheti a LED-et vagy a relét, például parancsok küldésével meghatározott csatornákra. A példakódban egyszerűen egy üzenetet küld vissza, amely visszaigazolja a parancs kézhezvételét.

Töltse fel a kódot, csatlakoztassa Arduino-ját a hálózathoz, és az MQTT.fx használatával feliratkozhasson az egyikre # vagy openhab / himitsu / # (vagy bármi, amit a helyiség nevére változtatott, de ne felejtsd el a # -et a végén feltüntetni). Nagyon hamarosan üzeneteket kell látnia; és ha BE vagy KI küldi a parancs témáját, látni fogja a visszaigazolások visszatérését is.

mqtt arduino üzenetek jönnek vissza

MQTT kötés OpenHAB-hoz

Az egyenlet utolsó lépése az, hogy bekapcsoljuk ezt az OpenHAB-ba. Ehhez természetesen kötésre van szükségünk.

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

És szerkessze a konfigurációs fájlt a kötés engedélyezéséhez.

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

Indítsa újra az OpenHAB alkalmazást

sudo service openhab restart

Majd adjunk hozzá egy vagy két elemet:

/ * MQTT érzékelők * / Szám Himitsu_Temp "Himitsu hőmérséklet [% .1f ° C]"(Himitsu, hőmérséklet) {mqtt = " (Himitsu, Páratartalom) {mqtt = "

Mostanra meg kell értenie a formátumot; ez lesz a Cikkszám az MQTT kötésből, egy meghatározott témában. Ez egy egyszerű példa, utalhat a wiki oldalra, ahol található sokkal összetettebbé válhat.

Gratulálunk, most van egy olcsó Arduino-alapú érzékelőrendszer alapja. A jövőben ezt felülvizsgáljuk, és az arduinókat saját teljesen különálló RF hálózatunkba helyezzük. Készítettem egy azonos verziót is a Wizwiki 7500 táblákhoz ha történik valamelyikük.

Perzisztencia és grafikus adatok

Mostanra valószínűleg egy csomó érzékelő van beállítva, akár a Z-Wave-tól, akár az MQTT-t futtató egyedi Arduinos-tól - tehát Ön bármikor megnézheti az érzékelők jelenlegi állapotát, és reagálnia kell azok értékére szabályokat. De az érzékelőértékek érdekes dologa általában az, hogy idővel változnak: itt érkezik a kitartás és a grafikon. Kitartás az OpenHAB alatt az adatok idővel történő mentését jelenti. Menjünk előre, és állítsuk be az RRD4J-t (Round Robin Database for Java), az úgynevezett ok miatt az adatokat kerek robin formában mentsük el - a régebbi adatok el lesznek dobva az adatbázis méretének tömörítéséhez.

Telepítse az rrd4j csomagokat az alábbi parancsokkal.

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

Ezután hozzon létre egy új fájlt rrd4j.persist ban,-ben konfigurációk / perzisztencia mappába. Illessze be a következőket:

Stratégiák {minden perc: "0 * * * *?" everyHour: "0 0 * * *?" everyDay: "0 0 0 * *?" alapértelmezett = everyChange. } Az {// elemek továbbra is mindent megtesznek, amikor az érték frissül, csak egy alapértelmezés, és visszaállíthatják azokat az adatbázisból indításkor *: stratégia = everyChange, restoOnStartup // ezután meghatározjuk a everyHour speciális stratégiáit a Hőmérséklet csoport bármi számára, és minden percben a Páratartalom Hőmérséklethez *: stratégia = everyHour Páratartalom *: stratégia = everyMinute // alternatívaként itt is hozzáadhat konkrét elemeket, például: // Hálószoba_Páratartalom, JamesInOffice: stratégia = minden perc. }

A fájl első részében meghatározzuk a stratégiákat, ami csak azt jelenti, hogy nevet adunk egy CRON kifejezésnek. Ez ugyanaz, mint amit a My-mel már tettünk. OpenHAB, de ezúttal új stratégiákat készítünk, amelyeket minden nap, minden óra és minden perc felhasználhat. Még nem használtam őket, de valószínűleg a jövőben is lennék.

A fájl második felében megmondjuk az rr4dj-nek, hogy mely adatértékeket kell menteni. Alapértelmezésként mindent el fogunk menteni minden frissítéskor, de meghatároztam bizonyos időalapú stratégiákat is az egyes érzékelők számára. Hőmérsékletek, amelyekkel nem foglalkozom, ezért úgy döntöttem, hogy csak minden órát akarok megmenteni, de a páratartalom számomra nagy aggodalomra ad okot, ezért szeretném látni, hogy ez hogyan változik minden percben. Ha van más olyan adat, amelyet kifejezetten el szeretne menteni a megadott időpontokban, add hozzá ezeket ide, vagy módosítsa szükség szerint.

Megjegyzés: Ha az adatokat is ábrázolni szeretné, akkor legalább egy percenként TÁROLNI kell azokat. Nem számít, ha az érzékelő adatait is gyorsan frissítik - egyszerűen el kell mondania az rr4dj-t, hogy percenként egyszer tárolja.

Ezzel a definiálással el kell látnia néhány hibakeresési kimenetet, amely arról szól, hogy az értékeket tárolják.

rrd4j adatok tárolása

Ezután készítsünk néhány szép grafikont ezekről az adatokról. Nagyon könnyű. Az egyes érzékelőkből álló grafikon készítéséhez adja hozzá a következőket a webhelytérképéhez:

Diagram elem = Hálószoba_Páratartalom periódus = h

Szó szerint minden, amire szüksége van. A periódus érvényes értékei: h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; nyilvánvalónak kell lennie, hogy mit jelentenek ezek. Alapértelmezés szerint D egy teljes nap adatra, ha nincs megadva.

Több elemből álló grafikon létrehozásához egyszerűen ábrázolja a csoport nevét:

Diagram elem = Páratartalom periódus = h
diagram

Érdekes lehet azt is megtudni, hogy ezt a diagramot másutt is felhasználhatja; képet generál a következő URL használatával: http://YOUROPENHABURL: 8080 / chart? csoportok = Nedvesség & időszak = h

Hogy van A ti OpenHAB rendszer jön?

Ez az útmutató ezen részletéhez tartozik, de ne várja el, hogy ez utoljára meghallja tőlünk az OpenHAB-ot. Remélhetőleg ez és a kezdő útmutató szilárd alapot adott neked a saját teljes OpenHAB-rendszer kifejlesztéséhez - de ez egy olyan folyamat, amely soha nem fejeződik be teljesen.

Szerencsére az OpenHAB néhány eszközről akár százra is méretezhető, az egyszerű szabályok összetettségétől az otthoni automatizálás végső soráig - szóval hogyan viselkedik a rendszer? Mely eszközöket választotta? Mi a következő nagy projekt, amelyet meg fogsz kezdeni?

Beszéljünk a megjegyzésekben - és ha ezt az útmutatót hasznosnak találja, kattintson a megosztás gombra, hogy elmondja a barátainak, hogyan állíthatják be saját OpenHAB rendszerüket.

James rendelkezik mesterséges intelligencia BSc-vel, CompTIA A + és Network + tanúsítvánnyal rendelkezik. A MakeUseOf vezető fejlesztője, és szabadidejét VR paintballon és társasjátékokon játszik. Gyerekkora óta épít PC-ket.