реклама
Безплатният не винаги означава „не толкова добър, колкото е платен“, а OpenHAB не е изключение. Софтуерът за домашна автоматизация с отворен код далеч надхвърля възможностите на всяка друга система за домашна автоматизация на пазара - но не е лесно да се настрои. Всъщност това може да бъде направо разочароващо.
В част 1 от ръководството ви преведех инсталиране на OpenHAB на Raspberry Pi Първи стъпки с OpenHAB Home Automation на Raspberry PiOpenHAB е зряла платформа за домашна автоматизация с отворен код, която работи на различен хардуер и е протокол агностик, което означава, че може да се свърже с почти всеки хардуер за домашна автоматизация на пазара днес. Прочетете още , представи основните концепции на OpenHAB и ви показа как да добавите първите си елементи в системата. Днес ще продължим по-нататък:
- Добавяне на ZWave устройства
- Добавяне на контролер Harmony Ultimate
- Въвеждане на правила
- Представяне на MQTT и инсталиране на MQTT брокер на вашия Pi, със сензори на Arduino
- Записване на данни и графики
Въведение в Z-Wave
Z-Wave от години е доминиращият протокол за автоматизация на дома: той е надежден, широко е разработен и работи в много по-дълъг диапазон от всеки друг интелигентен домашен продукт. На разположение са ви стотици Z-Wave сензори, които изпълняват широк спектър от задачи. OpenHAB мога работете със Z-Wave, но е трудно да настроите и надеждността не е гарантирана.
Ако обмисляте закупуването на къща, пълна със Z-Wave сензори, специално за използване с OpenHAB, бих ви призовала да преразгледате. Може да се окаже чудесно за вас или може да бъде затруднено с малки, но постоянни проблеми. Поне не купувайте къща, пълна със сензори, докато не имате възможност да изпробвате няколко. Единствената причина да изберете Z-Wave е, ако не сте 100% установени в OpenHAB и искате да оставите вашите опции отворени в бъдеще: Z-Wave например работи с Samsung SmartThings Кой Smart Hub за домашна автоматизация е най-подходящ за вас?Известно време хората мислеха за идеята като нищо повече от трик, но последните издания на продуктите показаха, че автоматизацията на интелигентния дом започва да изпълнява своите обещания. Прочетете още хъб, както и специфични за Z-Wave хъбове като Homeseer и редица други софтуерни опции като Domoticz.
Въпреки че OpenHAB включва Z-Wave свързване, все пак трябва да го направите първо конфигурирайте мрежата Z-Wave, преди OpenHAB да започне да го пита за данни. Ако имате платка на контролера Rasberry, имате доставен софтуер за конфигуриране на мрежата, така че няма да покриваме това тук. Ако сте закупили Aeotec USB Z-Stick контролер или подобен, вероятно нямате никакъв софтуер, така че четете нататък.
Aeotec Z-Stick Gen5, Z-Wave Plus USB за създаване на шлюзAeotec Z-Stick Gen5, Z-Wave Plus USB за създаване на шлюз Купете сега на Amazon $44.95
Ако вече имате настройка на Z-Wave мрежа, можете просто да включите контролера си в Pi и да започнете да конфигурирате обвързването и елементите. Ако това е първият ви набег в Z-Wave, това е малко по-сложно.
Първо, от хардуерна страна: всеки контролер има свой начин на сдвояване с устройства (технически известен като „режим на включване“, в който е зададен идентификатор на възел). В случая на Aotec Z-Stick това означава да го изключите от USB порта и да натиснете бутона веднъж, за да го поставите в режим на включване. След това го приближете до устройството, което сдвоявате, и натиснете бутона за включване и върху него (това също ще варира: моят Everspring гнездо изисква бутона да натисне 3 пъти с бърза последователност, така че урокът тук е да прочетете ръководството за вашето устройство).
Z-Stick мига за кратко, което показва успех. Това създава проблеми при включването му обратно в Pi, тъй като е присвоен нов порт. Рестартирайте своя Pi, за да го върнете обратно към стандартния порт, ако установите, че е динамично преназначен за друг. Още по-добре: не го включвайте в Pi, докато първо не направите всички хардуерни двойки.
Инсталиране на HABmin и Z-Wave връзки
Тъй като OpenHAB всъщност не е помощна програма за конфигуриране за Z-Wave, ще инсталираме друг инструмент за уеб управление, който прави - нещо, наречено HABmin. Насочете се към HABmin Github хранилище изтеглете текущата версия. След като го разархивирате, ще намерите 2 Буркан файлове в директорията на addons - те трябва да бъдат поставени в съответната директория на addons във вашия ShareHAB Home share (ако използвате и Aotec gen5 Z-Stick, уверете се, че имате поне версия 1.8 на Z-Wave обвързването).
След това създайте нова папка в директорията webapps и я наречете „habmin“ (малкият регистър е важен). Копирайте останалите изтеглени файлове там.
Забележка: Има и HABmin 2 в активно развитие. Инсталирането е почти същото, но с един допълнителен .jar addon. Може би си струва да опитате и двете, само за да видите кои предпочитате.
Ако още не сте го, включете контролера в своя Pi. Въведете следното, за да намерите правилния порт.
ls / dev / tty *
Търсите нещо с USB в името или в моя конкретен случай Z-пръчката се представи като /dev/ttyACM0 (модем). Може да е по-лесно да направите командата веднъж преди да я включите и след това, така че да видите какво се променя, ако не сте сигурни.
Отворете конфигурационния файл на OpenHAB и променете секцията на Z-Wave, коментирайки и двата реда и поставяйки действителния си адрес на устройството. Една последна стъпка за мен беше да позволя на потребителя на OpenHAB достъп до модема.
sudo usermod -a -G dialout openhab
Сега, за да започнете всичко в действие, рестартирайте OpenHAB
sudo услуга openhab рестартиране
Да се надяваме, че ако проверявате журнала за отстраняване на грешки, ще видите нещо подобно. Поздравления, сега говорите Z-Wave. Можете също да намерите журнала за грешки, залят от съобщения от различни Z-Wave възли. Нека започнем с проверка на HABMIN, за да видим какво е открил: http://openhab.local: 8080 / habmin / index.html (заменя openhab.local с името на хоста ви Raspberry Pi или IP адреса).
Има много какво да видим в HABMIN, но ние сме наистина загрижени за Конфигурация -> Връзки -> Z-Wave -> Устройства раздела, както можете да видите по-долу. Разширете възела, за да редактирате етикета за местоположение и име за вашето улеснение.
Конфигуриране на Z-Wave елементи
Всяко Z-Wave устройство ще има специфична конфигурация за OpenHAB. За щастие, повечето устройства вече са проучени и вече ще има примери за вашите. Конфигурирането на персонализирани устройства, които не са разпознати, е далеч извън обхвата на това ръководство, но нека приемем, че за сега се поддържа.
Първо, имам основен превключвател за захранване и измервателен уред Everspring AN158 в Node 3. Бързо Googling ме доведе до публикация в блог в Wetwa.re, с примерна конфигурация на артикула. Адаптирах това, както следва:
Превключете Dehumidifier_Switch "Dehumidifier" {zwave = "3: command = switch_binary"} Номер Dehumidifier_Watts "Консумация на мощност на обезвлажнителя [% .1f W]" {zwave = "3: command = meter"}
Perfect.
Следваща е мултисензор Aeotec Gen5.
Aeon Labs Aeotec Z-Wave Gen5 мултисензор (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 мултисензор (Z-Wave Plus) Купете сега на Amazon $69.27
За този намерих примерна конфигурация на iwasdot.com, а моят мултисензор е в Node 2.
Номер Hallway_Temperature "Температура на коридора [% .1f ° C]" (Хол, Температура) {zwave = "2: 0: команда = сензор_мултилеве, сензор_тип = 1, сензор_скела = 0"} Брой Хол_Влажност "Влажност на коридора [% .0f %%]" (Коридор, Влажност) {zwave = "2: 0: команда = сензор_ммултивност, сензор_тип = 5"} Номер Hallway_Luminance "Светлината на коридора [% .0f Lux]" (коридор) {zwave = "2: 0: команда = сензор_мелтилеве, сензор_тип = 3"} Свържете се с Hallway_Motion "Hallway Motion [% s]" (Hallway, Motion) {zwave = "2: 0: command = sensor_binary, response_to_basic = true"} Номер на сензора_1_батерия "Батерия [% s %%]" (движение) {zwave = "2: 0: команда = батерия"}
Ако форматът на това ви изглежда странно, моля, върнете се към първия наръчник за начинаещи Първи стъпки с OpenHAB Home Automation на Raspberry PiOpenHAB е зряла платформа за домашна автоматизация с отворен код, която работи на различен хардуер и е протокол агностик, което означава, че може да се свърже с почти всеки хардуер за домашна автоматизация на пазара днес. Прочетете още , по-специално секцията за обвързване на Hue, където обяснявам как се добавят елементи. Вероятно ще ви се наложи да копирате само примери от този тип, но в случай че имате ново устройство, обвързващата документация подробно описва всички команди.
Обвързване на Logitech Harmony
Преди да се впуснем в правилата, исках да добавя бърза бележка за работата с обвързването на Harmony. Аз съм голям фен на Хармония серия от върхови дистанционни Преглед и отдаване на Logitech Harmony UltimateВ хола ви е хаос - признайте. Прощаваш се, че се чудиш кое дистанционно управлява кое устройство. Какво става с телевизора, усилвателя, TiVO, BluRay плейъра, може би дори дейностите по превключване на осветлението стават дълги ... Прочетете още за опростяване на преживяването на домашния медиен център, но те често стоят като отделна система в интелигентния дом. С OpenHAB дейностите на Logitech Harmony и пълен контрол на устройството вече могат да бъдат част от вашата централизирана система и дори да бъдат включени в правилата за автоматизация.
Започнете с инсталирането на трите обвързващи файла, които намерите, като използвате apt-кеш за търсене на „хармония“:
Не забравяйте chown директория на връзки отново, когато сте готови:
sudo apt - вземете инсталирайте openhab-addon-action-harmonyhub. sudo apt - вземете инсталирайте openhab-addon -inding-harmonyhub. sudo apt - вземете инсталирайте openhab-addon-io-harmonyhub. sudo chown -hR openhab: openhab / usr / share / openhab
За да конфигурирате обвързването, отворете файла openhab.cfg и добавете нов раздел, както следва:
########## HARMONY DEMOTE CONTROLS ########### harmhub: хост = 192.168.1.181или вашия ip harmhub: потребителско име =си-хармония-мейл за вход harmhub: парола =твоята парола
IP адресът е този на вашия център Harmony. Използвайте мрежов скенер, за да разберете това. Също така ще трябва да въведете данните си за вход, тези, които въвеждате, когато стартирате стандартната програма за конфигуриране Harmony. Това е. След рестартиране на вашия Hue, вашият дневник за отстраняване на грешки трябва да има внезапен изблик на изход от свързването.
Това е JSON форматиран списък на всички ваши дейности, устройства и команди, които могат да бъдат изпращани. Добре е да копирате това за бъдеща справка. можете да направите още по-лесно четенето със сгъваеми възли, като ги поставите в онлайн формат JSON като тази.
Освен стандартната активност на PowerOff, която е по подразбиране, ще намерите вашите собствени дефинирани дейности, изброени тук по име. Сега нека създадем просто управление с един бутон, за да започнете дейности. Първо, във файла с вашите елементи добавете следния ред. Променете групата и иконата, ако желаете.
/ * Център за хармония * / String Harmony_Activity "Хармония [% s]"(Living_Room) {harmonyhub = "* [currentActivity]"}
Това е двупосочно струнно обвързване, която е в състояние както да донесе текущата активност, така и да командва текущата дейност да бъде нещо друго. Сега можем да създадем бутон за него във файла на сайта.
Switch item = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Упражнение', 13858434 = 'TV', Karaoke = 'Karaoke']
В квадратната скоба ще видите всяка дейност заедно с етикета. По принцип можете да се обърнете директно към дейности, както сте ги посочили на вашето дистанционно управление, но изключение от това, което открих, беше всичко с интервал в името на дейността, например „Гледайте телевизия“. В този случай ще трябва да използвате идентификационния номер на активността. Отново можете да намерите идентификатора в изхода за отстраняване на грешки в JSON. Запишете и опреснете интерфейса си, трябва да видите нещо подобно на това:
Можете също да се обърнете към дейности във вашите правила, както ще видим по-нататък. Прочетете страницата на уикито за повече информация в Хармония обвързване.
Общо въведение в правилата
Повечето центрове за интелигентни дома включват някакъв вид създаване на правила, така че можете автоматично да реагирате на сензорни данни и събития в дома. Всъщност твърдя, че наистина интелигентният дом не е този, който трябва да прекарвате време във взаимодействие с мобилни приложения - той е невидим за крайния потребител и напълно автоматизиран. За тази цел OpenHAB също включва мощен скриптов език за правила, който можете да програмирате, което значително надхвърля сложността на повечето интелигентни домашни хъбове Battle of the Smart Home Hubs: Какво има там и какво предстои? Прочетете още или IFTTT рецепти IFTTT сега се свързва с всичко: Въвеждане на Maker ChannelПотенциалните приложения за IFTTT са безкрайни. Но досега беше трудно да го свържете със собствените си хардуерни проекти. Днес всичко е променено. Прочетете още .
Правилата за програмиране звучат по-лошо, отколкото е. Нека започнем просто с двойка правила, които включват или изключват светлината в зависимост от сензора за присъствие:
правило "Светлината в офиса, когато Джеймс присъства" когато елемент JamesInOffice се промени от OFF на ON. след това изпратетеCommand (Office_Hue, ON) край правило "Офис светлината изключена, когато Джеймс напусне" когато елемент JamesInOffice се промени от ON на OFF. след това изпратете команда (Office_Hue, OFF) край
Първо, ние назоваваме правилото - бъдете описателни, така че да знаете какво събитие стреля. На следващо място, ние дефинираме нашето просто правило, като казваме когато x е вярно, тогава направете y. Край означава затварянето на това конкретно правило. Има няколко специални думи, които можете да използвате в правилата, но засега се занимаваме с два прости бита синтаксис - Вещ, което ви позволява да питате за състоянието на нещо; и sendCommand, което прави точно това, което мислите, че ще бъде. Казах ти, че това е лесно.
Вероятно не е необходимо да използвам двойка правила, но тъй като логиката ми става по-сложна, ще бъде полезно да ги разделям независимо дали съм влизане или излизане от зоната - и може би е добра идея да добавите светлинен сензор някъде в уравнението, за да не се включваме излишно светва.
Нека разгледаме друг пример за създаване на планирано правило.
правило "Упражнение всяка сутрин" когато Времевият крон "0 0 8 1/1 *? *" след това harmonyStartActivity ("Упражнение") край.
Отново посочваме правилото, посочваме условията кога трябва да стреля и действията, които да предприемем. Но в този случай ние определяме модел на времето. Смешният код, който виждате в кавичките, е CRON израз за Quartz Scheduler (форматът е малко по-различен от обикновен CRONtab). използвах cronmaker.com за да помогнете за създаването на израза, но можете също да прочетете ръководството за формат [No Longer Available] за подробно обяснение и още примери.
Моите правила гласи просто „8 ч. Сутрин, всеки ден от седмицата, кажете на моята система Harmony Ultimate да започне упражненията“, което от своя страна активира телевизора, Xbox, усилвателя и натиска бутона A след минута, за да стартира диска в устройството.
За съжаление, OpenHAB все още не е в състояние да направи упражнението за мен.
Още едно правило, което искам да ви покажа, е нещо, което използвам за управление на нивата на влажност в дома си. Имам единичен обезвлажнител, който трябва да се движа наоколо, където е необходимо, затова реших да разгледам всички мои сензори за влажност, да намеря кой е най-високият и да го съхраня в променлива. В момента тя се задейства всяка минута, но това лесно може да бъде намалено. Погледнете първо:
импортиране на org.openhab.core.library.types. * импортиране на org.openhab.model.script.action. * import java.lang. Правило за стринг "Монитор на влажност" когато Time cron "0 * * * *?" след това var prevHigh = 0 var highHum = "" Влажност? .members.forEach [hum | logDebug ("vm.ru.rules", hum.name); if (hum.state като DecimalType> prevHigh) {prevHigh = hum.state highHum = hum.name + ":" + hum.state + "%"}] logDebug ("v.v.ru.rules", highHum); postUpdate (Dehumidifier_Needed, highHum); край.
Ядрото на правилото е в Влажност? .Members.foreach линия. Влажността е групово име за моите сензори за влажност; .members хваща всички елементи от тази група; за всеки повтаря над тях (с любопитен формат с квадратни скоби, който вероятно не сте запознати). Синтаксисът на правилата е производно на Xtend, така че можете да четете Xtend документация ако не можете да намерите пример за адаптиране
Вероятно няма да ви е нужно - има стотици примерни правила там:
- Подробно обяснение на правилата на официалната уики
- Най- официални мостри за правила страница на уикито
- Приемане на правила до нови висоти
- Разширени проби в IngeniousFool.net
MQTT за OpenHAB и Internet of Things
MQTT е лека система за съобщения за комуникация между машина и машина - един вид Twitter за вашия Arduinos или Raspberry Pis, за да си говорят помежду си (макар разбира се, че работи с много повече от просто тези). Бързо набира популярност и си намира дом с устройства на Интернет на нещата, които обикновено са ниски ресурсни микроконтролери, които се нуждаят от надежден начин за предаване на сензорни данни обратно към вашия център или получаване на дистанционно команди. Точно това ще правим с него.
Но защо изобретявам колелото?
MQ Telemetry Transport е изобретен още през 1999 г. за свързване на нефтопроводи чрез бавен спътник връзки, специално проектирани да минимизират разхода на батерията и честотната лента, като същевременно осигуряват надеждни доставка на данни. През годините принципите на проектиране остават същите, но случаят на използване се измести от специализирани вградени системи към общите устройства на Интернет на нещата. През 2010 г. протоколът беше освободен безвъзмездно, отворен за всеки, който да използва и прилага. Харесваме безплатно.
Може би се чудите защо дори се притесняваме с още един протокол - ние все пак имаме HTTP в края на краищата - който може да се използва за изпращане на бързи съобщения между всякакви системи, свързани с уеб (като OpenHAB и IFTTT, особено с новата канал на производителя IFTTT сега се свързва с всичко: Въвеждане на Maker ChannelПотенциалните приложения за IFTTT са безкрайни. Но досега беше трудно да го свържете със собствените си хардуерни проекти. Днес всичко е променено. Прочетете още ). И вие ще бъдете прави. Въпреки това, обработката на режийните разходи на HTTP сървър е доста голяма - толкова много, че не можете лесно да стартирате такъв на вграден микроконтролер като Arduino (поне можете, но няма да имате много памет за нищо друг). MQTT, от друга страна, е лек, така че изпращането на съобщения около вашата мрежа няма да запуши тръбите и може лесно да се впише в малкото ни пространство на Arduino памет.
Как работи MQTT?
MQTT изисква както сървър (наречен „брокер“), така и един или повече клиенти. Сървърът действа като посредник, като получава съобщения и ги препраща на всички заинтересовани клиенти.
Нека да продължим с Twitter-за-машини аналогия обаче. Точно както потребителите на Twitter могат да туитират своите собствени безсмислени 140 знака, така и потребителите могат да „следят“ други потребители, за да видят куриран поток от публикации, MQTT клиентите могат да се абонират за определен канал, за да получават всички съобщения от там, както и да публикуват свои собствени съобщения към него канал. Този модел за публикуване и абониране е посочен като кръчма / суб, за разлика от традицията клиентски сървър модел на HTTP.
HTTP изисква да посегнете към машината, с която общувате, да речем Здравейте, след това да се връщате напред и назад, като постоянно се признавате, докато получавате или поставяте данни. С pub / sub, клиентът, който извършва публикуването, не трябва да знае кои клиенти са абонирани: той просто изпомпва съобщенията и брокерът ги преразпределя на всички абонирани клиенти. Всеки клиент може както да публикува, така и да се абонира за теми, точно като потребител на Twitter.
За разлика от Twitter обаче MQTT не е ограничен до 140 знака. Това е агностик на данните, така че можете да изпращате малки числа или големи текстови блокове, дейтаграми във формат JSON или дори изображения и двоични файлове.
Не че MQTT е по-добър от HTTP за всичко - но това е така е по-подходящо е, ако ще имаме много сензори из цялата къща, непрекъснато се отчитаме.
Също така е важно да знаете, че OpenHAB няма да действа като ваш MQTT брокер - ще се обърнем към него малко по-късно. Въпреки това, OpenHAB ще действа като клиент: той може както да публикува вашия регистър на дейностите на OpenHAB, така и да обвързва конкретно канали към устройства, така че можете например да имате превключвател, който се контролира от MQTT съобщения в определен момент канал. Това е идеално за създаване на къща, пълна със сензори.
Инсталирайте Mosquitto на вашия Pi
Въпреки че OpenHAB включва клиент MQTT, за да можете да се абонирате за тема и да публикувате съобщения, той няма да действа като сървър. За това трябва или да използвате уеб базиран MQTT брокер (платен или безплатен), или да инсталирате безплатния софтуер на вашия Pi. Бих искал да поддържам всичко това вътре, затова инсталирах Mosquitto на Pi.
За съжаление, версията, налична чрез обичайния apt-get, е напълно остаряла. Вместо това нека добавим най-новите източници.
Wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key добавете mosquitto-repo.gpg.key. cd /etc/apt/sources.list.d/ судо wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list. sudo apt-get install mosquitto.
Това е всичко, което трябва да направим, за да поддържаме и работим MQTT сървър в локалната мрежа. Вашият брокер работи на порт 1883 по подразбиране.
Проверете дали вашият MQTT сървър работи с помощта на безплатния MQTT.fx, който е кросплатформен. Щракнете върху иконата за настройки, за да създадете нов профил и въведете IP адреса или името на Raspberry Pi. Запишете и натиснете свързване. Ако малкият светофар в горния десен ъгъл стане зелен, добре е да отидете.
За бърз тест кликнете върху раздела „абониране“ и въведете inTopic / в текстовото поле, след което натиснете Абонирай се бутон. Вече сте абонирани за получаване на съобщение по темата, наречена inTopic, въпреки че ще се показват 0 съобщения. Върнете се в раздела за публикуване, въведете inTopic в малкото поле и кратко съобщение в голямото текстово поле отдолу. Hit публикувам няколко пъти и погледнете отново в раздела Абониране. Трябва да видите няколко съобщения, които са се появили в тази тема.
Преди да добавим някои действителни сензори към нашата мрежа, трябва да научим за нивата на темите, които ни позволяват да структурираме и филтрираме мрежата MQTT. Имената на теми са чувствителни към регистъра, не трябва да започват с $, или да включват интервал или символи, които не са ASCII - всъщност стандартни практики за програмиране на имена на променливи.
/ Разделителят указва ниво на тема, което е йерархично, например следните са всички валидни нива на тема.
inTopic / smallSubdivision / evenSmallerSubdivision. MyHome / дневна / температура. MyHome / дневна / влажност. MyHome / кухня / температура. MyHome / кухня / влажност
Вече трябва да видите как тази дървовидна структура е идеална за интелигентен дом, пълен със сензори и устройства. Най-добрата практика за използване с множество сензори в една стая е публикуването на всяка променлива на сензора като собствено ниво на темата - разклоняване към повече специфичност (както в примерите по-горе) - вместо да се опитвате да публикувате няколко типа сензор за един и същ канал.
След това клиентите могат да публикуват или да се абонират за произволен брой отделни нива на тема, или да използват някои специални символи, за да филтрират от по-високо нагоре в дървото.
Подметката + замества всяко ниво на тема. Например:
MyHome / + / температура
би абонирал клиента и за двете
MyHome / дневна / температура. MyHome / кухня / температура
… Но не и нивата на влажност.
# Е многостепенна подметка, така че можете да вземете всичко от масива на сензора LivingRoom с:
MyHome / дневна / #
Технически можете също да се абонирате за кореново ниво #, с което получавате абсолютно всичко минавайки през брокера, но това може да е като да залепиш пожарен маркуч в лицето ти: малко поразителен. Опитайте да се свържете с публичния MQTT брокер от HiveMQ и да се абонирате за #. Получих около 300 съобщения за няколко секунди, преди клиентът ми просто да се срине.
MQTT Съвет за начинаещи: “/myHome/” е различна тема за „Моят дом/" - включването на наклонена черта в началото създава празно ниво на темата, което, въпреки че е технически валидно, не се препоръчва, защото може да бъде объркващо.
Сега, когато знаем теорията, нека да работим с Arduino, Ethernet Shield и DHT11 сензор за температура и влажност - вероятно имате такъв в стартовия си комплект, но ако не, просто сменете сензора за околната среда за сензор за движение (или дори бутон).
Публикуване на MQTT от Arduino с Ethernet връзка
Ако имате хибридно съвместимо с Arduino устройство с вградено Wi-Fi или Ethernet, това също трябва да работи. В крайна сметка ще искаме по-добър / по-евтин начин за комуникация, че трябва да използвате мрежова връзка във всяка стая, но това служи за научаване на основите.
Започнете с изтеглянето pubsubclient библиотека от Github. Ако сте използвали бутона „Изтегляне като ZIP“, структурата е малко погрешна. Разархивирайте, преименувайте папката на справедлива pubsubclient, след това извадете двата файла от SRC папка и ги преместете едно ниво нагоре до корена на изтеглената папка. След това преместете цялата папка във вашата Ардуино / библиотеки директория.
Ето моят примерен код, който можете да адаптирате: изходът на DHT11 сигнала е на щифт 7. Променете IP сървъра за този на вашия Pi на следния ред:
client.setServer ("192.168.1.99", 1883);
За съжаление, не можем да използваме приятелското име (OpenHAB.local в моя случай) тъй като TCP / IP стека в Arduino е много опростен и добавянето на код за именуване Bonjour би било много памет, която не искаме да губим. За да промените темите, по които се излъчват данни от сензорите, превъртете надолу към тези редове:
буфер char [10]; dtostrf (t, 0, 0, буфер); client.publish ( "openhab / Himitsu / температура", буфер); dtostrf (h, 0, 0, буфер); client.publish ( "openhab / Himitsu / влажност", буфер);
Кодът включва и абонамент за команден канал. Намерете и коригирайте следния ред:
client.subscribe ( "openhab / Himitsu / команда");
Разгледайте кода там и ще видите, че можете лесно да контролирате светодиод или реле например, като изпращате команди до конкретни канали. В примерния код той просто изпраща обратно съобщение, потвърждаващо получаването на командата.
Качете своя код, включете вашия Arduino в мрежата и с помощта на MQTT.fx се абонирайте за едно от двете # или openhab / Himitsu / # (или каквото сте променили името на стаята, но не забравяйте да включите # в края). Доста скоро трябва да видите съобщения, които влизат; и ако изпратите ON или OFF в темата за командите, ще видите и потвърждения, които се връщат.
MQTT Обвързване за OpenHAB
Последната стъпка в уравнението е да закачите това в OpenHAB. За това, разбира се, имаме нужда от обвързване.
sudo apt - вземете инсталирайте openhab-addon -inding-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab
И редактирайте конфигурационния файл, за да активирате обвързването.
mqtt: broker.url = tcp: // localhost: 1883. mqtt: broker.clientId = openhab
Рестартирайте OpenHAB
sudo услуга openhab рестартиране
Тогава нека добавим елемент или два:
/ * MQTT сензори * / Номер Himitsu_Temp "Температура на Химицу [% .1f ° C]"(Химицу, Температура) {mqtt = " (Химицу, Влажност) {mqtt = "
Досега трябва да разберете формата; получава се Номерен артикул от обвързването на MQTT по зададена тема. Този прост пример, може да искате да се обърнете към страницата на уикито, където се намира може да се получи много по-сложно.
Поздравления, сега имате основата на евтин сензорен масив на базата на Arduino. Ние ще го преразгледаме в бъдеще и ще поставим Arduino в собствената си изцяло отделна RF мрежа. Създадох и идентична версия за дъски Wizwiki 7500 ако случайно имате някой от тях.
Устойчивост и графични данни
Вече вероятно сте настроили куп сензори, независимо дали са от Z-Wave или персонални Arduinos, работещи с MQTT - така че можете да видите текущото състояние на тези сензори по всяко време и вие също трябва да реагирате на стойността им в правила. Но интересното при стойностите на сензорите е, че те се променят с течение на времето: там идва постоянството и графиката. упоритост в OpenHAB означава спестяване на данните във времето. Нека да продължим и да настроим RRD4J (Round Robin Database за Java), така наречен, защото данните се запазват по начин на кръгла робина - по-старите данни се изхвърлят, за да компресират размера на базата данни.
Инсталирайте rrd4j пакети със следните команди.
sudo apt - вземете инсталирайте openhab-addon-persistent-rrd4j. sudo chown -hR openhab: openhab / usr / share / openhab.
След това създайте нов файл, наречен rrd4j.persist в конфигурации / постоянство папка. Поставете в следното:
Стратегии {everyMinute: "0 * * * *?" всеки час: "0 0 * * *?" всеки ден: "0 0 0 * *?" по подразбиране = everyChange. } Елементите {// продължават всичко, когато стойността се актуализира, само по подразбиране и ги възстановете от базата данни при стартиране *: strategy = everyChange, RestoOnStartup // След това дефинираме конкретни стратегии на EveryHour за всичко от групата на температурата и всяка минута за влажност Температура *: Strategy = everyHour Humidity *: strategy = everyMinute // алтернативно можете да добавите конкретни елементи тук, например // Bedroom_Humidity, JamesInOffice: стратегия = всеки минута }
В първата част на този файл ние дефинираме стратегии, което просто означава даване на име на CRON израз. Това е същото, както вече направихме с Моето. OpenHAB, но този път създаваме някои нови стратегии, които можем да използваме всеки ден, всеки час и всяка минута. Все още не съм ги използвал, но може би ще бъда в бъдеще.
През втората половина на файла казваме на rr4dj кои стойности на данни да запишем. По подразбиране ние ще запазваме всичко всеки път, когато се актуализира, но също така посочих някои базирани на времето стратегии за конкретни сензори. Температури, за които не се притеснявам много, така че настроих това да спестя само на всеки час, но влажността е голяма грижа за мен, така че искам да видя как се променя всяка минута. Ако има други данни, които специално искате да запазите в зададени часове, добавете тези тук сега или коригирайте според нуждите.
Забележка: ако искате също да графирате данните, ТРЯБВА да ги съхранявате поне веднъж в минута. Няма значение дали данните на сензора ви дори се актуализират толкова бързо, просто трябва да кажете на rr4dj да го съхранявате веднъж на минута.
С това определение трябва да започнете да виждате някакъв изход за отстраняване на грешки, който ви казва, че стойностите се съхраняват.
На следващо място, нека направим няколко хубави графики на всички тези данни. Наистина е лесно. За да направите графика на отделен сензор, добавете следното към картата на вашия сайт:
Елемент на диаграмата = Спалня_Спериод на влажност = h
Това е буквално всичко, от което се нуждаете. Валидни стойности за периода са h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y; би трябвало да е очевидно какво означават тези. По подразбиране е D за цял ден от данни, ако не е посочено.
За да създадете графика с няколко елемента, просто вместо това нагласете името на групата:
Елемент на диаграмата = Период на влажност = h
Може също да ви е интересно да знаете, че можете да използвате тази графика другаде; генерира изображение с помощта на следния URL адрес: http://YOUROPENHABURL: 8080 / диаграма? групи = Влажност & период = Н
Как да Вашият Системата OpenHAB идва ли?
Това е така за тази част от ръководството, но не очаквайте това да е за последно да чуете от нас за OpenHAB. Да се надяваме, че това и ръководството за начинаещи са ви дали солидна основа да разработите своя собствена цялостна система OpenHAB - но това е процес, който никога не е напълно завършен.
За щастие, OpenHAB може да мащабира добре от няколко устройства до стотици, от сложността на прости правила до крайната автоматизация на дома - така как се събира вашата система? Кои устройства избрахте? Кой е следващият голям проект, който ще предприемете?
Нека да поговорим в коментарите - и моля, ако намерите това ръководство за полезно, щракнете върху тези бутони за споделяне, за да кажете на приятелите си как те също могат да настроят собствената си система OpenHAB.
Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.