Ръководство за начинаещи на OpenHAB, част 2: ZWave, MQTT, правила и диаграми

Ръководство за начинаещи на OpenHAB, част 2: ZWave, MQTT, правила и диаграми

Безплатното не винаги означава „не толкова добро, колкото платено“ и OpenHAB не прави изключение. Софтуерът за домашна автоматизация с отворен код далеч надхвърля възможностите на всяка друга система за домашна автоматизация на пазара - но не е лесно да се настрои. Всъщност това може да бъде направо разочароващо.





В първа част на ръководството ви преведох инсталиране на OpenHAB на Raspberry Pi , представи основните концепции на 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, както и със специфични хъбове Z-Wave като Homeseer и редица други софтуерни опции като domoticz .

Въпреки че OpenHAB включва свързване Z-Wave, все още трябва първо конфигурирайте мрежата Z-Wave , преди OpenHAB да започне да го запитва за данни. Ако имате контролна платка Rasberry, имате доставен софтуер за конфигуриране на мрежата, така че няма да покриваме това тук. Ако сте купили контролер Aeotec USB Z-Stick или подобен, вероятно нямате включен софтуер, така че прочетете нататък.



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB за създаване на шлюз (обикновен бял) КУПЕТЕ СЕГА НА AMAZON

Ако вече имате мрежова настройка 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 .jar файлове в директорията на добавките - те трябва да бъдат поставени в съответната директория на добавки във вашия OpenHAB Начален дял (ако използвате и Aotec gen5 Z-Stick, уверете се, че имате поне версия 1.8 на свързването Z-Wave) .





След това създайте нова папка в директорията webapps и я наречете „habmin“ (малките букви са важни). Копирайте останалите изтеглени файлове там.

Забележка: Има и a HABmin 2 в процес на активно развитие. Инсталацията е почти същата, но с една допълнителна добавка .jar. Може би си струва да опитате и двете, само за да видите кое предпочитате.

Ако все още не сте, включете контролера във вашия Pi. Въведете следното, за да намерите правилния порт.

ls /dev /tty*

Търсите нещо с USB в името или в моя конкретен случай Z-stick се представи като / dev / ttyACM0 (модем). Може да е по -лесно да направите командата веднъж, преди да я включите, и веднъж след това, за да можете да видите какви промени се променят, ако не сте сигурни.

Отворете конфигурационния файл на OpenHAB и променете раздела на Z-Wave, декомментирайте двата реда и поставете действителния си адрес на устройството. Последната стъпка за мен беше да разреша на потребителя на OpenHAB достъп до модема.

sudo usermod -a -G диалогов прозорец openhab

Сега, за да стартирате всичко в действие, рестартирайте OpenHAB

sudo услуга openhab рестартиране

Надяваме се, че ако проверявате дневника за отстраняване на грешки, ще видите нещо подобно. Поздравления, сега говорите Z-Wave. Можете също така да намерите дневника за отстраняване на грешки, наводнен със съобщения от различни възли Z-Wave. Нека започнем, като проверим HABMIN, за да видим какво е намерено: http: //openhab.local: 8080/habmin/index.html (замествайки openhab.local с вашето име на хост или IP адрес на Raspberry Pi).

В HABMIN има какво да се види, но ние сме наистина загрижени само за Конфигурация -> Обвързвания -> Z -Wave -> Устройства раздел, както можете да видите по -долу. Разширете възела, за да редактирате етикета за местоположение и име за ваше улеснение.

Конфигуриране на Z-Wave елементи

Всяко устройство Z-Wave ще има специфична конфигурация за OpenHAB. За щастие, повечето устройства вече са проучени и вече ще има примери за вашите. Конфигурирането на персонализирани устройства, които не са разпознати, далеч надхвърля обхвата на това ръководство, но нека приемем, че засега се поддържа.

Първо, имам основен превключвател за захранване и измервател на Everspring AN158 на възел 3. Бързо търсене в Google ме доведе до публикация в блога на Wetwa.re, с примерна конфигурация на артикул. Адаптирах това по следния начин:

Switch Dehumidifier_Switch 'Dehumidifier' {zwave = '3: command = switch_binary'}

Номер Изсушител_Watts 'Консумация на енергия от изсушител [%.1f W]' {zwave = '3: команда = измервател'}

Перфектно.

Следва мултисензор Aeotec Gen5.

Aeon Labs Aeotec Z-Wave Gen5 Мулти-сензор (Z-Wave Plus) КУПЕТЕ СЕГА НА AMAZON

За това намерих примерна конфигурация на адрес iwasdot.com , а моят мултисензор е на възел 2.

Номер Температура на коридора 'Температура на коридора [%.1f ° C]' (Коридор, Температура) {zwave = '2: 0: команда = сензор_ многостепенен, тип_сензор = 1, сензор_мащаб = 0'}

Номер Hallway_Humidity 'Влажност на коридора [%.0f %%]' (Коридор, Влажност) {zwave = '2: 0: command = sensor_multilevel, sensor_type = 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: команда = батерия'}

Ако форматът на това изглежда странен, моля, върнете се към първия ръководство за начинаещи , по -специално раздела за свързване на Hue, където обяснявам как се добавят елементи. Вероятно някога ще трябва да копирате примери за поставяне като този, но в случай, че имате ново устройство, обвързващата документация подробно описва всички команди .

Свързване на Logitech Harmony

Преди да преминем към правилата, исках да добавя кратка бележка за работата с обвързването Harmony. Аз съм голям фен на поредицата от най -добри дистанционни управления Harmony, за да опростя домашния медиен център, но те често стоят като отделна система в интелигентния дом. С OpenHAB дейностите на Logitech Harmony и пълният контрол на устройството вече могат да бъдат част от вашата централизирана система и дори включени в правилата за автоматизация.

Започнете, като инсталирате трите свързващи файла, които намерите, като използвате apt-cache за търсене на „хармония“:

Не забравяйте да чаун директорията на свързванията отново, когато приключите:

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

За да конфигурирате свързването, отворете файла openhab.cfg и добавете нов раздел, както следва:

########## HARMONY ДИСТАНЦИОННИ КОНТРОЛИ ##########

harmonyhub: хост = 192.168.1.181 или вашия ip

harmonyhub: потребителско име = your-harmony-email-login

harmonyhub: парола = твоята парола

IP адресът е този на вашия хармоничен хъб. Използвайте мрежов скенер, за да разберете това. Ще трябва също да въведете данните си за вход, тези, които въвеждате, когато стартирате стандартната помощна програма за конфигуриране на Harmony. Това е. При рестартиране на вашия Hue, вашият дневник за отстраняване на грешки трябва да има внезапен изблик на изход от свързването.

Това е JSON форматиран списък с всички ваши дейности, устройства и команди, които могат да бъдат изпратени. Добра идея е да копирате това за бъдещи справки. можете да направите още по -лесно четенето със сгъваеми възли, като поставите в онлайн JSON форматиране като този .

Освен стандартната активност на PowerOff, която е по подразбиране, ще намерите свои собствени дефинирани дейности, изброени тук по име. Сега нека създадем прост контрол с един бутон, за да започнете дейности. Първо, във файла с елементи добавете следния ред. Променете групата и иконата, ако желаете.

/ * Harmony Hub */

Низ Harmony_Activity 'Harmony [%s]' (Living_Room) {harmonyhub = '*[currentActivity]'}

Това е двупосочно низово свързване , който е в състояние както да извлече текущата дейност, така и да командва текущата дейност да бъде нещо друго. Сега можем да създадем бутон за него във файла на картата на сайта.

Превключване на елемент = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Exercise', 13858434 = 'TV', Karaoke = 'Karaoke']

безплатна телевизия онлайн без регистрация

В квадратната скоба ще видите всяка дейност заедно с етикета. По принцип можете да се позовавате директно на дейности, както сте ги кръстили на дистанционното си управление, но изключението от това, което открих, беше всичко с интервал в името на дейността, като например „Гледане на телевизия“. В този случай ще трябва да използвате идентификатора на активността. Отново можете да намерите идентификатора в изхода за отстраняване на грешки в JSON. Запазете и опреснете вашия интерфейс, трябва да видите нещо подобно на това:

Можете също да се обърнете към дейности във вашите правила, както ще видим по -нататък. Прочетете wiki страницата за повече информация относно Хармонично обвързване .

Общо въведение в правилата

Повечето хъбове за интелигентен дом включват някакъв вид създаване на правила, така че можете автоматично да реагирате на сензорни данни и събития в дома. Всъщност бих казал, че един наистина умен дом не е такъв, който трябва да отделите време за взаимодействие с мобилни приложения - той е невидим за крайния потребител и напълно автоматизиран. За тази цел OpenHAB включва и мощен скриптов език за правила, който можете да програмирате, далеч надхвърлящ сложността на повечето интелигентни домашни хъбове или IFTTT рецепти.

Правилата за програмиране звучат по -зле, отколкото са. Нека започнем просто с двойка правила, които включват или изключват светлината в зависимост от сензора за присъствие:

правило „Офис лампата свети, когато Джеймс присъства“

кога

Елементът JamesInOffice е променен от OFF на ON

тогава

sendCommand (Office_Hue, ON)

край

правило „Офис лампата изгасва, когато Джеймс напуска“

кога

Елементът JamesInOffice е променен от ON на OFF

тогава

sendCommand (Office_Hue, OFF)

край

Първо, ние назоваваме правилото - бъдете описателни, за да знаете какво събитие се задейства. След това определяме нашето просто правило, като казваме когато x е вярно, тогава направете y . Краят означава затваряне на това конкретно правило. Има няколко специални думи, които можете да използвате в правилата, но засега се занимаваме с два прости бита от синтаксиса - Вещ , което ви позволява да запитвате състоянието на нещо; и sendCommand , което прави точно това, което мислите, че ще направи. Казах ти, че това е лесно.

Вероятно е излишно да се използват няколко правила, но тъй като логиката ми става по -сложна, ще бъде полезно да ги разделя независимо дали влизам или излизам от зоната - и може би е добра идея да добавя някъде сензор за светлина в уравнението, така че не включваме излишно светлините.

Нека разгледаме друг пример за създаване на планирано правило.

правило „Упражнявайте се всяка сутрин“

кога

Време cron '0 0 8 1/1 *? *'

тогава

harmonyStartActivity ('Упражнение')

край

Отново назоваваме правилото, посочваме условията, когато то трябва да се задейства, и действията, които трябва да предприемем. Но в този случай дефинираме времеви модел. Смешният код, който виждате в кавичките, е израз CRON за Quartz Scheduler (форматът е малко по -различен от обикновения CRONtab). използвах cronmaker.com за да създадете израза, но можете също да прочетете ръководството за формат [No Longer Available] за подробно обяснение и още примери.

CronMaker.com се използва за генериране на правилно форматиран Cron израз

Моите правила казват просто „8 часа сутринта всяка сутрин, всеки ден от седмицата, кажете на моята система Harmony Ultimate да започне упражнението“, което от своя страна активира телевизора, Xbox, усилвателя и натиска бутона A след минута за стартиране диска в устройството.

За съжаление OpenHAB все още не може да изпълни упражнението вместо мен.

Още едно правило, което искам да ви покажа, е нещо, което използвам за управление на нивата на влажност в дома ми. Имам един -единствен изсушител, който ми трябва да се движа навсякъде, където е необходимо, затова реших да разгледам всичките си сензори за влажност, да намеря кой е най -високият и да го съхраня в променлива. В момента се задейства всяка минута, но това може лесно да бъде намалено. Разгледайте първо:

внос org.openhab.core.library.types.*

импортиране на org.openhab.model.script.actions.*

импортиране на java.lang.String

правило „Монитор за влажност“

когато Time cron '0 * * * *?'

тогава

var prevHigh = 0

var highHum = '

Влажност? .Членове.за всеки [бръмчене |

logDebug ('влажност.рула', hum.name);

if (hum.state като DecimalType> prevHigh) {

prevHigh = hum.state

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

}

намерете музика във видеоклип в youtube

]

logDebug ('влажност.рула', highHum);

postUpdate (Dehumidifier_Needed, highHum);

край

Ядрото на правилото е в Влажност? .Членове.досега линия. Влажността е име на група за моите сензори за влажност; .членове грабва всички елементи от тази група; за всеки повтаря над тях (с любопитен формат в квадратни скоби, който вероятно не сте запознати). Синтаксисът на правилата е производен на Xtend, така че можете да прочетете Xtend документация ако не можете да намерите пример за адаптиране.

Вероятно няма да ви се наложи - има стотици примерни правила:

MQTT за OpenHAB и Интернет на нещата

MQTT е лека система за съобщения за комуникация между машини-вид Twitter за вашите Arduinos или Raspberry Pis, за да говорят помежду си (макар че, разбира се, работи много повече от тези). Той бързо набира популярност и се оказва дом с устройства с Интернет на нещата, които обикновено са микроконтролери с ниски ресурси, които се нуждаят от надежден начин за предаване на сензорни данни обратно към вашия хъб или получаване на отдалечени команди. Точно това ще правим с него.

Но защо да преоткриваме колелото?

MQ Telemetry Transport е изобретен още през 1999 г. за свързване на нефтопроводи чрез бавни сателитни връзки, специално проектиран да минимизира използването на батерията и честотната лента, като същевременно осигурява надеждна доставка на данни. През годините принципите на проектиране остават същите, но случаят на използване се измества от специализирани вградени системи към общите устройства на Internet of Things. През 2010 г. протоколът беше пуснат безплатно, отворен за всеки, който да използва и прилага. Харесваме безплатно.

Може би се чудите защо дори се притесняваме от още един протокол - в края на краищата вече имаме HTTP - който може да се използва за изпращане на бързи съобщения между всякакви системи, свързани с мрежата (като OpenHAB и 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/

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

sudo apt-get инсталирайте комар

Това е всичко, което трябва да направим, за да имаме работещ MQTT сървър в локалната мрежа. Вашият брокер работи по порт 1883 по подразбиране.

Проверете дали вашият MQTT сървър работи, като използвате безплатния MQTT.fx, който е междуплатформен. Щракнете върху иконата за настройки, за да създадете нов профил, и въведете IP адреса или името на вашия Raspberry Pi. Запазете и натиснете свързване. Ако малкият светофар в горния десен ъгъл свети в зелено, можете да тръгнете.

За бърз тест кликнете върху раздела „абониране“ и въведете inTopic / в текстовото поле, след това натиснете Абонирай се бутон. Вече сте абонирани да получавате съобщения по темата, наречена inTopic, въпреки че ще показва 0 съобщения. Върнете се в раздела за публикуване, въведете inTopic в малкото поле и кратко съобщение в голямото текстово поле по -долу. Удари Публикувайте няколко пъти и погледнете назад в раздела за абониране. Трябва да видите няколко съобщения, които са се появили в тази тема.

Преди да добавим някои действителни сензори към нашата мрежа, трябва да научим за нивата на темите, които ни позволяват да структурираме и филтрираме MQTT мрежата. Имената на темите са чувствителни към малки и големи букви, не трябва да започват с $ или да включват интервал или знаци, различни от ASCII-наистина стандартни програмни практики за имена на променливи.

/ Разделителят показва ниво на тема, което е йерархично, например по -долу са всички валидни нива на тема.

inTopic / smallSubdivision / evenSmallerSubdivision

myHome/livingRoom/температура

myHome/livingRoom/влажност

myHome/кухня/температура

myHome/кухня/влажност

Вече трябва да видите как тази дървесна структура е идеална за интелигентен дом, пълен със сензори и устройства. Най -добрата практика за използване с множество сензори в една стая е да се публикува всяка променлива на сензора като собствено ниво на тема - разклоняване към по -конкретни (както в примерите по -горе) - вместо да се опитвате да публикувате множество типове сензори в един и същ канал .

След това клиентите могат да публикуват или да се абонират за произволен брой отделни нива на тема или да използват някои специални заместващи знаци, за да филтрират от по -високо в дървото.

Заместващият знак + замества за всяко ниво на тема. Например:

myHome/+/температура

ще се абонира клиента и за двете

myHome/livingRoom/температура

myHome/кухня/температура

... но не и нивата на влажност.

# Е заместващ знак на много нива, така че можете да извлечете всичко от сензорния масив livingRoom с:

myHome/livingRoom/#

Технически можете също да се абонирате за коренното ниво #, което ви дава абсолютно всичко, преминаващо през брокера, но това може да е като да забиете пожарен маркуч в лицето си: малко преобладаващо. Опитайте да се свържете с публичния MQTT брокер от HiveMQ и да се абонирате за #. Получих около 300 съобщения за няколко секунди, преди клиентът ми просто да се разбие.

MQTT Съвет за начинаещи: ' /Моят дом/' е различна тема от ' Моят дом/' - включването на наклонена черта в началото създава празно ниво на тема, което, макар и технически валидно, не се препоръчва, защото може да бъде объркващо.

Сега, когато знаем теорията, нека да започнем с Arduino, Ethernet Shield и сензор за температура и влажност на DHT11 - вероятно имате такъв във вашия стартов комплект, но ако не, просто сменете сензора за околната среда за движение сензор (или дори бутон).

Публикуване на MQTT от Arduino с Ethernet връзка

Ако имате хибридно съвместимо с Arduino устройство с вграден Wi-Fi или Ethernet, това също трябва да работи. В крайна сметка ще искаме по -добър/по -евтин начин да съобщим, че трябва да използваме мрежова връзка във всяка стая, но това служи за научаване на основите.

Започнете с изтеглянето pubsubclient библиотека от Github . Ако сте използвали бутона „Изтегляне като ZIP“, структурата е малко погрешна. Разархивирайте, преименувайте папката на просто pubsubclient , след това извадете двата файла от src папка и ги преместете нагоре на едно ниво до корена на изтеглената папка. След това преместете цялата папка във вашата Arduino/библиотеки директория.

Ето моя примерен код, който можете да адаптирате : изходът на сигнала DHT11 е на пин 7. Променете IP адреса на сървъра за този на вашия Pi на следния ред:

client.setServer ('192.168.1.99', 1883);

За съжаление не можем да използваме това приятелско име (OpenHAB.local в моя случай) тъй като стекът TCP/IP на Arduino е много опростен и добавянето на кода за именуване на Bonjour би било много памет, която не искаме да губим. За да промените темите, по които се излъчват сензорни данни, превъртете надолу до тези редове:

буфер за въглища [10];

dtostrf (t, 0, 0, буфер);

client.publish ('openhab/himitsu/temperature', буфер);

dtostrf (h, 0, 0, буфер);

client.publish ('openhab/himitsu/влажност', буфер);

Кодът включва и абонамент за команден канал. Намерете и коригирайте следния ред:

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

Разгледайте кода наоколо и ще видите, че лесно можете да управлявате светодиод или реле, например като изпращате команди до определени канали. В примерния код той просто изпраща обратно съобщение, потвърждаващо получаването на командата.

Качете вашия код, включете вашия Arduino в мрежата и с помощта на MQTT.fx се абонирайте за всеки от тях # или openhab / himitsu / # (или каквото и да сте променили името на стаята, но не забравяйте да включите # в края). Доста скоро би трябвало да видите съобщения, които идват; и ако изпратите ON или OFF към командната тема, ще видите и връщане на потвърждения.

MQTT Binding за OpenHAB

Последната стъпка в уравнението е да го свържете към OpenHAB. За това, разбира се, се нуждаем от обвързване.

sudo apt-get install openhab-addon-binding-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 = '<[broker:openhab/himitsu/temperature:state:default]'}

Номер Himitsu_Humidity'Himitsu Влажност [%.1f %%] '(Himitsu, Влажност) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

Вече трябва да разберете формата; става а Номерен елемент от свързването на MQTT, по определена тема. Това е прост пример, може да пожелаете да се обърнете към wiki страницата, където се намира може да стане много по -сложно .

Поздравления, сега имате основата на евтин сензорен масив, базиран на Arduino. В бъдеще ще преразгледаме това и ще поставим Arduino в тяхната напълно отделна радиочестотна мрежа. Създадох и идентична версия за Wizwiki 7500 дъски ако случайно имате едно от тях.

Устойчивост и графични данни

Вероятно вече сте настроили куп сензори, независимо дали от Z-Wave или персонализирани Arduinos, работещи с MQTT-така че можете да видите текущото състояние на тези сензори по всяко време и също така трябва да реагирате на тяхната стойност в правилата. Интересното при стойностите на сензорите като цяло е, че те се променят с течение на времето: тук идва постоянството и графиката. Постоянство в OpenHAB означава запазване на данните във времето. Нека да продължим и да настроим RRD4J (Round Robin Database for Java), така наречен, защото данните се записват по кръгов ред - по -старите данни се изхвърлят, за да компресират размера на базата данни.

Инсталирайте пакети rrd4j със следните команди.

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

След това създайте нов файл, наречен rrd4j.persist в конфигурации/постоянство папка. Поставете следното:

Стратегии {

everyMinute: '0 * * * *?'

everyHour: '0 0 * * *?'

всеки ден: '0 0 0 * *?'

default = everyChange

}

Елементи {

// запазваме всичко, когато стойността се актуализира, само по подразбиране, и ги възстановява от базата данни при стартиране

*: strategy = everyChange, restoreOnStartup

// след това определяме специфични стратегии на всеки час за всичко в групата Температура и всяка минута за влажност

най -добрият код за малиново пи 3

Температура*: стратегия = всеки час

Влажност*: стратегия = всяка минута

// алтернативно можете да добавите конкретни елементи тук, като например

// Bedroom_Humidity, JamesInOffice: strategy = everyMinute

}

В първата част на този файл дефинираме стратегии, което просто означава даване на име на израз CRON. Това е същото, което вече направихме с My.OpenHAB, но този път създаваме някои нови стратегии, които можем да използваме за всеки ден, всеки час и всяка минута. Все още не съм ги използвал всички, но може би ще бъда в бъдеще.

Във втората половина на файла ние казваме на rr4dj кои стойности на данните да запазите. По подразбиране ще запазваме всичко всеки път, когато се актуализира, но също така съм посочил някои стратегии, базирани на времето за конкретни сензори. Температурите, за които не се притеснявам много, затова зададох това, за да пестя само всеки час, но влажността е голяма грижа за мен, затова искам да видя как се променя всяка минута. Ако има други данни, които специално искате да запишете в определено време, добавете ги тук сега или коригирайте според нуждите.

Забележка: ако искате също да начертаете данните, трябва да ги съхранявате поне веднъж в минута. Няма значение дали вашите сензорни данни дори се актуализират толкова бързо, просто трябва да кажете на rr4dj да ги съхранява веднъж в минута.

С това дефиниране трябва да започнете да виждате някакъв изход за отстраняване на грешки, който ви казва, че стойностите се съхраняват.

След това нека направим няколко красиви графики на всички тези данни. Наистина е лесно. За да направите графика на отделен сензор, добавете следното към картата на вашия сайт:

Елемент от диаграмата = Спалня_Влажност период = h

Това е буквално всичко, от което се нуждаете. Валидните стойности за периода са h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y ; трябва да е ясно какво означават тези неща. По подразбиране е D за цял ден данни, ако не е посочено.

За да създадете графика с множество елементи, просто начертайте името на групата вместо това:

Елемент от диаграмата = Период на влажност = h

Може също да се интересувате, че можете да използвате тази графика другаде; генерира изображение, използвайки следния URL адрес: http: // YOUROPENHABURL: 8080/диаграма? groups = Влажност и период = h

Как е Вашият Идва ли системата OpenHAB?

Това е всичко за тази част от ръководството, но не очаквайте това да е последното, което ще чуете от нас за OpenHAB. Надяваме се, че това и ръководството за начинаещи са ви дали солидна основа за разработване на ваша собствена цялостна система OpenHAB - но това е процес, който никога не е напълно завършен.

За щастие, OpenHAB може да се мащабира добре от няколко устройства до стотици, от проста сложност на правилата до най -добрата в домашната автоматизация - така че как върви вашата система? Кои устройства избрахте? Какъв е следващият голям проект, с който ще се захванете?

Нека поговорим в коментарите - и моля, ако сте намерили това ръководство за полезно, щракнете върху тези бутони за споделяне, за да кажете на приятелите си как те също могат да настроят собствената си система OpenHAB.

Надяваме се, че артикулите, които препоръчваме и обсъждаме, ви харесват! MUO има партньорски и спонсорирани партньорства, така че получаваме част от приходите от някои от вашите покупки. Това няма да повлияе на цената, която плащате, и ни помага да предложим най -добрите препоръки за продукти.

Дял Дял Туит електронна поща Ръководство за начинаещи по анимиране на речта

Анимирането на речта може да бъде предизвикателство. Ако сте готови да започнете да добавяте диалог към вашия проект, ние ще разбием процеса вместо вас.

Прочетете Напред
Свързани теми
  • Направи си сам
  • Умен дом
  • Arduino
  • Домашна автоматизация
  • Дълга форма
  • Ръководство за дълги форми
За автора Джеймс Брус(707 статии са публикувани)

Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран по CompTIA A+ и Network+. Когато не е зает като редактор на хардуерни рецензии, той се радва на LEGO, VR и настолни игри. Преди да се присъедини към MakeUseOf, той беше техник по осветление, учител по английски език и инженер в центъра за данни.

Още от Джеймс Брус

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате